UNPKG

@mimicry/sdk

Version:

A node SDK designed to simplify interaction with the Mimicry Protocol smart contracts.

62 lines (52 loc) 1.6 kB
import { isAddress, Contract } from 'ethers'; import { batchTicksToCandle, TradeTick, IOHLCV } from 'candlestick-convert'; import { OracleType, Timeframe } from '../enums'; export class Oracle { private contract: Contract; private metadata: any; constructor(_contract: Contract, _metadata: any) { this.validate(_metadata); this.contract = _contract; this.metadata = _metadata; } async getTicks(): Promise<any> { throw new Error('getTicks() method not implemented.'); } async getOHLCV(_timeframe: Timeframe): Promise<IOHLCV[]> { throw new Error('getOHLCV() method not implemented.'); } getOHLCVFromTicks(_ticks: TradeTick[], _timeframe: Timeframe): IOHLCV[] { if (__DEV__) { console.log(`Oracle.getOHLCVFromTicks(${_timeframe})`); } const candles = batchTicksToCandle(_ticks, 60, true); return candles; } getContract(): Contract { return this.contract; } getMetadata(): any { return this.metadata; } getTick(_time: BigInt, _price: BigInt, _quantity?: BigInt): TradeTick { if (!_quantity) { _quantity = BigInt(0); } return { time: Number(_time), price: Number(_price), quantity: Number(_quantity), }; } validate(_metadata: any): void { if (!Object.values(OracleType).includes(_metadata.type)) { throw new Error('metadata.type must be a valid OracleType'); } if (!isAddress(_metadata.address)) { throw new Error('metadata.address must be a valid address'); } if (__DEV__) { console.log(`Oracle.validate() passed.`); } } }