import { BigNumberish } from 'ethers';
import { DolomiteContractFactory, DolomiteMargin } from '../../apps/dolomite/contracts';
import { Multicall } from '../../contract/contracts/ethers';
import { IMulticallWrapper } from '../../multicall';
import { DefaultDataProps } from '../../position/display.interface';
import { ContractPosition } from '../../position/position.interface';
import { DefaultContractPositionDefinition, GetDataPropsParams, GetTokenBalancesParams, GetTokenDefinitionsParams, UnderlyingTokenDefinition } from '../../position/template/contract-position.template.types';
import { Network } from '../../types';
export interface AccountStruct {
    accountOwner: string;
    accountNumber: string;
}
export interface DolomiteContractPosition extends ContractPosition<DolomiteDataProps> {
    accountStructs: AccountStruct[];
}
export interface DolomiteContractPositionDefinition extends DefaultContractPositionDefinition {
    marketsCount: number;
    marketIdToMarketMap: {
        [marketId: number]: ExtraTokenInfo;
    };
}
export declare enum TokenMode {
    NORMAL = "NORMAL",
    ISOLATION = "ISOLATION",
    SILO = "SILO"
}
export interface ExtraTokenInfo {
    underlyingTokenAddress: string;
    wrappedTokenAddress: string;
    name: string;
    mode: TokenMode;
    marketId: number;
}
export interface DolomiteDataProps extends DefaultDataProps {
    liquidity: number | undefined;
    marketsCount: number;
    marketIdToMarketMap: {
        [marketId: number]: ExtraTokenInfo;
    };
}
export declare const CHUNK_SIZE = 32;
export declare const ISOLATION_MODE_MATCHERS: string[];
export declare const SILO_MODE_MATCHERS: string[];
export declare const SPECIAL_TOKEN_NAME_MATCHERS: string[];
export declare const DOLOMITE_MARGIN_ADDRESSES: {
    arbitrum: string;
};
export declare const DOLOMITE_AMM_FACTORY_ADDRESSES: {
    arbitrum: string;
};
export declare const DOLOMITE_GRAPH_ENDPOINT = "https://api.thegraph.com/subgraphs/name/dolomite-exchange/dolomite-v2-arbitrum";
export declare function chunkArrayForMultiCall<T>(values: T[], getCallData: (value: T, index: number) => {
    target: string;
    callData: string;
}): Multicall.CallStruct[][];
export declare function getTokenDefinitionsLib(params: GetTokenDefinitionsParams<DolomiteMargin, DolomiteContractPositionDefinition>, dolomiteContractFactory: DolomiteContractFactory, network: Network): Promise<UnderlyingTokenDefinition[]>;
export declare function mapTokensToDolomiteDataProps(params: GetDataPropsParams<DolomiteMargin, DolomiteDataProps, DolomiteContractPositionDefinition>, isFetchingDolomiteBalances: boolean, network: Network, multicall: IMulticallWrapper): Promise<DolomiteDataProps>;
export declare function getTokenBalancesPerAccountStructLib(params: GetTokenBalancesParams<DolomiteMargin, DolomiteDataProps>, accountStruct: AccountStruct): Promise<Map<string, BigNumberish>>;
export declare function getVaultAddresses(account: string, isolationModeTokenAddresses: string[], multicall: Multicall): Promise<string[]>;
export declare function getAllIsolationModeTokensFromContractPositions(account: string, contractPositions: ContractPosition<DolomiteDataProps>[], multicall: IMulticallWrapper): Promise<string[]>;
