///
import { TransactionInstruction } from '@solana/web3.js';
import BN from 'bn.js';
import { StringPublicKey } from '../utils';
export declare const VAULT_PREFIX = "vault";
export declare enum VaultKey {
Uninitialized = 0,
VaultV1 = 3,
SafetyDepositBoxV1 = 1,
ExternalPriceAccountV1 = 2
}
export declare enum VaultState {
Inactive = 0,
Active = 1,
Combined = 2,
Deactivated = 3
}
export declare const MAX_VAULT_SIZE: number;
export declare const MAX_EXTERNAL_ACCOUNT_SIZE: number;
export declare class Vault {
key: VaultKey;
tokenProgram: StringPublicKey;
fractionMint: StringPublicKey;
authority: StringPublicKey;
fractionTreasury: StringPublicKey;
redeemTreasury: StringPublicKey;
allowFurtherShareCreation: boolean;
pricingLookupAddress: StringPublicKey;
tokenTypeCount: number;
state: VaultState;
lockedPricePerShare: BN;
constructor(args: {
tokenProgram: StringPublicKey;
fractionMint: StringPublicKey;
authority: StringPublicKey;
fractionTreasury: StringPublicKey;
redeemTreasury: StringPublicKey;
allowFurtherShareCreation: boolean;
pricingLookupAddress: StringPublicKey;
tokenTypeCount: number;
state: VaultState;
lockedPricePerShare: BN;
});
}
export declare class SafetyDepositBox {
key: VaultKey;
vault: StringPublicKey;
tokenMint: StringPublicKey;
store: StringPublicKey;
order: number;
constructor(args: {
vault: StringPublicKey;
tokenMint: StringPublicKey;
store: StringPublicKey;
order: number;
});
}
export declare class ExternalPriceAccount {
key: VaultKey;
pricePerShare: BN;
priceMint: StringPublicKey;
allowedToCombine: boolean;
constructor(args: {
pricePerShare: BN;
priceMint: StringPublicKey;
allowedToCombine: boolean;
});
}
export declare const VAULT_SCHEMA: Map;
export declare const decodeVault: (buffer: Buffer) => Vault;
export declare const decodeExternalPriceAccount: (buffer: Buffer) => ExternalPriceAccount;
export declare const decodeSafetyDeposit: (buffer: Buffer) => SafetyDepositBox;
export declare function setVaultAuthority(vault: StringPublicKey, currentAuthority: StringPublicKey, newAuthority: StringPublicKey, instructions: TransactionInstruction[]): Promise;
export declare function initVault(allowFurtherShareCreation: boolean, fractionalMint: StringPublicKey, redeemTreasury: StringPublicKey, fractionalTreasury: StringPublicKey, vault: StringPublicKey, vaultAuthority: StringPublicKey, pricingLookupAddress: StringPublicKey, instructions: TransactionInstruction[]): Promise;
export declare function getSafetyDepositBox(vault: StringPublicKey, tokenMint: StringPublicKey): Promise;
export declare function addTokenToInactiveVault(amount: BN, tokenMint: StringPublicKey, tokenAccount: StringPublicKey, tokenStoreAccount: StringPublicKey, vault: StringPublicKey, vaultAuthority: StringPublicKey, payer: StringPublicKey, transferAuthority: StringPublicKey, instructions: TransactionInstruction[]): Promise;
export declare function activateVault(numberOfShares: BN, vault: StringPublicKey, fractionMint: StringPublicKey, fractionTreasury: StringPublicKey, vaultAuthority: StringPublicKey, instructions: TransactionInstruction[]): Promise;
export declare function combineVault(vault: StringPublicKey, outstandingShareTokenAccount: StringPublicKey, payingTokenAccount: StringPublicKey, fractionMint: StringPublicKey, fractionTreasury: StringPublicKey, redeemTreasury: StringPublicKey, newVaultAuthority: StringPublicKey | undefined, vaultAuthority: StringPublicKey, transferAuthority: StringPublicKey, externalPriceAccount: StringPublicKey, instructions: TransactionInstruction[]): Promise;
export declare function withdrawTokenFromSafetyDepositBox(amount: BN, destination: StringPublicKey, safetyDepositBox: StringPublicKey, storeKey: StringPublicKey, vault: StringPublicKey, fractionMint: StringPublicKey, vaultAuthority: StringPublicKey, instructions: TransactionInstruction[]): Promise;
export declare function updateExternalPriceAccount(externalPriceAccountKey: StringPublicKey, externalPriceAccount: ExternalPriceAccount, instructions: TransactionInstruction[]): Promise;
export declare function getSafetyDepositBoxAddress(vault: StringPublicKey, tokenMint: StringPublicKey): Promise;
//# sourceMappingURL=vault.d.ts.map