import { Contract } from 'ethers';
import { IChain } from './constants';
import { ITxStatus } from './tx';
import { IERC20 } from '../typechain';
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;
    inBeta: 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 = 'uniV3' | 'hlp' | 'perpetual';
export type AssetData = 'price' | 'yield' | 'volatility';
export type DataType = BacktestType | AssetData;
export declare const getTsKey: (asset: Asset, type: DataType, source?: string) => string;
export declare enum PnlLock {
    None = 0,
    Deposit = 1,
    Withdraw = 2
}
export interface IOzAuth {
    OWNER: string | undefined;
    GUARDIAN: string | undefined;
    MANAGER: string | undefined;
    isOwner: boolean | undefined;
    isGuardian: boolean | undefined;
    isManager: boolean | undefined;
    isAdmin: boolean;
}
export interface ITimelockAuth {
    PROPOSER_ROLE: string | undefined;
    EXECUTOR_ROLE: string | undefined;
    TIMELOCK_ADMIN_ROLE: string | undefined;
    isProposer: boolean | undefined;
    isExecutor: boolean | undefined;
    isTimelockAdminRole: boolean | undefined;
    isTimelockAdmin: boolean;
}
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>;
export interface IToken {
    contract?: IERC20 | null | undefined;
    address?: string | null | undefined;
    symbol?: string | null | undefined;
    decimals?: number | null | undefined;
    isBase?: boolean | null;
}
