@blockbolt/boltpay-wallet
Version:
BlockBolt package for SUI wallet
65 lines • 2.56 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.TransactionService = void 0;
const transactions_1 = require("@mysten/sui/transactions");
const constant_1 = require("../utils/constant");
class TransactionService {
constructor(client) {
this.client = client;
}
async send(params) {
var _a;
const tx = new transactions_1.Transaction();
const coin = this.getCoin(params.amount, params.coinType);
let treasury;
switch (params.coinType) {
case constant_1.CONSTANTS.SUI_COIN_TYPE:
treasury = constant_1.CONSTANTS.SUI_TREASURY;
break;
case constant_1.CONSTANTS.USDC_COIN_TYPE:
treasury = constant_1.CONSTANTS.USDC_TREASURY;
break;
case constant_1.CONSTANTS.WUSDC_COIN_TYPE:
treasury = constant_1.CONSTANTS.WUSDC_TREASURY;
break;
case constant_1.CONSTANTS.USDT_COIN_TYPE:
treasury = constant_1.CONSTANTS.USDT_TREASURY;
break;
default:
treasury = params.treasury;
}
tx.moveCall({
target: `${constant_1.CONSTANTS.PACKAGE_ID}::${constant_1.CONSTANTS.MODULE_NAME}::${constant_1.CONSTANTS.FUNCTION_NAME}`,
typeArguments: [params.coinType],
arguments: [
tx.object(coin),
tx.object(treasury),
tx.object(constant_1.CONSTANTS.FEE_SETTING),
tx.pure.string(params.nameProduct),
tx.pure.address(params.receiverAddr),
tx.pure.u64(params.amount),
tx.pure.u64(params.randomId),
],
});
const result = await this.client.signAndExecuteTransaction({
signer: params.keyPair,
transaction: tx,
options: { showEffects: true },
});
return {
digest: result.digest,
effects: result.effects,
error: (_a = result.effects) === null || _a === void 0 ? void 0 : _a.status.error,
};
}
getCoin(amount, coinType) {
if (coinType === constant_1.CONSTANTS.SUI_COIN_TYPE) {
return (0, transactions_1.coinWithBalance)({ balance: amount, useGasCoin: true });
}
else {
return (0, transactions_1.coinWithBalance)({ balance: amount, type: coinType });
}
}
}
exports.TransactionService = TransactionService;
//# sourceMappingURL=TransactionService.js.map