The markdown parsing is broken/disabled for release notes. Sorry about that, I'm chasing the source of a crash that's been bringing this website down for the last couple of days.
## What's Changed
* Bump swift version to 5.10
* Update `StaknetTypedData` in line with [SNIP-12](https://github.com/starknet-io/SNIPs/blob/main/SNIPS/snip-12.md)
* Add `StarknetMerkleTree`
* Add `Felt(fromSigned)` initializer
* Add `StarknetByteArray`
## Breaking changes
- XCode 15.3+ (macOS 14+) is now required to build the package
- `StaknetTypedData.domain` is now of type `StarknetTypedData.Domain` instead of `[String: Element]`
- `StarknetTypedData` initializers now take `domain` as `StarknetTypedData.Domain` instead of `[String: Element]`
- `StarknetTypedData.types` is now of type `[String: [TypeDeclarationWrapper]]` instead of `[String: [TypeDeclaration]]`
- `StarknetTypedData` initializers now take `types` as `[String: [any TypeDeclaration]]` instead of `[String: [TypeDeclaration]]`
- `StarknetTypedData.TypeDeclaration` is now a protocol; Use `StarknetTypedData.StandardType` instead
- `StarknetTypedData` initializers are now throwing, not failable
- Type verification is now enforced when instantiating `StarknetTypedData`
## Merged PRs
* Run Checks on non-main PRs by @DelevoXDG in https://github.com/software-mansion/starknet.swift/pull/168
* Bump swift version to 5.10 by @DelevoXDG in https://github.com/software-mansion/starknet.swift/pull/172
* Allow `StarknetTypedData` revision 1 by @DelevoXDG in https://github.com/software-mansion/starknet.swift/pull/166
* Add `StarknetMerkleTree` and `merkletree` support in `StarknetTypedData` by @DelevoXDG in https://github.com/software-mansion/starknet.swift/pull/167
* Verify types in `StarknetTypedData` in line with SNIP-12 by @DelevoXDG in https://github.com/software-mansion/starknet.swift/pull/170
* Support `bool`, `ClassHash`, `ContractAddress` basic types in `StarknetTypedData` by @DelevoXDG in https://github.com/software-mansion/starknet.swift/pull/173
* Add `Felt(fromSigned)` initializer; Support `u128`, `i128`, `timestamp` types in `StarknetTypedData` by @DelevoXDG in https://github.com/software-mansion/starknet.swift/pull/174
* Add `StarknetByteArray`; Support revision 1 `string` in `StarknetTypedData` by @DelevoXDG in https://github.com/software-mansion/starknet.swift/pull/175
* Support `enum` basic type in `StartknetTypedData` by @DelevoXDG in https://github.com/software-mansion/starknet.swift/pull/178
* Support preset types in `StarknetTypedData` by @DelevoXDG in https://github.com/software-mansion/starknet.swift/pull/182
* Use enums for basic and preset types in `StarknetTypedData` by @DelevoXDG in https://github.com/software-mansion/starknet.swift/pull/180
* Update `StarknetTypedData` docs (SNIP-12) by @DelevoXDG in https://github.com/software-mansion/starknet.swift/pull/181
* Update demo app to support latest version by @franciszekjob in https://github.com/software-mansion/starknet.swift/pull/177
## New Contributors
* @franciszekjob made their first contribution in https://github.com/software-mansion/starknet.swift/pull/177
**Full Changelog**: https://github.com/software-mansion/starknet.swift/compare/v0.9.0...v0.10.0
## What's Changed
* Support RPC 0.7.0 by @DelevoXDG in https://github.com/software-mansion/starknet.swift/pull/162
## Breaking changes
- `StarknetFeeEstimate` extension fee calculation utils
- `toResourceBounds()` now takes `amountMultiplier`, `unitPriceMultiplier` instead of `amountOverhead`, `unitPriceOverhead`
- `toMaxFee()` now takes `multiplier` instead of `overhead`
- `version` of `StarknetTransaction` is now of type `StarknetTransactionVersion` instead of `Felt`; This applies to all derived transaction structs
- Removed `StarknetPendingTransactionReceipt`, `StarknetProcessedTransactionReceipt` protocols
- Renamed all `Starknet[..]TransactionReceipt` protocols to `Starknet[..]TransactionReceiptProtocol`
- Removed all `StarknetPending[..]TransactionReceipt` and `StarknetProcessed[..]TransactionReceipt` classes; Use `Starknet[..]TransactionReceipt` classes with optional `blockHash` and `blockNumber` instead
**Full Changelog**: https://github.com/software-mansion/starknet.swift/compare/v0.8.3...v0.9.0
## What's Changed
* Change signing methods which are no longer `async` by @dmcrodrigues in https://github.com/software-mansion/starknet.swift/pull/157
* Support `string`, `selector` base types in `StarknetTypedData` by @DelevoXDG in https://github.com/software-mansion/starknet.swift/pull/158
**Full Changelog**: https://github.com/software-mansion/starknet.swift/compare/v0.8.2...v0.8.3
## What's Changed
* Revert "Remove StarknetChainId" by @DelevoXDG in https://github.com/software-mansion/starknet.swift/pull/151
* Support custom chain IDs by @DelevoXDG in https://github.com/software-mansion/starknet.swift/pull/155
* Set chain ID in `StarknetAccount` initializer by @DelevoXDG in https://github.com/software-mansion/starknet.swift/pull/154
## Breaking changes
- Re-intruduce `StarknetChainId` as a struct
- `StarknetChainId` is used instead of `Felt`; Use `StarknetChainId.init(fromHex:)`, `StarknetChainId.init(fromNetworkName:)` for custom chain IDs
- `StarknetProviderProtocol.getChainId()` now returns `StarknetChainId` instead of `Felt`
- `StarknetTransactionHashCalculator` methods now take chain ID as `StarknetChainId` instead of `Felt`
- `StarknetAccount` constructor now has a mandatory `chainId` argument
- `StarknetAccountProtocol` now has `chainId: StarknetChainId` property
**Full Changelog**: https://github.com/software-mansion/starknet.swift/compare/v0.8.1...v0.8.2
## What's Changed
* Support Sepolia networks; Support `starknet_chainId` endpoint by @DelevoXDG in https://github.com/software-mansion/starknet.swift/pull/137
* Remove `StarknetChainId` by @DelevoXDG in https://github.com/software-mansion/starknet.swift/pull/142
## Breaking changes
- Removed `StarknetChainId` enum;
- `StarknetProviderProtocol.getChainId()` returns `Felt`; Use `Felt.toShortString()` to convert to readable name
- `StarknetTransactionHashCalculator` methods now take chain id as `Felt` instead of `StarknetChainId`
- Removed `starknetChainId` from `StarknetProviderProtocol`; Use `StarknetProviderProtocol.getChainId()` instead
- Removed `starknetChainId` parameter from all `StarknetProvider` constructors
- All `StarknetAccountProtocol` signing methods are now async
**Full Changelog**: https://github.com/software-mansion/starknet.swift/compare/v0.8.0...v0.8.1
## What's Changed
* Support any `data` in `JsonRpcError` by @DelevoXDG in https://github.com/software-mansion/starknet.swift/pull/139
**Full Changelog**: https://github.com/software-mansion/starknet.swift/compare/v0.7.3...v0.7.4
## What's Changed
* Support Starknet 0.13 by @DelevoXDG in https://github.com/software-mansion/starknet.swift/pull/129
## Breaking changes
- `StarknetAccountProtocol`, `StarknetAccount`. `sign`, `estimateFee`, `execute`, `signDeployAccount`, `estimateDeployFee` are now split into two versions, with `V1` and `V3` postfix for transactions version 1 and 3 respectfully
- Removed `StarknetExecutionParams` and `StarknetOptionalExecutionParams`; Use `StarknetInvokeParamsV1`, `StarknetOptionalInvokeParamsV1` and `StarknetDeployAccountV1` instead
- `StarknetProviderProtocol`, `StarknetProvider`: `estimateFee` and `simulateTransactions` now only support transactions that conform to `StarknetExecutableTransaction`
- `StarknetTransactionReceipt`: `actualFee` is now of type `StarknetFeePayment` instead of `Felt
- `StarknetExecutionResources` fields are now of type `Int` instead of `NumAsHex`
**Full Changelog**: https://github.com/software-mansion/starknet.swift/compare/v0.7.3...v0.8.0
## What's Changed
* Add Poseidon hash by @DelevoXDG in https://github.com/software-mansion/starknet.swift/pull/126
* Remove Sequencer transaction in favor of Transaction with an optional hash by @DelevoXDG in https://github.com/software-mansion/starknet.swift/pull/127
* Add `CFBundleShortVersionString` to frameworks by @DelevoXDG in https://github.com/software-mansion/starknet.swift/pull/134
## Breaking changes
- Removed `StarknetSequencerTransaction`
- Removed `StarknetSequencerInvokeTransaction`; Uses of `StarknetSequencerInvokeTransaction` are now of type `StarknetInvokeTransactionV1`
- Removed `StarknetSequencerDeployAccountTransaction`; Uses of `StarknetSequencerDeployAccountTransaction` are now of type `StarknetDeployAccountTransactionV1`
- Removed constructor w/ sequencer tx as a parameter in `StarknetInvokeTransactionV1`; Updated default one
- Removed constructor w/ sequencer tx as a parameter in `StarknetDeployAccountTransactionV1`; Updated default one
**Full Changelog**: https://github.com/software-mansion/starknet.swift/compare/v0.7.2...v0.7.3
## What's Changed
* Fix typo by @GoodDaisy in https://github.com/software-mansion/starknet.swift/pull/119
* Allow passing `URLSession` to `StarknetProvider` by @DelevoXDG in https://github.com/software-mansion/starknet.swift/pull/121
## New Contributors
* @GoodDaisy made their first contribution in https://github.com/software-mansion/starknet.swift/pull/119
**Full Changelog**: https://github.com/software-mansion/starknet.swift/compare/v0.7.1...v0.7.2
## What's Changed
* Added support for JSON-RPC 0.5.1
* All `NumAsHexProtocol` extensions are now public
**Full Changelog**: https://github.com/software-mansion/starknet.swift/compare/v0.7.0...v0.7.1