import { IAppToolkit } from '../../../app-toolkit/app-toolkit.interface';
import { Erc20 } from '../../../contract/contracts';
import { AppTokenTemplatePositionFetcher } from '../../../position/template/app-token.template.position-fetcher';
import { GetUnderlyingTokensParams, DefaultAppTokenDefinition, UnderlyingTokenDefinition, GetPricePerShareParams } from '../../../position/template/app-token.template.types';
import { MuxContractFactory } from '../contracts';
export declare type LiquidityAsset = {
    muxLPTotalBalance: number;
    muxLPPrice: number;
    assets: Asset[];
};
declare type Asset = {
    symbol: string;
    price: number;
    liquidityOnChains: LiquidityOnChains;
};
declare type LiquidityOnChains = {
    [chainId: string]: {
        value: number;
    };
};
export declare abstract class MuxMlpTokenFetcher extends AppTokenTemplatePositionFetcher<Erc20> {
    protected readonly appToolkit: IAppToolkit;
    protected readonly contractFactory: MuxContractFactory;
    abstract mlpAddress: string;
    abstract poolAddress: string;
    abstract subgraphUrl: string;
    constructor(appToolkit: IAppToolkit, contractFactory: MuxContractFactory);
    getContract(address: string): Erc20;
    getAddresses(): Promise<string[]>;
    getUnderlyingTokenDefinitions({ tokenLoader, }: GetUnderlyingTokensParams<Erc20, DefaultAppTokenDefinition>): Promise<UnderlyingTokenDefinition[]>;
    getSupply(): Promise<string>;
    getPricePerShare({ appToken }: GetPricePerShareParams<Erc20>): Promise<number[]>;
    getPrice(): Promise<number>;
}
export {};
