import { BN } from "@coral-xyz/anchor"; import { PublicKey, TransactionInstruction, TransactionSignature, VersionedTransaction } from "@solana/web3.js"; import { BaseClient, BaseTxBuilder, TxOptions } from "./base"; import { NtBundlePolicy } from "../deser/integrationPolicies"; import { NTBUNDLE_PROGRAM_ID } from "../constants"; import { NtBundleAccount, NtBundleOracleDataAccount, NtBundleUserAccount } from "../deser/ntBundleLayouts"; export { NtBundleAccount, NtBundleOracleDataAccount, NtBundleUserAccount, NtBundleAccount as NeutralBundleAccount, NtBundleOracleDataAccount as NeutralOracleDataAccount, NtBundleUserAccount as NeutralUserBundleAccount, }; export { NTBUNDLE_PROGRAM_ID }; export declare const NT_BUNDLE_PROTOCOL = 1; export declare const NEUTRAL_PROTOCOL = 1; export declare const DEFAULT_NEUTRAL_WITHDRAWAL_MAX_DEVIATION_BPS = 100; export type NeutralWithdrawalEstimate = { sharesAmount: BN; totalEstimatedBundleValue: BN; estimatedPendingWithdrawalValue: BN; minEstimatedValue: BN; maxDeviationFromEstimatedBps: number; }; export declare function estimateNeutralWithdrawalValue(bundleAccount: NtBundleAccount, oracleData: NtBundleOracleDataAccount, sharesAmount: BN | bigint | number | string, maxDeviationFromEstimatedBps?: number): NeutralWithdrawalEstimate; export declare function getNtBundleUserBundlePda(authority: PublicKey, bundle: PublicKey): PublicKey; export declare function getNtBundleOracleDataPda(bundle: PublicKey): PublicKey; export declare function getNtBundleTempDataPda(bundle: PublicKey): PublicKey; export declare function getNtBundlePendingAssetAuthorityPda(bundle: PublicKey): PublicKey; export declare const getNeutralUserBundlePda: typeof getNtBundleUserBundlePda; export declare const getNeutralOracleDataPda: typeof getNtBundleOracleDataPda; export declare const getNeutralBundleTempDataPda: typeof getNtBundleTempDataPda; export declare const getNeutralPendingBundleAssetAuthorityPda: typeof getNtBundlePendingAssetAuthorityPda; declare class TxBuilder extends BaseTxBuilder { setNeutralPolicyIx(policy: NtBundlePolicy, signer?: PublicKey): Promise; setNeutralPolicyTx(policy: NtBundlePolicy, txOptions?: TxOptions): Promise; initializeBundleDepositorIx(bundle: PublicKey, signer?: PublicKey): Promise; initializeBundleDepositorTx(bundle: PublicKey, txOptions?: TxOptions): Promise; requestDepositIx(bundle: PublicKey, amount: BN | bigint | number | string, signer?: PublicKey): Promise; requestDepositTx(bundle: PublicKey, amount: BN | bigint | number | string, txOptions?: TxOptions): Promise; requestWithdrawalIx(bundle: PublicKey, sharesAmount: BN | bigint | number | string, minEstimatedValue: BN | bigint | number | string, signer?: PublicKey): Promise; requestWithdrawalTx(bundle: PublicKey, sharesAmount: BN | bigint | number | string, minEstimatedValue: BN | bigint | number | string, txOptions?: TxOptions): Promise; closeUserBundleAccountIx(bundle: PublicKey, signer?: PublicKey): Promise; closeUserBundleAccountTx(bundle: PublicKey, txOptions?: TxOptions): Promise; } export declare class NeutralClient { readonly base: BaseClient; readonly txBuilder: TxBuilder; constructor(base: BaseClient); baseAccounts(signer?: PublicKey): { glamState: PublicKey; glamVault: PublicKey; glamSigner: PublicKey; integrationAuthority: PublicKey; cpiProgram: PublicKey; glamProtocolProgram: PublicKey; systemProgram: PublicKey; }; getIntegrationAuthorityPda(): PublicKey; getUserBundlePda(bundle: PublicKey): PublicKey; getOracleDataPda(bundle: PublicKey): PublicKey; getBundleTempDataPda(bundle: PublicKey): PublicKey; getPendingBundleAssetAuthorityPda(bundle: PublicKey): PublicKey; fetchBundle(bundle: PublicKey): Promise; fetchOracleData(bundle: PublicKey): Promise; fetchUserBundle(bundle: PublicKey): Promise; estimateWithdrawalValue(bundle: PublicKey, sharesAmount: BN | bigint | number | string, maxDeviationFromEstimatedBps?: number): Promise; fetchPolicy(): Promise; setPolicy(policy: NtBundlePolicy, txOptions?: TxOptions): Promise; allowlistBundle(bundle: PublicKey, txOptions?: TxOptions): Promise; initializeBundleDepositor(bundle: PublicKey, txOptions?: TxOptions): Promise; requestDeposit(bundle: PublicKey, amount: BN | bigint | number | string, txOptions?: TxOptions): Promise; requestWithdrawal(bundle: PublicKey, sharesAmount: BN | bigint | number | string, minEstimatedValue: BN | bigint | number | string, txOptions?: TxOptions): Promise; closeUserBundleAccount(bundle: PublicKey, txOptions?: TxOptions): Promise; }