# Changelog
## v0.5.5 (2024-12-03)
### Enhancements
- Add `from_block` and `to_block` options to `Ethers.get_logs/2`
- Add RPC adapter behaviour and proxy for Ethereumex.HttpClient
- Move and export abi decode functionality to `Ethers.TxData` module
- Export `Ethers.TxData.to_map/2` in docs
- Add `Ethers.Event.find_and_decode/2` function
## v0.5.4 (2024-10-22)
### Bug fixes
- Handle `nil` values when decoding transaction values for RLP encoding
## v0.5.3 (2024-10-14)
### Enhancements
- Make event filter arguments optional in typespecs
## v0.5.2 (2024-08-08)
### Bug fixes
- Handle `{:ok, nil}` from RPC get block by number request
### Enhancements
- Enable raw use of `Ethers.call/2` (usage without function selector)
- Add optional backoff to `Ethers.Utils.date_to_block_number/3`
## v0.5.1 (2024-08-02)
### Enhancements
- Mark `ex_keccak` as optional using SKIP_EX_KECCAK environment variable
## v0.5.0 (2024-05-29)
### Breaking Changes
- Rename `NotERC165CompatibleError` to `Errors.NotERC165CompatibleError`
### Bug fixes
- Handle unexpected errors in ExecutionError exceptions
## v0.4.5 (2024-04-27)
### Enhancements
- Add `Ethers.NameService.reverse_resolve/2` to reverse resolve addresses to domains
## v0.4.4 (2024-04-17)
### Enhancements
- Add ERC-165 contract and behaviour
- Add `skip_docs` option for contract module doc and typespec generation
- Allow skipping checksum address in `Ethers.Utils.public_key_to_address/2`
## v0.4.3 (2024-04-05)
### Bug fixes
- Fix `Ethers.Multicall` typespecs
## v0.4.2 (2024-04-04)
### Enhancements
- Support sending raw transactions using `Ethers.send/2`
- Add `Ethers.get_transaction_count/2`
## v0.4.1 (2024-04-02)
### Enhancements
- Add support of getting current `max_priority_fee_per_gas`
- Use latest `max_priority_fee_per_gas` from the chain as default value in transactions
## v0.4.0 (2024-03-11)
### Breaking Changes
- Custom errors will be returned as error structs instead of raw RPC response
- Updated ERC20, ERC721 and ERC1155 ABIs to Openzeppelin 5.x
### Enhancements
- Generate error structs from ABI and decode custom errors when error data is available
- Use JsonRPC signer as a default signer in `Ethers.sign_transaction/2`
## v0.3.1 (2024-03-05)
### Bug fixes
- Fix trimmed zeros in transaction encoder with unified hex encoding for transaction
## v0.3.0 (2024-02-05)
### Breaking Changes
- Removed `signature_v`, `signature_recovery_id` and `signature_y_parity` from `Ethers.Transaction`
struct and introduce new `signature_v_or_y_parity` value
- Update `ex_abi` to 0.7.0 with new `method_id` logic for event selectors and use its value
### Enhancements
- Cleanup implementation of Transaction encoders and value decoder
## v0.2.3 (2024-01-29)
### New features
- Add `Ethers.get_transaction_receipt/2` function to query native chain transaction receipt by transaction hash.
### Enhancements
- Add more metadata to `Ethers.Transaction` struct.
- Return `Ethers.Transaction` struct in `Ethers.get_transaction/2` function.
- Support `get_transaction` in batch requests.
## v0.2.2 (2024-01-08)
### New features
- Add `Ethers.get_transaction/2` function to query native chain transaction by transaction hash.
## v0.2.1 (2024-01-04)
### New features
- Add `Ethers.get_balance/2` function to query native chain balance of accounts.
### Bug fixes
- Encode integers to hex even when they are part of params
## v0.2.0 (2024-01-01)
### New Features
- `Ethers.sign_transaction/2` function
- Signer behaviour
- Local Signer implementation
- JsonRPC Signer implementation
- `Ethers.Transaction` struct and helper functions
## v0.1.3 (2023-12-26)
### Bug fixes
- unsized integer encoding to hex will now raise if given negative numbers.
- `Utils.date_to_block_number/3` going to negative block numbers issue fixed.
## v0.1.2 (2023-12-12)
### Breaking Changes
- `TxData.to_map/2` now returns hex values for all integers.
- `Utils.maybe_add_gas_limit/2` now adds hex gas limit value instead of integer.
## v0.1.1 (2023-11-22)
### Bug fixes
- Multicall: aggregate_3 decoder returns `nil` in case of failure
- Multicall: Feed decoded results through `Utils.human_arg/2`
## v0.1.0 (2023-11-19)
### New Features
- Checksum address utility functions
### Enhancements
- Use zip_reduce for event generators
- Move documentation generators to ContractHelpers
- Display message for empty parameters or return types
- `Ethers.call/2` and `Ethers.get_logs/2` now automatically convert integer block numbers to hex values
- Return structs as a result in generated functions and event filter with Inspection protocols implemented for better development experience
- Support dynamically sized indexed event filters (bytes, strings, arrays and structs)
- `Ethers.call/2` now only returns as a list if the return type is either a solidity array or tuple
- Add return names in documentations and TxData inspection
- Added an interface for `Multicall3` through `Ethers.Contracts.Multicall3`
- Added `Ethers.Multicall` as an abstraction for `Ethers.Contracts.Multicall3`
- Added batching functionality using `Ethers.batch/2`
### Breaking Changes
- The generated contract functions no longer call or send transactions, They will only prepare parameters
To execute an explicit call to `Ethers.send/2` or `Ethers.call/2` is required
- Events no longer accept `address` overrides. Overriding now happens at `Ethers.get_logs/2`
- Function `Ethers.get_logs/3` is now changed to `Ethers.get_logs/2`
- Generated contract modules and EventFilter modules `default_address/0` function is now renamed to `__default_adress__/0` to prevent collision
- Removal of `Ethers.RPC` module
- Remove `Ethers.Types.dynamically_sized_types/0` function
- `Ethers.call/2` response is not always a list
- `Ethers.deploy/4` is now removed and replaced with `Ethers.deploy/2`
### Bug fixes
- Fix event filters with mixed indexed and non-indexed arguments
## v0.0.6 (2023-09-06)
### Enhancements
- Update `dialyxir` dependency to 1.4.0
- Update `ex_doc` to 0.30.6
- Add more function to `Utils` module
- Improve failure return values of deployment functions
### Bug fixes
- Fix RPC options and client override issue
- Do not add `nil` to address when address is not present
## v0.0.5 (2023-08-21)
### Enhancements
- Add ENS (Ethereum name service) contracts and helper functions
- Update `ex_doc` dependency to 0.30.4
- Address `Logger.warn` deprecation
## v0.0.4 (2023-07-14)
### Enhancements
- Update `ex_doc` dependency to 0.30.1
- Update `jason` dependency to 1.4.1
## v0.0.3 (2023-05-29)
### Enhancements
- Improved generative documentation for modules
- Improved gas estimation API
- Add gas limit to sending trasnactions
- Remove redundant gas estimation function
### Bug fixes
- Fix bitsize check guard to include all available solidity bitsizes
## v0.0.2 (2023-04-24)
### Bug fixes
- Include the priv directory in mix releases
## v0.0.1 (2023-04-24)
First Release