import { type IdlTypes } from "@coral-xyz/anchor"; import { type AccountMeta, PublicKey, type TransactionInstruction, type TransactionSignature, type VersionedTransaction } from "@solana/web3.js"; import type { ExponentPolicy } from "../deser/integrationPolicies"; import type { ExtExponent } from "../glamExports"; import { type BnInput } from "../utils/common"; import { BaseTxBuilder, type BaseClient, type TxOptions } from "./base"; export type ExponentIdlTypes = IdlTypes; export type ExponentPolicyInput = ExponentIdlTypes["exponentPolicy"]; export type ExponentPolicyLike = { marketsAllowlist?: PublicKey[]; vaultsAllowlist?: PublicKey[]; }; export type ExponentWrapperAccounts = { market: PublicKey; tokenSyTrader: PublicKey; tokenPtTrader: PublicKey; tokenSyEscrow: PublicKey; tokenPtEscrow: PublicKey; addressLookupTable: PublicKey; syProgram: PublicKey; tokenFeeTreasurySy: PublicKey; eventAuthority?: PublicKey; tokenProgram?: PublicKey; remainingAccounts?: AccountMeta[]; }; export type ExponentWrapperBuyPtParams = { ptAmount: BnInput; maxBaseAmount: BnInput; mintSyRemAccountsUntil: number; }; export type ExponentWrapperSellPtParams = { amountPt: BnInput; minBaseAmount: BnInput; redeemSyRemAccountsUntil: number; }; export type ExponentWrapperMergeAccounts = { tokenSyMerger: PublicKey; vault: PublicKey; escrowSy: PublicKey; tokenYtMerger: PublicKey; tokenPtMerger: PublicKey; mintYt: PublicKey; mintPt: PublicKey; authority: PublicKey; vaultAddressLookupTable: PublicKey; vaultRobotYieldPosition: PublicKey; syProgram: PublicKey; eventAuthority?: PublicKey; tokenProgram?: PublicKey; remainingAccounts?: AccountMeta[]; }; export type ExponentWrapperMergeParams = { amountPy: BnInput; redeemSyAccountsUntil: number; }; export declare function getExponentEventAuthorityPda(programId?: PublicKey): PublicKey; declare class TxBuilder extends BaseTxBuilder { private wrapperAccounts; private wrapperMergeAccounts; setExponentPolicyIx(policy: ExponentPolicy | ExponentPolicyLike, signer?: PublicKey): Promise; setExponentPolicyTx(policy: ExponentPolicy | ExponentPolicyLike, txOptions?: TxOptions): Promise; wrapperBuyPtIx(params: ExponentWrapperBuyPtParams, accounts: ExponentWrapperAccounts, signer?: PublicKey): Promise; wrapperBuyPtTx(params: ExponentWrapperBuyPtParams, accounts: ExponentWrapperAccounts, txOptions?: TxOptions): Promise; wrapperSellPtIx(params: ExponentWrapperSellPtParams, accounts: ExponentWrapperAccounts, signer?: PublicKey): Promise; wrapperSellPtTx(params: ExponentWrapperSellPtParams, accounts: ExponentWrapperAccounts, txOptions?: TxOptions): Promise; wrapperMergeIx(params: ExponentWrapperMergeParams, accounts: ExponentWrapperMergeAccounts, signer?: PublicKey): Promise; wrapperMergeTx(params: ExponentWrapperMergeParams, accounts: ExponentWrapperMergeAccounts, txOptions?: TxOptions): Promise; } export declare class ExponentClient { readonly base: BaseClient; readonly txBuilder: TxBuilder; constructor(base: BaseClient); getIntegrationAuthorityPda(): PublicKey; setExponentPolicy(policy: ExponentPolicy | ExponentPolicyLike, txOptions?: TxOptions): Promise; wrapperBuyPt(params: ExponentWrapperBuyPtParams, accounts: ExponentWrapperAccounts, txOptions?: TxOptions): Promise; wrapperSellPt(params: ExponentWrapperSellPtParams, accounts: ExponentWrapperAccounts, txOptions?: TxOptions): Promise; wrapperMerge(params: ExponentWrapperMergeParams, accounts: ExponentWrapperMergeAccounts, txOptions?: TxOptions): Promise; } export {};