import { Address, IAccountMeta, IInstruction, Option, TransactionSigner } from "@solana/kit";
import BN from "bn.js";
export interface WithdrawArgs {
    sharesAmount: BN;
}
export interface WithdrawAccounts {
    user: TransactionSigner;
    strategy: Address;
    globalConfig: Address;
    pool: Address;
    position: Address;
    tickArrayLower: Address;
    tickArrayUpper: Address;
    tokenAVault: Address;
    tokenBVault: Address;
    baseVaultAuthority: Address;
    poolTokenVaultA: Address;
    poolTokenVaultB: Address;
    tokenAAta: Address;
    tokenBAta: Address;
    tokenAMint: Address;
    tokenBMint: Address;
    userSharesAta: Address;
    sharesMint: Address;
    treasuryFeeTokenAVault: Address;
    treasuryFeeTokenBVault: Address;
    tokenProgram: Address;
    tokenProgram2022: Address;
    tokenATokenProgram: Address;
    tokenBTokenProgram: Address;
    memoProgram: Address;
    positionTokenAccount: Address;
    poolProgram: Address;
    instructionSysvarAccount: Address;
    eventAuthority: Option<Address>;
}
export declare const layout: import("buffer-layout").Layout<unknown>;
export declare function withdraw(args: WithdrawArgs, accounts: WithdrawAccounts, programAddress?: Address): IInstruction<string, readonly (IAccountMeta<string> | import("@solana/kit").IAccountLookupMeta<string, string>)[]>;
//# sourceMappingURL=withdraw.d.ts.map