aboutsummaryrefslogtreecommitdiffstats
path: root/packages/pipeline/src/parsers
diff options
context:
space:
mode:
Diffstat (limited to 'packages/pipeline/src/parsers')
-rw-r--r--packages/pipeline/src/parsers/bloxy/index.ts54
-rw-r--r--packages/pipeline/src/parsers/copper/index.ts259
-rw-r--r--packages/pipeline/src/parsers/ddex_orders/index.ts69
-rw-r--r--packages/pipeline/src/parsers/events/erc20_events.ts34
-rw-r--r--packages/pipeline/src/parsers/events/exchange_events.ts145
-rw-r--r--packages/pipeline/src/parsers/events/index.ts2
-rw-r--r--packages/pipeline/src/parsers/idex_orders/index.ts81
-rw-r--r--packages/pipeline/src/parsers/oasis_orders/index.ts71
-rw-r--r--packages/pipeline/src/parsers/ohlcv_external/crypto_compare.ts38
-rw-r--r--packages/pipeline/src/parsers/paradex_orders/index.ts66
-rw-r--r--packages/pipeline/src/parsers/relayer_registry/index.ts37
-rw-r--r--packages/pipeline/src/parsers/sra_orders/index.ts68
-rw-r--r--packages/pipeline/src/parsers/token_metadata/index.ts46
-rw-r--r--packages/pipeline/src/parsers/utils.ts28
-rw-r--r--packages/pipeline/src/parsers/web3/index.ts49
15 files changed, 0 insertions, 1047 deletions
diff --git a/packages/pipeline/src/parsers/bloxy/index.ts b/packages/pipeline/src/parsers/bloxy/index.ts
deleted file mode 100644
index 3d797aff0..000000000
--- a/packages/pipeline/src/parsers/bloxy/index.ts
+++ /dev/null
@@ -1,54 +0,0 @@
-import { BigNumber } from '@0x/utils';
-import * as R from 'ramda';
-
-import { BLOXY_DEX_TRADES_URL, BloxyTrade } from '../../data_sources/bloxy';
-import { DexTrade } from '../../entities';
-
-/**
- * Parses a raw trades response from the Bloxy Dex API and returns an array of
- * DexTrade entities.
- * @param rawTrades A raw order response from an SRA endpoint.
- */
-export function parseBloxyTrades(rawTrades: BloxyTrade[]): DexTrade[] {
- return R.map(_parseBloxyTrade, rawTrades);
-}
-
-/**
- * Converts a single Bloxy trade into a DexTrade entity.
- * @param rawTrade A single trade from the response from the Bloxy API.
- */
-export function _parseBloxyTrade(rawTrade: BloxyTrade): DexTrade {
- const dexTrade = new DexTrade();
- dexTrade.sourceUrl = BLOXY_DEX_TRADES_URL;
- dexTrade.txHash = rawTrade.tx_hash;
- dexTrade.tradeIndex = rawTrade.tradeIndex;
- dexTrade.txTimestamp = new Date(rawTrade.tx_time).getTime();
- dexTrade.txDate = rawTrade.tx_date;
- dexTrade.txSender = rawTrade.tx_sender;
- dexTrade.smartContractId = rawTrade.smart_contract_id;
- dexTrade.smartContractAddress = rawTrade.smart_contract_address;
- dexTrade.contractType = rawTrade.contract_type;
- dexTrade.maker = rawTrade.maker;
- dexTrade.taker = rawTrade.taker;
- // TODO(albrow): The Bloxy API returns amounts and fees as a `number` type
- // but some of their values have too many significant digits to be
- // represented that way. Ideally they will switch to using strings and then
- // we can update this code.
- dexTrade.amountBuy = new BigNumber(rawTrade.amountBuy.toString());
- dexTrade.makerFeeAmount = new BigNumber(rawTrade.makerFee.toString());
- dexTrade.buyCurrencyId = rawTrade.buyCurrencyId;
- dexTrade.buySymbol = filterNullCharacters(rawTrade.buySymbol);
- dexTrade.amountSell = new BigNumber(rawTrade.amountSell.toString());
- dexTrade.takerFeeAmount = new BigNumber(rawTrade.takerFee.toString());
- dexTrade.sellCurrencyId = rawTrade.sellCurrencyId;
- dexTrade.sellSymbol = filterNullCharacters(rawTrade.sellSymbol);
- dexTrade.makerAnnotation = rawTrade.maker_annotation;
- dexTrade.takerAnnotation = rawTrade.taker_annotation;
- dexTrade.protocol = rawTrade.protocol;
- dexTrade.buyAddress = rawTrade.buyAddress;
- dexTrade.sellAddress = rawTrade.sellAddress;
- return dexTrade;
-}
-
-// Works with any form of escaped null character (e.g., '\0' and '\u0000').
-const filterNullCharacters = R.replace(/\0/g, '');
diff --git a/packages/pipeline/src/parsers/copper/index.ts b/packages/pipeline/src/parsers/copper/index.ts
deleted file mode 100644
index 07da66d10..000000000
--- a/packages/pipeline/src/parsers/copper/index.ts
+++ /dev/null
@@ -1,259 +0,0 @@
-import * as R from 'ramda';
-
-import { CopperActivity, CopperActivityType, CopperCustomField, CopperLead, CopperOpportunity } from '../../entities';
-
-const ONE_SECOND = 1000;
-export type CopperSearchResponse = CopperLeadResponse | CopperActivityResponse | CopperOpportunityResponse;
-export interface CopperLeadResponse {
- id: number;
- name?: string;
- first_name?: string;
- last_name?: string;
- middle_name?: string;
- assignee_id?: number;
- company_name?: string;
- customer_source_id?: number;
- monetary_value?: number;
- status: string;
- status_id: number;
- title?: string;
- date_created: number; // in seconds
- date_modified: number; // in seconds
-}
-
-export interface CopperActivityResponse {
- id: number;
- parent: CopperActivityParentResponse;
- type: CopperActivityTypeResponse;
- user_id: number;
- activity_date: number;
- old_value: CopperActivityValueResponse;
- new_value: CopperActivityValueResponse;
- date_created: number; // in seconds
- date_modified: number; // in seconds
-}
-
-export interface CopperActivityValueResponse {
- id: number;
- name: string;
-}
-export interface CopperActivityParentResponse {
- id: number;
- type: string;
-}
-
-// custom activity types
-export enum CopperActivityTypeCategory {
- User = 'user',
- System = 'system',
-}
-export interface CopperActivityTypeResponse {
- id: number;
- category: CopperActivityTypeCategory;
- name: string;
- is_disabled?: boolean;
- count_as_interaction?: boolean;
-}
-
-export interface CopperOpportunityResponse {
- id: number;
- name: string;
- assignee_id?: number;
- close_date?: string;
- company_id?: number;
- company_name?: string;
- customer_source_id?: number;
- loss_reason_id?: number;
- pipeline_id: number;
- pipeline_stage_id: number;
- primary_contact_id?: number;
- priority?: string;
- status: string;
- tags: string[];
- interaction_count: number;
- monetary_value?: number;
- win_probability?: number;
- date_created: number; // in seconds
- date_modified: number; // in seconds
- custom_fields: CopperNestedCustomFieldResponse[];
-}
-interface CopperNestedCustomFieldResponse {
- custom_field_definition_id: number;
- value: number | number[] | null;
-}
-// custom fields
-export enum CopperCustomFieldType {
- String = 'String',
- Text = 'Text',
- Dropdown = 'Dropdown',
- MultiSelect = 'MultiSelect', // not in API documentation but shows up in results
- Date = 'Date',
- Checkbox = 'Checkbox',
- Float = 'Float',
- URL = 'URL', // tslint:disable-line:enum-naming
- Percentage = 'Percentage',
- Currency = 'Currency',
- Connect = 'Connect',
-}
-export interface CopperCustomFieldOptionResponse {
- id: number;
- name: string;
-}
-export interface CopperCustomFieldResponse {
- id: number;
- name: string;
- data_type: CopperCustomFieldType;
- options?: CopperCustomFieldOptionResponse[];
-}
-/**
- * Parse response from Copper API /search/leads/
- *
- * @param leads - The array of leads returned from the API
- * @returns Returns an array of Copper Lead entities
- */
-export function parseLeads(leads: CopperLeadResponse[]): CopperLead[] {
- return leads.map(lead => {
- const entity = new CopperLead();
- entity.id = lead.id;
- entity.name = lead.name || undefined;
- entity.firstName = lead.first_name || undefined;
- entity.lastName = lead.last_name || undefined;
- entity.middleName = lead.middle_name || undefined;
- entity.assigneeId = lead.assignee_id || undefined;
- entity.companyName = lead.company_name || undefined;
- entity.customerSourceId = lead.customer_source_id || undefined;
- entity.monetaryValue = lead.monetary_value || undefined;
- entity.status = lead.status;
- entity.statusId = lead.status_id;
- entity.title = lead.title || undefined;
- entity.dateCreated = lead.date_created * ONE_SECOND;
- entity.dateModified = lead.date_modified * ONE_SECOND;
- return entity;
- });
-}
-
-/**
- * Parse response from Copper API /search/activities/
- *
- * @param activities - The array of activities returned from the API
- * @returns Returns an array of Copper Activity entities
- */
-export function parseActivities(activities: CopperActivityResponse[]): CopperActivity[] {
- return activities.map(activity => {
- const entity = new CopperActivity();
- entity.id = activity.id;
-
- entity.parentId = activity.parent.id;
- entity.parentType = activity.parent.type;
-
- entity.typeId = activity.type.id;
- entity.typeCategory = activity.type.category.toString();
- entity.typeName = activity.type.name;
-
- entity.userId = activity.user_id;
- entity.dateCreated = activity.date_created * ONE_SECOND;
- entity.dateModified = activity.date_modified * ONE_SECOND;
-
- // nested nullable fields
- entity.oldValueId = R.path(['old_value', 'id'], activity);
- entity.oldValueName = R.path(['old_value', 'name'], activity);
- entity.newValueId = R.path(['new_value', 'id'], activity);
- entity.newValueName = R.path(['new_value', 'name'], activity);
-
- return entity;
- });
-}
-
-/**
- * Parse response from Copper API /search/opportunities/
- *
- * @param opportunities - The array of opportunities returned from the API
- * @returns Returns an array of Copper Opportunity entities
- */
-export function parseOpportunities(opportunities: CopperOpportunityResponse[]): CopperOpportunity[] {
- return opportunities.map(opp => {
- const customFields: { [key: number]: number } = opp.custom_fields
- .filter(f => f.value !== null)
- .map(f => ({
- ...f,
- value: ([] as number[]).concat(f.value || []), // normalise all values to number[]
- }))
- .map(f => f.value.map(val => [f.custom_field_definition_id, val] as [number, number])) // pair each value with the custom_field_definition_id
- .reduce((acc, pair) => acc.concat(pair)) // flatten
- .reduce<{ [key: number]: number }>((obj, [key, value]) => {
- // transform into object literal
- obj[key] = value;
- return obj;
- }, {});
-
- const entity = new CopperOpportunity();
- entity.id = opp.id;
- entity.name = opp.name;
- entity.assigneeId = opp.assignee_id || undefined;
- entity.closeDate = opp.close_date || undefined;
- entity.companyId = opp.company_id || undefined;
- entity.companyName = opp.company_name || undefined;
- entity.customerSourceId = opp.customer_source_id || undefined;
- entity.lossReasonId = opp.loss_reason_id || undefined;
- entity.pipelineId = opp.pipeline_id;
- entity.pipelineStageId = opp.pipeline_stage_id;
- entity.primaryContactId = opp.primary_contact_id || undefined;
- entity.priority = opp.priority || undefined;
- entity.status = opp.status;
- entity.interactionCount = opp.interaction_count;
- entity.monetaryValue = opp.monetary_value || undefined;
- entity.winProbability = opp.win_probability === null ? undefined : opp.win_probability;
- entity.dateCreated = opp.date_created * ONE_SECOND;
- entity.dateModified = opp.date_modified * ONE_SECOND;
- entity.customFields = customFields;
- return entity;
- });
-}
-
-/**
- * Parse response from Copper API /activity_types/
- *
- * @param activityTypeResponse - Activity Types response from the API, keyed by "user" or "system"
- * @returns Returns an array of Copper Activity Type entities
- */
-export function parseActivityTypes(
- activityTypeResponse: Map<CopperActivityTypeCategory, CopperActivityTypeResponse[]>,
-): CopperActivityType[] {
- const values: CopperActivityTypeResponse[] = R.flatten(Object.values(activityTypeResponse));
- return values.map(activityType => ({
- id: activityType.id,
- name: activityType.name,
- category: activityType.category.toString(),
- isDisabled: activityType.is_disabled,
- countAsInteraction: activityType.count_as_interaction,
- }));
-}
-
-/**
- * Parse response from Copper API /custom_field_definitions/
- *
- * @param customFieldResponse - array of custom field definitions returned from the API, consisting of top-level fields and nested fields
- * @returns Returns an array of Copper Custom Field entities
- */
-export function parseCustomFields(customFieldResponse: CopperCustomFieldResponse[]): CopperCustomField[] {
- function parseTopLevelField(field: CopperCustomFieldResponse): CopperCustomField[] {
- const topLevelField: CopperCustomField = {
- id: field.id,
- name: field.name,
- dataType: field.data_type.toString(),
- };
-
- if (field.options !== undefined) {
- const nestedFields: CopperCustomField[] = field.options.map(option => ({
- id: option.id,
- name: option.name,
- dataType: field.name,
- fieldType: 'option',
- }));
- return nestedFields.concat(topLevelField);
- } else {
- return [topLevelField];
- }
- }
- return R.chain(parseTopLevelField, customFieldResponse);
-}
diff --git a/packages/pipeline/src/parsers/ddex_orders/index.ts b/packages/pipeline/src/parsers/ddex_orders/index.ts
deleted file mode 100644
index 562f894ab..000000000
--- a/packages/pipeline/src/parsers/ddex_orders/index.ts
+++ /dev/null
@@ -1,69 +0,0 @@
-import { BigNumber } from '@0x/utils';
-
-import { aggregateOrders } from '../utils';
-
-import { DdexMarket, DdexOrderbook } from '../../data_sources/ddex';
-import { TokenOrderbookSnapshot as TokenOrder } from '../../entities';
-import { OrderType } from '../../types';
-
-/**
- * Marque function of this file.
- * 1) Takes in orders from an orderbook,
- * other information attached.
- * @param ddexOrderbook A raw orderbook that we pull from the Ddex API.
- * @param ddexMarket An object containing market data also directly from the API.
- * @param observedTimestamp Time at which the orders for the market were pulled.
- * @param source The exchange where these orders are placed. In this case 'ddex'.
- */
-export function parseDdexOrders(
- ddexOrderbook: DdexOrderbook,
- ddexMarket: DdexMarket,
- observedTimestamp: number,
- source: string,
-): TokenOrder[] {
- const aggregatedBids = aggregateOrders(ddexOrderbook.bids);
- const aggregatedAsks = aggregateOrders(ddexOrderbook.asks);
- const parsedBids = aggregatedBids.map(order =>
- parseDdexOrder(ddexMarket, observedTimestamp, OrderType.Bid, source, order),
- );
- const parsedAsks = aggregatedAsks.map(order =>
- parseDdexOrder(ddexMarket, observedTimestamp, OrderType.Ask, source, order),
- );
- return parsedBids.concat(parsedAsks);
-}
-
-/**
- * Parse a single aggregated Ddex order in order to form a tokenOrder entity
- * which can be saved into the database.
- * @param ddexMarket An object containing information about the market where these
- * trades have been placed.
- * @param observedTimestamp The time when the API response returned back to us.
- * @param orderType 'bid' or 'ask' enum.
- * @param source Exchange where these orders were placed.
- * @param ddexOrder A <price, amount> tuple which we will convert to volume-basis.
- */
-export function parseDdexOrder(
- ddexMarket: DdexMarket,
- observedTimestamp: number,
- orderType: OrderType,
- source: string,
- ddexOrder: [string, BigNumber],
-): TokenOrder {
- const tokenOrder = new TokenOrder();
- const price = new BigNumber(ddexOrder[0]);
- const amount = ddexOrder[1];
-
- tokenOrder.source = source;
- tokenOrder.observedTimestamp = observedTimestamp;
- tokenOrder.orderType = orderType;
- tokenOrder.price = price;
-
- tokenOrder.baseAssetSymbol = ddexMarket.baseToken;
- tokenOrder.baseAssetAddress = ddexMarket.baseTokenAddress;
- tokenOrder.baseVolume = amount;
-
- tokenOrder.quoteAssetSymbol = ddexMarket.quoteToken;
- tokenOrder.quoteAssetAddress = ddexMarket.quoteTokenAddress;
- tokenOrder.quoteVolume = price.times(amount);
- return tokenOrder;
-}
diff --git a/packages/pipeline/src/parsers/events/erc20_events.ts b/packages/pipeline/src/parsers/events/erc20_events.ts
deleted file mode 100644
index caf9984d0..000000000
--- a/packages/pipeline/src/parsers/events/erc20_events.ts
+++ /dev/null
@@ -1,34 +0,0 @@
-import { ERC20TokenApprovalEventArgs } from '@0x/contract-wrappers';
-import { LogWithDecodedArgs } from 'ethereum-types';
-import * as R from 'ramda';
-
-import { ERC20ApprovalEvent } from '../../entities';
-
-/**
- * Parses raw event logs for an ERC20 approval event and returns an array of
- * ERC20ApprovalEvent entities.
- * @param eventLogs Raw event logs (e.g. returned from contract-wrappers).
- */
-export const parseERC20ApprovalEvents: (
- eventLogs: Array<LogWithDecodedArgs<ERC20TokenApprovalEventArgs>>,
-) => ERC20ApprovalEvent[] = R.map(_convertToERC20ApprovalEvent);
-
-/**
- * Converts a raw event log for an ERC20 approval event into an
- * ERC20ApprovalEvent entity.
- * @param eventLog Raw event log (e.g. returned from contract-wrappers).
- */
-export function _convertToERC20ApprovalEvent(
- eventLog: LogWithDecodedArgs<ERC20TokenApprovalEventArgs>,
-): ERC20ApprovalEvent {
- const erc20ApprovalEvent = new ERC20ApprovalEvent();
- erc20ApprovalEvent.tokenAddress = eventLog.address as string;
- erc20ApprovalEvent.blockNumber = eventLog.blockNumber as number;
- erc20ApprovalEvent.logIndex = eventLog.logIndex as number;
- erc20ApprovalEvent.rawData = eventLog.data as string;
- erc20ApprovalEvent.transactionHash = eventLog.transactionHash;
- erc20ApprovalEvent.ownerAddress = eventLog.args._owner;
- erc20ApprovalEvent.spenderAddress = eventLog.args._spender;
- erc20ApprovalEvent.amount = eventLog.args._value;
- return erc20ApprovalEvent;
-}
diff --git a/packages/pipeline/src/parsers/events/exchange_events.ts b/packages/pipeline/src/parsers/events/exchange_events.ts
deleted file mode 100644
index 9c4a5f89a..000000000
--- a/packages/pipeline/src/parsers/events/exchange_events.ts
+++ /dev/null
@@ -1,145 +0,0 @@
-import { ExchangeCancelEventArgs, ExchangeCancelUpToEventArgs, ExchangeFillEventArgs } from '@0x/contract-wrappers';
-import { assetDataUtils } from '@0x/order-utils';
-import { AssetProxyId, ERC721AssetData } from '@0x/types';
-import { LogWithDecodedArgs } from 'ethereum-types';
-import * as R from 'ramda';
-
-import { ExchangeCancelEvent, ExchangeCancelUpToEvent, ExchangeFillEvent } from '../../entities';
-import { bigNumbertoStringOrNull, convertAssetProxyIdToType } from '../../utils';
-
-/**
- * Parses raw event logs for a fill event and returns an array of
- * ExchangeFillEvent entities.
- * @param eventLogs Raw event logs (e.g. returned from contract-wrappers).
- */
-export const parseExchangeFillEvents: (
- eventLogs: Array<LogWithDecodedArgs<ExchangeFillEventArgs>>,
-) => ExchangeFillEvent[] = R.map(_convertToExchangeFillEvent);
-
-/**
- * Parses raw event logs for a cancel event and returns an array of
- * ExchangeCancelEvent entities.
- * @param eventLogs Raw event logs (e.g. returned from contract-wrappers).
- */
-export const parseExchangeCancelEvents: (
- eventLogs: Array<LogWithDecodedArgs<ExchangeCancelEventArgs>>,
-) => ExchangeCancelEvent[] = R.map(_convertToExchangeCancelEvent);
-
-/**
- * Parses raw event logs for a CancelUpTo event and returns an array of
- * ExchangeCancelUpToEvent entities.
- * @param eventLogs Raw event logs (e.g. returned from contract-wrappers).
- */
-export const parseExchangeCancelUpToEvents: (
- eventLogs: Array<LogWithDecodedArgs<ExchangeCancelUpToEventArgs>>,
-) => ExchangeCancelUpToEvent[] = R.map(_convertToExchangeCancelUpToEvent);
-
-/**
- * Converts a raw event log for a fill event into an ExchangeFillEvent entity.
- * @param eventLog Raw event log (e.g. returned from contract-wrappers).
- */
-export function _convertToExchangeFillEvent(eventLog: LogWithDecodedArgs<ExchangeFillEventArgs>): ExchangeFillEvent {
- const makerAssetData = assetDataUtils.decodeAssetDataOrThrow(eventLog.args.makerAssetData);
- const takerAssetData = assetDataUtils.decodeAssetDataOrThrow(eventLog.args.takerAssetData);
- const exchangeFillEvent = new ExchangeFillEvent();
- exchangeFillEvent.contractAddress = eventLog.address as string;
- exchangeFillEvent.blockNumber = eventLog.blockNumber as number;
- exchangeFillEvent.logIndex = eventLog.logIndex as number;
- exchangeFillEvent.rawData = eventLog.data as string;
- exchangeFillEvent.transactionHash = eventLog.transactionHash;
- exchangeFillEvent.makerAddress = eventLog.args.makerAddress;
- exchangeFillEvent.takerAddress = eventLog.args.takerAddress;
- exchangeFillEvent.feeRecipientAddress = eventLog.args.feeRecipientAddress;
- exchangeFillEvent.senderAddress = eventLog.args.senderAddress;
- exchangeFillEvent.makerAssetFilledAmount = eventLog.args.makerAssetFilledAmount;
- exchangeFillEvent.takerAssetFilledAmount = eventLog.args.takerAssetFilledAmount;
- exchangeFillEvent.makerFeePaid = eventLog.args.makerFeePaid;
- exchangeFillEvent.takerFeePaid = eventLog.args.takerFeePaid;
- exchangeFillEvent.orderHash = eventLog.args.orderHash;
- exchangeFillEvent.rawMakerAssetData = eventLog.args.makerAssetData;
- // tslint:disable-next-line:no-unnecessary-type-assertion
- exchangeFillEvent.makerAssetType = convertAssetProxyIdToType(makerAssetData.assetProxyId as AssetProxyId);
- exchangeFillEvent.makerAssetProxyId = makerAssetData.assetProxyId;
- // HACK(abandeali1): this event schema currently does not support multiple maker/taker assets, so we store the first token address from the MultiAssetProxy assetData
- exchangeFillEvent.makerTokenAddress = assetDataUtils.isMultiAssetData(makerAssetData)
- ? assetDataUtils.decodeMultiAssetDataRecursively(eventLog.args.makerAssetData).nestedAssetData[0].tokenAddress
- : makerAssetData.tokenAddress;
- // tslint has a false positive here. Type assertion is required.
- // tslint:disable-next-line:no-unnecessary-type-assertion
- exchangeFillEvent.makerTokenId = bigNumbertoStringOrNull((makerAssetData as ERC721AssetData).tokenId);
- exchangeFillEvent.rawTakerAssetData = eventLog.args.takerAssetData;
- // tslint:disable-next-line:no-unnecessary-type-assertion
- exchangeFillEvent.takerAssetType = convertAssetProxyIdToType(takerAssetData.assetProxyId as AssetProxyId);
- exchangeFillEvent.takerAssetProxyId = takerAssetData.assetProxyId;
- // HACK(abandeali1): this event schema currently does not support multiple maker/taker assets, so we store the first token address from the MultiAssetProxy assetData
- exchangeFillEvent.takerTokenAddress = assetDataUtils.isMultiAssetData(takerAssetData)
- ? assetDataUtils.decodeMultiAssetDataRecursively(eventLog.args.takerAssetData).nestedAssetData[0].tokenAddress
- : takerAssetData.tokenAddress;
- // tslint:disable-next-line:no-unnecessary-type-assertion
- exchangeFillEvent.takerTokenId = bigNumbertoStringOrNull((takerAssetData as ERC721AssetData).tokenId);
- return exchangeFillEvent;
-}
-
-/**
- * Converts a raw event log for a cancel event into an ExchangeCancelEvent
- * entity.
- * @param eventLog Raw event log (e.g. returned from contract-wrappers).
- */
-export function _convertToExchangeCancelEvent(
- eventLog: LogWithDecodedArgs<ExchangeCancelEventArgs>,
-): ExchangeCancelEvent {
- const makerAssetData = assetDataUtils.decodeAssetDataOrThrow(eventLog.args.makerAssetData);
- const takerAssetData = assetDataUtils.decodeAssetDataOrThrow(eventLog.args.takerAssetData);
- const exchangeCancelEvent = new ExchangeCancelEvent();
- exchangeCancelEvent.contractAddress = eventLog.address as string;
- exchangeCancelEvent.blockNumber = eventLog.blockNumber as number;
- exchangeCancelEvent.logIndex = eventLog.logIndex as number;
- exchangeCancelEvent.rawData = eventLog.data as string;
- exchangeCancelEvent.transactionHash = eventLog.transactionHash;
- exchangeCancelEvent.makerAddress = eventLog.args.makerAddress;
- exchangeCancelEvent.takerAddress = eventLog.args.takerAddress;
- exchangeCancelEvent.feeRecipientAddress = eventLog.args.feeRecipientAddress;
- exchangeCancelEvent.senderAddress = eventLog.args.senderAddress;
- exchangeCancelEvent.orderHash = eventLog.args.orderHash;
- exchangeCancelEvent.rawMakerAssetData = eventLog.args.makerAssetData;
- // tslint:disable-next-line:no-unnecessary-type-assertion
- exchangeCancelEvent.makerAssetType = convertAssetProxyIdToType(makerAssetData.assetProxyId as AssetProxyId);
- exchangeCancelEvent.makerAssetProxyId = makerAssetData.assetProxyId;
- // HACK(abandeali1): this event schema currently does not support multiple maker/taker assets, so we store the first token address from the MultiAssetProxy assetData
- exchangeCancelEvent.makerTokenAddress = assetDataUtils.isMultiAssetData(makerAssetData)
- ? assetDataUtils.decodeMultiAssetDataRecursively(eventLog.args.makerAssetData).nestedAssetData[0].tokenAddress
- : makerAssetData.tokenAddress;
- // tslint:disable-next-line:no-unnecessary-type-assertion
- exchangeCancelEvent.makerTokenId = bigNumbertoStringOrNull((makerAssetData as ERC721AssetData).tokenId);
- exchangeCancelEvent.rawTakerAssetData = eventLog.args.takerAssetData;
- // tslint:disable-next-line:no-unnecessary-type-assertion
- exchangeCancelEvent.takerAssetType = convertAssetProxyIdToType(takerAssetData.assetProxyId as AssetProxyId);
- exchangeCancelEvent.takerAssetProxyId = takerAssetData.assetProxyId;
- // HACK(abandeali1): this event schema currently does not support multiple maker/taker assets, so we store the first token address from the MultiAssetProxy assetData
- exchangeCancelEvent.takerTokenAddress = assetDataUtils.isMultiAssetData(takerAssetData)
- ? assetDataUtils.decodeMultiAssetDataRecursively(eventLog.args.takerAssetData).nestedAssetData[0].tokenAddress
- : takerAssetData.tokenAddress;
- // tslint:disable-next-line:no-unnecessary-type-assertion
- exchangeCancelEvent.takerTokenId = bigNumbertoStringOrNull((takerAssetData as ERC721AssetData).tokenId);
- return exchangeCancelEvent;
-}
-
-/**
- * Converts a raw event log for a cancelUpTo event into an
- * ExchangeCancelUpToEvent entity.
- * @param eventLog Raw event log (e.g. returned from contract-wrappers).
- */
-export function _convertToExchangeCancelUpToEvent(
- eventLog: LogWithDecodedArgs<ExchangeCancelUpToEventArgs>,
-): ExchangeCancelUpToEvent {
- const exchangeCancelUpToEvent = new ExchangeCancelUpToEvent();
- exchangeCancelUpToEvent.contractAddress = eventLog.address as string;
- exchangeCancelUpToEvent.blockNumber = eventLog.blockNumber as number;
- exchangeCancelUpToEvent.logIndex = eventLog.logIndex as number;
- exchangeCancelUpToEvent.rawData = eventLog.data as string;
- exchangeCancelUpToEvent.transactionHash = eventLog.transactionHash;
- exchangeCancelUpToEvent.makerAddress = eventLog.args.makerAddress;
- exchangeCancelUpToEvent.senderAddress = eventLog.args.senderAddress;
- exchangeCancelUpToEvent.orderEpoch = eventLog.args.orderEpoch;
- return exchangeCancelUpToEvent;
-}
diff --git a/packages/pipeline/src/parsers/events/index.ts b/packages/pipeline/src/parsers/events/index.ts
deleted file mode 100644
index 3f9915e8b..000000000
--- a/packages/pipeline/src/parsers/events/index.ts
+++ /dev/null
@@ -1,2 +0,0 @@
-export { parseExchangeCancelEvents, parseExchangeCancelUpToEvents, parseExchangeFillEvents } from './exchange_events';
-export { parseERC20ApprovalEvents } from './erc20_events';
diff --git a/packages/pipeline/src/parsers/idex_orders/index.ts b/packages/pipeline/src/parsers/idex_orders/index.ts
deleted file mode 100644
index 14b871195..000000000
--- a/packages/pipeline/src/parsers/idex_orders/index.ts
+++ /dev/null
@@ -1,81 +0,0 @@
-import { BigNumber } from '@0x/utils';
-
-import { aggregateOrders } from '../utils';
-
-import { IdexOrderbook, IdexOrderParam } from '../../data_sources/idex';
-import { TokenOrderbookSnapshot as TokenOrder } from '../../entities';
-import { OrderType } from '../../types';
-
-/**
- * Marque function of this file.
- * 1) Takes in orders from an orderbook,
- * 2) Aggregates them by price point,
- * 3) Parses them into entities which are then saved into the database.
- * @param idexOrderbook raw orderbook that we pull from the Idex API.
- * @param observedTimestamp Time at which the orders for the market were pulled.
- * @param source The exchange where these orders are placed. In this case 'idex'.
- */
-export function parseIdexOrders(idexOrderbook: IdexOrderbook, observedTimestamp: number, source: string): TokenOrder[] {
- const aggregatedBids = aggregateOrders(idexOrderbook.bids);
- // Any of the bid orders' params will work
- const idexBidOrder = idexOrderbook.bids[0];
- const parsedBids =
- aggregatedBids.length > 0
- ? aggregatedBids.map(order =>
- parseIdexOrder(idexBidOrder.params, observedTimestamp, OrderType.Bid, source, order),
- )
- : [];
-
- const aggregatedAsks = aggregateOrders(idexOrderbook.asks);
- // Any of the ask orders' params will work
- const idexAskOrder = idexOrderbook.asks[0];
- const parsedAsks =
- aggregatedAsks.length > 0
- ? aggregatedAsks.map(order =>
- parseIdexOrder(idexAskOrder.params, observedTimestamp, OrderType.Ask, source, order),
- )
- : [];
- return parsedBids.concat(parsedAsks);
-}
-
-/**
- * Parse a single aggregated Idex order in order to form a tokenOrder entity
- * which can be saved into the database.
- * @param idexOrderParam An object containing information about the market where these
- * trades have been placed.
- * @param observedTimestamp The time when the API response returned back to us.
- * @param orderType 'bid' or 'ask' enum.
- * @param source Exchange where these orders were placed.
- * @param idexOrder A <price, amount> tuple which we will convert to volume-basis.
- */
-export function parseIdexOrder(
- idexOrderParam: IdexOrderParam,
- observedTimestamp: number,
- orderType: OrderType,
- source: string,
- idexOrder: [string, BigNumber],
-): TokenOrder {
- const tokenOrder = new TokenOrder();
- const price = new BigNumber(idexOrder[0]);
- const amount = idexOrder[1];
-
- tokenOrder.source = source;
- tokenOrder.observedTimestamp = observedTimestamp;
- tokenOrder.orderType = orderType;
- tokenOrder.price = price;
- tokenOrder.baseVolume = amount;
- tokenOrder.quoteVolume = price.times(amount);
-
- if (orderType === OrderType.Bid) {
- tokenOrder.baseAssetSymbol = idexOrderParam.buySymbol;
- tokenOrder.baseAssetAddress = idexOrderParam.tokenBuy;
- tokenOrder.quoteAssetSymbol = idexOrderParam.sellSymbol;
- tokenOrder.quoteAssetAddress = idexOrderParam.tokenSell;
- } else {
- tokenOrder.baseAssetSymbol = idexOrderParam.sellSymbol;
- tokenOrder.baseAssetAddress = idexOrderParam.tokenSell;
- tokenOrder.quoteAssetSymbol = idexOrderParam.buySymbol;
- tokenOrder.quoteAssetAddress = idexOrderParam.tokenBuy;
- }
- return tokenOrder;
-}
diff --git a/packages/pipeline/src/parsers/oasis_orders/index.ts b/packages/pipeline/src/parsers/oasis_orders/index.ts
deleted file mode 100644
index b71fb65b9..000000000
--- a/packages/pipeline/src/parsers/oasis_orders/index.ts
+++ /dev/null
@@ -1,71 +0,0 @@
-import { BigNumber } from '@0x/utils';
-import * as R from 'ramda';
-
-import { aggregateOrders } from '../utils';
-
-import { OasisMarket, OasisOrder } from '../../data_sources/oasis';
-import { TokenOrderbookSnapshot as TokenOrder } from '../../entities';
-import { OrderType } from '../../types';
-
-/**
- * Marque function of this file.
- * 1) Takes in orders from an orderbook,
- * 2) Aggregates them according to price point,
- * 3) Builds TokenOrder entity with other information attached.
- * @param oasisOrderbook A raw orderbook that we pull from the Oasis API.
- * @param oasisMarket An object containing market data also directly from the API.
- * @param observedTimestamp Time at which the orders for the market were pulled.
- * @param source The exchange where these orders are placed. In this case 'oasis'.
- */
-export function parseOasisOrders(
- oasisOrderbook: OasisOrder[],
- oasisMarket: OasisMarket,
- observedTimestamp: number,
- source: string,
-): TokenOrder[] {
- const aggregatedBids = aggregateOrders(R.filter(R.propEq('act', OrderType.Bid), oasisOrderbook));
- const aggregatedAsks = aggregateOrders(R.filter(R.propEq('act', OrderType.Ask), oasisOrderbook));
- const parsedBids = aggregatedBids.map(order =>
- parseOasisOrder(oasisMarket, observedTimestamp, OrderType.Bid, source, order),
- );
- const parsedAsks = aggregatedAsks.map(order =>
- parseOasisOrder(oasisMarket, observedTimestamp, OrderType.Ask, source, order),
- );
- return parsedBids.concat(parsedAsks);
-}
-
-/**
- * Parse a single aggregated Oasis order to form a tokenOrder entity
- * which can be saved into the database.
- * @param oasisMarket An object containing information about the market where these
- * trades have been placed.
- * @param observedTimestamp The time when the API response returned back to us.
- * @param orderType 'bid' or 'ask' enum.
- * @param source Exchange where these orders were placed.
- * @param oasisOrder A <price, amount> tuple which we will convert to volume-basis.
- */
-export function parseOasisOrder(
- oasisMarket: OasisMarket,
- observedTimestamp: number,
- orderType: OrderType,
- source: string,
- oasisOrder: [string, BigNumber],
-): TokenOrder {
- const tokenOrder = new TokenOrder();
- const price = new BigNumber(oasisOrder[0]);
- const amount = oasisOrder[1];
-
- tokenOrder.source = source;
- tokenOrder.observedTimestamp = observedTimestamp;
- tokenOrder.orderType = orderType;
- tokenOrder.price = price;
-
- tokenOrder.baseAssetSymbol = oasisMarket.base;
- tokenOrder.baseAssetAddress = null; // Oasis doesn't provide address information
- tokenOrder.baseVolume = amount;
-
- tokenOrder.quoteAssetSymbol = oasisMarket.quote;
- tokenOrder.quoteAssetAddress = null; // Oasis doesn't provide address information
- tokenOrder.quoteVolume = price.times(amount);
- return tokenOrder;
-}
diff --git a/packages/pipeline/src/parsers/ohlcv_external/crypto_compare.ts b/packages/pipeline/src/parsers/ohlcv_external/crypto_compare.ts
deleted file mode 100644
index 3efb90384..000000000
--- a/packages/pipeline/src/parsers/ohlcv_external/crypto_compare.ts
+++ /dev/null
@@ -1,38 +0,0 @@
-import { CryptoCompareOHLCVRecord } from '../../data_sources/ohlcv_external/crypto_compare';
-import { OHLCVExternal } from '../../entities';
-
-const ONE_SECOND = 1000; // Crypto Compare uses timestamps in seconds instead of milliseconds
-
-export interface OHLCVMetadata {
- exchange: string;
- fromSymbol: string;
- toSymbol: string;
- source: string;
- observedTimestamp: number;
- interval: number;
-}
-/**
- * Parses OHLCV records from Crypto Compare into an array of OHLCVExternal entities
- * @param rawRecords an array of OHLCV records from Crypto Compare (not the full response)
- */
-export function parseRecords(rawRecords: CryptoCompareOHLCVRecord[], metadata: OHLCVMetadata): OHLCVExternal[] {
- return rawRecords.map(rec => {
- const ohlcvRecord = new OHLCVExternal();
- ohlcvRecord.exchange = metadata.exchange;
- ohlcvRecord.fromSymbol = metadata.fromSymbol;
- ohlcvRecord.toSymbol = metadata.toSymbol;
- ohlcvRecord.startTime = rec.time * ONE_SECOND - metadata.interval;
- ohlcvRecord.endTime = rec.time * ONE_SECOND;
-
- ohlcvRecord.open = rec.open;
- ohlcvRecord.close = rec.close;
- ohlcvRecord.low = rec.low;
- ohlcvRecord.high = rec.high;
- ohlcvRecord.volumeFrom = rec.volumefrom;
- ohlcvRecord.volumeTo = rec.volumeto;
-
- ohlcvRecord.source = metadata.source;
- ohlcvRecord.observedTimestamp = metadata.observedTimestamp;
- return ohlcvRecord;
- });
-}
diff --git a/packages/pipeline/src/parsers/paradex_orders/index.ts b/packages/pipeline/src/parsers/paradex_orders/index.ts
deleted file mode 100644
index 85990dae4..000000000
--- a/packages/pipeline/src/parsers/paradex_orders/index.ts
+++ /dev/null
@@ -1,66 +0,0 @@
-import { BigNumber } from '@0x/utils';
-
-import { ParadexMarket, ParadexOrder, ParadexOrderbookResponse } from '../../data_sources/paradex';
-import { TokenOrderbookSnapshot as TokenOrder } from '../../entities';
-import { OrderType } from '../../types';
-
-/**
- * Marque function of this file.
- * 1) Takes in orders from an orderbook (orders are already aggregated by price point),
- * 2) For each aggregated order, forms a TokenOrder entity with market data and
- * other information attached.
- * @param paradexOrderbookResponse An orderbook response from the Paradex API.
- * @param paradexMarket An object containing market data also directly from the API.
- * @param observedTimestamp Time at which the orders for the market were pulled.
- * @param source The exchange where these orders are placed. In this case 'paradex'.
- */
-export function parseParadexOrders(
- paradexOrderbookResponse: ParadexOrderbookResponse,
- paradexMarket: ParadexMarket,
- observedTimestamp: number,
- source: string,
-): TokenOrder[] {
- const parsedBids = paradexOrderbookResponse.bids.map(order =>
- parseParadexOrder(paradexMarket, observedTimestamp, OrderType.Bid, source, order),
- );
- const parsedAsks = paradexOrderbookResponse.asks.map(order =>
- parseParadexOrder(paradexMarket, observedTimestamp, OrderType.Ask, source, order),
- );
- return parsedBids.concat(parsedAsks);
-}
-
-/**
- * Parse a single aggregated Ddex order in order to form a tokenOrder entity
- * which can be saved into the database.
- * @param paradexMarket An object containing information about the market where these
- * orders have been placed.
- * @param observedTimestamp The time when the API response returned back to us.
- * @param orderType 'bid' or 'ask' enum.
- * @param source Exchange where these orders were placed.
- * @param paradexOrder A ParadexOrder object; basically price, amount tuple.
- */
-export function parseParadexOrder(
- paradexMarket: ParadexMarket,
- observedTimestamp: number,
- orderType: OrderType,
- source: string,
- paradexOrder: ParadexOrder,
-): TokenOrder {
- const tokenOrder = new TokenOrder();
- const price = new BigNumber(paradexOrder.price);
- const amount = new BigNumber(paradexOrder.amount);
-
- tokenOrder.source = source;
- tokenOrder.observedTimestamp = observedTimestamp;
- tokenOrder.orderType = orderType;
- tokenOrder.price = price;
-
- tokenOrder.baseAssetSymbol = paradexMarket.baseToken;
- tokenOrder.baseAssetAddress = paradexMarket.baseTokenAddress as string;
- tokenOrder.baseVolume = amount;
-
- tokenOrder.quoteAssetSymbol = paradexMarket.quoteToken;
- tokenOrder.quoteAssetAddress = paradexMarket.quoteTokenAddress as string;
- tokenOrder.quoteVolume = price.times(amount);
- return tokenOrder;
-}
diff --git a/packages/pipeline/src/parsers/relayer_registry/index.ts b/packages/pipeline/src/parsers/relayer_registry/index.ts
deleted file mode 100644
index 9723880a4..000000000
--- a/packages/pipeline/src/parsers/relayer_registry/index.ts
+++ /dev/null
@@ -1,37 +0,0 @@
-import * as R from 'ramda';
-
-import { RelayerResponse, RelayerResponseNetwork } from '../../data_sources/relayer-registry';
-import { Relayer } from '../../entities';
-
-/**
- * Parses a raw relayer registry response into an array of Relayer entities.
- * @param rawResp raw response from the relayer-registry json file.
- */
-export function parseRelayers(rawResp: Map<string, RelayerResponse>): Relayer[] {
- const parsedAsObject = R.mapObjIndexed(parseRelayer, rawResp);
- return R.values(parsedAsObject);
-}
-
-function parseRelayer(relayerResp: RelayerResponse, uuid: string): Relayer {
- const relayer = new Relayer();
- relayer.uuid = uuid;
- relayer.name = relayerResp.name;
- relayer.homepageUrl = relayerResp.homepage_url;
- relayer.appUrl = relayerResp.app_url;
- const mainNetworkRelayerInfo = getMainNetwork(relayerResp);
- if (mainNetworkRelayerInfo !== undefined) {
- relayer.sraHttpEndpoint = mainNetworkRelayerInfo.sra_http_endpoint || null;
- relayer.sraWsEndpoint = mainNetworkRelayerInfo.sra_ws_endpoint || null;
- relayer.feeRecipientAddresses =
- R.path(['static_order_fields', 'fee_recipient_addresses'], mainNetworkRelayerInfo) || [];
- relayer.takerAddresses = R.path(['static_order_fields', 'taker_addresses'], mainNetworkRelayerInfo) || [];
- } else {
- relayer.feeRecipientAddresses = [];
- relayer.takerAddresses = [];
- }
- return relayer;
-}
-
-function getMainNetwork(relayerResp: RelayerResponse): RelayerResponseNetwork | undefined {
- return R.find(network => network.networkId === 1, relayerResp.networks);
-}
diff --git a/packages/pipeline/src/parsers/sra_orders/index.ts b/packages/pipeline/src/parsers/sra_orders/index.ts
deleted file mode 100644
index 13fe632a4..000000000
--- a/packages/pipeline/src/parsers/sra_orders/index.ts
+++ /dev/null
@@ -1,68 +0,0 @@
-import { APIOrder, OrdersResponse } from '@0x/connect';
-import { assetDataUtils, orderHashUtils } from '@0x/order-utils';
-import { AssetProxyId, ERC721AssetData } from '@0x/types';
-import * as R from 'ramda';
-
-import { SraOrder } from '../../entities';
-import { bigNumbertoStringOrNull, convertAssetProxyIdToType } from '../../utils';
-
-/**
- * Parses a raw order response from an SRA endpoint and returns an array of
- * SraOrder entities.
- * @param rawOrdersResponse A raw order response from an SRA endpoint.
- */
-export function parseSraOrders(rawOrdersResponse: OrdersResponse): SraOrder[] {
- return R.map(_convertToEntity, rawOrdersResponse.records);
-}
-
-/**
- * Converts a single APIOrder into an SraOrder entity.
- * @param apiOrder A single order from the response from an SRA endpoint.
- */
-export function _convertToEntity(apiOrder: APIOrder): SraOrder {
- // TODO(albrow): refactor out common asset data decoding code.
- const makerAssetData = assetDataUtils.decodeAssetDataOrThrow(apiOrder.order.makerAssetData);
- const takerAssetData = assetDataUtils.decodeAssetDataOrThrow(apiOrder.order.takerAssetData);
-
- const sraOrder = new SraOrder();
- sraOrder.exchangeAddress = apiOrder.order.exchangeAddress;
- sraOrder.orderHashHex = orderHashUtils.getOrderHashHex(apiOrder.order);
-
- sraOrder.makerAddress = apiOrder.order.makerAddress;
- sraOrder.takerAddress = apiOrder.order.takerAddress;
- sraOrder.feeRecipientAddress = apiOrder.order.feeRecipientAddress;
- sraOrder.senderAddress = apiOrder.order.senderAddress;
- sraOrder.makerAssetAmount = apiOrder.order.makerAssetAmount;
- sraOrder.takerAssetAmount = apiOrder.order.takerAssetAmount;
- sraOrder.makerFee = apiOrder.order.makerFee;
- sraOrder.takerFee = apiOrder.order.takerFee;
- sraOrder.expirationTimeSeconds = apiOrder.order.expirationTimeSeconds;
- sraOrder.salt = apiOrder.order.salt;
- sraOrder.signature = apiOrder.order.signature;
-
- sraOrder.rawMakerAssetData = apiOrder.order.makerAssetData;
- // tslint:disable-next-line:no-unnecessary-type-assertion
- sraOrder.makerAssetType = convertAssetProxyIdToType(makerAssetData.assetProxyId as AssetProxyId);
- sraOrder.makerAssetProxyId = makerAssetData.assetProxyId;
- // HACK(abandeali1): this event schema currently does not support multiple maker/taker assets, so we store the first token address from the MultiAssetProxy assetData
- sraOrder.makerTokenAddress = assetDataUtils.isMultiAssetData(makerAssetData)
- ? assetDataUtils.decodeMultiAssetDataRecursively(apiOrder.order.makerAssetData).nestedAssetData[0].tokenAddress
- : makerAssetData.tokenAddress;
- // tslint has a false positive here. Type assertion is required.
- // tslint:disable-next-line:no-unnecessary-type-assertion
- sraOrder.makerTokenId = bigNumbertoStringOrNull((makerAssetData as ERC721AssetData).tokenId);
- sraOrder.rawTakerAssetData = apiOrder.order.takerAssetData;
- // tslint:disable-next-line:no-unnecessary-type-assertion
- sraOrder.takerAssetType = convertAssetProxyIdToType(takerAssetData.assetProxyId as AssetProxyId);
- sraOrder.takerAssetProxyId = takerAssetData.assetProxyId;
- // HACK(abandeali1): this event schema currently does not support multiple maker/taker assets, so we store the first token address from the MultiAssetProxy assetData
- sraOrder.takerTokenAddress = assetDataUtils.isMultiAssetData(takerAssetData)
- ? assetDataUtils.decodeMultiAssetDataRecursively(apiOrder.order.takerAssetData).nestedAssetData[0].tokenAddress
- : takerAssetData.tokenAddress;
- // tslint:disable-next-line:no-unnecessary-type-assertion
- sraOrder.takerTokenId = bigNumbertoStringOrNull((takerAssetData as ERC721AssetData).tokenId);
-
- sraOrder.metadataJson = JSON.stringify(apiOrder.metaData);
-
- return sraOrder;
-}
diff --git a/packages/pipeline/src/parsers/token_metadata/index.ts b/packages/pipeline/src/parsers/token_metadata/index.ts
deleted file mode 100644
index 65e0aaa6e..000000000
--- a/packages/pipeline/src/parsers/token_metadata/index.ts
+++ /dev/null
@@ -1,46 +0,0 @@
-import * as R from 'ramda';
-
-import { MetamaskTrustedTokenMeta, ZeroExTrustedTokenMeta } from '../../data_sources/trusted_tokens';
-import { TokenMetadata } from '../../entities';
-import { toBigNumberOrNull } from '../../utils';
-
-/**
- * Parses Metamask's trusted tokens list.
- * @param rawResp raw response from the metamask json file.
- */
-export function parseMetamaskTrustedTokens(rawResp: Map<string, MetamaskTrustedTokenMeta>): TokenMetadata[] {
- const parsedAsObject = R.mapObjIndexed(parseMetamaskTrustedToken, rawResp);
- return R.values(parsedAsObject);
-}
-
-/**
- * Parses 0x's trusted tokens list.
- * @param rawResp raw response from the 0x trusted tokens file.
- */
-export function parseZeroExTrustedTokens(rawResp: ZeroExTrustedTokenMeta[]): TokenMetadata[] {
- return R.map(parseZeroExTrustedToken, rawResp);
-}
-
-function parseMetamaskTrustedToken(resp: MetamaskTrustedTokenMeta, address: string): TokenMetadata {
- const trustedToken = new TokenMetadata();
-
- trustedToken.address = address;
- trustedToken.decimals = toBigNumberOrNull(resp.decimals);
- trustedToken.symbol = resp.symbol;
- trustedToken.name = resp.name;
- trustedToken.authority = 'metamask';
-
- return trustedToken;
-}
-
-function parseZeroExTrustedToken(resp: ZeroExTrustedTokenMeta): TokenMetadata {
- const trustedToken = new TokenMetadata();
-
- trustedToken.address = resp.address;
- trustedToken.decimals = toBigNumberOrNull(resp.decimals);
- trustedToken.symbol = resp.symbol;
- trustedToken.name = resp.name;
- trustedToken.authority = '0x';
-
- return trustedToken;
-}
diff --git a/packages/pipeline/src/parsers/utils.ts b/packages/pipeline/src/parsers/utils.ts
deleted file mode 100644
index 860729e9f..000000000
--- a/packages/pipeline/src/parsers/utils.ts
+++ /dev/null
@@ -1,28 +0,0 @@
-import { BigNumber } from '@0x/utils';
-
-export interface GenericRawOrder {
- price: string;
- amount: string;
-}
-
-/**
- * Aggregates individual orders by price point. Filters zero amount orders.
- * @param rawOrders An array of objects that have price and amount information.
- */
-export function aggregateOrders(rawOrders: GenericRawOrder[]): Array<[string, BigNumber]> {
- const aggregatedOrders = new Map<string, BigNumber>();
- rawOrders.forEach(order => {
- const amount = new BigNumber(order.amount);
- if (amount.isZero()) {
- return;
- }
- // Use string instead of BigNum to aggregate by value instead of variable.
- // Convert to BigNumber first to consolidate different string
- // representations of the same number. Eg. '0.0' and '0.00'.
- const price = new BigNumber(order.price).toString();
-
- const existingAmount = aggregatedOrders.get(price) || new BigNumber(0);
- aggregatedOrders.set(price, amount.plus(existingAmount));
- });
- return Array.from(aggregatedOrders.entries());
-}
diff --git a/packages/pipeline/src/parsers/web3/index.ts b/packages/pipeline/src/parsers/web3/index.ts
deleted file mode 100644
index f986efc59..000000000
--- a/packages/pipeline/src/parsers/web3/index.ts
+++ /dev/null
@@ -1,49 +0,0 @@
-import { BigNumber } from '@0x/utils';
-import { BlockWithoutTransactionData, Transaction as EthTransaction } from 'ethereum-types';
-
-import { Block, Transaction } from '../../entities';
-
-const MILLISECONDS_PER_SECOND = 1000;
-
-/**
- * Parses a raw block and returns a Block entity.
- * @param rawBlock a raw block (e.g. returned from web3-wrapper).
- */
-export function parseBlock(rawBlock: BlockWithoutTransactionData): Block {
- if (rawBlock.hash == null) {
- throw new Error('Tried to parse raw block but hash was null');
- }
- if (rawBlock.number == null) {
- throw new Error('Tried to parse raw block but number was null');
- }
-
- const block = new Block();
- block.hash = rawBlock.hash;
- block.number = rawBlock.number;
- // Block timestamps are in seconds, but we use milliseconds everywhere else.
- block.timestamp = rawBlock.timestamp * MILLISECONDS_PER_SECOND;
- return block;
-}
-
-/**
- * Parses a raw transaction and returns a Transaction entity.
- * @param rawBlock a raw transaction (e.g. returned from web3-wrapper).
- */
-export function parseTransaction(rawTransaction: EthTransaction): Transaction {
- if (rawTransaction.blockHash == null) {
- throw new Error('Tried to parse raw transaction but blockHash was null');
- }
- if (rawTransaction.blockNumber == null) {
- throw new Error('Tried to parse raw transaction but blockNumber was null');
- }
-
- const tx = new Transaction();
- tx.transactionHash = rawTransaction.hash;
- tx.blockHash = rawTransaction.blockHash;
- tx.blockNumber = rawTransaction.blockNumber;
-
- tx.gasUsed = new BigNumber(rawTransaction.gas);
- tx.gasPrice = rawTransaction.gasPrice;
-
- return tx;
-}