UNPKG

@fairmint/canton-node-sdk

Version:
50 lines 2 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.createParty = createParty; const offers_1 = require("../amulet/offers"); const pre_approve_transfers_1 = require("../amulet/pre-approve-transfers"); /** * Creates a party, optionally funds the wallet and if funded it then creates a preapproval contract for the party. * * @param options - Configuration options for party creation * @returns Promise resolving to the party creation result */ async function createParty(options) { // Use provided clients directly const { ledgerClient, validatorClient } = options; const amountNum = parseFloat(options.amount); if (isNaN(amountNum) || amountNum < 0) { throw new Error(`Invalid amount: "${options.amount}". Amount must be a valid non-negative number.`); } // Create user via Validator API const userStatus = await validatorClient.createUser({ name: options.partyName }); const result = { partyId: userStatus.party_id, }; // Skip funding if amount is 0 if (amountNum === 0) { return result; } // Create and accept transfer offer const transferOfferContractId = await (0, offers_1.createTransferOffer)({ ledgerClient, receiverPartyId: result.partyId, amount: options.amount, description: `Welcome transfer for ${options.partyName}`, }); // Accept transfer offer await (0, offers_1.acceptTransferOffer)({ ledgerClient, transferOfferContractId, acceptingPartyId: result.partyId, }); // Wait 30 seconds for transfer to settle await new Promise((resolve) => setTimeout(resolve, 30000)); // Create transfer preapproval const preapprovalResult = await (0, pre_approve_transfers_1.preApproveTransfers)(ledgerClient, validatorClient, { receiverPartyId: result.partyId, }); result.preapprovalContractId = preapprovalResult.contractId; return result; } //# sourceMappingURL=createParty.js.map