@cygnus-wealth/asset-valuator
Version:
Asset valuation library for retrieving and converting cryptocurrency prices
130 lines (97 loc) • 2.76 kB
Markdown
A TypeScript library for retrieving and converting cryptocurrency asset prices.
```bash
npm install @cygnus-wealth/asset-valuator
```
```typescript
import { AssetValuator } from '@cygnus-wealth/asset-valuator';
const valuator = new AssetValuator();
// Get the USD price of ETH
const ethPrice = await valuator.getPrice('ETH', 'USD');
console.log(ethPrice);
// { base: 'ETH', quote: 'USD', price: 3000, timestamp: Date }
// Convert 2 BTC to USD
const usdValue = await valuator.convert({
from: 'BTC',
to: 'USD',
amount: 2
});
console.log(usdValue); // 100000 (assuming BTC = $50,000)
// Get ETH price in BTC
const ethInBtc = await valuator.convert({
from: 'ETH',
to: 'BTC'
});
console.log(ethInBtc); // 0.06 (assuming ETH = $3,000, BTC = $50,000)
```
```typescript
const prices = await valuator.getPrices(['BTC', 'ETH', 'BNB'], 'USD');
console.log(prices);
// [
// { base: 'BTC', quote: 'USD', price: 50000, timestamp: Date },
// { base: 'ETH', quote: 'USD', price: 3000, timestamp: Date },
// { base: 'BNB', quote: 'USD', price: 300, timestamp: Date }
// ]
```
Convert prices to @cygnus-wealth/data-models format:
```typescript
import { DataModelConverter } from '@cygnus-wealth/asset-valuator';
const ethPrice = await valuator.getPrice('ETH', 'USD');
const assetValue = DataModelConverter.toAssetValueModel(ethPrice);
console.log(assetValue);
// {
// assetSymbol: 'ETH',
// currency: 'USD',
// value: 3000,
// timestamp: Date
// }
```
```typescript
// Set cache timeout (default: 60 seconds)
valuator.setCacheTimeout(30000); // 30 seconds
// Clear cache
valuator.clearCache();
```
You can implement your own price provider:
```typescript
import { PriceProvider, AssetValuator } from '@cygnus-wealth/asset-valuator';
class CustomProvider implements PriceProvider {
async fetchPrice(symbol: string, currency?: string) {
// Your implementation
}
async fetchMultiplePrices(symbols: string[], currency?: string) {
// Your implementation
}
}
const valuator = new AssetValuator(new CustomProvider());
```
- `getPrice(base: string, quote?: string): Promise<AssetPrice>`
- `convert(options: ConversionOptions): Promise<number>`
- `getPrices(symbols: string[], quote?: string): Promise<AssetPrice[]>`
- `setCacheTimeout(milliseconds: number): void`
- `clearCache(): void`
```typescript
interface AssetPrice {
base: string;
quote: string;
price: number;
timestamp: Date;
}
interface ConversionOptions {
from: string;
to: string;
amount?: number;
}
```
MIT