Skip to content

Commit

Permalink
feat: support vite trades import
Browse files Browse the repository at this point in the history
  • Loading branch information
Zahrun committed Dec 17, 2022
1 parent 7ee4e81 commit c55117b
Show file tree
Hide file tree
Showing 3 changed files with 84 additions and 0 deletions.
2 changes: 2 additions & 0 deletions src/parsers/trades/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import geminiParser from './gemini';
import krakenParser from './kraken';
import poloniexParser from './poloniex';
import revolutParser from './revolut';
import viteParser from './vite'

const parserMapping: {[key in EXCHANGES]: any} = {
[EXCHANGES.Binance]: binanceParser,
Expand All @@ -14,6 +15,7 @@ const parserMapping: {[key in EXCHANGES]: any} = {
[EXCHANGES.Kraken]: krakenParser,
[EXCHANGES.Poloniex]: poloniexParser,
[EXCHANGES.Revolut]: revolutParser,
[EXCHANGES.Vite]: viteParser,
}

export default async function processTradesImport(importDetails: IImport): Promise<ITrade[]> {
Expand Down
80 changes: 80 additions & 0 deletions src/parsers/trades/vite/index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,80 @@
import { getCSVData } from '../../';
import { EXCHANGES, IImport, IPartialTrade, ITrade } from '../../../types';
import { createDateAsUTC, createID } from '../../utils';

enum ViteOrderSide {
SELL = 'SELL ORDER',
BUY = 'BUY ORDER',
}

interface IVite {
address: string;
orderId: string;
symbol: string;
tradeTokenSymbol: string;
quoteTokenSymbol: string;
side: string;
price: string;
quantity: string;
amount: string;
executedQuantity: string;
executedAmount: string;
executedPercent: string;
executedAvgPrice: string;
fee: string;
status: string;
type: string;
createTime: string;
dt: string;
}

export default async function processData(importDetails: IImport): Promise<ITrade[]> {
const data: IVite[] = await getCSVData(importDetails.data) as IVite[];
const internalFormat: ITrade[] = [];
for (const trade of data) {
const tradeToAdd: IPartialTrade = {
date : createDateAsUTC(new Date(parseInt(trade.createTime)*1000)).getTime(),
exchange : EXCHANGES.Vite,
exchangeID : trade.orderId,
};
switch (trade.status) {
case 'Filled': {
switch (trade.side.toUpperCase()) {
case ViteOrderSide.BUY: {
tradeToAdd.boughtCurrency = trade.tradeTokenSymbol.split('-')[0];
tradeToAdd.soldCurrency = trade.quoteTokenSymbol.split('-')[0];
tradeToAdd.amountSold = parseFloat(trade.executedAmount);
tradeToAdd.rate = parseFloat(trade.executedAvgPrice);
break;
}
case ViteOrderSide.SELL: {
tradeToAdd.soldCurrency = trade.tradeTokenSymbol.split('-')[0];
tradeToAdd.boughtCurrency = trade.quoteTokenSymbol.split('-')[0];
tradeToAdd.amountSold = parseFloat(trade.executedQuantity);
tradeToAdd.rate = 1 / parseFloat(trade.executedAvgPrice);
break;
}
default: {
console.error(`Error parsing ${tradeToAdd.exchange} trade.
Unknown side ${trade.side}`);
continue;
}
}
tradeToAdd.ID = createID(tradeToAdd);
internalFormat.push(tradeToAdd as ITrade);
break;
}
case 'Cancelled': {
console.log(`Skipping ${tradeToAdd.exchange} trade.
with status: ${trade.status}`)
break;
}
default: {
console.error(`Error parsing ${tradeToAdd.exchange} trade.
Unknown status ${trade.status}`);
break;
}
}
}
return internalFormat;
}
2 changes: 2 additions & 0 deletions src/types/locations.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ export enum EXCHANGES {
Kraken = 'KRAKEN',
Binance = 'BINANCE',
Revolut = 'REVOLUT',
Vite = 'VITE',
}

export enum IncomeImportTypes {
Expand All @@ -20,4 +21,5 @@ export enum ExchangesTradeHeaders {
KRAKEN = '85bf27e799cc0a30fe5b201cd6a4724e4a52feb433f41a1e8b046924e3bf8dc5',
BINANCE = '4d0d5df894fe488872e513f6148dfa14ff29272e759b7fb3c86d264687a7cf99',
REVOLUT = 'ef10a780b82fdd31bb5b5f4f21eb7332c46b324513ab15418448f360f268e37c',
VITE = 'ec54965569d5c6da1338697a73711c0ecbfc54e7106d64e259dc430ff2766cc3',
}

0 comments on commit c55117b

Please sign in to comment.