import { Transaction, type Algodv2, type TransactionSigner } from 'algosdk';
import { PoolClient } from './PoolClient';
import type { TransactionSignerAccount } from '@algorandfoundation/algokit-utils/types/account';
import { MySmartAsset } from './MySmartAsset';
import { contracts } from '../constants';
export declare enum TokenType {
    ALGO = 0,
    ASA = 1,
    SMART = 2
}
type Token = {
    id: number;
    type: TokenType;
};
export declare class MyPool extends MySmartAsset {
    id: number;
    network: keyof typeof contracts;
    poolClient: PoolClient;
    signer: {
        addr: string;
        signer: TransactionSigner;
    };
    algod: Algodv2;
    constructor(id: number, network: keyof typeof contracts, nodeClient: Algodv2, signer?: TransactionSignerAccount);
    buildDepositTxn(token: {
        id: number;
        type: number;
    }, amount: bigint): Promise<Transaction>;
    makeOptinTxns(token: Token): Promise<Transaction[]>;
    private addLiquidityHandler;
    addLiquidity(tokenA: Token, tokenB: Token, assetAAmount: bigint, assetBAmount: bigint): Promise<boolean & import("@algorandfoundation/algokit-utils/types/app").ABIReturn>;
    buildAddLiquidityTxns(tokenA: Token, tokenB: Token, assetAAmount: bigint, assetBAmount: bigint, populate: boolean): Promise<Transaction[]>;
    private removeLiquidityHandler;
    removeLiquidity(lptAmount: bigint): Promise<boolean & import("@algorandfoundation/algokit-utils/types/app").ABIReturn>;
    buildRemoveLiquidityTxns(lptAmount: bigint, populate: boolean): Promise<Transaction[]>;
    swap(fromToken: Token, toToken: Token, fromAmount: bigint, toAmountMin: bigint, isDirectionAlphaToBeta: boolean): Promise<bigint>;
    buildSwapTxns(fromToken: Token, toToken: Token, fromAmount: bigint, toAmountMin: bigint, isDirectionAlphaToBeta: boolean, populate: boolean): Promise<Transaction[]>;
}
export {};
//# sourceMappingURL=MyPool.d.ts.map