import { BigNumberish } from 'ethers';
import { IAppToolkit } from '../../../app-toolkit/app-toolkit.interface';
import { ContractPositionBalance } from '../../../position/position-balance.interface';
import { MetaType } from '../../../position/position.interface';
import { GetDefinitionsParams, GetTokenDefinitionsParams, GetDisplayPropsParams, GetDataPropsParams, DefaultContractPositionDefinition } from '../../../position/template/contract-position.template.types';
import { CustomContractPositionTemplatePositionFetcher } from '../../../position/template/custom-contract-position.template.position-fetcher';
import { GmxContractFactory, GmxVault } from '../contracts';
export declare type GmxOptionContractPositionDefinition = {
    address: string;
    collateralTokenAddress: string;
    indexTokenAddress: string;
    isLong: boolean;
};
export declare type GmxOptionContractPositionDataProps = {
    isLong: boolean;
    positionKey: string;
};
export declare abstract class GmxPerpContractPositionFetcher extends CustomContractPositionTemplatePositionFetcher<GmxVault, GmxOptionContractPositionDataProps, GmxOptionContractPositionDefinition> {
    protected readonly appToolkit: IAppToolkit;
    protected readonly contractFactory: GmxContractFactory;
    abstract vaultAddress: string;
    abstract usdcAddress: string;
    constructor(appToolkit: IAppToolkit, contractFactory: GmxContractFactory);
    getContract(address: string): GmxVault;
    getDefinitions({ multicall }: GetDefinitionsParams): Promise<GmxOptionContractPositionDefinition[]>;
    getTokenDefinitions({ definition }: GetTokenDefinitionsParams<GmxVault, GmxOptionContractPositionDefinition>): Promise<{
        metaType: MetaType;
        address: string;
        network: import("../../../types").Network;
    }[]>;
    getDataProps({ definition, }: GetDataPropsParams<GmxVault, GmxOptionContractPositionDataProps, GmxOptionContractPositionDefinition>): Promise<{
        isLong: boolean;
        positionKey: string;
    }>;
    getLabel({ contractPosition, }: GetDisplayPropsParams<GmxVault, GmxOptionContractPositionDataProps, GmxOptionContractPositionDefinition>): Promise<string>;
    getImages({ contractPosition, }: GetDisplayPropsParams<GmxVault, GmxOptionContractPositionDataProps, DefaultContractPositionDefinition>): Promise<string[]>;
    getTokenBalancesPerPosition(): Promise<BigNumberish[]>;
    getBalances(address: string): Promise<ContractPositionBalance<GmxOptionContractPositionDataProps>[]>;
}
