flare_flutter_sdk 0.0.3-dev
flare_flutter_sdk: ^0.0.3-dev copied to clipboard
The first native Flutter/Dart SDK for the Flare network. Pure Dart, no platform channels.
Changelog #
All notable changes to this project are documented in this file.
The format follows Keep a Changelog,
and this project adheres to Semantic Versioning
(with -dev pre-release tags before v1.0.0).
0.0.3-dev #
M1 in progress: Contract Registry client implemented and verified against the official FlareContractRegistry specification.
Added #
JsonRpcClient(network/): shared JSON-RPC 2.0 transport over HTTPS, used by every module that reads from or writes to a Flare networkContractRegistryClient.getContractAddress(): resolves official contract addresses via the FlareContractRegistry (0xaD67FE66660Fb8dFE9d6b1b4240d8650e30F6019), verified against dev.flare.network's JS, Go, and FAssets integration guides- Hand-rolled ABI encoding/decoding for
getContractAddressByName(string), no external EVM library dependency - 3 unit tests with mocked HTTP responses, covering a successful resolution, an unregistered contract name, and a non-200 HTTP response
Design Decisions #
- Chose to hand-encode the ABI call instead of adding a generic EVM library dependency, keeping the SDK's dependency surface intentional rather than pulling in a full library for one function call
- The registry returns the zero address instead of reverting for an
unknown contract name, so
getContractAddresschecks for it explicitly and throwsFlareExceptionrather than returning an invalid address silently
Status #
M1 in progress: network foundation and Contract Registry client
complete and tested. Local wallet is next.
Not ready for production use.
Next: LocalWallet key derivation (0.0.4-dev).
0.0.2-dev #
M1 in progress: network foundation implemented and verified against official RPC endpoints and chain IDs.
Added #
NetworkConfig.forNetwork(): resolves the official RPC URL, chain ID, and native currency symbol for each of the four Flare networks (Flare, Songbird, Coston2, Coston), sourced from dev.flare.network's Network Configuration pagecurrencySymbolfield added toNetworkConfig- 5 unit tests covering each network's resolved values and chain ID uniqueness across all four networks
Status #
M1 in progress: network foundation complete and tested. Contract
Registry client is next.
Not ready for production use.
Next: ContractRegistryClient.getContractAddress (0.0.3-dev).
0.0.1-dev #
Scaffold phase complete: project structure, tooling, and CI pipeline in
place. No functional API yet, every public method is an intentional
UnimplementedError skeleton matching the planned v1.0.0 surface.
Added #
- Package scaffold via
flutter create --template=package(orgcom.nemorixpay), reservingflare_flutter_sdkon pub.dev - Module structure defined, one directory per Flare protocol boundary:
network/,registry/,wallet/,transactions/,ftso/,fassets/,fdc/,exceptions/ FlareNetwork: enum for the four supported networks (Flare, Songbird, Coston2, Coston)FlareException: base exception type for all SDK errorsNetworkConfigandContractRegistryClient: skeletons for the FlareContractRegistry directory pattern (M1)Walletinterface,LocalWallet,WalletConnectController: wallet abstraction skeletons (M1)TransactionBuilder: native/ERC-20 transfer and contract call skeleton (M2)FeedCategory,FeedId,FtsoClient,FtsoFeed: FTSOv2 price feed client skeleton, including the feed-ID encoding helper (M3)FAssetsClient: FXRP mint/redeem flow skeleton (M4)FdcAttestationType,FdcClient: minimum FDC attestation support skeleton for AddressValidity, Payment, and EVMTransaction (M4)- 3 unit tests covering
FlareNetworkenum completeness andFlareExceptionmessage formatting example/flare_flutter_sdk_example.dart: illustrative usage of the planned v1.0.0 API (wallet connection, FTSO feed read)- CI pipeline (GitHub Actions): format, analyze, test, coverage check,
pub publish --dry-run, and a Coston2 integration job CONTRIBUTING.md: development setup, branch strategy, commit conventions, testing standards, and security policy
Changed #
analysis_options.yaml: configured to extendvery_good_analysis(replacing the defaultflutter_lintsgenerated byflutter create)
Design Decisions #
- Pinned
pointycastleto^3.9.0andreown_walletkitto^1.0.3to resolve a dependency conflict:bip32does not yet supportpointycastle ^4.0.0, whichreown_walletkit >=1.3.9requires. Revisit oncebip32(or a replacement) supportspointycastle ^4.x - CI coverage threshold temporarily lowered to 5% during the scaffold phase; returns to the 80% target once M1 lands with real coverage
- Module boundaries mirror Flare's own protocol boundaries (FTSO, FAssets, FDC) rather than a generic wallet-first structure, so each milestone maps cleanly to one directory
Status #
Scaffold complete: structure, tooling, and CI are in place.
No network interaction yet (that begins in M1).
Not ready for production use.
Next: network foundation, Contract Registry, and wallet abstraction
(M1).