import { Algodv2 } from "algosdk";
import { Network } from "../../globals";
import AlgofiClient from "../../algofiClient";
import ParsedTransaction from "../../parsedTransaction";
import { PoolType } from "./ammConfig";
import Pool from "./pool";
import LinearPool from "./linearPool";
export default class AMMClient {
    algofiClient: AlgofiClient;
    algod: Algodv2;
    network: Network;
    managerAppId: number;
    pools: {
        [key: number]: Pool;
    };
    assetPoolMap: {
        [key: number]: Pool[];
    };
    poolMap: {
        [key: number]: {
            [key: number]: {
                [key: number]: Pool;
            };
        };
    };
    lpPoolMap: {
        [key: number]: Pool;
    };
    linearPool: LinearPool;
    constructor(algofiClient: AlgofiClient);
    loadState(): Promise<void>;
    getPool(assetAId: number, assetBId: number, poolType: PoolType): Promise<Pool>;
    hasPoolForLPAsset(lpAssetId: number): boolean;
    getPoolByLPAsset(lpAssetId: number): Promise<Pool>;
    hasPoolsForAsset(assetId: number): boolean;
    getPoolsByAsset(assetId: number): Pool[];
    hasPoolForAppId(appId: number): boolean;
    getPoolByAppId(appId: number): Promise<Pool>;
    isAMMTransaction(txn: object): boolean;
    parseTransaction(txns: {}[], txnIdx: number, parsedTransactions: ParsedTransaction[]): void;
}
