sfi-vault-sdk
v0.1.5
Published
ABIs and chain deployments for the SFI modular vault framework
Maintainers
Readme
sfi-vault-sdk
ABIs and verified chain deployments for the SFI modular vault framework. The package has no runtime dependencies and supports TypeScript, ESM, and CommonJS.
Install
npm install sfi-vault-sdkImport an ABI
import { DynaVaultABI, VaultFactoryABI, VaultRegistryABI } from "sfi-vault-sdk";Every production vault contract and linked-library ABI is available as <ContractName>ABI. ABIs can also be selected dynamically:
import { contractAbis, getContractABI } from "sfi-vault-sdk/abis";
const registryABI = getContractABI("VaultRegistry");
const vaultABI = contractAbis.DynaVault;Resolve a registry deployment
import {
ChainId,
getVaultFactoryAddress,
getVaultRegistryAddress,
requireVaultFactoryAddress,
requireVaultRegistryAddress,
vaultFactoryAddresses,
vaultRegistryAddresses,
} from "sfi-vault-sdk/chains";
const ethereumRegistry = vaultRegistryAddresses[ChainId.ETHEREUM];
const optimismRegistry = vaultRegistryAddresses[ChainId.OPTIMISM];
const arbitrumRegistry = vaultRegistryAddresses[ChainId.ARBITRUM];
const bnbRegistry = vaultRegistryAddresses[ChainId.BNB];
const polygonRegistry = vaultRegistryAddresses[ChainId.POLYGON];
const baseRegistry = vaultRegistryAddresses[ChainId.BASE];
const ethereumFactory = vaultFactoryAddresses[ChainId.ETHEREUM];
const optimismFactory = vaultFactoryAddresses[ChainId.OPTIMISM];
const arbitrumFactory = vaultFactoryAddresses[ChainId.ARBITRUM];
const bnbFactory = vaultFactoryAddresses[ChainId.BNB];
const polygonFactory = vaultFactoryAddresses[ChainId.POLYGON];
const baseFactory = vaultFactoryAddresses[ChainId.BASE];
// Returns undefined when the framework is not deployed on the chain.
const optionalRegistry = getVaultRegistryAddress(chainId);
const optionalFactory = getVaultFactoryAddress(chainId);
// Throws when the chain is unsupported.
const registry = requireVaultRegistryAddress(chainId);
const factory = requireVaultFactoryAddress(chainId);Use the ABI and preconfigured address with ethers:
import { Contract } from "ethers";
import { VaultRegistryABI, requireVaultRegistryAddress } from "sfi-vault-sdk";
const registry = new Contract(
requireVaultRegistryAddress(chainId),
VaultRegistryABI,
provider,
);Or with viem:
import { getContract } from "viem";
import { VaultRegistryABI, requireVaultRegistryAddress } from "sfi-vault-sdk";
const registry = getContract({
address: requireVaultRegistryAddress(client.chain.id),
abi: VaultRegistryABI,
client,
});Supported deployments
| Chain | Chain ID | VaultRegistry | VaultFactory |
| ------------ | -------: | -------------------------------------------- | -------------------------------------------- |
| Ethereum | 1 | 0x97C46cE66Ec71559DbF43fF9E5D110C3657C1ca4 | 0x97cc36e2961Df8470b329D81AFA849fC2AF73C50 |
| OP Mainnet | 10 | 0x45585Acb41829139C7606ed6C4c5eaEC2DC50029 | 0xCfDd0f9E75930aCC79ab0218ba1c4E753E62Eb04 |
| Arbitrum One | 42161 | 0x44921e42017316F89C1DEdd70a3A017d4c5162c3 | 0x5bf7051C25698c82BFfaD975A1dA8a272ac9A112 |
| BNB Chain | 56 | 0xBCCa741996196462480108BCEf7561C0aB3Fdb04 | 0xA986eF41aF63C47b52CADEC0A2b4b945b080CD30 |
| Polygon PoS | 137 | 0x3Bfdf549881bFD92D4cce82e6C28f5391408B4cc | 0xA335FEA2E603529CA15EB773044CddAA0bBE1bc3 |
| Base | 8453 | 0xe260c97949bB01E49c0af64a3525458197851657 | 0xEFE719160C96202396150D1FA70c4F665c52e04f |
The addresses were loaded from the production vault framework manifests. Every factory was confirmed to contain deployed bytecode and return the corresponding registry from vaultRegistry(). Unsupported chains return undefined from non-throwing lookup functions.
Exported ABIs
DynaDataProviderABIDynaVaultABIDynaVaultErrorsABIDynaVaultLibABIDynaVaultManagerABIPermissionedDynaVaultABIVaultConfigLibABIVaultFactoryABIVaultFeesABIVaultFeesLibABIVaultGovernanceABIVaultGovernanceLibABIVaultManagerLibABIVaultManagerSimulatorLibABIVaultRegistryABIVaultRouterLibABIVaultSimulatorABIVaultStrategiesABIVaultStrategiesLibABIVaultTokensABIVaultTokensLibABIBaseStrategyABIQueueLibABIVaultDynaZapperABI
