UNPKG

@broxus/js-core

Version:

MobX-based JavaScript Core library

36 lines (35 loc) 1.68 kB
import BigNumber from 'bignumber.js'; import { DEFAULT_NATIVE_CURRENCY_DECIMALS } from '../../constants'; import { wrappedNativeVaultContract } from '../../models/wrapped-currency-vault/contracts'; import { getFullContractState, resolveTvmAddress, toInt } from '../../utils'; export class WrappedCurrencyVaultUtils { static async wrap(provider, vaultAddress, params, args) { return wrappedNativeVaultContract(provider, vaultAddress) .methods.wrap({ gas_back_address: resolveTvmAddress(params.remainingGasTo), owner_address: resolveTvmAddress(params.ownerAddress), payload: params.payload ?? '', tokens: params.tokens, }) .sendDelayed({ amount: BigNumber(params.tokens).plus(toInt(5, DEFAULT_NATIVE_CURRENCY_DECIMALS)).toFixed(), bounce: true, from: resolveTvmAddress(params.remainingGasTo), ...args, }); } static async getOwner(connection, vaultAddress, cachedState) { const cache = cachedState ?? (await getFullContractState(connection, vaultAddress)); const result = await wrappedNativeVaultContract(connection, vaultAddress) .methods.owner() .call({ cachedState: cache }); return result.owner; } static async getTotalWrapped(connection, vaultAddress, cachedState) { const cache = cachedState ?? (await getFullContractState(connection, vaultAddress)); const result = await wrappedNativeVaultContract(connection, vaultAddress) .methods.total_wrapped() .call({ cachedState: cache }); return result.total_wrapped; } }