import { Address, Instruction, Rpc, SolanaRpcApi } from '@solana/kit'; export declare const VAULT_MINT_PROGRAM_ID: Address; export declare const VAULT_STAKE_PROGRAM_ID: Address; export interface VaultMintConfig { vault: Address; mint: Address; vaultAuthority: Address; redeemVault: Address; bump: number; paused: boolean; allowedExternalMintProgram: Address; } export interface StakeConfig { vault: Address; mint: Address; unbondingPeriod: bigint; bump: number; paused: boolean; } export interface StakeVaultTokenAccountConfig { vaultTokenAccount: Address; vaultAuthority: Address; bump: number; } export interface VaultTokenAccountConfig { vaultTokenAccount: Address; bump: number; } export interface HastraQuote { inputMint: Address; outputMint: Address; inputAmount: bigint; outputAmount: bigint; /** For USDC->wYLDS this is always 1:1. For wYLDS->PRIME it uses virtual share math. */ exchangeRate: number; } export declare class HastraVaultClient { private rpc; private vaultMintConfig; private vaultMintConfigFetchedAt; private stakeConfig; private stakeConfigFetchedAt; private vaultTokenAccountConfig; private stakeVaultTokenAccountConfig; private vaultMintConfigPda; private vaultMintMintAuthorityPda; private vaultTokenAccountConfigPda; private stakeConfigPda; private stakeMintAuthorityPda; private stakeVaultAuthorityPda; private stakeVaultTokenAccountConfigPda; constructor(rpc: Rpc); private getVaultMintConfigPda; private getVaultMintMintAuthorityPda; private getVaultTokenAccountConfigPda; private getStakeConfigPda; private getStakeMintAuthorityPda; private getStakeVaultAuthorityPda; private getStakeVaultTokenAccountConfigPda; private fetchAccountData; getVaultMintConfig(): Promise; getStakeConfig(): Promise; getVaultTokenAccountConfig(): Promise; getStakeVaultTokenAccountConfig(): Promise; private getTokenAccountInfo; private getMintInfo; /** * Quote for minting wYLDS from USDC via vault-mint. * The exchange rate is always 1:1 (deposit amount = minted amount). * Returns outputAmount 0 if the vault is paused. */ quoteUsdcToWylds(usdcAmount: bigint): Promise; /** * Quote for staking wYLDS to receive PRIME via vault-stake. * Uses virtual share accounting to calculate the output. * Returns outputAmount 0 if the vault is paused. */ quoteWyldsToPrime(wyldsAmount: bigint): Promise; /** * Build instructions to deposit USDC and mint wYLDS (1:1). * * @param user - The user's wallet address (signer) * @param userUsdcTokenAccount - The user's USDC token account * @param userWyldsTokenAccount - The user's wYLDS token account * @param amount - Amount of USDC to deposit (in smallest units, e.g. 1_000_000 = 1 USDC) */ getDepositUsdcIxs(user: Address, userUsdcTokenAccount: Address, userWyldsTokenAccount: Address, amount: bigint): Promise; /** * Build instructions to stake wYLDS and receive PRIME. * * @param user - The user's wallet address (signer) * @param userWyldsTokenAccount - The user's wYLDS token account * @param userPrimeTokenAccount - The user's PRIME token account * @param amount - Amount of wYLDS to stake (in smallest units) */ getStakeWyldsIxs(user: Address, userWyldsTokenAccount: Address, userPrimeTokenAccount: Address, amount: bigint): Promise; } export declare function calculateAssetsToShares(assets: bigint, totalShares: bigint, vaultBalance: bigint): bigint; export declare function calculateSharesToAssets(shares: bigint, totalShares: bigint, vaultBalance: bigint): bigint; export declare function calculateExchangeRate(totalShares: bigint, vaultBalance: bigint): bigint; //# sourceMappingURL=hastraClient.d.ts.map