@broxus/js-core
Version:
MobX-based JavaScript Core library
36 lines (35 loc) • 1.68 kB
JavaScript
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;
}
}