UNPKG

@fractional-company/common

Version:
96 lines (95 loc) 3.52 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.MarketplaceEventBuilder = exports.ORDER_PARTIALLY_FILLED = exports.ORDER_FILLED = exports.ORDER_CREATED = exports.ORDER_CANCELLED = void 0; const InternalEventBuilder_1 = require("./InternalEventBuilder"); const cloneObject_1 = require("../../utils/cloneObject"); const vault_events_1 = require("./vault.events"); const feature = "marketplace"; exports.ORDER_CANCELLED = `${feature}.order_cancelled`; exports.ORDER_CREATED = `${feature}.order_created`; exports.ORDER_FILLED = `${feature}.order_filled`; exports.ORDER_PARTIALLY_FILLED = `${feature}.order_partially_filled`; // params const generalOrderParams = ["uuid", "remoteOrderId", "status", "makerWalletAddress"]; const orderPurchasedParams = [ "purchaserAddress", "purchaseQuantity", "unitPriceInWei", "unitPriceInUsd", "priceWei", "priceUsd", ]; const createdOrderParams = [ "side", "tokenAddress", "tokenId", "quantity", "makerWalletAddress", "takerWalletAddress", "currencyContract", "currencySymbol", "amountEth", "netAmountEth", "validFrom", "validUntil", "source", "createdAt", "expiresAt", ]; class MarketplaceEventBuilder extends InternalEventBuilder_1.InternalEventBuilder { // @ts-ignore setVault(vault) { this.vault = vault; return this; } setOrder(order) { this.order = order; return this; } getPartiallyFilledBody() { this.validate(["vault", "order"], true); return { vault: (0, cloneObject_1.cloneObject)(this.vault, vault_events_1.vaultParams), context: this.getContext(), order: (0, cloneObject_1.cloneObject)(this.order, [...generalOrderParams, ...orderPurchasedParams, "oldQuantity", "quantity"]), }; } getFilledBody() { this.validate(["vault", "order"], true); return { vault: (0, cloneObject_1.cloneObject)(this.vault, vault_events_1.vaultParams), context: this.getContext(), order: (0, cloneObject_1.cloneObject)(this.order, [...generalOrderParams, ...orderPurchasedParams, "oldStatus"]), }; } getCancelledBody() { this.validate(["vault", "order"], true); return { vault: (0, cloneObject_1.cloneObject)(this.vault, vault_events_1.vaultParams), context: this.getContext(), order: (0, cloneObject_1.cloneObject)(this.order, [...generalOrderParams, "cancelledAt"]), }; } getCreatedBody() { this.validate(["vault", "order"], false); return { vault: (0, cloneObject_1.cloneObject)(this.vault, vault_events_1.vaultParams), order: (0, cloneObject_1.cloneObject)(this.order, [...generalOrderParams, ...createdOrderParams]), }; } getEventBody(eventName) { switch (eventName) { case exports.ORDER_PARTIALLY_FILLED: return this.getPartiallyFilledBody(); case exports.ORDER_FILLED: return this.getFilledBody(); case exports.ORDER_CREATED: return this.getCreatedBody(); case exports.ORDER_CANCELLED: return this.getCancelledBody(); default: return {}; } } } exports.MarketplaceEventBuilder = MarketplaceEventBuilder;