@byzantine/vault-sdk
Version:
Byzantine Vault SDK for creating and managing vaults on Ethereum for restaking strategies
123 lines (122 loc) • 3.3 kB
TypeScript
export type ChainsOptions = 1 | 17000 | 11155111 | 560048;
export interface NetworkConfig {
name: string;
byzantineFactoryAddress: string;
scanLink: string;
stETHAddress: string;
wstETHAddress: string;
osETHAddress?: string;
mETHAddress?: string;
ETHxAddress?: string;
}
/**
* Client initialization options
*/
export interface ByzantineClientOptions {
chainId: ChainsOptions;
provider?: any;
signer?: any;
}
export type RestakingProtocol = "EigenLayer" | "Symbiotic" | "SuperVault" | "Babylon";
export type RestakingType = "Native" | "ERC20";
export interface Metadata {
name: string;
description: string;
image_url?: string;
social_twitter?: string;
social_discord?: string;
social_telegram?: string;
social_website?: string;
social_github?: string;
}
export interface BaseParams {
metadata: Metadata | string;
token_address: string;
is_deposit_limit: boolean;
deposit_limit: bigint;
is_private: boolean;
is_tokenized: boolean;
token_name: string;
token_symbol: string;
curator_fee: number;
role_manager: string;
role_version_manager: string;
role_deposit_limit_manager: string;
role_deposit_whitelist_manager: string;
role_curator_fee_claimer: string;
role_curator_fee_claimer_admin: string;
}
export interface NativeParams {
byzVaultParams: BaseParams;
operator_id: string;
solo_staking_fee?: number;
roles_validator_manager: string[];
}
export declare enum DelegatorType {
NETWORK_RESTAKE = 0,// 0
FULL_RESTAKE = 1,// 1
OPERATOR_SPECIFIC = 2,// 2
OPERATOR_NETWORK_SPECIFIC = 3
}
export declare enum SlasherType {
INSTANT = 0,// 0
VETO = 1
}
export interface SymbioticParams {
vault_version: number;
vault_epoch_duration: number;
slasher_type: SlasherType;
slasher_veto_duration: number;
slasher_number_epoch_to_set_delay: number;
burner_delay_settings_applied: number;
burner_global_receiver: string;
burner_network_receiver?: {
network: string;
receiver: string;
}[];
burner_operator_network_receiver?: {
network: string;
operator: string;
receiver: string;
}[];
delegator_type: DelegatorType;
delegator_hook: string;
delegator_operator: string;
delegator_network: string;
role_delegator_set_hook: string;
role_delegator_set_network_limit: string[];
role_delegator_set_operator_network_limit: string[];
role_burner_owner_burner: string;
}
export interface SymbioticVault {
base: BaseParams;
symbiotic: SymbioticParams;
}
export interface EigenlayerParams {
delegation_set_role_holder: string;
operator: string;
approver_signature_and_expiry: {
signature: string;
expiry: number;
};
approver_salt: string;
}
export interface EigenpodParams {
eigen_pod_manager: string;
}
export interface EigenlayerVault {
base: BaseParams;
eigenlayer: EigenlayerParams;
}
export interface NativeEigenlayerVault {
base: NativeParams;
eigenlayer: EigenlayerParams;
eigenpod: EigenpodParams;
}
export interface SuperVault {
base: BaseParams;
symbiotic: SymbioticParams;
eigenlayer: EigenlayerParams;
ratio: number;
curator: string;
}