This commit is contained in:
Tim Olson
2023-12-20 00:55:53 -04:00
parent 8007f63469
commit 9bb3a76b65
6 changed files with 93 additions and 79 deletions

View File

@@ -1,5 +1,6 @@
import {FixedNumber} from "ethers";
import {useStore} from "@/store/store.js";
import {usePrefStore, useStore} from "@/store/store.js";
import {token} from "@/blockchain/token.js";
export class SingletonCoroutine {
constructor(f, delay=10, retry=true) {
@@ -84,3 +85,42 @@ export function timestamp(date=null) {
date = new Date()
return Math.round(date.getTime() / 1000)
}
export function pairKey(tokenA, tokenB) {
const token0 = tokenA.address < tokenB.address ? tokenA.address : tokenB.address
const token1 = tokenA.address > tokenB.address ? tokenA.address : tokenB.address
return [token0, token1];
}
export function pairPriceAddr(baseTokenAddr, quoteTokenAddr, price) {
const baseToken = token(baseTokenAddr)
const quoteToken = token(quoteTokenAddr)
if( !baseToken || !quoteToken )
return null
return pairPrice(baseToken, quoteToken, price)
}
export function pairPrice(baseToken, quoteToken, price, decimals=null) {
if( price === null || price === undefined )
return price
if( decimals === null )
decimals = baseToken.decimals-quoteToken.decimals
console.log('pairPrice', baseToken, quoteToken, price, decimals)
if( decimals >= 0 )
price /= 10 ** decimals
else
price *= 10 ** -decimals
const invertedKey = pairKey(baseToken, quoteToken);
const prefs = usePrefStore()
if( !(invertedKey in prefs.inverted) ) {
// todo prefer stablecoins as the quote asset
prefs.inverted[invertedKey] = false
}
if( prefs.inverted[invertedKey] )
price = 1/price
return price
}