39 lines
1.6 KiB
TypeScript
39 lines
1.6 KiB
TypeScript
import {SignedOrder, Token} from '../../src/types';
|
|
import * as BigNumber from 'bignumber.js';
|
|
import * as _ from 'lodash';
|
|
import {ZeroEx} from '../../src/0x.js';
|
|
import {constants} from './constants';
|
|
import * as ExchangeArtifacts from '../../src/artifacts/Exchange.json';
|
|
|
|
export const orderFactory = {
|
|
async createSignedOrderAsync(
|
|
zeroEx: ZeroEx,
|
|
networkId: number,
|
|
maker: string,
|
|
makerTokenAmount: BigNumber.BigNumber|number,
|
|
makerTokenAddress: string,
|
|
takerTokenAmount: BigNumber.BigNumber|number,
|
|
takerTokenAddress: string): Promise<SignedOrder> {
|
|
// TODO refactor and check
|
|
const exchangeAddress: string = (ExchangeArtifacts as any).networks[networkId].address;
|
|
const INF_TIMESTAMP = 2524604400;
|
|
const order = {
|
|
maker,
|
|
taker: undefined,
|
|
makerFee: new BigNumber(0),
|
|
takerFee: new BigNumber(0),
|
|
makerTokenAmount: _.isNumber(makerTokenAmount) ? new BigNumber(makerTokenAmount) : makerTokenAmount,
|
|
takerTokenAmount: _.isNumber(takerTokenAmount) ? new BigNumber(takerTokenAmount) : takerTokenAmount,
|
|
makerTokenAddress,
|
|
takerTokenAddress,
|
|
salt: ZeroEx.generatePseudoRandomSalt(),
|
|
feeRecipient: constants.NULL_ADDRESS,
|
|
expirationUnixTimestampSec: new BigNumber(INF_TIMESTAMP),
|
|
};
|
|
const orderHash = ZeroEx.getOrderHashHex(exchangeAddress, order);
|
|
const ecSignature = await zeroEx.signOrderHashAsync(orderHash);
|
|
const signedOrder: SignedOrder = _.assign(order, {ecSignature});
|
|
return signedOrder;
|
|
}
|
|
}
|