import { BigNumberish } from 'ethers';
import { IAppToolkit } from '../../../app-toolkit/app-toolkit.interface';
import { MetaType } from '../../../position/position.interface';
import { ContractPositionTemplatePositionFetcher } from '../../../position/template/contract-position.template.position-fetcher';
import { GetDataPropsParams, GetDisplayPropsParams, GetTokenBalancesParams, GetTokenDefinitionsParams } from '../../../position/template/contract-position.template.types';
import { MuxContractFactory } from '../contracts';
import { MuxVault } from '../contracts/ethers/MuxVault';
export declare type MuxPerpContractPositionDefinition = {
    address: string;
    collateralTokenAddress: string;
    collateralTokenId: number;
    indexTokenAddress: string;
    indexTokenId: number;
    isLong: boolean;
    indexTokenMinProfitRate: string;
    indexTokenMinProfitTime: number;
};
export declare type MuxPerpContractPositionDataProps = {
    isLong: boolean;
    positionKey: string;
    collateralTokenId: number;
    indexTokenId: number;
    indexTokenMinProfitRate: string;
    indexTokenMinProfitTime: number;
};
export declare abstract class MuxPerpContractPositionFetcher extends ContractPositionTemplatePositionFetcher<MuxVault, MuxPerpContractPositionDataProps, MuxPerpContractPositionDefinition> {
    protected readonly appToolkit: IAppToolkit;
    protected readonly contractFactory: MuxContractFactory;
    abstract readerAddress: string;
    abstract usdcAddress: string;
    abstract vaultAddress: string;
    constructor(appToolkit: IAppToolkit, contractFactory: MuxContractFactory);
    getContract(address: string): MuxVault;
    getDefinitions(): Promise<{
        address: string;
        collateralTokenAddress: string;
        collateralTokenId: number;
        indexTokenAddress: string;
        indexTokenId: number;
        indexTokenMinProfitRate: string;
        indexTokenMinProfitTime: number;
        isLong: boolean;
    }[]>;
    getTokenDefinitions({ definition }: GetTokenDefinitionsParams<MuxVault, MuxPerpContractPositionDefinition>): Promise<{
        metaType: MetaType;
        address: string;
        network: import("../../../types").Network;
    }[]>;
    getDataProps({ definition, }: GetDataPropsParams<MuxVault, MuxPerpContractPositionDataProps, MuxPerpContractPositionDefinition>): Promise<{
        isLong: boolean;
        indexTokenId: number;
        collateralTokenId: number;
        indexTokenMinProfitRate: string;
        indexTokenMinProfitTime: number;
        positionKey: string;
    }>;
    getLabel({ contractPosition, }: GetDisplayPropsParams<MuxVault, MuxPerpContractPositionDataProps, MuxPerpContractPositionDefinition>): Promise<string>;
    getTokenBalancesPerPosition({ address, contractPosition, multicall, }: GetTokenBalancesParams<MuxVault, MuxPerpContractPositionDataProps>): Promise<BigNumberish[]>;
}
