[
    {
        "version": "8.0.0-beta.2",
        "changes": [
            {
                "note": "Dependencies updated"
            }
        ],
        "timestamp": 1574238768
    },
    {
        "version": "8.0.0-beta.1",
        "changes": [
            {
                "note": "Remove ZRXToken contract wrapper",
                "pr": 2324
            },
            {
                "note": "ContractWrappers no longer exposes `erc20Proxy`, `erc721Proxy` and `dutchAuction` wrappers",
                "pr": 2324
            },
            {
                "note": "[Breaking] Big refactor of contract wrapper interface. See https://github.com/0xProject/0x-monorepo/pull/2325 for details",
                "pr": 2325
            },
            {
                "note": "Remove IWallet and IValidator contract wrappers",
                "pr": 2337
            },
            {
                "note": "Remove exports orderHashUtils and transactionHashUtils",
                "pr": 2321
            },
            {
                "note": "Update BigNumber version to ~9.0.0",
                "pr": 2342
            }
        ],
        "timestamp": 1574030254
    },
    {
        "version": "8.0.0-beta.0",
        "changes": [
            {
                "note": "Exported intefaces changed: from getContractAddressesForNetworkOrThrow to getContractAddressesForChainOrThrow, from NetworkId to ChainId, from ContractNetworks to ContractChains, and from ContractNetworkData to ContractChainData.",
                "pr": 2313
            }
        ],
        "timestamp": 1573159180
    },
    {
        "version": "7.1.0-beta.0",
        "changes": [
            {
                "note": "Updated to work with 0x v3"
            }
        ],
        "timestamp": 1570135330
    },
    {
        "timestamp": 1568744790,
        "version": "7.0.2",
        "changes": [
            {
                "note": "Dependencies updated"
            }
        ]
    },
    {
        "timestamp": 1567521715,
        "version": "7.0.1",
        "changes": [
            {
                "note": "Dependencies updated"
            }
        ]
    },
    {
        "version": "7.0.0",
        "changes": [
            {
                "note": "Add optional `exchangeAddress` parameter to `signatureUtils.isValidSignatureAsync` to fix `Validator` type signatures.",
                "pr": 2017
            },
            {
                "note": "Removed @0x/order-watcher"
            },
            {
                "note": "Update to latest @0x/contract-wrappers v11",
                "pr": 2068
            }
        ],
        "timestamp": 1566446343
    },
    {
        "timestamp": 1565296576,
        "version": "6.0.15",
        "changes": [
            {
                "note": "Dependencies updated"
            }
        ]
    },
    {
        "timestamp": 1564604963,
        "version": "6.0.14",
        "changes": [
            {
                "note": "Dependencies updated"
            }
        ]
    },
    {
        "version": "6.0.13",
        "changes": [
            {
                "note": "re-export new ethereum-types type, TupleDataItem",
                "pr": 1919
            }
        ],
        "timestamp": 1563957393
    },
    {
        "timestamp": 1563193019,
        "version": "6.0.12",
        "changes": [
            {
                "note": "Dependencies updated"
            }
        ]
    },
    {
        "timestamp": 1563047529,
        "version": "6.0.11",
        "changes": [
            {
                "note": "Dependencies updated"
            }
        ]
    },
    {
        "timestamp": 1563006338,
        "version": "6.0.10",
        "changes": [
            {
                "note": "Dependencies updated"
            }
        ]
    },
    {
        "timestamp": 1557961111,
        "version": "6.0.9",
        "changes": [
            {
                "note": "Dependencies updated"
            }
        ]
    },
    {
        "timestamp": 1557799313,
        "version": "6.0.8",
        "changes": [
            {
                "note": "Dependencies updated"
            }
        ]
    },
    {
        "timestamp": 1557507213,
        "version": "6.0.7",
        "changes": [
            {
                "note": "Dependencies updated"
            }
        ]
    },
    {
        "version": "6.0.6",
        "changes": [
            {
                "note": "Dependencies updated"
            }
        ],
        "timestamp": 1554997931
    },
    {
        "timestamp": 1553183790,
        "version": "6.0.5",
        "changes": [
            {
                "note": "Dependencies updated"
            }
        ]
    },
    {
        "timestamp": 1553091633,
        "version": "6.0.4",
        "changes": [
            {
                "note": "Dependencies updated"
            }
        ]
    },
    {
        "timestamp": 1551479279,
        "version": "6.0.3",
        "changes": [
            {
                "note": "Dependencies updated"
            }
        ]
    },
    {
        "timestamp": 1551299797,
        "version": "6.0.2",
        "changes": [
            {
                "note": "Dependencies updated"
            }
        ]
    },
    {
        "timestamp": 1551220833,
        "version": "6.0.1",
        "changes": [
            {
                "note": "Dependencies updated"
            }
        ]
    },
    {
        "version": "6.0.0",
        "changes": [
            {
                "note": "Add support for EIP1193 providers & Web3.js providers >= 1.0-beta.38",
                "pr": 1627
            },
            {
                "note": "Update provider params to type SupportedProvider which outlines all supported providers",
                "pr": 1627
            }
        ],
        "timestamp": 1551130135
    },
    {
        "version": "5.0.0",
        "changes": [
            {
                "note": "Export `transactionHashUtils`, `DecodedCalldata`, `ZeroExTransaction`, and `SignedZeroExTransaction`",
                "pr": 1569
            }
        ],
        "timestamp": 1549733923
    },
    {
        "version": "4.0.3",
        "changes": [
            {
                "note": "Dependencies updated"
            }
        ],
        "timestamp": 1549547375
    },
    {
        "timestamp": 1549504360,
        "version": "4.0.2",
        "changes": [
            {
                "note": "Dependencies updated"
            }
        ]
    },
    {
        "timestamp": 1549452781,
        "version": "4.0.1",
        "changes": [
            {
                "note": "Dependencies updated"
            }
        ]
    },
    {
        "version": "4.0.0",
        "changes": [
            {
                "note": "Upgrade the bignumber.js to v8.0.2",
                "pr": 1517
            }
        ],
        "timestamp": 1549373905
    },
    {
        "timestamp": 1547747677,
        "version": "3.0.3",
        "changes": [
            {
                "note": "Dependencies updated"
            }
        ]
    },
    {
        "timestamp": 1547561734,
        "version": "3.0.2",
        "changes": [
            {
                "note": "Dependencies updated"
            }
        ]
    },
    {
        "timestamp": 1547225310,
        "version": "3.0.1",
        "changes": [
            {
                "note": "Dependencies updated"
            }
        ]
    },
    {
        "version": "3.0.0",
        "changes": [
            {
                "note": "Export `MultiAssetData`, `MultiAssetDataWithRecursiveDecoding`, `ObjectMap`, and `SingleAssetData` from types. No longer export `AssetData`.",
                "pr": 1363
            }
        ],
        "timestamp": 1547040760
    },
    {
        "version": "2.0.8",
        "changes": [
            {
                "note": "Dependencies updated"
            }
        ],
        "timestamp": 1544739608
    },
    {
        "version": "2.0.7",
        "changes": [
            {
                "note": "Dependencies updated"
            }
        ],
        "timestamp": 1544570656
    },
    {
        "timestamp": 1543401373,
        "version": "2.0.6",
        "changes": [
            {
                "note": "Dependencies updated"
            }
        ]
    },
    {
        "timestamp": 1542821676,
        "version": "2.0.5",
        "changes": [
            {
                "note": "Dependencies updated"
            }
        ]
    },
    {
        "timestamp": 1542208198,
        "version": "2.0.4",
        "changes": [
            {
                "note": "Dependencies updated"
            }
        ]
    },
    {
        "timestamp": 1542134075,
        "version": "2.0.3",
        "changes": [
            {
                "note": "Dependencies updated"
            }
        ]
    },
    {
        "timestamp": 1542028948,
        "version": "2.0.2",
        "changes": [
            {
                "note": "Dependencies updated"
            }
        ]
    },
    {
        "version": "2.0.1",
        "changes": [
            {
                "note": "Dependencies updated"
            }
        ],
        "timestamp": 1541740904
    },
    {
        "version": "2.0.0",
        "changes": [
            {
                "note": "Add support for `eth_signTypedData`.",
                "pr": 1102
            },
            {
                "note": "Added `MetamaskSubprovider` to handle inconsistencies in Metamask's signing JSON RPC endpoints.",
                "pr": 1102
            },
            {
                "note": "Removed `SignerType` (including `SignerType.Metamask`). Please use the `MetamaskSubprovider` to wrap `web3.currentProvider`.",
                "pr": 1102
            },
            {
                "note": "Updated to use new modularized artifacts and the latest version of @0xproject/contract-wrappers",
                "pr": 1105
            },
            {
                "note": "Make web3-provider-engine types a 'dependency' so it's available to users of the library",
                "pr": 1105
            },
            {
                "note": "Export new `AssetData` type from types",
                "pr": 1131
            }
        ],
        "timestamp": 1539871071
    },
    {
        "version": "1.0.8",
        "changes": [
            {
                "note": "Dependencies updated"
            }
        ],
        "timestamp": 1538693146
    },
    {
        "timestamp": 1538157789,
        "version": "1.0.7",
        "changes": [
            {
                "note": "Dependencies updated"
            }
        ]
    },
    {
        "timestamp": 1537907159,
        "version": "1.0.6",
        "changes": [
            {
                "note": "Dependencies updated"
            }
        ]
    },
    {
        "timestamp": 1537875740,
        "version": "1.0.5",
        "changes": [
            {
                "note": "Dependencies updated"
            }
        ]
    },
    {
        "timestamp": 1537541580,
        "version": "1.0.4",
        "changes": [
            {
                "note": "Dependencies updated"
            }
        ]
    },
    {
        "version": "1.0.3",
        "changes": [
            {
                "note": "Drastically reduce the bundle size by removing unused parts of included contract artifacts."
            }
        ],
        "timestamp": 1537369748
    },
    {
        "version": "1.0.2",
        "changes": [
            {
                "note": "Add ZRX & WETH mainnet contract addresses into the included artifacts"
            }
        ],
        "timestamp": 1537265493
    },
    {
        "timestamp": 1536142250,
        "version": "1.0.1",
        "changes": [
            {
                "note": "Dependencies updated"
            }
        ]
    },
    {
        "version": "1.0.1-rc.6",
        "changes": [
            {
                "note": "Fix missing `BlockParamLiteral` type import issue"
            }
        ],
        "timestamp": 1535377027
    },
    {
        "version": "1.0.1-rc.5",
        "changes": [
            {
                "note": "Fix `main` and `types` package.json entries so that they point to the new location of index.d.ts and index.js"
            }
        ]
    },
    {
        "version": "1.0.1-rc.4",
        "changes": [
            {
                "note": "Re-organize the exported interface of 0x.js. Remove the `ZeroEx` class, and instead export the same exports as `0x.js`'s sub-packages: `@0xproject/contract-wrappers`, `@0xproject/order-utils` and `@0xproject/order-watcher`",
                "pr": 963
            }
        ],
        "timestamp": 1535133899
    },
    {
        "version": "1.0.1-rc.3",
        "changes": [
            {
                "note": "Dependencies updated"
            },
            {
                "pr": 914,
                "note": "Update ecSignOrderHashAsync to return the signature as a string for immediate use in contracts"
            }
        ],
        "timestamp": 1534210131
    },
    {
        "version": "1.0.1-rc.2",
        "changes": [
            {
                "note": "Fixed bug caused by importing non-existent dep"
            }
        ],
        "timestamp": 1532619515
    },
    {
        "version": "1.0.1-rc.1",
        "changes": [
            {
                "note": "Dependencies updated"
            }
        ],
        "timestamp": 1532605697
    },
    {
        "timestamp": 1532357734,
        "version": "1.0.0",
        "changes": [
            {
                "note": "Dependencies updated"
            }
        ]
    },
    {
        "timestamp": 1532043100,
        "version": "1.0.0-rc.2",
        "changes": [
            {
                "note": "Remove `zeroEx.assetData`  and instead re-export it's static functions directly off `ZeroEx`"
            }
        ]
    },
    {
        "timestamp": 1532043000,
        "version": "1.0.0-rc.1",
        "changes": [
            {
                "note": "Remove tokenRegistry wrapper",
                "pr": 863
            },
            {
                "note": "Rename `zeroEx.token` to `zeroEx.erc20Token`, and add `zeroEx.erc721Token`",
                "pr": 863
            },
            {
                "note": "Rename `zeroEx.proxy` to `zeroEx.erc20Proxy` and add `zeroEx.erc721Proxy`",
                "pr": 863
            },
            {
                "note": "Refactored `ZeroEx.isValidSignature` to `zeroEx.isValidSignatureAsync`. It is now async so that it can verify contract-dependent signature types",
                "pr": 863
            },
            {
                "note": "Refactored `signOrderHashAsync` to `ecSignOrderHashAsync`. There are now many non-ECSignature ways to sign orders too.",
                "pr": 863
            },
            {
                "note": "Removed `createOrderWatcherAsync` method. Will be added back once OrderWatcher is refactored for V2",
                "pr": 863
            },
            {
                "note": "0x.js exports renamed contract events and event arg types",
                "pr": 863
            },
            {
                "note": "Export `ZeroEx.assetData` with methods to decode/encode assetData fields found in 0x orders",
                "pr": 884
            }
        ]
    },
    {
        "timestamp": 1531919263,
        "version": "0.38.6",
        "changes": [
            {
                "note": "Dependencies updated"
            }
        ]
    },
    {
        "timestamp": 1531149657,
        "version": "0.38.5",
        "changes": [
            {
                "note": "Dependencies updated"
            }
        ]
    },
    {
        "timestamp": 1529397769,
        "version": "0.38.4",
        "changes": [
            {
                "note": "Dependencies updated"
            }
        ]
    },
    {
        "timestamp": 1527617805,
        "version": "0.38.3",
        "changes": [
            {
                "note": "Dependencies updated"
            }
        ]
    },
    {
        "timestamp": 1527617227,
        "version": "0.38.2",
        "changes": [
            {
                "note": "Dependencies updated"
            }
        ]
    },
    {
        "timestamp": 1527616612,
        "version": "0.38.1",
        "changes": [
            {
                "note": "Dependencies updated"
            }
        ]
    },
    {
        "version": "0.38.0",
        "changes": [
            {
                "note": "Renamed createOrderStateWatcher to createOrderWatcherAsync since it is now async",
                "pr": 579
            },
            {
                "note": "Renamed ZeroExError to ContractWrappersErrors since they now lives in the @0xproject/contract-wrappers subpackage",
                "pr": 579
            }
        ],
        "timestamp": 1527008270
    },
    {
        "timestamp": 1525477860,
        "version": "0.37.2",
        "changes": [
            {
                "note": "Dependencies updated"
            }
        ]
    },
    {
        "timestamp": 1525453812,
        "version": "0.37.1",
        "changes": [
            {
                "note": "Dependencies updated"
            }
        ]
    },
    {
        "version": "0.37.0",
        "changes": [
            {
                "note": "Fixed expiration watcher comparator to handle orders with equal expiration times",
                "pr": 526
            },
            {
                "note": "Update Web3 Provider Engine to 14.0.4",
                "pr": 555
            },
            {
                "note": "Add `zeroEx.getProvider()`",
                "pr": 559
            },
            {
                "note": "Move `ZeroExError.InvalidSignature` to `@0xproject/order-utils` `OrderError.InvalidSignature`",
                "pr": 559
            }
        ],
        "timestamp": 1525428773
    },
    {
        "version": "0.36.3",
        "changes": [
            {
                "note": "Move @0xproject/migrations to devDependencies"
            }
        ],
        "timestamp": 1524079658
    },
    {
        "timestamp": 1524073495,
        "version": "0.36.2",
        "changes": [
            {
                "note": "Dependencies updated"
            }
        ]
    },
    {
        "version": "0.36.1",
        "changes": [
            {
                "note": "Internal changes and refactoring"
            },
            {
                "note": "Fix redundant expired order removal bug",
                "pr": 527
            }
        ],
        "timestamp": 1524044013
    },
    {
        "version": "0.36.0",
        "changes": [
            {
                "note": "Moved Web3.Provider to `@0xproject/types:Provider`",
                "pr": 501
            },
            {
                "note": "Add `zeroEx.exchange.getOrderStateAsync` to allow obtaining current OrderState for a signedOrder",
                "pr": 510
            }
        ],
        "timestamp": 1523462196
    },
    {
        "version": "0.35.0",
        "changes": [
            {
                "note": "Removed `ZeroExError.TransactionMiningTimeout` and moved it to '@0xproject/web3-wrapper' `Web3WrapperErrors.TransactionMiningTimeout`",
                "pr": 485
            }
        ],
        "timestamp": 1522673609
    },
    {
        "version": "0.34.0",
        "changes": [
            {
                "note": "Fix the bug causing `zeroEx.exchange.fillOrdersUpToAsync` validation to fail if there were some extra orders passed",
                "pr": 470
            },
            {
                "note": "Remove automatic instantiation of `zeroEx.orderStateWatcher`",
                "pr": 488
            },
            {
                "note": "Add `zeroEx.createOrderStateWatcher` to allow creating arbitrary number of OrderStateWatchers",
                "pr": 488
            },
            {
                "note": "Added `stateLayer` setting to `OrderStateWatcherConfig` so OrderStateWatcher can be set to monitor different blockchain state layers",
                "pr": 488
            }
        ],
        "timestamp": 1522658513
    },
    {
        "version": "0.33.2",
        "changes": [
            {
                "note": "Consolidate all `console.log` calls into `logUtils` in the `@0xproject/utils` package",
                "pr": 452
            },
            {
                "note": "Consolidate `Order`, `SignedOrder`, and `ECSignature` into the `@0xproject/types` package",
                "pr": 456
            }
        ],
        "timestamp": 1521298800
    },
    {
        "version": "0.33.1",
        "changes": [
            {
                "note": "Add missing EthersJs typescript typings as dependency"
            }
        ],
        "timestamp": 1520434800
    },
    {
        "version": "0.33.0",
        "changes": [
            {
                "note": "Validate and lowercase all addresses in public methods",
                "pr": 373
            },
            {
                "note": "Improve validation to force passing contract addresses on private networks",
                "pr": 385
            },
            {
                "note": "Change `LogErrorContractEventArgs.errorId` type from `BigNumber` to `number`",
                "pr": 413
            },
            {
                "note": "Rename all public `_unsubscribeAll` methods to `unsubscribeAll`",
                "pr": 415
            },
            {
                "note": "Move web3 typings from devDep to dep since cannot use this package without it",
                "pr": 429
            }
        ],
        "timestamp": 1520089200
    },
    {
        "version": "0.32.2",
        "changes": [
            {
                "note": "Fix publishing issue where .npmignore was not properly excluding undesired content",
                "pr": 389
            }
        ],
        "timestamp": 1518102000
    },
    {
        "version": "0.32.1",
        "changes": [
            {
                "note": "Reorganized `BlockParamLiteral` export into `@0xproject/types` package",
                "pr": 355
            },
            {
                "note": "Now using `abi-gen` package to generate ContractEventArgs types",
                "pr": 371
            }
        ],
        "timestamp": 1517929200
    },
    {
        "version": "0.32.0",
        "changes": [
            {
                "note": "Add `zeroEx.etherToken.getContractAddressIfExists`",
                "pr": 350
            },
            {
                "note": "Fixed the bug causing order watcher to throw if there is an event with the same signature but different indexed fields",
                "pr": 366
            }
        ],
        "timestamp": 1517756400
    },
    {
        "version": "0.31.1",
        "changes": [
            {
                "note": "Fix the bug causing order watcher to throw if makerToken === zrx",
                "pr": 357
            }
        ],
        "timestamp": 1517410800
    },
    {
        "version": "0.31.0",
        "changes": [
            {
                "note": "Add the `shouldAddPersonalMessagePrefix` parameter to `signOrderHashAsync` so that the caller can decide on whether to add the personalMessage prefix before relaying the request to the signer. Parity Signer, Ledger and TestRPC add the prefix themselves, Metamask expects it to have already been added.",
                "pr": 349
            }
        ],
        "timestamp": 1517238000
    },
    {
        "version": "0.30.2",
        "changes": [
            {
                "note": "Add Rinkeby testnet addresses to artifacts ",
                "pr": 337
            },
            {
                "note": "Move @0xproject/types to dependencies from devDependencies fixing missing type errors"
            }
        ],
        "timestamp": 1517151600
    },
    {
        "version": "0.30.1",
        "changes": [
            {
                "note": "Fix a bug allowing negative fill values ",
                "pr": 212
            },
            {
                "note": "Fix a bug that made it impossible to pass a custom ZRX address ",
                "pr": 341
            }
        ],
        "timestamp": 1516719600
    },
    {
        "version": "0.30.0",
        "changes": [
            {
                "note": "Add an error parameter to the order watcher callback",
                "pr": 312
            },
            {
                "note": "Fix a bug making it impossible to catch some errors from awaitTransactionMinedAsync",
                "pr": 312
            },
            {
                "note": "Fix a bug in fillOrdersUpTo validation making it impossible to fill up to if user doesn't have enough balance to fully fill all the orders",
                "pr": 321
            }
        ],
        "timestamp": 1516114800
    },
    {
        "version": "0.29.1",
        "changes": [
            {
                "note": "Fixed bignumber config issue #301",
                "pr": 305
            }
        ],
        "timestamp": 1515596400
    },
    {
        "version": "0.29.0",
        "changes": [
            {
                "note": "Assert baseUnit amount supplied to `toUnitAmount` is integer amount.",
                "pr": 287
            },
            {
                "note": "`toBaseUnitAmount` throws if amount supplied has too many decimals",
                "pr": 287
            }
        ],
        "timestamp": 1514386800
    },
    {
        "version": "0.28.0",
        "changes": [
            {
                "note": "Add `etherTokenAddress` arg to `depositAsync` and `withdrawAsync` methods on `zeroEx.etherToken`",
                "pr": 267
            },
            {
                "note": "Removed accidentally included `unsubscribeAll` method from `zeroEx.proxy`, `zeroEx.etherToken` and `zeroEx.tokenRegistry`",
                "pr": 267
            },
            {
                "note": "Removed `etherTokenContractAddress` from `ZeroEx` constructor arg `ZeroExConfig`",
                "pr": 267
            },
            {
                "note": "Rename `SubscriptionOpts` to `BlockRange`",
                "pr": 272
            },
            {
                "note": "Add `zeroEx.etherToken.subscribe`, `zeroEx.etherToken.unsubscribe`, `zeroEx.etherToken.unsubscribeAll`",
                "pr": 277
            },
            {
                "note": "Add `zeroEx.etherToken.getLogsAsync`",
                "pr": 277
            },
            {
                "note": "Add new public types `BlockParamLiteral`, `EtherTokenEvents`, `EtherTokenContractEventArgs`, `DepositContractEventArgs`, `WithdrawalContractEventArgs`",
                "pr": 277
            },
            {
                "note": "Support `Deposit` and `Withdraw` events on etherToken",
                "pr": 277
            },
            {
                "note": "Improve the error message when taker is not a string",
                "pr": 278
            }
        ],
        "timestamp": 1513695600
    },
    {
        "version": "0.27.1",
        "changes": [
            {
                "note": "Export `TransactionOpts` type"
            }
        ],
        "timestamp": 1511794800
    },
    {
        "version": "0.27.0",
        "changes": [
            {
                "note": "Make `ZeroExConfig` required parameter of `ZeroEx` constructor",
                "pr": 233
            },
            {
                "note": "Add a required property `networkId` to `ZeroExConfig`",
                "pr": 233
            },
            {
                "note": "Make all `getContractAddress` functions, `zeroEx.exchange.subscribe`, `zeroEx.exchange.getZRXTokenAddress` sync",
                "pr": 233
            },
            {
                "note": "Remove `ZeroExError.ContractNotFound` and replace it with contract-specific errors",
                "pr": 233
            },
            {
                "note": "Make `DecodedLogEvent<A>` contain `LogWithDecodedArgs<A>` under log key instead of merging it in like web3 does",
                "pr": 234
            },
            {
                "note": "Rename `removed` to `isRemoved` in `DecodedLogEvent<A>`",
                "pr": 234
            },
            {
                "note": "Add config allowing to specify gasPrice and gasLimit for every transaction sending method",
                "pr": 235
            },
            {
                "note": "All transaction sending methods now call `estimateGas` if no gas amount was supplied",
                "pr": 235
            },
            {
                "note": "Modify order validation methods to validate against the `latest` block, not against the `pending` block",
                "pr": 236
            }
        ],
        "timestamp": 1511794800
    },
    {
        "version": "0.26.0",
        "changes": [
            {
                "note": "Add post-formatter for logs converting `blockNumber`, `logIndex`, `transactionIndex` from hexes to numbers",
                "pr": 231
            },
            {
                "note": "Remove support for Async callback types when used in Subscribe functions",
                "pr": 222
            },
            {
                "note": "In OrderWatcher subscribe to ZRX Token Transfer and Approval events when maker token is different",
                "pr": 225
            }
        ],
        "timestamp": 1511190000
    },
    {
        "version": "0.25.1",
        "changes": [
            {
                "note": "Standardise on Cancelled over Canceled",
                "pr": 217
            },
            {
                "note": "Add missing `DecodedLogEvent` type to exported types",
                "pr": 205
            },
            {
                "note": "Normalized the transactionReceipt status to be `null|0|1`, 1 meaning transaction execution successful, 0 unsuccessful and `null` if it is a pre-byzantinium transaction.",
                "pr": 200
            }
        ],
        "timestamp": 1510498800
    },
    {
        "version": "0.23.0",
        "changes": [
            {
                "note": "Fixed unhandled promise rejection error in subscribe methods",
                "pr": 209
            },
            {
                "note": "Subscribe callbacks now receive an error object as their first argument"
            }
        ],
        "timestamp": 1510412400
    },
    {
        "version": "0.22.6",
        "changes": [
            {
                "note": "Add a timeout parameter to transaction awaiting",
                "pr": 206
            }
        ],
        "timestamp": 1510239600
    },
    {
        "version": "0.22.5",
        "changes": [
            {
                "note": "Re-publish v0.22.4 to fix publishing issue"
            }
        ],
        "timestamp": 1509980400
    },
    {
        "version": "0.22.4",
        "changes": [
            {
                "note": "Upgraded bignumber.js to a new version that ships with native typings"
            }
        ],
        "timestamp": 1508857200
    },
    {
        "version": "0.22.3",
        "changes": [
            {
                "note": "Fixed an issue with new version of testrpc and unlimited proxy allowance",
                "pr": 199
            }
        ],
        "timestamp": 1508857200
    },
    {
        "version": "0.22.2",
        "changes": [
            {
                "note": "Fixed rounding of maker fill amount and incorrect validation of partial fees",
                "pr": 197
            }
        ],
        "timestamp": 1508770800
    },
    {
        "version": "0.22.0",
        "changes": [
            {
                "note": "Started using `OrderFillRequest` interface instead of `OrderFillOrKillRequest` interface for `zeroEx.exchange.batchFillOrKill`",
                "pr": 187
            },
            {
                "note": "Removed `OrderFillOrKillRequest`",
                "pr": 187
            }
        ],
        "timestamp": 1508079600
    },
    {
        "version": "0.21.4",
        "changes": [
            {
                "note": "Made 0x.js more type-safe by making `getLogsAsync` and `subscribe/subscribeAsync` generics parametrized with arg type",
                "pr": 194
            }
        ],
        "timestamp": 1507820400
    },
    {
        "version": "0.21.3",
        "changes": [
            {
                "note": "Fixed a bug causing order fills to throw `INSUFFICIENT_TAKER_ALLOWANCE`",
                "pr": 193
            }
        ],
        "timestamp": 1507734000
    },
    {
        "version": "0.21.2",
        "changes": [
            {
                "note": "Exported `ContractEventArg` as a public type",
                "pr": 190
            }
        ],
        "timestamp": 1507647600
    },
    {
        "version": "0.21.1",
        "changes": [
            {
                "note": "Fixed a bug in subscriptions",
                "pr": 189
            }
        ],
        "timestamp": 1507647600
    },
    {
        "version": "0.21.0",
        "changes": [
            {
                "note": "Complete rewrite of subscription logic",
                "pr": 182
            },
            {
                "note": "Subscriptions no longer return historical logs. If you want them - use `getLogsAsync`"
            },
            {
                "note": "Subscriptions now use [ethereumjs-blockstream](https://github.com/ethereumjs/ethereumjs-blockstream) under the hood"
            },
            {
                "note": "Subscriptions correctly handle block re-orgs (forks)"
            },
            {
                "note": "Subscriptions correctly backfill logs (connection problems)"
            },
            {
                "note": "They no longer setup filters on the underlying nodes, so you can use them with infura without a filter Subprovider"
            },
            {
                "note": "Removed `ContractEventEmitter` and added `LogEvent`"
            },
            {
                "note": "Renamed `zeroEx.token.subscribeAsync` to `zeroEx.token.subscribe`"
            },
            {
                "note": "Added `zeroEx.token.unsubscribe` and `zeroEx.exchange.unsubscribe`"
            },
            {
                "note": "Renamed `zeroEx.exchange.stopWatchingAllEventsAsync` to `zeroEx.exhange.unsubscribeAll`"
            },
            {
                "note": "Renamed `zeroEx.token.stopWatchingAllEventsAsync` to `zeroEx.token.unsubscribeAll`"
            },
            {
                "note": "Fixed the batch fills validation by emulating all balance & proxy allowance changes",
                "pr": 185
            }
        ],
        "timestamp": 1507561200
    },
    {
        "version": "0.20.0",
        "changes": [
            {
                "note": "Add `zeroEx.token.getLogsAsync`",
                "pr": 178
            },
            {
                "note": "Add `zeroEx.exchange.getLogsAsync`",
                "pr": 178
            },
            {
                "note": "Fixed fees validation when one of the tokens transferred is ZRX",
                "pr": 181
            }
        ],
        "timestamp": 1507129200
    },
    {
        "version": "0.19.0",
        "changes": [
            {
                "note": "Made order validation optional ",
                "pr": 172
            },
            {
                "note": "Added Ropsten testnet support",
                "pr": 173
            },
            {
                "note": "Fixed a bug causing awaitTransactionMinedAsync to DDos backend nodes",
                "pr": 175
            }
        ],
        "timestamp": 1506610800
    },
    {
        "version": "0.18.0",
        "changes": [
            {
                "note": "Added `zeroEx.exchange.validateOrderFillableOrThrowAsync` to simplify orderbook pruning",
                "pr": 170
            }
        ],
        "timestamp": 1506351600
    },
    {
        "version": "0.17.0",
        "changes": [
            {
                "note": "Made `zeroEx.exchange.getZRXTokenAddressAsync` public",
                "pr": 171
            }
        ],
        "timestamp": 1506351600
    },
    {
        "version": "0.16.0",
        "changes": [
            {
                "note": "Added the ability to specify custom contract addresses to be used with 0x.js",
                "pr": 165
            },
            {
                "note": "ZeroExConfig.exchangeContractAddress"
            },
            {
                "note": "ZeroExConfig.tokenRegistryContractAddress"
            },
            {
                "note": "ZeroExConfig.etherTokenContractAddress"
            },
            {
                "note": "Added `zeroEx.tokenRegistry.getContractAddressAsync`",
                "pr": 165
            }
        ],
        "timestamp": 1505833200
    },
    {
        "version": "0.15.0",
        "changes": [
            {
                "note": "Added the ability to specify a historical `blockNumber` at which to query the blockchain's state when calling a token or exchange method",
                "pr": 161
            }
        ],
        "timestamp": 1504796400
    },
    {
        "version": "0.14.2",
        "changes": [
            {
                "note": "Fixed an issue with bignumber.js types not found",
                "pr": 160
            }
        ],
        "timestamp": 1504710000
    },
    {
        "version": "0.14.1",
        "changes": [
            {
                "note": "Fixed an issue with Artifact type not found",
                "pr": 159
            }
        ],
        "timestamp": 1504710000
    },
    {
        "version": "0.14.0",
        "changes": [
            {
                "note": "Added `zeroEx.exchange.throwLogErrorsAsErrors` method to public interface",
                "pr": 157
            },
            {
                "note": "Fixed an issue with overlapping async intervals in `zeroEx.awaitTransactionMinedAsync`",
                "pr": 157
            },
            {
                "note": "Fixed an issue with log decoder returning `BigNumber`s as `strings`",
                "pr": 157
            }
        ],
        "timestamp": 1504623600
    },
    {
        "version": "0.13.0",
        "changes": [
            {
                "note": "Made all the functions submitting transactions to the network to immediately return transaction hash",
                "pr": 151
            },
            {
                "note": "Added `zeroEx.awaitTransactionMinedAsync`",
                "pr": 151
            },
            {
                "note": "Added `TransactionReceiptWithDecodedLogs`, `LogWithDecodedArgs`, `DecodedLogArgs` to public types",
                "pr": 151
            },
            {
                "note": "Added signature validation to `validateFillOrderThrowIfInvalidAsync`",
                "pr": 152
            }
        ],
        "timestamp": 1504623600
    },
    {
        "version": "0.12.1",
        "changes": [
            {
                "note": "Added the support for web3@1.x.x provider",
                "pr": 142
            },
            {
                "note": "Added the optional `zeroExConfig`  parameter to the constructor of `ZeroEx`",
                "pr": 139
            },
            {
                "note": "Added the ability to specify `gasPrice` when instantiating `ZeroEx`",
                "pr": 139
            }
        ],
        "timestamp": 1504278000
    },
    {
        "version": "0.11.0",
        "changes": [
            {
                "note": "Added `zeroEx.token.setUnlimitedProxyAllowanceAsync`",
                "pr": 137
            },
            {
                "note": "Added `zeroEx.token.setUnlimitedAllowanceAsync`",
                "pr": 137
            },
            {
                "note": "Added `zeroEx.token.UNLIMITED_ALLOWANCE_IN_BASE_UNITS`",
                "pr": 137
            }
        ],
        "timestamp": 1503500400
    },
    {
        "version": "0.10.4",
        "changes": [
            {
                "note": "Fixed a bug where checksummed addresses were being pulled from artifacts and not lower-cased.",
                "pr": 135
            }
        ],
        "timestamp": 1503500400
    },
    {
        "version": "0.10.1",
        "changes": [
            {
                "note": "Added `zeroEx.exchange.validateFillOrderThrowIfInvalidAsync`",
                "pr": 128
            },
            {
                "note": "Added `zeroEx.exchange.validateFillOrKillOrderThrowIfInvalidAsync`",
                "pr": 128
            },
            {
                "note": "Added `zeroEx.exchange.validateCancelOrderThrowIfInvalidAsync`",
                "pr": 128
            },
            {
                "note": "Added `zeroEx.exchange.isRoundingErrorAsync`",
                "pr": 128
            },
            {
                "note": "Added `zeroEx.proxy.getContractAddressAsync`",
                "pr": 130
            },
            {
                "note": "Added `zeroEx.tokenRegistry.getTokenAddressesAsync`",
                "pr": 132
            },
            {
                "note": "Added `zeroEx.tokenRegistry.getTokenAddressBySymbolIfExistsAsync`",
                "pr": 132
            },
            {
                "note": "Added `zeroEx.tokenRegistry.getTokenAddressByNameIfExistsAsync`",
                "pr": 132
            },
            {
                "note": "Added `zeroEx.tokenRegistry.getTokenBySymbolIfExistsAsync`",
                "pr": 132
            },
            {
                "note": "Added `zeroEx.tokenRegistry.getTokenByNameIfExistsAsync`",
                "pr": 132
            },
            {
                "note": "Added clear error message when checksummed address is passed to a public method",
                "pr": 124
            },
            {
                "note": "Fixes the description of `shouldThrowOnInsufficientBalanceOrAllowance` in docs",
                "pr": 127
            }
        ],
        "timestamp": 1503500400
    },
    {
        "version": "0.9.3",
        "changes": [
            {
                "note": "Update contract artifacts to include latest Kovan and Mainnet deploys",
                "pr": 118
            }
        ],
        "timestamp": 1503327600
    },
    {
        "version": "0.9.2",
        "changes": [
            {
                "note": "*This version was unpublished because of a publishing issue.*"
            },
            {
                "note": "Update contract artifacts to include latest Kovan and Mainnet deploys",
                "pr": 118
            }
        ],
        "timestamp": 1503241200
    },
    {
        "version": "0.9.1",
        "changes": [
            {
                "note": "Fixed the bug causing `zeroEx.token.getBalanceAsync()` to fail if no addresses available",
                "pr": 120
            }
        ],
        "timestamp": 1502809200
    },
    {
        "version": "0.9.0",
        "changes": [
            {
                "note": "Migrated to the new version of smart contracts",
                "pr": 101
            },
            {
                "note": "Removed the ability to call methods on multiple authorized Exchange smart contracts",
                "pr": 106
            },
            {
                "note": "Made `zeroEx.getOrderHashHex` a static method",
                "pr": 107
            },
            {
                "note": "Cached `net_version` requests and invalidate the cache on calls to `setProvider`",
                "pr": 95
            },
            {
                "note": "Renamed `zeroEx.exchange.batchCancelOrderAsync` to `zeroEx.exchange.batchCancelOrdersAsync`"
            },
            {
                "note": "Renamed `zeroEx.exchange.batchFillOrderAsync` to `zeroEx.exchange.batchFillOrdersAsync`"
            },
            {
                "note": "Updated to typescript v2.4",
                "pr": 104
            },
            {
                "note": "Fixed an issue with incorrect balance/allowance validation when ZRX is one of the tokens traded",
                "pr": 109
            }
        ],
        "timestamp": 1500994800
    },
    {
        "version": "0.8.0",
        "changes": [
            {
                "note": "Added the ability to call methods on different authorized versions of the Exchange smart contract",
                "pr": 82
            },
            {
                "note": "Updated contract artifacts to reflect latest changes to the smart contracts (0xproject/contracts#59)"
            },
            {
                "note": "Added `zeroEx.proxy.isAuthorizedAsync` and `zeroEx.proxy.getAuthorizedAddressesAsync`",
                "pr": 89
            },
            {
                "note": "Added `zeroEx.token.subscribeAsync`",
                "pr": 90
            },
            {
                "note": "Made contract invalidation functions private",
                "pr": 90
            },
            {
                "note": "`zeroEx.token.invalidateContractInstancesAsync`"
            },
            {
                "note": "`zeroEx.exchange.invalidateContractInstancesAsync`"
            },
            {
                "note": "`zeroEx.proxy.invalidateContractInstance`"
            },
            {
                "note": "`zeroEx.tokenRegistry.invalidateContractInstance`"
            },
            {
                "note": "Fixed the bug where `zeroEx.setProviderAsync` didn't invalidate etherToken contract's instance"
            }
        ],
        "timestamp": 1499094000
    },
    {
        "version": "0.7.1",
        "changes": [
            {
                "note": "Added the ability to convert Ether to wrapped Ether tokens and back via `zeroEx.etherToken.depostAsync` and `zeroEx.etherToken.withdrawAsync`",
                "pr": 81
            }
        ],
        "timestamp": 1498402800
    },
    {
        "version": "0.7.0",
        "changes": [
            {
                "note": "Added Kovan smart contract artifacts",
                "pr": 78
            },
            {
                "note": "Started returning fillAmount from `fillOrderAsync` and `fillUpToAsync`",
                "pr": 72
            },
            {
                "note": "Started returning cancelledAmount from `cancelOrderAsync`",
                "pr": 72
            },
            {
                "note": "Renamed type `LogCancelArgs` to `LogCancelContractEventArgs` and `LogFillArgs` to `LogFillContractEventArgs`"
            }
        ],
        "timestamp": 1498057200
    },
    {
        "version": "0.6.2",
        "changes": [
            {
                "note": "Reduced bundle size"
            },
            {
                "note": "Improved documentation"
            }
        ],
        "timestamp": 1497970800
    },
    {
        "version": "0.6.1",
        "changes": [
            {
                "note": "Improved documentation"
            }
        ],
        "timestamp": 1497798000
    },
    {
        "version": "0.6.0",
        "changes": [
            {
                "note": "Made `ZeroEx` class accept `Web3Provider` instance instead of `Web3` instance"
            },
            {
                "note": "Added types for contract event arguments"
            }
        ],
        "timestamp": 1497798000
    },
    {
        "version": "0.5.2",
        "changes": [
            {
                "note": "Fixed the bug in `postpublish` script that caused that only unminified UMD bundle was uploaded to release page"
            }
        ],
        "timestamp": 1497452400
    },
    {
        "version": "0.5.1",
        "changes": [
            {
                "note": "Added `postpublish` script to publish to Github Releases with assets."
            }
        ],
        "timestamp": 1497452400
    }
]
