import { Connection, Keypair, PublicKey, Signer, TransactionInstruction } from '@solana/web3.js'; import { InitVaultInstructionAccounts } from '../generated'; declare type HasFractionMint = VaultSetup & { fractionMint: PublicKey; fractionMintAuthority: PublicKey; }; declare type HasFractionTreasury = VaultSetup & { fractionTreasury: PublicKey; }; declare type HasRedeemTreasury = VaultSetup & { redeemTreasury: PublicKey; }; export declare type CompletedVaultSetup = VaultSetup & HasFractionMint & HasFractionTreasury & HasRedeemTreasury; export declare class VaultSetup { private readonly connection; readonly vaultPda: PublicKey; readonly vaultPair: Keypair; readonly vaultAuthority: PublicKey; readonly priceMint: PublicKey; readonly externalPriceAccount: PublicKey; readonly instructions: TransactionInstruction[]; readonly signers: Signer[]; fractionMint?: PublicKey; fractionTreasury?: PublicKey; redeemTreasury?: PublicKey; fractionMintAuthority?: PublicKey; private constructor(); static create(connection: Connection, { vaultAuthority, priceMint, externalPriceAccount, }: { vaultAuthority: PublicKey; priceMint: PublicKey; externalPriceAccount: PublicKey; }): Promise; supplyFractionMint(fractionMint: PublicKey, currentMintAuthority: Keypair): Promise; createFracionMint(payer: PublicKey): Promise; createFractionTreasury(payer: PublicKey): Promise; createRedeemnTreasury(payer: PublicKey): Promise; createVault(payer: PublicKey): Promise; getAccounts(): InitVaultInstructionAccounts; hasFractionMint(this: VaultSetup): this is HasFractionMint; hasFractionTreasury(this: VaultSetup): this is HasFractionTreasury; hasRedeemTreasury(this: VaultSetup): this is HasRedeemTreasury; assertComplete(): asserts this is CompletedVaultSetup; } export declare function initVault(vaultSetup: VaultSetup, allowFurtherShareCreation: boolean): TransactionInstruction; export {};