import { BigNumber } from 'ethers';
import { EventData } from '../types';
import { DynamoOrder } from '../dynamo/types';
export interface Order extends Omit<DynamoOrder, 'amount' | 'maxReward' | 'insurance' | 'profit' | 'confirmedAmount'> {
    amount: BigNumber;
    maxReward: BigNumber;
    insurance: BigNumber;
    profit: BigNumber;
    confirmedAmount: BigNumber | undefined;
    assetNative: boolean;
    sourceAssetCode?: number;
    destinationAssetCode?: number;
    openOrderVerifyTxHash?: string;
    closedOrderVerifyTxHash?: string;
}
export interface L3Order {
    source: string;
    destination: string;
    asset: number;
    targetAccount: string;
    amount: BigNumber;
    rewardAsset: string;
    maxReward: BigNumber;
    nonce: number;
    sourceAccount: string;
    orderTimestamp: number;
}
export declare function rawOrderToDBOrder(order: Order): DynamoOrder;
export declare function orderToOrderL3(order: Order): L3Order;
export declare function dbOrderToRawOrder(order: DynamoOrder): Order;
export declare function createNewEmptyOrder(): Order;
export declare function checkMissingOrderFields(order: Order): string[];
export interface OrderWithTimestamp {
    order: Order;
    txHash: string;
    timestamp: number;
}
export type OrderAttestationDuplicatedOrAboveLimit = [
    string,
    string,
    BigNumber,
    EventData
];
export type L3OrderCreatedEventData = [
    string,
    string,
    number,
    string,
    BigNumber,
    string,
    BigNumber,
    number,
    string,
    string,
    BigNumber,
    EventData
];
export type OrderAttestationEventData = [
    string,
    string,
    number,
    string,
    string,
    EventData
];
export type GMPByteType = 'commit' | 'revert';
export declare enum GMPByteRaw {
    'commit' = "0x00",
    'revert' = "0x01",
    'commitOpenMarket' = "0x05"
}
export interface L3Bid {
    biddingStartTimestamp: number;
    executor: string;
    proposedReward: BigNumber;
}
export interface L3Attestation {
    attester: string;
    batchIndex: number;
    beneficiary: string;
    signature: string;
    attestationBatchMessageHash: string;
}
export interface L3OrderData {
    order: Order;
    txHash: string;
    bid: L3Bid;
    attestations: L3Attestation[];
}
export interface CheckRefundableResult {
    isRefundable: boolean;
    orderId: string;
    isKnownL2: boolean;
    threw: boolean;
}
export interface CheckRefundableResultV2 {
    isRefundable: boolean;
    batchPayloadHash: string;
    batchPayload: string;
    orderId: string;
    isKnownL2: boolean;
    revertOrdersOfBatches: string[];
    threw: boolean;
}
export interface L3OrderTimestamps {
    orderId: string;
    orderTimestamp: number;
    bidTimestamp: number;
    confirmationTimestamp: number;
    refundTimestamp: number;
    claimTimestamp: number;
    attestationTimestamp: number;
}
export interface L3BidWinnerResponse {
    bidWinner: string;
    threw: boolean;
    errorMessage?: string;
}
export interface OrderResponseL3 {
    order: Order | null;
    exists: boolean;
    threw: boolean;
}
export interface L3OrderTimestampsResponse {
    orderTimestamp: BigNumber;
    bidTimestamp: BigNumber;
    confirmationTimestamp: BigNumber;
    refundTimestamp: BigNumber;
    claimTimestamp: BigNumber;
    attestationTimestamp: BigNumber;
}
export type L3OrderTuple = [
    string,
    string,
    number,
    string,
    BigNumber,
    string,
    BigNumber,
    number,
    string,
    BigNumber
];
export type OrderCreatedEventData = [
    string,
    string,
    number,
    string,
    BigNumber,
    string,
    BigNumber,
    BigNumber,
    number,
    string,
    BigNumber,
    EventData
];
export type L3BidTuple = [
    BigNumber,
    string,
    BigNumber
];
export type L3AttestationTuple = [
    string,
    number,
    string,
    string,
    string
];
export type L3GetOrderResponse = [L3OrderTuple, string];
export type L3GetOrderWithTimestampResponse = [L3OrderTuple, string, BigNumber];
export type L3GetOrderDataResponse = [L3OrderTuple, string, L3BidTuple, L3AttestationTuple[], number];
export interface DLQOrderAttestation {
    orderId: string;
    attester: string;
    beneficiary: string;
    signature: string;
}
export interface SingleOrderAttestation {
    attester: string;
    beneficiary: string;
    signature: string;
}
export interface OrderAttestation {
    attester: string;
    batchIndex: number;
    beneficiary: string;
    signature: string;
    attestationBatchMessageHash: string;
}
export interface BatchAttestation {
    attestationBatchMessageHash: string;
    attester: string;
    signature: string;
}
export declare enum OrderStatus {
    Placed = "Placed",
    Pending = "Pending",
    Bid = "Bid",
    Executed = "Executed",
    Expired = "Expired",
    MissingExecutor = "MissingExecutor",
    MissingConfirmation = "MissingConfirmation",
    MissingOrderTimestamp = "MissingOrderTimestamp",
    MissingOrderMaxReward = "MissingOrderMaxReward",
    AttestedL3 = "AttestedL3",
    AttestedUnsupportedNetwork = "AttestedUnsupportedNetwork",
    PlacedUnsupportedNetwork = "PlacedUnsupportedNetwork",
    Attested = "Attested",
    Claimed = "Claimed",
    ClaimedInsurance = "ClaimedInsurance",
    ProcessInsurance = "ProcessInsurance",
    ConfirmedRefund = "ConfirmedRefund",
    PendingRefund = "PendingRefund",
    RefundAttested = "RefundAttested",
    RefundZeroAddress = "RefundZeroAddress",
    PendingRefundWaiting = "PendingRefundWaiting",
    InvalidPendingRefund = "InvalidPendingRefund",
    InvalidAttestation = "InvalidAttestation",
    NonClaimable = "NonClaimable",
    InvalidMissingL2 = "InvalidMissingL2",
    ClaimedRefund = "ClaimedRefund",
    GMPUnmoved = "GMPUnmoved",
    GMPReAttest = "GMPReAttest",
    GMPMismatch = "GMPMismatch",
    UnknownPossibleMigration = "UnknownPossibleMigration",
    Broken = "Broken",
    UnRefundable = "UnRefundable",
    ToRepatriate = "ToRepatriate",
    Repatriated = "Repatriated",
    Duplicated = "Duplicated",
    PendingIngress = "PendingIngress",
    ResolvedIngress = "ResolvedIngress",
    PendingEgress = "PendingEgress",
    ResolvedEgress = "ResolvedEgress",
    AppliedEgress = "AppliedEgress"
}
export declare function generateId(addr: string, nonce: number): string;
//# sourceMappingURL=types.d.ts.map