@kilnfi/sdk
Version:
JavaScript sdk for Kiln API
247 lines • 5.2 kB
JavaScript
import { bech32 } from 'bech32';
import { formatUnits, parseUnits, ripemd160, sha256 } from 'viem';
/**
* Convert wei to ETH
*/
export const weiToEth = (wei) => {
return formatUnits(wei, 18);
};
/**
* Convert wei to POL
*/
export const weiToPol = (wei) => {
return formatUnits(wei, 18);
};
/**
* Convert lamports to SOL
*/
export const lamportsToSol = (lamports) => {
return formatUnits(lamports, 9);
};
/**
* Convert SOL to lamports
*/
export const solToLamports = (sol) => {
return parseUnits(sol, 9);
};
/**
* Convert XTZ to mutez
*/
export const xtzToMutez = (xtz) => {
return parseUnits(xtz, 6);
};
/**
* Convert Cardano lovelace to ADA
*/
export const lovelaceToAda = (lovelace) => {
return formatUnits(lovelace, 6);
};
/**
* Converts yocto to NEAR
*/
export const yoctoToNear = (yocto) => {
return formatUnits(yocto, 24);
};
/**
* Convert nanoTON to TON
*/
export const nanotonToTon = (nanoton) => {
return formatUnits(nanoton, 9);
};
/**
* Convert TON to nanoTON
*/
export const tonToNanoton = (ton) => {
return parseUnits(ton, 9);
};
/**
* Convert CRO to basecro
*/
export const croToBasecro = (cro) => {
return parseUnits(cro, 8);
};
/**
* Convert uINJ to INJ
*/
export const uinjToInj = (uinj) => {
return formatUnits(uinj, 6);
};
/**
* Convert aFET to FET
*/
export const afetToFet = (afet) => {
return formatUnits(afet, 18);
};
/**
* Convert uFET to FET
*/
export const ufetToFet = (ufet) => {
return formatUnits(ufet, 6);
};
/**
* Convert mutez to XTZ
*/
export const mutezToXtz = (mutez) => {
return formatUnits(mutez, 6);
};
/**
* Convert uDYDX to DYDX
*/
export const udydxToDydx = (udydx) => {
return formatUnits(udydx, 6);
};
/**
* Convert uATOM to ATOM
*/
export const uatomToAtom = (uatom) => {
return formatUnits(uatom, 6);
};
/**
* Convert u{Cosmos chain token: ATOM, OSMO, etc...} to {Cosmos chain token: ATOM, OSMO, etc...}
*/
export const uunitToUnit = (uunit) => {
return formatUnits(uunit, 6);
};
/**
* Convert Satoshi to BTC
*/
export const satToBtc = (sat) => {
return formatUnits(sat, 8);
};
/**
* Convert BTC to Satoshi
*/
export const btcToSat = (btc) => {
return parseUnits(btc, 8);
};
/**
* Convert uOSMO to OSMO
*/
export const uosmoToOsmo = (uosmo) => {
return formatUnits(uosmo, 6);
};
/**
* Convert uTIA to TIA
*/
export const utiaToTia = (utia) => {
return formatUnits(utia, 6);
};
/**
* Convert uusdc to USDC
*/
export const uusdcToUsdc = (uusdc) => {
return formatUnits(uusdc, 6);
};
/**
* Convert USDC to uUSDC
*/
export const usdcToUusdc = (usdc) => {
return parseUnits(usdc, 6);
};
/**
* Convert basecro to CRO
*/
export const basecroToCro = (basecro) => {
return formatUnits(basecro, 8);
};
/**
* Get a cosmos address from its public key and prefix
* @param pubkey
* @param prefix
*/
export const getCosmosAddress = (pubkey, prefix) => {
const compressed_pubkey = compressPublicKey(pubkey);
const hash = sha256(Uint8Array.from(Buffer.from(compressed_pubkey, 'hex')));
const raw_addr = ripemd160(hash, 'bytes');
return bech32.encode(prefix, bech32.toWords(raw_addr));
};
/**
* Compress a cosmos public key
* @param pubkey
*/
export const compressPublicKey = (pubkey) => {
const pub_key_buffer = new Uint8Array(Buffer.from(pubkey, 'hex'));
if (pub_key_buffer.length !== 65)
return pubkey;
const x = pub_key_buffer.slice(1, 33);
const y = pub_key_buffer.slice(33);
// We will add 0x02 if the last bit isn't set, otherwise we will add 0x03
// @ts-ignore
const prefix = y[y.length - 1] & 1 ? '03' : '02';
// Concatenate the prefix and the x value to get the compressed key
const compressed_key = Buffer.concat([new Uint8Array(Buffer.from(prefix, 'hex')), x]);
return compressed_key.toString('hex');
};
/**
* Convert ATOM to uATOM
*/
export const atomToUatom = (atom) => {
return parseUnits(atom, 6);
};
/**
* Convert DYDX to adydx
*/
export const dydxToAdydx = (dydx) => {
return parseUnits(dydx, 18); // adydx uses 18 decimals
};
/**
* Convert OSMO to uosmo
*/
export const osmoToUosmo = (osmo) => {
return parseUnits(osmo, 6);
};
/**
* Convert INJ to inj
*/
export const injToInj = (inj) => {
return parseUnits(inj, 18); // inj uses 18 decimals
};
/**
* Convert TIA to utia
*/
export const tiaToUtia = (tia) => {
return parseUnits(tia, 6);
};
/**
* Convert FET to afet
*/
export const fetToAfet = (fet) => {
return parseUnits(fet, 18); // afet uses 18 decimals
};
/**
* Convert TRX to sun
*/
export const trxToSun = (trx) => {
return parseUnits(trx, 6);
};
/**
* Convert sun to TRX
*/
export const sunToTrx = (trx) => {
return formatUnits(trx, 6);
};
/**
* Convert SEI to usei
*/
export const seiToUsei = (sei) => {
return parseUnits(sei, 6);
};
/**
* Convert usei to sei
*/
export const useiToSei = (usei) => {
return formatUnits(usei, 6);
};
/**
* Convert SUI to mist
*/
export const suiToMist = (sui) => {
return parseUnits(sui, 9);
};
/**
* Convert mist to SUI
*/
export const mistToSui = (mist) => {
return formatUnits(mist, 9);
};
//# sourceMappingURL=utils.js.map