aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorLeonid <logvinov.leon@gmail.com>2017-05-25 19:44:19 +0800
committerGitHub <noreply@github.com>2017-05-25 19:44:19 +0800
commitb43cc8f52cd726cd919d2db6c9e63b4b7af5dcea (patch)
tree2336c98e0c7d321c44a074d48d66e4c5edf03449 /src
parenteee06e0cc97333891a84aff22196849105846eb4 (diff)
parentdfb7b039f15d572ddf2e417f71ecb069114100a8 (diff)
downloaddexon-0x-contracts-b43cc8f52cd726cd919d2db6c9e63b4b7af5dcea.tar.gz
dexon-0x-contracts-b43cc8f52cd726cd919d2db6c9e63b4b7af5dcea.tar.zst
dexon-0x-contracts-b43cc8f52cd726cd919d2db6c9e63b4b7af5dcea.zip
Merge branch 'master' into isValidOrderHash
Diffstat (limited to 'src')
-rw-r--r--src/ts/0x.js.ts25
-rw-r--r--src/ts/globals.d.ts15
2 files changed, 38 insertions, 2 deletions
diff --git a/src/ts/0x.js.ts b/src/ts/0x.js.ts
index bd0ce80e2..cc2adca33 100644
--- a/src/ts/0x.js.ts
+++ b/src/ts/0x.js.ts
@@ -56,5 +56,30 @@ export class ZeroEx {
assert.isString('orderHash', orderHash);
const isValid = /^0x[0-9A-F]{66}$/i.test(orderHash);
return isValid;
+ /*
+ * A unit amount is defined as the amount of a token above the specified decimal places (integer part).
+ * E.g: If a currency has 18 decimal places, 1e18 or one quintillion of the currency is equivalent
+ * to 1 unit.
+ */
+ public static toUnitAmount(amount: BigNumber.BigNumber, decimals: number): BigNumber.BigNumber {
+ assert.isBigNumber('amount', amount);
+ assert.isNumber('decimals', decimals);
+
+ const aUnit = new BigNumber(10).pow(decimals);
+ const unit = amount.div(aUnit);
+ return unit;
+ }
+ /*
+ * A baseUnit is defined as the smallest denomination of a token. An amount expressed in baseUnits
+ * is the amount expressed in the smallest denomination.
+ * E.g: 1 unit of a token with 18 decimal places is expressed in baseUnits as 1000000000000000000
+ */
+ public static toBaseUnitAmount(amount: BigNumber.BigNumber, decimals: number): BigNumber.BigNumber {
+ assert.isBigNumber('amount', amount);
+ assert.isNumber('decimals', decimals);
+
+ const unit = new BigNumber(10).pow(decimals);
+ const baseUnitAmount = amount.times(unit);
+ return baseUnitAmount;
}
}
diff --git a/src/ts/globals.d.ts b/src/ts/globals.d.ts
index 1e502b061..796812c87 100644
--- a/src/ts/globals.d.ts
+++ b/src/ts/globals.d.ts
@@ -1,14 +1,25 @@
-declare type ETHAddressBuff = Buffer;
+declare module 'chai-bignumber';
declare interface Schema {
id: string;
}
+// HACK: In order to merge the bignumber declaration added by chai-bignumber to the chai Assertion
+// interface we must use `namespace` as the Chai definitelyTyped definition does. Since we otherwise
+// disallow `namespace`, we disable tslint for the following.
+/* tslint:disable */
+declare namespace Chai {
+ interface Assertion {
+ bignumber: Assertion;
+ }
+}
+/* tslint:enable */
+
declare module 'ethereumjs-util' {
const toBuffer: (dataHex: string) => Buffer;
const hashPersonalMessage: (msg: Buffer) => Buffer;
const bufferToHex: (buff: Buffer) => string;
const ecrecover: (msgHashBuff: Buffer, v: number, r: Buffer, s: Buffer) => string;
- const pubToAddress: (pubKey: string) => ETHAddressBuff;
+ const pubToAddress: (pubKey: string) => Buffer;
const isValidAddress: (address: string) => boolean;
}