UNPKG

@fairmint/canton-node-sdk

Version:
70 lines 3.08 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.createTransferOffer = createTransferOffer; exports.acceptTransferOffer = acceptTransferOffer; const EnvLoader_1 = require("../../core/config/EnvLoader"); /** * Creates a transfer offer using WalletAppInstall_CreateTransferOffer * * @param params - Parameters for creating the transfer offer * @returns Promise resolving to the transfer offer contract ID */ async function createTransferOffer(params) { const { ledgerClient, receiverPartyId, amount, description, expiresAt } = params; // Get template IDs and contract IDs from the client's network const network = ledgerClient.getNetwork(); const walletAppInstallCid = EnvLoader_1.EnvLoader.getInstance().getValidatorWalletAppInstallContractId(network); const validatorParty = ledgerClient.getPartyId(); const trackingId = `transfer-offer-${Date.now()}`; const defaultExpiresAt = new Date(Date.now() + 24 * 60 * 60 * 1000); const transferOfferCid = await ledgerClient.submitAndWaitForTransactionTree({ commands: [ { ExerciseCommand: { templateId: '#splice-wallet:Splice.Wallet.Install:WalletAppInstall', contractId: walletAppInstallCid, choice: 'WalletAppInstall_CreateTransferOffer', choiceArgument: { receiver: receiverPartyId, amount: { amount, unit: 'AmuletUnit' }, description, expiresAt: (expiresAt ?? defaultExpiresAt).toISOString(), trackingId, }, }, }, ], commandId: `transfer-offer-${Date.now()}`, actAs: [validatorParty], }); const transferOfferEvent = transferOfferCid.transactionTree.eventsById['1']; if (!transferOfferEvent || !('CreatedTreeEvent' in transferOfferEvent)) { const firstKey = transferOfferEvent ? Object.keys(transferOfferEvent)[0] : 'undefined'; throw new Error(`Expected CreatedTreeEvent but got ${firstKey}`); } return transferOfferEvent.CreatedTreeEvent.value.contractId; } /** * Accepts a transfer offer using TransferOffer_Accept * * @param params - Parameters for accepting the transfer offer * @returns Promise resolving when the offer is accepted */ async function acceptTransferOffer(params) { const { ledgerClient, transferOfferContractId, acceptingPartyId } = params; return ledgerClient.submitAndWaitForTransactionTree({ commands: [ { ExerciseCommand: { templateId: '#splice-wallet:Splice.Wallet.TransferOffer:TransferOffer', contractId: transferOfferContractId, choice: 'TransferOffer_Accept', choiceArgument: {}, }, }, ], commandId: `accept-transfer-${Date.now()}`, actAs: [acceptingPartyId], }); } //# sourceMappingURL=offers.js.map