import { PublicKey, TransactionInstruction } from '@solana/web3.js';
import BN__default from 'bn.js';
import { m as ApiV3PoolInfoItem, t as PoolKeys } from '../../type-853b65da.js';
import { ReturnTypeMakeSwapInstruction, ComputeAmountOutLayout } from './type.js';
import 'decimal.js';
import '../../module/token.js';
import '../../common/pubKey.js';
import '../../common/logger.js';
import '../../module/currency.js';
import '../../marshmallow/index.js';
import '../../marshmallow/buffer-layout.js';
import '@solana/spl-token';
import '../../common/txTool/txType.js';
import '../../common/owner.js';
import '../../common/txTool/lookupTable.js';
import '../../type-62191465.js';
import '../clmm/layout.js';

declare function route1Instruction(programId: PublicKey, poolInfoA: ApiV3PoolInfoItem, poolKeyA: PoolKeys, poolKeyB: PoolKeys, userSourceToken: PublicKey, userRouteToken: PublicKey, userPdaAccount: PublicKey, ownerWallet: PublicKey, inputMint: PublicKey, amountIn: BN__default, amountOut: BN__default, tickArrayA?: PublicKey[]): TransactionInstruction;
declare function route2Instruction(programId: PublicKey, poolInfoB: ApiV3PoolInfoItem, poolKeyA: PoolKeys, poolKeyB: PoolKeys, userRouteToken: PublicKey, userDestinationToken: PublicKey, userPdaAccount: PublicKey, ownerWallet: PublicKey, routeMint: PublicKey, tickArrayB?: PublicKey[]): TransactionInstruction;
declare function routeInstruction(programId: PublicKey, wallet: PublicKey, userSourceToken: PublicKey, userRouteToken: PublicKey, userDestinationToken: PublicKey, inputMint: string, routeMint: string, poolInfoA: ApiV3PoolInfoItem, poolInfoB: ApiV3PoolInfoItem, poolKeyA: PoolKeys, poolKeyB: PoolKeys, amountIn: BN__default, amountOut: BN__default, remainingAccounts: (PublicKey[] | undefined)[]): TransactionInstruction;
declare type MakeSwapInstructionParam = {
    ownerInfo: {
        wallet: PublicKey;
        sourceToken: PublicKey;
        routeToken?: PublicKey;
        destinationToken: PublicKey;
    };
    inputMint: PublicKey;
    routeProgram: PublicKey;
    swapInfo: ComputeAmountOutLayout;
};
declare function makeSwapInstruction({ routeProgram, ownerInfo, inputMint, swapInfo, }: MakeSwapInstructionParam): Promise<ReturnTypeMakeSwapInstruction>;

export { makeSwapInstruction, route1Instruction, route2Instruction, routeInstruction };
