import { Attestation, Judgement } from '../guardian/types';
import { Order, OrderStatus } from '../order/types';
import { TxArgsAttest, TxArgsAttestBatch } from '../transmitter/types';
import { AssetName } from '../pricer/enums';
import { NetworkIdT3rn } from '../pricer/types';
import { TransactionsTimeSeriesRedshift } from '../redshift/types';
export declare enum TableNames {
    guardianTransitionHistory = "guardian-transition-history",
    guardianBatchHashes = "guardian-batch-hashes",
    guardianEscrowOrders = "guardian-escrow-orders",
    guardianOrders = "guardian-orders",
    guardianAttestationsPending = "guardian-attestations-pending",
    guardianAttestationsDLQ = "guardian-attestations-dlq",
    guardianOrderStats = "guardian-order-stats",
    guardianChainStats = "guardian-chain-stats",
    guardianExecutorStats = "guardian-executor-stats",
    guardianUserStats = "guardian-user-stats",
    guardianOrdersAccounts = "guardian-orders-accounts",
    guardianAccountsBalances = "guardian-accounts-balances",
    guardianTimeseriesStats = "guardian-timeseries-stats",
    guardianAixecutors = "guardian-aixecutors",
    guardianBRNSybils = "guardian-brn-sybils",
    messiah = "messiah"
}
export declare const TableIndexNames: {
    readonly guardianOrders: {
        readonly statusOrderTimestamp: "status-orderTimestamp";
        readonly status: "status";
        readonly sourceStatus: "source-status";
        readonly partitionOrderTimestamp: "partitionKey-orderTimestamp";
        readonly statusOrderTimestampAll: "status-orderTimestamp-ALL";
        readonly sourceAccount: "sourceAccount";
        readonly executorStatus: "executor-status";
        readonly executorConfirmationTimestamp: "executor-confirmationTimestamp";
        readonly executorConfirmationTimestampAll: "executor-confirmationTimestamp-ALL";
        readonly sourceAccountStatus: "sourceAccount-status";
        readonly sourceAccountStatusAll: "sourceAccount-status-ALL";
        readonly sourceAccountOrderTimestamp: "sourceAccount-orderTimestamp";
        readonly sourceAccountOrderTimestampAll: "sourceAccount-orderTimestamp-ALL";
        readonly txHash: "txHash";
    };
    readonly guardianExecutorStats: {
        readonly partitionKeyTotalMaxRewardsUSDLastHour: "partitionKey-totalMaxRewardsUSDLastHour";
        readonly partitionKeyTotalBidsLastHour: "partitionKey-totalBidsLastHour";
    };
    readonly guardianTimeseriesStats: {
        readonly partitionKeyBucketStartTs: "partitionKey-bucketStartTs";
        readonly bucketTypeBucketStartTs: "bucketType-bucketStartTs";
    };
};
export interface DynamoPendingAttestation extends Attestation {
    order: Order;
    judgement: Judgement;
    remoteOrderPayloadHash: string;
    remoteOrderNewHash: string;
    source: string;
}
export interface DynamoAttestationDLQObj extends DynamoPendingAttestation {
    txArgs: TxArgsAttest | TxArgsAttestBatch | undefined;
}
export interface DynamoInvalidAttestationReason {
    reason: string;
    timestamp: number;
    error?: unknown;
    callstack?: string;
}
export interface DynamoOrder {
    id: string;
    status: OrderStatus;
    partitionKey: string;
    nonce: number;
    amount: string;
    maxReward: string;
    insurance: string;
    sourceAsset: string;
    destinationAsset: string;
    source: NetworkIdT3rn;
    destination: NetworkIdT3rn;
    sourceAccount: string;
    targetAccount: string;
    profit: string;
    executor: string;
    confirmedAmount: string | undefined;
    batchHash: string | undefined;
    verifiedExecution: boolean | undefined;
    verifiedExecutionL3: boolean | undefined;
    orderTimestamp: number;
    orderTimestampTtl: number;
    bidTimestamp: number;
    confirmationTimestamp: number;
    refundTimestamp: number;
    claimTimestamp: number;
    attestationTimestamp: number;
    txHash: string;
    txIndex?: string | undefined;
    bidTxHash: string | undefined;
    bidTxIndex?: string | undefined;
    confirmationTxHash: string | undefined;
    confirmationTxIndex?: string | undefined;
    claimTxHash: string | undefined;
    claimTxIndex?: string | undefined;
    refundTxHash: string | undefined;
    refundTxIndex?: string | undefined;
    insuranceTxHash: string | undefined;
    orderCreatedGasFee: string;
    confirmationGasFee: string;
    refundAmount: string;
    maxRewardUSD: number;
    amountUSD: number;
    profitUSD: number;
    insuranceUSD: number;
    orderCreatedGasUSD: number;
    confirmationGasUSD: number;
    claimGasUSD: number;
    refundGasUSD: number;
    sourceGasFeesUSD: number;
    destinationGasFeesUSD: number;
    protocolFeeInUSD: number;
    executorFeeUSD: number;
    refundAmountUSD: number;
    totalFeesUSD: number;
}
export interface DynamoOrderAccount {
    id: string;
    account: string;
    orderTimestamp: number;
}
export declare enum DynamoOrderStatusOrdering {
    Placed = 0,
    Pending = 1,
    PlacedUnsupportedNetwork = 2,
    Bid = 100,
    InvalidPendingRefund = 105,
    InvalidAttestation = 106,
    InvalidMissingL2 = 107,
    GMPUnmoved = 108,
    GMPReAttest = 109,
    UnknownPossibleMigration = 110,
    Broken = 111,
    UnRefundable = 112,
    Duplicated = 113,
    GMPMismatch = 114,
    Expired = 200,
    PendingRefundWaiting = 201,
    PendingRefund = 202,
    RefundZeroAddress = 203,
    RefundAttested = 204,
    MissingExecutor = 205,
    MissingOrderTimestamp = 206,
    MissingOrderMaxReward = 207,
    MissingConfirmation = 208,
    Executed = 300,
    AttestedUnsupportedNetwork = 400,
    AttestedL3 = 401,
    Attested = 402,
    NonClaimable = 403,
    ProcessInsurance = 404,
    ClaimedInsurance = 405,
    Claimed = 500,
    ClaimedRefund = 501,
    ConfirmedRefund = 502,
    ToRepatriate = 503,
    Repatriated = 504,
    PendingIngress = 600,
    ResolvedIngress = 601,
    PendingEgress = 602,
    ResolvedEgress = 603
}
export declare function toComparableStatus(dynamoStatus: OrderStatus): DynamoOrderStatusOrdering;
export interface DynamoExecutor {
    executorId: string;
    partitionKey: string;
    totalBidsLastHour: number;
    totalBidsLast24Hours: number;
    totalBidsLastMonth: number;
    totalBids: number;
    totalMaxRewardsLastHour: number;
    totalMaxRewardsLast24Hours: number;
    totalMaxRewardsLastMonth: number;
    totalMaxRewards: number;
    totalMaxRewardsUSDLastHour: number;
    totalMaxRewardsUSDLast24Hours: number;
    totalMaxRewardsUSDLastMonth: number;
    totalMaxRewardsUSD: number;
    totalExecutedOrdersLastHour: number;
    totalExecutedOrdersLast24Hours: number;
    totalExecutedOrdersLastMonth: number;
    totalExecutedOrders: number;
    totalAttestedOrdersLastHour: number;
    totalAttestedOrdersLast24Hours: number;
    totalAttestedOrdersLastMonth: number;
    totalAttestedOrders: number;
    totalClaimedOrdersLastHour: number;
    totalClaimedOrdersLast24Hours: number;
    totalClaimedOrdersLastMonth: number;
    totalClaimedOrders: number;
    totalAmountsLastHour: number;
    totalAmountsLast24Hours: number;
    totalAmountsLastMonth: number;
    totalAmounts: number;
    totalAmountsUSDLastHour: number;
    totalAmountsUSDLast24Hours: number;
    totalAmountsUSDLastMonth: number;
    totalAmountsUSD: number;
    totalProfitLastHour: number;
    totalProfitLast24Hours: number;
    totalProfitLastMonth: number;
    totalProfit: number;
    totalProfitUSDLastHour: number;
    totalProfitUSDLast24Hours: number;
    totalProfitUSDLastMonth: number;
    totalProfitUSD: number;
    avgProfitPerOrderPercentage: number;
    ROILast24Hours: number;
    APY: number;
    APR: number;
}
export type DynamoExecutorAPI = Omit<DynamoExecutor, 'partitionKey'>;
export interface DynamoUser {
    id: string;
    partitionKey: 'user';
    totalChainsBridged: number;
    totalVolumeWei: string;
    totalVolumeUsd: number;
    top3Chains: string[];
    bridgeEventsCount: number;
}
export type DynamoUserAPI = Omit<DynamoUser, 'partitionKey'>;
export interface DynamoChain {
    chain: NetworkIdT3rn;
    height: number;
    totalOrders: number;
    totalOrdersLast24Hours: number;
    ordersVolume: number;
    ordersVolumeLast24Hours: number;
    ordersVolumeUSD: number;
    ordersVolumeUSDLast24Hours: number;
    executedOrders: number;
    executedOrdersLast24Hours: number;
    averageExecutionTimeSec: number;
    averageExecutionTimeSecLast24Hours: number;
    executorsCount: number;
    averageTxFeeCostsEth: number;
    averageTxFeeCostsEthLast24Hours: number;
    averageTxFeeCostsUSD: number;
    averageTxFeeCostsUSDLast24Hours: number;
    partitionKey: string;
}
export type DynamoChainAPI = Omit<DynamoChain, 'partitionKey'>;
export interface OrdersStats {
    totalUniqueExecutors: number;
    totalUniqueWallets: number;
    totalMonthlyVolumeEther: number;
    totalWeeklyVolumeEther: number;
    total24hVolumeEther: number;
    totalFeesGeneratedEther: number;
    totalTransactions24h: number;
    totalTransactions7d: number;
    totalTransactions30d: number;
    asset: AssetName;
}
export interface DynamoOrderStatusEntry {
    orderTimestamp: number;
    source: NetworkIdT3rn;
    id: string;
    executor: string;
    status: OrderStatus;
}
export interface DynamoOrderSourceAccountEntry {
    id: string;
    source: NetworkIdT3rn;
    sourceAccount: string;
    status: OrderStatus;
    orderTimestamp: number;
}
export type DynamoRefundableOrderApiResponse = DynamoOrderSourceAccountEntry & {
    isRefundable: boolean;
};
export interface DynamoTimeSeriesStats extends TransactionsTimeSeriesRedshift {
    PK: string;
    SK: string;
    partitionKey: string;
}
export type APITimeSeriesStats = Omit<DynamoTimeSeriesStats, 'PK' | 'SK' | 'partitionKey'>;
export interface DynamoSybil {
    address: string;
    ringId?: string;
    ringSize?: number;
    aggregateScore?: number;
    category?: string;
    classification?: 'Human' | 'Probable Human' | 'Unknown' | 'Farmer' | 'Suspected Sybil' | 'Sybil';
    v1User: boolean;
    v1Executor: boolean;
    v2User: boolean;
    v2Executor: boolean;
    brnV1: number;
    brnV2: number;
    totalBrn: number;
    liveBrn: number;
    passportScore: number;
    passportStamps?: any;
    passportResponse?: any;
}
export interface SybilAPI {
    address: string;
    ringId?: string;
    ringSize?: number;
    aggregateScore?: number;
    category?: string;
    classification?: string;
    v1User: boolean;
    v1Executor: boolean;
    v2User: boolean;
    v2Executor: boolean;
    brnV1: number;
    brnV2: number;
    totalBrn: number;
    liveBrn: number;
    passportScore: number;
    passingScore: boolean;
    eligible: boolean;
    reason: string;
}
//# sourceMappingURL=types.d.ts.map