import { BigNumber } from 'ethers';
import { z } from 'zod';
export declare enum EventSource {
    rpc = "rpc",
    stream = "stream",
    sqs = "sqs",
    sqsDLQ = "sqsDLQ",
    sqsMessiah = "sqsMessiah"
}
export declare const DEAD_WALLET_PRIVATE_KEY = "0xDEADa4c724f487e5f768d26154a5d3aa7ef2217e78cf5df96158d8f6c975BEEF";
export declare enum OrderLifecycleCost {
    OrderCreatedNative = 0,
    OrderCreatedERC20 = 1,
    ConfirmedNative = 2,
    ConfirmedERC20 = 3,
    ClaimedNative = 4,
    ClaimedERC20 = 5
}
export declare enum EventName {
    OrderCreated = "OrderCreated",
    RemoteOrderCreated = "RemoteOrderCreated",
    EscrowOrderCreated = "EscrowOrderCreated",
    L3EscrowOrderCreated = "L3EscrowOrderCreated",
    BRNDistributed = "BRNDistributed",
    BidReceived = "BidReceived",
    RevertOrderApproved = "RevertOrderApproved",
    NewOrderAttested = "NewOrderAttested",
    BatchApplied = "BatchApplied",
    DistributionAttempt = "DistributionAttempt",
    OrderAttested = "OrderAttested",
    OrderAttestationDuplicatedOrAboveLimit = "OrderAttestationDuplicatedOrAboveLimit",
    Confirmation = "Confirmation",
    ConfirmationBatch = "ConfirmationBatch",
    TransferCommitApplied = "TransferCommitApplied",
    TransferRevertApplied = "TransferRevertApplied",
    NonClaimable = "NonClaimable",
    ClaimedBatch = "ClaimedBatch",
    NonRefundable = "NonRefundable",
    Claimed = "Claimed",
    ClaimedV1 = "ClaimedV1",
    ConfirmationAttest = "ConfirmationAttest",
    ClaimedRefund = "ClaimedRefund",
    ClaimedRefundV1 = "ClaimedRefundV1",
    NewPayloadMemo = "NewPayloadMemo",
    RevertOrderRevertWithCommitPrevented = "RevertOrderRevertWithCommitPrevented",
    SegmentReceived = "SegmentReceived",
    NewBatchAttested = "NewBatchAttested",
    AlreadyApplied = "AlreadyApplied",
    OutbidReceived = "OutbidReceived",
    BatchError = "BatchError",
    InsuranceClaimed = "InsuranceClaimed",
    InsuranceSet = "InsuranceSet",
    TRNInflationDistributed = "InflationDistributed",
    BRNRewardsDistributed = "BRNRewardsDistributed",
    GMPExpectedPayloadNotMatched = "GMPExpectedPayloadNotMatched",
    BatchConstructed = "BatchConstructed",
    AddPendingAttestationToUnknownOrder = "AddPendingAttestationToUnknownOrder",
    GMPMismatch = "GMPMismatch",
    ExecutorMismatch = "ExecutorMismatch",
    OrderGasConsumed = "OrderGasConsumed",
    ExecuteGasConsumed = "ExecuteGasConsumed",
    ExecutedBatchGasConsumed = "ExecutedBatchGasConsumed"
}
export interface BidData {
    id: string;
    winner: string;
    source: string;
}
export interface EventData {
    blockNumber: number;
    blockHash: string;
    transactionIndex: number;
    removed: boolean;
    address: string;
    data: string;
    topics: string[];
    transactionHash: string;
    logIndex: number;
    event: string;
    eventSignature: string;
    args: (string | number | BigNumber)[];
    blockTimestamp?: number;
    txIndex?: number;
    gasUsed?: number;
}
/**
 * Merges two types together, with the second type overwriting the first.
 *
 * NOTE: this is useful because:
 * type Combined = { a: number } & {a: string} // {a: string | number}
 * Typically we want {a: string} instead.
 */
export type Merge<First, Second> = Omit<First, keyof Second> & Second;
export declare const BigIntishSchema: z.ZodUnion<[z.ZodEffects<z.ZodObject<{
    type: z.ZodLiteral<"BigNumber">;
    hex: z.ZodString;
}, "strip", z.ZodTypeAny, {
    type: "BigNumber";
    hex: string;
}, {
    type: "BigNumber";
    hex: string;
}>, string, {
    type: "BigNumber";
    hex: string;
}>, z.ZodEffects<z.ZodObject<{
    _hex: z.ZodString;
}, "strip", z.ZodTypeAny, {
    _hex: string;
}, {
    _hex: string;
}>, string, {
    _hex: string;
}>, z.ZodString, z.ZodNumber, z.ZodBigInt]>;
export type BigIntish = z.infer<typeof BigIntishSchema>;
export declare const BigIntSchema: z.ZodEffects<z.ZodUnion<[z.ZodEffects<z.ZodObject<{
    type: z.ZodLiteral<"BigNumber">;
    hex: z.ZodString;
}, "strip", z.ZodTypeAny, {
    type: "BigNumber";
    hex: string;
}, {
    type: "BigNumber";
    hex: string;
}>, string, {
    type: "BigNumber";
    hex: string;
}>, z.ZodEffects<z.ZodObject<{
    _hex: z.ZodString;
}, "strip", z.ZodTypeAny, {
    _hex: string;
}, {
    _hex: string;
}>, string, {
    _hex: string;
}>, z.ZodString, z.ZodNumber, z.ZodBigInt]>, bigint, string | number | bigint | {
    type: "BigNumber";
    hex: string;
} | {
    _hex: string;
}>;
export type Last<T extends unknown[]> = T extends [...unknown[], infer L] ? L : unknown;
export declare function getLastElement<T extends unknown[]>(arr: T): Last<T>;
//# sourceMappingURL=types.d.ts.map