/**
 * 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>;
