@byzantine/vault-sdk
Version:
Byzantine Vault SDK for creating and managing vaults on Ethereum for restaking strategies
159 lines (158 loc) • 5.65 kB
TypeScript
/**
* 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>;