@broxus/js-core
Version:
MobX-based JavaScript Core library
49 lines (48 loc) • 2.19 kB
JavaScript
import { DEFAULT_NATIVE_CURRENCY_DECIMALS, ZeroAddress } from '../../constants';
import { tokenFactoryContract, tokenFactoryV22Contract } from '../../models/tvm-token-factory/contracts';
import { isUnsupportedAbiVersionError, resolveTvmAddress, toInt } from '../../utils';
export class TvmTokenFactoryUtils {
static async createToken(provider, factoryAddress, params, args) {
const _params = {
burnByRootDisabled: params.burnByRootDisabled,
burnPaused: params.burnPaused,
callId: params.callId,
decimals: params.decimals,
deployWalletValue: params.deployWalletValue ?? toInt(0.1, DEFAULT_NATIVE_CURRENCY_DECIMALS),
initialSupply: params.initialSupply ?? 0,
initialSupplyTo: resolveTvmAddress(params.initialSupplyTo || ZeroAddress),
mintDisabled: params.mintDisabled,
name: params.name,
remainingGasTo: resolveTvmAddress(params.remainingGasTo),
symbol: params.symbol,
};
const _args = {
amount: toInt(5, DEFAULT_NATIVE_CURRENCY_DECIMALS),
bounce: true,
from: resolveTvmAddress(params.remainingGasTo),
...args,
};
try {
return await tokenFactoryContract(provider, factoryAddress)
.methods.createToken(_params)
.sendDelayed(_args);
}
catch (e) {
if (!isUnsupportedAbiVersionError(e)) {
throw e;
}
return tokenFactoryV22Contract(provider, factoryAddress)
.methods.createToken(_params)
.sendDelayed(_args);
}
}
static decodeEvent(connection, factoryAddress, args) {
return tokenFactoryContract(connection, factoryAddress).decodeEvent(args);
}
static decodeTransaction(connection, factoryAddress, args) {
return tokenFactoryContract(connection, factoryAddress).decodeTransaction(args);
}
static decodeTransactionEvents(connection, factoryAddress, transaction) {
return tokenFactoryContract(connection, factoryAddress).decodeTransactionEvents({ transaction });
}
}