import { EventContextBody } from "./common";
import { InternalEventBuilder } from "./InternalEventBuilder";
export declare const ORDER_CANCELLED: string;
export declare const ORDER_CREATED: string;
export declare const ORDER_FILLED: string;
export declare const ORDER_PARTIALLY_FILLED: string;
declare type EventBodyWithContext = {
    context: EventContextBody;
};
declare type EventBodyWithVault = {
    vault: OrderVaultBody;
};
declare type OrderBody = {
    uuid: string;
    remoteOrderId: string;
    status: string;
    makerWalletAddress: string;
};
declare type OrderPurchasedBody = OrderBody & {
    purchaserAddress: string;
    purchaseQuantity: number;
    unitPriceInWei: string;
    unitPriceInUsd: string;
    priceWei: string;
    priceUsd: string;
};
export declare type OrderCreatedBody = EventBodyWithVault & {
    order: OrderBody & {
        side: string;
        tokenAddress: string;
        tokenId?: string;
        quantity: number;
        takerWalletAddress?: string;
        currencyContract: string;
        currencySymbol: string;
        amountEth: string;
        netAmountEth: string;
        validFrom: Date;
        validUntil?: Date;
        source?: string;
        createdAt: Date;
        expiresAt?: Date;
    };
};
export declare type OrderFilledBody = EventBodyWithContext & EventBodyWithVault & {
    order: OrderPurchasedBody & {
        oldStatus: string;
    };
};
export declare type OrderPartiallyFilledBody = EventBodyWithContext & EventBodyWithVault & {
    order: OrderPurchasedBody & {
        oldQuantity: number;
        quantity: number;
    };
};
export declare type OrderCancelledBody = EventBodyWithContext & EventBodyWithVault & {
    order: OrderBody & {
        cancelledAt: Date;
    };
};
export declare type OrderVaultBody = {
    id: number;
    contractAddress: string;
};
export declare class MarketplaceEventBuilder extends InternalEventBuilder {
    protected vault?: OrderVaultBody;
    protected order?: OrderBody & {
        [key: string]: any;
    };
    setVault(vault: OrderVaultBody): this;
    setOrder(order: OrderBody & {
        [key: string]: any;
    }): this;
    protected getPartiallyFilledBody(): OrderPartiallyFilledBody;
    protected getFilledBody(): OrderFilledBody;
    protected getCancelledBody(): OrderCancelledBody;
    protected getCreatedBody(): OrderCreatedBody;
    getEventBody(eventName: string): object;
}
export {};
