aboutsummaryrefslogtreecommitdiffstats
path: root/packages/order-utils/src/order_factory.ts
diff options
context:
space:
mode:
authorBrandon Millman <brandon.millman@gmail.com>2018-08-06 04:51:53 +0800
committerBrandon Millman <brandon.millman@gmail.com>2018-08-06 04:54:35 +0800
commit47673ba4bb2932051cb810bd0012c208665eb277 (patch)
treeb00a2ec6a46b99a0303db89a5046d576551569c4 /packages/order-utils/src/order_factory.ts
parent3865a081a0f8ea48be736adebb8dcdb4b7d80b04 (diff)
downloaddexon-0x-contracts-47673ba4bb2932051cb810bd0012c208665eb277.tar.gz
dexon-0x-contracts-47673ba4bb2932051cb810bd0012c208665eb277.tar.zst
dexon-0x-contracts-47673ba4bb2932051cb810bd0012c208665eb277.zip
Update createFactory to accept one createOrderOpts param to encompass all optional params
Diffstat (limited to 'packages/order-utils/src/order_factory.ts')
-rw-r--r--packages/order-utils/src/order_factory.ts70
1 files changed, 42 insertions, 28 deletions
diff --git a/packages/order-utils/src/order_factory.ts b/packages/order-utils/src/order_factory.ts
index 444e5a0b2..5901d38c3 100644
--- a/packages/order-utils/src/order_factory.ts
+++ b/packages/order-utils/src/order_factory.ts
@@ -10,6 +10,16 @@ import { generatePseudoRandomSalt } from './salt';
import { ecSignOrderHashAsync } from './signature_utils';
import { MessagePrefixType } from './types';
+export interface CreateOrderOpts {
+ takerAddress?: string;
+ senderAddress?: string;
+ makerFee?: BigNumber;
+ takerFee?: BigNumber;
+ feeRecipientAddress?: string;
+ salt?: BigNumber;
+ expirationTimeSeconds?: BigNumber;
+}
+
export const orderFactory = {
createOrder(
makerAddress: string,
@@ -18,28 +28,24 @@ export const orderFactory = {
takerAssetAmount: BigNumber,
takerAssetData: string,
exchangeAddress: string,
- takerAddress: string = constants.NULL_ADDRESS,
- senderAddress: string = constants.NULL_ADDRESS,
- makerFee: BigNumber = constants.ZERO_AMOUNT,
- takerFee: BigNumber = constants.ZERO_AMOUNT,
- feeRecipientAddress: string = constants.NULL_ADDRESS,
- salt: BigNumber = generatePseudoRandomSalt(),
- expirationTimeSeconds: BigNumber = constants.INFINITE_TIMESTAMP_SEC,
+ createOrderOpts: CreateOrderOpts = generateDefaultCreateOrderOpts(),
): Order {
+ const defaultCreateOrderOpts = generateDefaultCreateOrderOpts();
const order = {
makerAddress,
- takerAddress,
- senderAddress,
- makerFee,
- takerFee,
makerAssetAmount,
takerAssetAmount,
makerAssetData,
takerAssetData,
- salt,
exchangeAddress,
- feeRecipientAddress,
- expirationTimeSeconds,
+ takerAddress: createOrderOpts.takerAddress || defaultCreateOrderOpts.takerAddress,
+ senderAddress: createOrderOpts.senderAddress || defaultCreateOrderOpts.senderAddress,
+ makerFee: createOrderOpts.makerFee || defaultCreateOrderOpts.makerFee,
+ takerFee: createOrderOpts.takerFee || defaultCreateOrderOpts.takerFee,
+ feeRecipientAddress: createOrderOpts.feeRecipientAddress || defaultCreateOrderOpts.feeRecipientAddress,
+ salt: createOrderOpts.salt || defaultCreateOrderOpts.salt,
+ expirationTimeSeconds:
+ createOrderOpts.expirationTimeSeconds || defaultCreateOrderOpts.expirationTimeSeconds,
};
return order;
},
@@ -51,13 +57,7 @@ export const orderFactory = {
takerAssetAmount: BigNumber,
takerAssetData: string,
exchangeAddress: string,
- takerAddress?: string,
- senderAddress?: string,
- makerFee?: BigNumber,
- takerFee?: BigNumber,
- feeRecipientAddress?: string,
- salt?: BigNumber,
- expirationTimeSeconds?: BigNumber,
+ createOrderOpts?: CreateOrderOpts,
): Promise<SignedOrder> {
const order = orderFactory.createOrder(
makerAddress,
@@ -66,13 +66,7 @@ export const orderFactory = {
takerAssetAmount,
takerAssetData,
exchangeAddress,
- takerAddress,
- senderAddress,
- makerFee,
- takerFee,
- feeRecipientAddress,
- salt,
- expirationTimeSeconds,
+ createOrderOpts,
);
const orderHash = orderHashUtils.getOrderHashHex(order);
const messagePrefixOpts = {
@@ -86,6 +80,26 @@ export const orderFactory = {
},
};
+function generateDefaultCreateOrderOpts(): {
+ takerAddress: string;
+ senderAddress: string;
+ makerFee: BigNumber;
+ takerFee: BigNumber;
+ feeRecipientAddress: string;
+ salt: BigNumber;
+ expirationTimeSeconds: BigNumber;
+} {
+ return {
+ takerAddress: constants.NULL_ADDRESS,
+ senderAddress: constants.NULL_ADDRESS,
+ makerFee: constants.ZERO_AMOUNT,
+ takerFee: constants.ZERO_AMOUNT,
+ feeRecipientAddress: constants.NULL_ADDRESS,
+ salt: generatePseudoRandomSalt(),
+ expirationTimeSeconds: constants.INFINITE_TIMESTAMP_SEC,
+ };
+}
+
function getVRSHexString(ecSignature: ECSignature): string {
const ETH_SIGN_SIGNATURE_TYPE = '03';
const vrs = `${intToHex(ecSignature.v)}${ethUtil.stripHexPrefix(ecSignature.r)}${ethUtil.stripHexPrefix(