* UniswapV3 VIP (#237) * `@0x/contracts-zero-ex`: Add UniswapV3Feature * `@0x/contracts-zero-ex`: Add UniswapV3 VIP `@0x/contract-artifacts`: Regenerate. `@0x/contract-wrappers`: Regenerate. `@0x/asset-swapper`: Add UniswapV3 VIP support. * address review comments and appease linter * `@0x/contracts-zero-ex`: Add UniswapV3Feature tests * Multiplex UniswapV3 (#241) * Add UniswapV3 support to Multiplex batchFill * Add AssetSwapper support for Multiplex UniswapV3 * fix repo scripts that use PKG= env var (#242) Co-authored-by: Lawrence Forman <me@merklejerk.com> * `@0x/asset-swapper`: Adjust uniswap gas overhead Co-authored-by: Lawrence Forman <me@merklejerk.com> Co-authored-by: mzhu25 <mchl.zhu.96@gmail.com> * OTC orders feature (#244) * Add OTC orders feature contracts * Address PR feedback * Remove partial fills for takerSigned variant * Add function to query the min valid nonce * Add ETH support * Tightly pack expiry, nonceBucket, and nonce * Address PR feedback * OTC orders unit tests * Bump prettier version * Skip unnecessary math if takerTokenFillAmount == order.takerAmount * appease CI * Update contract-artifacts and contract-wrappers and CHANGELOGs * `@0x/contracts-zero-ex`: Address spot check feedback * `regen wrappers * prettier * `@0x/asset-swapper`: prettier and tweak gas schedule slightly for uni3 Co-authored-by: Lawrence Forman <me@merklejerk.com> Co-authored-by: mzhu25 <mchl.zhu.96@gmail.com>
27 lines
815 B
TypeScript
27 lines
815 B
TypeScript
import { ObjectMap } from '@0x/types';
|
|
import * as _ from 'lodash';
|
|
|
|
import { Actor, Constructor } from './base';
|
|
|
|
/**
|
|
* Utility function to convert Actors into an object mapping readable names to addresses.
|
|
* Useful for BalanceStore.
|
|
*/
|
|
export function actorAddressesByName(actors: Actor[]): ObjectMap<string> {
|
|
return _.zipObject(
|
|
actors.map(actor => actor.name),
|
|
actors.map(actor => actor.address),
|
|
);
|
|
}
|
|
|
|
/**
|
|
* Filters the given actors by role, specified by the class exported by an actor mixin file,
|
|
* e.g, 'Maker', 'Taker', etc.
|
|
*/
|
|
export function filterActorsByRole<TClass extends Constructor>(
|
|
actors: Actor[],
|
|
role: TClass,
|
|
): Array<InstanceType<typeof role>> {
|
|
return actors.filter(actor => actor.mixins.includes(role.name)) as Array<InstanceType<typeof role>>;
|
|
}
|