Skip to content
Documentation/canton-network-docs/Release NotesWallet SDKView on canton-network-docs
canton-network-docs/Release NotesWallet SDK

0.13.0

0.13.0

Released on October 22th, 2025 Release 0.13.0 & 0.13.1 have broken dependencies, use 0.14.0 instead.
  • Important!: await completion has changed signature
    // old version
    async waitForCompletion(
        ledgerEnd: number | Types['GetLedgerEndResponse'],
        timeoutMs: number,
        commandId?: string,
        submissionId?: string
    ): Promise<Types['Completion']['value']> {

    // new version
    async waitForCompletion(
        ledgerEnd: number | Types['GetLedgerEndResponse'],
        timeoutMs: number,
        commandIdOrSubmissionId: string
    ): Promise<Types['Completion']['value']> {
this change is to make it simpler, the method would regardless throw an error if commandId and SubmissionId was undefined
  • retry logic & stress testing
we have substantially tested and verified the SDK working on moderate and heavy load mimicking MainNet, this highlighted some retryable errors that could be handled.
  • multi hosted party fix and synchronized handling
multi hosted parties have had a change under the hood, previously it would return the party asynchronously. This has been resolved by calling the allocation on all the available ledger thereby ensuring the party is ready for use once it is returned by the method.
  • proxy delegation for feature app marker for deposits
Proxy delegation support have been added for deposits allowing attaching a featured app marker flag to an incoming deposit, this requires running the dar splice-util-featured-app-proxies-1.1.0.dar on the validator.
const delegateCommand = await sdk.userLedger?.createDelegateProxyCommand(
    exchangeParty!,
    treasuryParty!.partyId
)

const delegationContractResult =
    await sdk.userLedger?.submitCommand(delegateCommand)

const [acceptCommand, disclosedContracts4] =
    await sdk.tokenStandard?.exerciseTransferInstructionChoiceWithDelegate(
        transferCid, //incoming transfer
        'Accept',
        proxyCid!,
        featuredAppRights?.contract_id!,
        [
            {
                beneficiary: exchangeParty!,
                weight: 1.0,
            },
        ],
        featuredAppRights!
    )!

//prepare, sign and execute the above command
  • manual preapproval renewal and cancellation
you an now use the SDK to manually renew a preapproval or cancel it
//create renew command to be prepared, signed and executed
const [renewCmd, disclosedContractsRenew] =
    await sdk.tokenStandard!.createRenewTransferPreapproval(
        preapproval.contractId,
        preapproval.templateId,
        validatorOperatorParty!
    )

//create cancel command to be prepared, signed and executed
const [cancelCmd, disclosedContractsCancel] =
    await sdk.tokenStandard!.createCancelTransferPreapproval(
        preapprovalAfterRenewal.contractId,
        preapprovalAfterRenewal.templateId,
        receiver!.partyId
    )