import { Token, SignedOrder, ECSignature, } from '0x.js'; import { RelaySignedOrder, IndexedRelayTokens, RelayToken, RelayFill, RelayCandle, AccountToken} from '0x-relay-types'; import {AddressHelper} from './address-helper'; import BigNumber from 'bignumber.js'; export const factories = { fakeTokenFactory(): Token { return { address: AddressHelper.RandomAddress(), symbol: 'FAKE', name: 'Fake Token', decimals: 18 }; }, accountTokenFactory(): AccountToken { const balance = BigNumber.random(5).times(10); return { address: AddressHelper.RandomAddress(), decimals: 18, name: 'TOKEN' + (() => 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'[Math.floor(Math.random() * 26)].repeat(Math.floor(Math.random() * 10)))(), symbol: 'TKN' + (() => 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'[Math.floor(Math.random() * 26)].repeat(Math.floor(Math.random() * 2)))(), balance: balance, allowance: balance }; }, relayTokenFactory(): RelayToken { return { active: true, address: AddressHelper.RandomAddress(), decimals: 18, name: 'TOKEN' + (() => 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'[Math.floor(Math.random() * 26)].repeat(Math.floor(Math.random() * 10)))(), symbol: 'TKN' + (() => 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'[Math.floor(Math.random() * 26)].repeat(Math.floor(Math.random() * 2)))(), zeroex_official: true, rate: { block: 400 + Math.floor(Math.random() * 5000), WETH: new BigNumber( (Math.floor(Math.random() * 10) + (Math.random() * Math.pow(10, 8)) / Math.pow(10, 8)).toString() ) } }; }, indexedRelayTokensFactory(length: number = 10, addressArray?: string[]): IndexedRelayTokens { const tokens: { [key: string]: RelayToken; } = { }; for (let i = 0; i < length; i++) { const token: RelayToken = factories.relayTokenFactory(); if (addressArray) addressArray.push(token.address); tokens[token.address] = token; } return tokens; }, relaySignedOrderFactory(): RelaySignedOrder { return { signedOrder: factories.signedOrderFactory(), orderHash: '', state: 'OPEN', pending: { fillAmount: new BigNumber('0'), cancelAmount: new BigNumber('0'), }, remainingTakerTokenAmount: new BigNumber('0') }; }, signedOrderFactory(): SignedOrder { return { ecSignature: factories.ecSignatureFactory(), exchangeContractAddress: '', expirationUnixTimestampSec: new BigNumber('0'), feeRecipient: '', maker: '', makerFee: new BigNumber('0'), makerTokenAddress: '', makerTokenAmount: new BigNumber('0'), salt: new BigNumber('0'), taker: '', takerFee: new BigNumber('0'), takerTokenAddress: '', takerTokenAmount: new BigNumber('0'), }; }, ecSignatureFactory(): ECSignature { return { r: '', s: '', v: 0, }; }, relayFillFactory(): RelayFill { return { makerTokenAddress: '', takerTokenAddress: '', transactionHash: '', blockNumber: 400 + Math.floor(Math.random() * 5000), maker: AddressHelper.RandomAddress(), taker: AddressHelper.RandomAddress(), feeRecipient: AddressHelper.RandomAddress(), paidMakerFee: new BigNumber('0'), paidTakerFee: new BigNumber('0'), filledTakerTokenAmount: new BigNumber('0'), filledMakerTokenAmount: new BigNumber('0'), orderHash: '', timestamp: new Date().getTime() - (5 * 60) // 5 min ago }; }, relayCandleFactory(): RelayCandle { return { makerTokenAddress: '', takerTokenAddress: '', startBlock: 0, startBlockTimestamp: 0, endBlock: 0, endBlockTimestamp: 0, makerTokenVolume: new BigNumber('0'), takerTokenVolume: new BigNumber('0'), open: new BigNumber('0'), high: new BigNumber('0'), low: new BigNumber('0'), close: new BigNumber('0') }; } };