import { Contract } from 'ethers';
import { IChain } from './constants';
import { ITxStatus } from './tx';
export interface IContractData {
    address: string;
    abi: any;
}
export interface IDeploymentArtifact {
    address: string;
    abi: any[];
    linkedData?: {
        symbol: string;
        type: string;
    };
}
export interface IDeploymentArtifactWithId extends IDeploymentArtifact {
    id: string;
}
export interface IDeploymentArtifactWithInfo extends IDeploymentArtifactWithId {
    isDeprecated: boolean | undefined;
    isInBeta: boolean | undefined;
    chain: IChain;
}
export declare const Assets: readonly ["ETHUSDC"];
export type Asset = typeof Assets[number];
export type DataSource = 'binance' | 'uniswapV2' | 'unknown';
export type BacktestType = 'shortLp' | 'longLp' | 'perpetual';
export type AssetData = 'price' | 'yield' | 'volatility';
export type DataType = BacktestType | AssetData;
export declare const getTsKey: (asset: Asset, type: DataType, source?: DataSource) => string;
export declare enum PnlLock {
    None = 0,
    Deposit = 1,
    Withdraw = 2
}
export interface IAuth {
    isOwner: boolean | undefined;
    isGuardian: boolean | undefined;
    isAdmin: boolean;
    isManager: boolean | undefined;
    isProposer: boolean | undefined;
    isExecutor: boolean | undefined;
    isTimelockAdmin: boolean | undefined;
}
export type SendTX<T extends Contract, F extends keyof T & string> = (contract: T, action: F, args: Parameters<T[F]>, options?: any, successMessage?: string, dryRun?: boolean) => Promise<ITxStatus>;
