UNPKG

@byzantine/vault-sdk

Version:

Byzantine Vault SDK for creating and managing vaults on Ethereum for restaking strategies

159 lines (158 loc) 5.65 kB
/** * CreateVaults * * Helper functions for creating different types of vaults using the Byzantine Factory */ import { ethers, TransactionResponse } from "ethers"; import { EigenlayerVault, NativeEigenlayerVault, SymbioticVault, BaseParams, NativeParams, EigenlayerParams, EigenpodParams, SymbioticParams, SuperVault } from "../../types"; /** * Format base parameters to match the contract's expected format * @param params Base parameters * @returns Formatted parameters */ export declare function formatBaseParams(params: BaseParams): Promise<{ token: string; roleManager: string; versionManager: string; depositWhitelistManager: string; depositLimitManager: string; curatorFeeClaimer: string; curatorFeeClaimerRoleAdmin: string; curatorFee: number; depositLimit: bigint; isDepositLimit: boolean; isPrivateVault: boolean; isTokenized: boolean; name: string; symbol: string; metadataURI: string; }>; /** * Format native parameters to match the contract's expected format * @param params Native parameters * @returns Formatted parameters */ export declare function formatNativeParams(params: NativeParams): Promise<{ byzVaultParams: { token: string; roleManager: string; versionManager: string; depositWhitelistManager: string; depositLimitManager: string; curatorFeeClaimer: string; curatorFeeClaimerRoleAdmin: string; curatorFee: number; depositLimit: bigint; isDepositLimit: boolean; isPrivateVault: boolean; isTokenized: boolean; name: string; symbol: string; metadataURI: string; }; operatorId: string; soloStakingFee: number; validatorManagers: string[]; }>; /** * Format Eigenlayer parameters to match the contract's expected format * @param params Eigenlayer parameters * @returns Formatted parameters */ export declare function formatEigenParams(params: EigenlayerParams): { delegationSetRoleHolder: string; operator: string; approverSignatureAndExpiry: { signature: string; expiry: number; }; approverSalt: string; }; /** * Format EigenPod parameters to match the contract's expected format * @param params EigenPod parameters * @returns Formatted parameters */ export declare function formatEigenPodParams(params: EigenpodParams): { eigenPodManager: string; }; /** * Format Symbiotic parameters to match the contract's expected format * @param params Symbiotic parameters * @returns Formatted parameters */ export declare function formatSymbioticParams(params: SymbioticParams): { burnerParams: { owner: string; delay: number; globalReceiver: string; networkReceivers: { network: string; receiver: string; }[]; operatorNetworkReceivers: { network: string; operator: string; receiver: string; }[]; }; vaultParams: { version: number; epochDuration: number; }; delegatorParams: { delegatorType: import("../../types").DelegatorType; hook: string; hookSetRoleHolder: string; networkLimitSetRoleHolders: string[]; operatorNetworkLimitOrSharesSetRoleHolders: string[]; operator: string; network: string; }; slasherParams: { slasherType: import("../../types").SlasherType; vetoDuration: number; resolverSetEpochsDelay: number; }; }; /** * Create an Eigenlayer ERC20 vault * @param contract Byzantine Factory contract instance * @param params Eigenlayer vault parameters * @param options Optional transaction options * @returns Transaction response */ export declare function createEigenlayerERC20Vault(contract: ethers.Contract, params: EigenlayerVault, options?: Partial<ethers.TransactionRequest>): Promise<TransactionResponse>; /** * Create an Eigenlayer Native vault * @param contract Byzantine Factory contract instance * @param params Native Eigenlayer vault parameters * @param options Optional transaction options * @returns Transaction response */ export declare function createEigenlayerNativeVault(contract: ethers.Contract, params: NativeEigenlayerVault, options?: Partial<ethers.TransactionRequest>): Promise<TransactionResponse>; /** * Create a Symbiotic ERC20 vault * @param contract Byzantine Factory contract instance * @param params Symbiotic vault parameters * @param options Optional transaction options * @returns Transaction response */ export declare function createSymbioticERC20Vault(contract: ethers.Contract, params: SymbioticVault, options?: Partial<ethers.TransactionRequest>): Promise<TransactionResponse>; /** * Create a SuperVault ERC20 vault * @param contract Byzantine Factory contract instance * @param params SuperVault parameters * @param options Optional transaction options * @returns Transaction response */ export declare function createSuperVaultERC20(contract: ethers.Contract, params: SuperVault, options?: Partial<ethers.TransactionRequest>): Promise<TransactionResponse>; /** * Set the token to Eigen strategy mapping * @param contract Byzantine Factory contract instance * @param tokens The array of ERC20 token addresses * @param strategies The array of EigenLayer strategy addresses * @param options Optional transaction options * @returns Transaction response */ export declare function setTokenToEigenStrategy(contract: ethers.Contract, tokens: string[], strategies: string[], options?: Partial<ethers.TransactionRequest>): Promise<TransactionResponse>;