UNPKG

@flarenetwork/flare-periphery-contract-artifacts

Version:

Smart contract artifacts for all Flare chains

103 lines (67 loc) 2.94 kB
# Flare Smart Contracts Periphery This package contains ABIs and addresses for smart contracts deployed on [Flare networks](https://dev.flare.network/network/solidity-reference): - Flare Mainnet - Songbird Canary Network - Flare Testnet Coston2 - Songbird Testnet Coston ## Installation ```bash npm install @flarenetwork/flare-periphery-contract-artifacts # or yarn add @flarenetwork/flare-periphery-contract-artifacts ``` ## Features ### Top Level Exports #### ABI Access Functions <!-- FIXME:(FilipS) This is probably not correct?! Both functions currently return the same ABI. --> - `nameToAbi(name: string, network: string): any` - Get full smart contract functionality. - `interfaceToAbi(name: string, network: string): any` - Interact with the contract's public API. Both functions return an ABI array. The `network` parameter must be one of: - `"flare"` - `"songbird"` - `"coston2"` - `"coston"` ```typescript import { nameToAbi, interfaceToAbi } from "@flarenetwork/flare-periphery-contract"; const fullAbi = nameToAbi("FtsoManager", "flare"); const interfaceAbi = interfaceToAbi("IFtsoManager", "flare"); ``` #### Address Resolution - `nameToAddress(name: string, network: string, provider: ethers.JsonRpcApiProvider): Promise<string>` - `namesToAddresses(names: string[], network: string, provider: ethers.JsonRpcApiProvider): Promise<string[]>` These functions fetch contract addresses from the on-chain FlareContractRegistryLibrary. ```typescript import { nameToAddress } from "@flarenetwork/flare-periphery-contract-artifacts"; import { ethers } from "ethers"; const provider = new ethers.JsonRpcProvider("https://flare-api.flare.network/ext/C/rpc"); const address = await nameToAddress("FtsoManager", "flare", provider); ``` #### Constants - `FlareContractRegistryAddress`: Hardcoded registry address (same for all chains) ### Network-Specific Namespaces Each network (`flare`, `songbird`, `coston2`, `coston`) exports: #### 1. Products Access contract information through `.ContractName` syntax: ```typescript import { flare } from "@flarenetwork/flare-periphery-contract-artifacts"; const ftsoManager = flare.products.FtsoManager; console.log(ftsoManager.name); // Contract name console.log(ftsoManager.interface); // Interface name console.log(ftsoManager.abi); // Contract ABI // Get deployed address const address = await ftsoManager.getAddress(provider); ``` #### 2. Interface ABIs Access interface ABIs using `.InterfaceName` syntax: ```typescript import { flare } from "@flarenetwork/flare-periphery-contract-artifacts"; const abi = flare.interfaceAbis.IFtsoManager; ``` #### 3. Network-Specific ABI Functions It is same as top-level functions but with the pre-set network: ```typescript import { flare } from "@flarenetwork/flare-periphery-contract-artifacts"; // Network already known const abi = flare.nameToAbi("FtsoManager"); const iAbi = flare.interfaceToAbi("IFtsoManager"); ```