import { BigNumber } from 'ethers';
import { L3OrderTimestamps, Order, OrderStatus } from '../order/types';
import { AssetName } from './enums';
export interface UserRefundOrder {
    id: string;
    status: string;
    sourceAccount: string;
    orderTimestamp: number;
}
export interface GetOrderApiResponse extends Omit<Order, 'orderCreatedGasUSD' | 'confirmationGasUSD' | 'claimGasUSD' | 'sourceGasFeesUSD' | 'destinationGasFeesUSD' | 'protocolFeeInUSD' | 'executorFeeUSD' | 'totalFeesUSD' | 'refundAmount' | 'refundAmountUSD'> {
    bidWinner: string | undefined;
    lifecycleTimestamps: Omit<L3OrderTimestamps, 'orderId'>;
    status: OrderStatus;
    displayStatus: OrderStatus;
    refund: {
        refundAmount: string;
        refundAmountUSD: number;
        isRefundable: boolean;
        refundableAtTimestamp: number;
        txHash: string | undefined;
    };
    bidTxHash: string | undefined;
    executionTxHash: string | undefined;
    claimTxHash: string | undefined;
    refundTxHash: string | undefined;
    fees: {
        orderCreatedGasUSD: number;
        confirmationGasUSD: number;
        claimGasUSD: number;
        sourceGasFeesUSD: number;
        destinationGasFeesUSD: number;
        protocolFeeInUSD: number;
        executorFeeUSD: number;
        totalFeesUSD: number;
    };
}
export interface CostResult {
    costInWei: BigNumber;
    costInUsd: number;
    costInAsset: BigNumber;
    executorFeeWei: BigNumber;
    executorFeeOptionalSpreadAddOn: BigNumber;
    gasFeeWei: BigNumber;
    protocolFeeWei: BigNumber;
    asset: string;
}
export interface PriceResult {
    assetA: string;
    assetB: string;
    priceAinB: BigNumber;
    priceAInUsd: string;
    priceBInUsd: string;
}
export interface OrderProfitability {
    isProfitable: boolean;
    profit: BigNumber;
    loss: BigNumber;
    protocolFeeCut: BigNumber;
    reason: string | null;
    reasonDetails?: string;
}
export interface OrderProfitabilityProposal {
    profitability: OrderProfitability;
    assumedCost: CostResult;
    assumedPrice: PriceResult;
    rewardAsset: string;
    orderAsset: string;
    costOverpaymentPercent: number;
}
export interface OrderProfitabilityProposalForSetAmount extends OrderProfitabilityProposal {
    setAmount: BigNumber;
    proposedMaxReward: BigNumber;
}
export interface DealPublishable {
    isPublishable: boolean;
    maxReward: BigNumber;
}
export interface UserPublishStrategy {
    maxSpendLimit?: BigNumber;
    setAmount?: BigNumber;
}
export interface ApiBigNumber {
    type: 'BigNumber';
    hex: string;
}
export interface EstimateResponse {
    initialAmountWei: BigNumber;
    initialAmountWeiFormatted?: string;
    initialAmountUSD?: string;
    estimatedReceivedAmountWei: BigNumber;
    estimatedReceivedAmountWeiFormatted?: string;
    estimatedReceivedAmountUSD: string;
    gasFeeWei: BigNumber;
    gasFeeWeiFormatted?: string;
    gasFeeWeiUSD?: string;
    netFeeWei: BigNumber;
    netFeeWeiFormatted?: string;
    netFeeUSD: string;
    totalCostWei: BigNumber;
    totalCostWeiFormatted?: string;
    totalRabateWei: BigNumber;
    totalRabateWeiFormatted?: string;
    totalCostUSD: string;
    executorFeeWei: BigNumber;
    executorFeeWeiFormatted?: string;
    executorFeeUSD: string;
    bridgeFeeWei: BigNumber;
    bridgeFeeWeiFormatted?: string;
    bridgeFeeUSD: string;
    protocolFeeWei: BigNumber;
    protocolFeeWeiFormatted?: string;
    protocolFeeUSD: string;
    BRNBonusWei: BigNumber;
    BRNBonusUSD: string;
    TRNBonusWei: BigNumber;
    TRNBonusUSD: string;
    isHighValueOrder: boolean;
    gasFeeWeiDestination?: BigNumber;
    gasFeeWeiSourceUSD?: string;
    gasFeeWeiDestinationUSD?: string;
    gasFeeWeiDestinationFormatted?: string;
    totalFeeComponentsUSD?: {
        sourceGasFeesUSD: number;
        destinationGasFeesUSD: number;
        protocolFeeInUSD: number;
        executorFeeUSD: number;
    };
    warning?: string;
}
export interface EstimateResponseApi {
    estimatedReceivedAmountWei: ApiBigNumber;
    estimatedReceivedAmountWeiFormatted: string;
    initialAmountWeiFormatted: string;
    gasFeeWei: ApiBigNumber;
    bridgeFeeWei: ApiBigNumber;
    protocolFeeWei: ApiBigNumber;
    BRNBonusWei: ApiBigNumber;
    totalFeeComponentsUSD: {
        sourceGasFeesUSD: number;
        destinationGasFeesUSD: number;
        protocolFeeInUSD: number;
        executorFeeUSD: number;
    };
}
export interface FeesResponseApi {
    protocolFees: Record<NetworkIdT3rn, string>;
    executorFeePercentage: number;
}
export interface USDPriceNetworkAssetValue {
    usdPrice: string;
    timestamp: number;
    address: string;
}
export interface OrderArbitrageStrategy {
    minProfitPerOrder: BigNumber;
    minProfitRate: number;
    maxAmountPerOrder: BigNumber;
    minAmountPerOrder: BigNumber;
    maxShareOfMyBalancePerOrder: number;
}
export interface ExecutorConditions {
    executorId: string;
    gasFeesWei: Record<string, number>;
    protocolFeesPercentage: Record<string, number>;
    executorFeePercentage: number;
    profitPerNetworkPercentage: Record<string, number>;
    chains: {
        id: string;
        totalOrders: number;
        totalOrdersLast24Hours: number;
        ordersVolumeEth: number;
        executedOrders: number;
        executedOrdersLast24Hours: number;
        averageExecutionTimeSecLast24Hours: number;
        averageTxFeeCostsEthLast24Hours: number;
        executorsCount: number;
    }[];
}
export declare enum AssetPriceProviders {
    Moralis = "Moralis",
    Pyth = "Pyth",
    Coinbase = "Coinbase"
}
declare const assetsT3rn: readonly ["eth", "btc", "bera", "bnb", "dai", "xdai", "optimism", "arbitrum", "matic", "sol", "dot", "usdc", "usdt", "trn", "brn", "mon", "sei", "lrn", "t3dot", "t3btc", "t3sol", "t3usd", "t3tia", "t3eth", "t3mon", "t3sei"];
export type AssetNameT3rn = (typeof assetsT3rn)[number];
export declare const isSupportedAssetT3rn: (asset: unknown) => asset is AssetNameT3rn;
declare const networkIdsT3rn: readonly ["arbm", "basm", "bscm", "blsm", "btcm", "unim", "ethm", "linm", "optm", "scrm", "l3rn", "t3rn", "btcm", "arbt", "bast", "bsct", "blst", "lint", "unit", "opst", "scrt", "sept", "lint", "l0rn", "l1rn", "l2rn", "t1rn", "t2rn", "bert", "berm", "abst", "absm", "lskt", "lskm", "mont", "monm", "seim", "seit", "gnot", "gnom", "sklt", "sklm", "lol3", "lols", "lold", "zero", "ctit", "ctim"];
export type NetworkIdT3rn = (typeof networkIdsT3rn)[number];
export declare const idToName: Record<NetworkIdT3rn, string>;
export declare const idToContractsConfig: Record<NetworkIdT3rn, any>;
export declare const nativeAssetsList: AssetName[];
export declare const idToNativeAssetName: Record<NetworkIdT3rn, AssetName>;
export declare const isSupportedNetworkT3rn: (network: unknown) => network is NetworkIdT3rn;
export {};
//# sourceMappingURL=types.d.ts.map