> ## Documentation Index
> Fetch the complete documentation index at: https://docs.canton.network/llms.txt
> Use this file to discover all available pages before exploring further.

# Splice.Util.Token.Wallet.MergeDelegation

> Documentation for Splice.Util.Token.Wallet.MergeDelegation

Delegation from users to wallet operators allowing them to merge their token standard holdings; and optionally transfer tokens from the operator to the user as part of the merge operation, e.g., for efficiently implementing extraTransfers.

The main reasons for using this merge delegation infrastructure are:

* keeping the number of holdings low to reduce storage and compute cost on the validator node hosting them
* batching operations to execute them more efficiently both in terms of traffic spend and throughput

## Templates

<div id="type-splice-util-token-wallet-mergedelegation-batchmergeutility-64168">
  **template** BatchMergeUtility
</div>

> Utility contract for a operator to execute a batch of merge calls with proper threading of the operator's change holdings between the calls that involve extra transfers.
>
> Signatory: operator
>
> | Field    | Type                                                                                     | Description |
> | -------- | ---------------------------------------------------------------------------------------- | ----------- |
> | operator | [Party](/appdev/reference/daml-standard-library/prelude#type-da-internal-lf-party-57932) |             |
>
> * **Choice** Archive
>
>   Controller: operator
>
>   Returns: ()
>
>   (no fields)
>
> * <div id="type-splice-util-token-wallet-mergedelegation-batchmergeutilitybatchmerge-8070">
>     **Choice** BatchMergeUtility\_BatchMerge
>   </div>
>
>   Controller: operator
>
>   Returns: BatchMergeUtility\_BatchMergeResult
>
>   | Field      | Type                   | Description |
>   | ---------- | ---------------------- | ----------- |
>   | mergeCalls | \[MergeDelegationCall] |             |

<div id="type-splice-util-token-wallet-mergedelegation-mergedelegation-14952">
  **template** MergeDelegation
</div>

> The right for a operator like the wallet app operator to merge token standard holdings on behalf of a token owner.
>
> Signatory: owner, operator
>
> | Field    | Type                                                                                     | Description                                            |
> | -------- | ---------------------------------------------------------------------------------------- | ------------------------------------------------------ |
> | operator | [Party](/appdev/reference/daml-standard-library/prelude#type-da-internal-lf-party-57932) | Operator allowed to merge holdings.                    |
> | owner    | [Party](/appdev/reference/daml-standard-library/prelude#type-da-internal-lf-party-57932) | Owner delegating their right.                          |
> | meta     | Metadata                                                                                 | Metadata about the delegation, used for extensibility. |
>
> * **Choice** Archive
>
>   Controller: owner, operator
>
>   Returns: ()
>
>   (no fields)
>
> * <div id="type-splice-util-token-wallet-mergedelegation-mergedelegationmerge-40083">
>     **Choice** MergeDelegation\_Merge
>   </div>
>
>   Controller: operator
>
>   Returns: MergeDelegation\_MergeResult
>
>   | Field               | Type                                                                                                                     | Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
>   | ------------------- | ------------------------------------------------------------------------------------------------------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
>   | optMergeTransfer    | [Optional](/appdev/reference/daml-standard-library/prelude#type-da-internal-prelude-optional-37153) TransferCall         | The self-transfer to merge holdings for the owner. Optional to allow for an extra transfer to be executed when the owner does not yet have any holdings. At least one of optMergeTransfer or optExtraTransfer must be provided.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
>   | optExtraTransfer    | [Optional](/appdev/reference/daml-standard-library/prelude#type-da-internal-prelude-optional-37153) TransferCall         | An optional extra transfer from the operator to the user to execute as part of the merge operation. The amount of the self-transfer will be increased by the amount of the extra transfer, and the new input holdings from the extra transfer will be added to the self-transfer's input holdings. These extra transfers can for example be used to efficiently implement extraTransfers or reward distributions as part of the merge operation. Note that extra transfers only work for users that have preapproved incoming transfers from the operator. Therefore there is no additional restriction on the merge delegation to let users decide whether to allow or disallow those transfers as it is already controlled through the preapproval. |
>   | optFeaturedAppRight | [Optional](/appdev/reference/daml-standard-library/prelude#type-da-internal-prelude-optional-37153) FeaturedAppRightCall | The featured app right to use to feature the operator's merging activity.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
>
> * <div id="type-splice-util-token-wallet-mergedelegation-mergedelegationreject-58487">
>     **Choice** MergeDelegation\_Reject
>   </div>
>
>   Controller: operator
>
>   Returns: MergeDelegation\_RejectResult
>
>   (no fields)
>
> * <div id="type-splice-util-token-wallet-mergedelegation-mergedelegationwithdraw-32286">
>     **Choice** MergeDelegation\_Withdraw
>   </div>
>
>   Controller: owner
>
>   Returns: MergeDelegation\_WithdrawResult
>
>   (no fields)

<div id="type-splice-util-token-wallet-mergedelegation-mergedelegationproposal-17546">
  **template** MergeDelegationProposal
</div>

> Proposal by the user to setup a merge delegation.
>
> Signatory: (DA.Internal.Record.getField @"owner" delegation)
>
> | Field      | Type            | Description                               |
> | ---------- | --------------- | ----------------------------------------- |
> | delegation | MergeDelegation | The delegation to be created if accepted. |
>
> * **Choice** Archive
>
>   Controller: (DA.Internal.Record.getField @"owner" delegation)
>
>   Returns: ()
>
>   (no fields)
>
> * <div id="type-splice-util-token-wallet-mergedelegation-mergedelegationproposalaccept-29492">
>     **Choice** MergeDelegationProposal\_Accept
>   </div>
>
>   Controller: (DA.Internal.Record.getField @"operator" delegation)
>
>   Returns: MergeDelegationProposal\_AcceptResult
>
>   (no fields)
>
> * <div id="type-splice-util-token-wallet-mergedelegation-mergedelegationproposalreject-90901">
>     **Choice** MergeDelegationProposal\_Reject
>   </div>
>
>   Controller: (DA.Internal.Record.getField @"operator" delegation)
>
>   Returns: MergeDelegationProposal\_RejectResult
>
>   (no fields)
>
> * <div id="type-splice-util-token-wallet-mergedelegation-mergedelegationproposalwithdraw-80248">
>     **Choice** MergeDelegationProposal\_Withdraw
>   </div>
>
>   Controller: (DA.Internal.Record.getField @"owner" delegation)
>
>   Returns: MergeDelegationProposal\_WithdrawResult
>
>   (no fields)

## Data Types

<div id="type-splice-util-token-wallet-mergedelegation-batchmergeutilitybatchmergeresult-21039">
  **data** BatchMergeUtility\_BatchMergeResult
</div>

> <div id="constr-splice-util-token-wallet-mergedelegation-batchmergeutilitybatchmergeresult-14556">
>   BatchMergeUtility\_BatchMergeResult
> </div>
>
> > | Field             | Type                            | Description                                                       |
> > | ----------------- | ------------------------------- | ----------------------------------------------------------------- |
> > | results           | \[MergeDelegation\_MergeResult] | Results of each individual merge delegation call.                 |
> > | operatorChangeMap | InstrumentHoldingMap            | Change holdings for the operator after executing extra transfers. |
>
> **instance** [Eq](/appdev/reference/daml-standard-library/prelude#class-ghc-classes-eq-22713) BatchMergeUtility\_BatchMergeResult
>
> **instance** [Show](/appdev/reference/daml-standard-library/prelude#class-ghc-show-show-65360) BatchMergeUtility\_BatchMergeResult
>
> **instance** GetField "operatorChangeMap" BatchMergeUtility\_BatchMergeResult InstrumentHoldingMap
>
> **instance** GetField "results" BatchMergeUtility\_BatchMergeResult \[MergeDelegation\_MergeResult]
>
> **instance** SetField "operatorChangeMap" BatchMergeUtility\_BatchMergeResult InstrumentHoldingMap
>
> **instance** SetField "results" BatchMergeUtility\_BatchMergeResult \[MergeDelegation\_MergeResult]
>
> **instance** [HasExercise](/appdev/reference/daml-standard-library/prelude#class-da-internal-template-functions-hasexercise-70422) BatchMergeUtility BatchMergeUtility\_BatchMerge BatchMergeUtility\_BatchMergeResult
>
> **instance** [HasFromAnyChoice](/appdev/reference/daml-standard-library/prelude#class-da-internal-template-functions-hasfromanychoice-81184) BatchMergeUtility BatchMergeUtility\_BatchMerge BatchMergeUtility\_BatchMergeResult
>
> **instance** [HasToAnyChoice](/appdev/reference/daml-standard-library/prelude#class-da-internal-template-functions-hastoanychoice-82571) BatchMergeUtility BatchMergeUtility\_BatchMerge BatchMergeUtility\_BatchMergeResult

<div id="type-splice-util-token-wallet-mergedelegation-featuredapprightcall-44578">
  **data** FeaturedAppRightCall
</div>

> A call to create featured app markers using a featured app right.
>
> <div id="constr-splice-util-token-wallet-mergedelegation-featuredapprightcall-28365">
>   FeaturedAppRightCall
> </div>
>
> > | Field         | Type                                                                                                                | Description |
> > | ------------- | ------------------------------------------------------------------------------------------------------------------- | ----------- |
> > | appRightCid   | [ContractId](/appdev/reference/daml-standard-library/prelude#type-da-internal-lf-contractid-95282) FeaturedAppRight |             |
> > | beneficiaries | \[AppRewardBeneficiary]                                                                                             |             |
>
> **instance** [Eq](/appdev/reference/daml-standard-library/prelude#class-ghc-classes-eq-22713) FeaturedAppRightCall
>
> **instance** [Show](/appdev/reference/daml-standard-library/prelude#class-ghc-show-show-65360) FeaturedAppRightCall
>
> **instance** GetField "appRightCid" FeaturedAppRightCall ([ContractId](/appdev/reference/daml-standard-library/prelude#type-da-internal-lf-contractid-95282) FeaturedAppRight)
>
> **instance** GetField "beneficiaries" FeaturedAppRightCall \[AppRewardBeneficiary]
>
> **instance** GetField "optFeaturedAppRight" MergeDelegation\_Merge ([Optional](/appdev/reference/daml-standard-library/prelude#type-da-internal-prelude-optional-37153) FeaturedAppRightCall)
>
> **instance** SetField "appRightCid" FeaturedAppRightCall ([ContractId](/appdev/reference/daml-standard-library/prelude#type-da-internal-lf-contractid-95282) FeaturedAppRight)
>
> **instance** SetField "beneficiaries" FeaturedAppRightCall \[AppRewardBeneficiary]
>
> **instance** SetField "optFeaturedAppRight" MergeDelegation\_Merge ([Optional](/appdev/reference/daml-standard-library/prelude#type-da-internal-prelude-optional-37153) FeaturedAppRightCall)

<div id="type-splice-util-token-wallet-mergedelegation-instrumentholdingmap-42719">
  **type** InstrumentHoldingMap
  \= [Map](/appdev/reference/daml-standard-library/prelude#type-da-internal-lf-map-90052) InstrumentId \[[ContractId](/appdev/reference/daml-standard-library/prelude#type-da-internal-lf-contractid-95282) Holding]

  **instance** GetField "operatorChangeMap" BatchMergeUtility\_BatchMergeResult InstrumentHoldingMap

  **instance** SetField "operatorChangeMap" BatchMergeUtility\_BatchMergeResult InstrumentHoldingMap
</div>

<div id="type-splice-util-token-wallet-mergedelegation-mergedelegationcall-90300">
  **data** MergeDelegationCall
</div>

> <div id="constr-splice-util-token-wallet-mergedelegation-mergedelegationcall-66961">
>   MergeDelegationCall
> </div>
>
> > | Field         | Type                                                                                                               | Description |
> > | ------------- | ------------------------------------------------------------------------------------------------------------------ | ----------- |
> > | delegationCid | [ContractId](/appdev/reference/daml-standard-library/prelude#type-da-internal-lf-contractid-95282) MergeDelegation |             |
> > | choiceArg     | MergeDelegation\_Merge                                                                                             |             |
>
> **instance** [Eq](/appdev/reference/daml-standard-library/prelude#class-ghc-classes-eq-22713) MergeDelegationCall
>
> **instance** [Show](/appdev/reference/daml-standard-library/prelude#class-ghc-show-show-65360) MergeDelegationCall
>
> **instance** GetField "choiceArg" MergeDelegationCall MergeDelegation\_Merge
>
> **instance** GetField "delegationCid" MergeDelegationCall ([ContractId](/appdev/reference/daml-standard-library/prelude#type-da-internal-lf-contractid-95282) MergeDelegation)
>
> **instance** GetField "mergeCalls" BatchMergeUtility\_BatchMerge \[MergeDelegationCall]
>
> **instance** SetField "choiceArg" MergeDelegationCall MergeDelegation\_Merge
>
> **instance** SetField "delegationCid" MergeDelegationCall ([ContractId](/appdev/reference/daml-standard-library/prelude#type-da-internal-lf-contractid-95282) MergeDelegation)
>
> **instance** SetField "mergeCalls" BatchMergeUtility\_BatchMerge \[MergeDelegationCall]

<div id="type-splice-util-token-wallet-mergedelegation-mergedelegationproposalacceptresult-63821">
  **data** MergeDelegationProposal\_AcceptResult
</div>

> <div id="constr-splice-util-token-wallet-mergedelegation-mergedelegationproposalacceptresult-91086">
>   MergeDelegationProposal\_AcceptResult
> </div>
>
> > | Field              | Type                                                                                                               | Description |
> > | ------------------ | ------------------------------------------------------------------------------------------------------------------ | ----------- |
> > | mergeDelegationCid | [ContractId](/appdev/reference/daml-standard-library/prelude#type-da-internal-lf-contractid-95282) MergeDelegation |             |
>
> **instance** [Eq](/appdev/reference/daml-standard-library/prelude#class-ghc-classes-eq-22713) MergeDelegationProposal\_AcceptResult
>
> **instance** [Show](/appdev/reference/daml-standard-library/prelude#class-ghc-show-show-65360) MergeDelegationProposal\_AcceptResult
>
> **instance** GetField "mergeDelegationCid" MergeDelegationProposal\_AcceptResult ([ContractId](/appdev/reference/daml-standard-library/prelude#type-da-internal-lf-contractid-95282) MergeDelegation)
>
> **instance** SetField "mergeDelegationCid" MergeDelegationProposal\_AcceptResult ([ContractId](/appdev/reference/daml-standard-library/prelude#type-da-internal-lf-contractid-95282) MergeDelegation)
>
> **instance** [HasExercise](/appdev/reference/daml-standard-library/prelude#class-da-internal-template-functions-hasexercise-70422) MergeDelegationProposal MergeDelegationProposal\_Accept MergeDelegationProposal\_AcceptResult
>
> **instance** [HasFromAnyChoice](/appdev/reference/daml-standard-library/prelude#class-da-internal-template-functions-hasfromanychoice-81184) MergeDelegationProposal MergeDelegationProposal\_Accept MergeDelegationProposal\_AcceptResult
>
> **instance** [HasToAnyChoice](/appdev/reference/daml-standard-library/prelude#class-da-internal-template-functions-hastoanychoice-82571) MergeDelegationProposal MergeDelegationProposal\_Accept MergeDelegationProposal\_AcceptResult

<div id="type-splice-util-token-wallet-mergedelegation-mergedelegationproposalrejectresult-81380">
  **data** MergeDelegationProposal\_RejectResult
</div>

> Dedicated record type to simplify upgrading
>
> <div id="constr-splice-util-token-wallet-mergedelegation-mergedelegationproposalrejectresult-11455">
>   MergeDelegationProposal\_RejectResult
> </div>
>
> > | Field  | Type | Description |
> > | ------ | ---- | ----------- |
> > | result | ()   |             |
>
> **instance** [Eq](/appdev/reference/daml-standard-library/prelude#class-ghc-classes-eq-22713) MergeDelegationProposal\_RejectResult
>
> **instance** [Show](/appdev/reference/daml-standard-library/prelude#class-ghc-show-show-65360) MergeDelegationProposal\_RejectResult
>
> **instance** GetField "result" MergeDelegationProposal\_RejectResult ()
>
> **instance** SetField "result" MergeDelegationProposal\_RejectResult ()
>
> **instance** [HasExercise](/appdev/reference/daml-standard-library/prelude#class-da-internal-template-functions-hasexercise-70422) MergeDelegationProposal MergeDelegationProposal\_Reject MergeDelegationProposal\_RejectResult
>
> **instance** [HasFromAnyChoice](/appdev/reference/daml-standard-library/prelude#class-da-internal-template-functions-hasfromanychoice-81184) MergeDelegationProposal MergeDelegationProposal\_Reject MergeDelegationProposal\_RejectResult
>
> **instance** [HasToAnyChoice](/appdev/reference/daml-standard-library/prelude#class-da-internal-template-functions-hastoanychoice-82571) MergeDelegationProposal MergeDelegationProposal\_Reject MergeDelegationProposal\_RejectResult

<div id="type-splice-util-token-wallet-mergedelegation-mergedelegationproposalwithdrawresult-14389">
  **data** MergeDelegationProposal\_WithdrawResult
</div>

> Dedicated record type to simplify upgrading
>
> <div id="constr-splice-util-token-wallet-mergedelegation-mergedelegationproposalwithdrawresult-8570">
>   MergeDelegationProposal\_WithdrawResult
> </div>
>
> > | Field  | Type | Description |
> > | ------ | ---- | ----------- |
> > | result | ()   |             |
>
> **instance** [Eq](/appdev/reference/daml-standard-library/prelude#class-ghc-classes-eq-22713) MergeDelegationProposal\_WithdrawResult
>
> **instance** [Show](/appdev/reference/daml-standard-library/prelude#class-ghc-show-show-65360) MergeDelegationProposal\_WithdrawResult
>
> **instance** GetField "result" MergeDelegationProposal\_WithdrawResult ()
>
> **instance** SetField "result" MergeDelegationProposal\_WithdrawResult ()
>
> **instance** [HasExercise](/appdev/reference/daml-standard-library/prelude#class-da-internal-template-functions-hasexercise-70422) MergeDelegationProposal MergeDelegationProposal\_Withdraw MergeDelegationProposal\_WithdrawResult
>
> **instance** [HasFromAnyChoice](/appdev/reference/daml-standard-library/prelude#class-da-internal-template-functions-hasfromanychoice-81184) MergeDelegationProposal MergeDelegationProposal\_Withdraw MergeDelegationProposal\_WithdrawResult
>
> **instance** [HasToAnyChoice](/appdev/reference/daml-standard-library/prelude#class-da-internal-template-functions-hastoanychoice-82571) MergeDelegationProposal MergeDelegationProposal\_Withdraw MergeDelegationProposal\_WithdrawResult

<div id="type-splice-util-token-wallet-mergedelegation-mergedelegationmergeresult-93186">
  **data** MergeDelegation\_MergeResult
</div>

> <div id="constr-splice-util-token-wallet-mergedelegation-mergedelegationmergeresult-31679">
>   MergeDelegation\_MergeResult
> </div>
>
> > | Field                  | Type                                                                                                                          | Description |
> > | ---------------------- | ----------------------------------------------------------------------------------------------------------------------------- | ----------- |
> > | optMergeTransferResult | [Optional](/appdev/reference/daml-standard-library/prelude#type-da-internal-prelude-optional-37153) TransferInstructionResult |             |
> > | optExtraTransferResult | [Optional](/appdev/reference/daml-standard-library/prelude#type-da-internal-prelude-optional-37153) TransferInstructionResult |             |
>
> **instance** [Eq](/appdev/reference/daml-standard-library/prelude#class-ghc-classes-eq-22713) MergeDelegation\_MergeResult
>
> **instance** [Show](/appdev/reference/daml-standard-library/prelude#class-ghc-show-show-65360) MergeDelegation\_MergeResult
>
> **instance** GetField "optExtraTransferResult" MergeDelegation\_MergeResult ([Optional](/appdev/reference/daml-standard-library/prelude#type-da-internal-prelude-optional-37153) TransferInstructionResult)
>
> **instance** GetField "optMergeTransferResult" MergeDelegation\_MergeResult ([Optional](/appdev/reference/daml-standard-library/prelude#type-da-internal-prelude-optional-37153) TransferInstructionResult)
>
> **instance** GetField "results" BatchMergeUtility\_BatchMergeResult \[MergeDelegation\_MergeResult]
>
> **instance** SetField "optExtraTransferResult" MergeDelegation\_MergeResult ([Optional](/appdev/reference/daml-standard-library/prelude#type-da-internal-prelude-optional-37153) TransferInstructionResult)
>
> **instance** SetField "optMergeTransferResult" MergeDelegation\_MergeResult ([Optional](/appdev/reference/daml-standard-library/prelude#type-da-internal-prelude-optional-37153) TransferInstructionResult)
>
> **instance** SetField "results" BatchMergeUtility\_BatchMergeResult \[MergeDelegation\_MergeResult]
>
> **instance** [HasExercise](/appdev/reference/daml-standard-library/prelude#class-da-internal-template-functions-hasexercise-70422) MergeDelegation MergeDelegation\_Merge MergeDelegation\_MergeResult
>
> **instance** [HasFromAnyChoice](/appdev/reference/daml-standard-library/prelude#class-da-internal-template-functions-hasfromanychoice-81184) MergeDelegation MergeDelegation\_Merge MergeDelegation\_MergeResult
>
> **instance** [HasToAnyChoice](/appdev/reference/daml-standard-library/prelude#class-da-internal-template-functions-hastoanychoice-82571) MergeDelegation MergeDelegation\_Merge MergeDelegation\_MergeResult

<div id="type-splice-util-token-wallet-mergedelegation-mergedelegationrejectresult-25578">
  **data** MergeDelegation\_RejectResult
</div>

> Dedicated record type to simplify upgrading
>
> <div id="constr-splice-util-token-wallet-mergedelegation-mergedelegationrejectresult-53673">
>   MergeDelegation\_RejectResult
> </div>
>
> > | Field  | Type | Description |
> > | ------ | ---- | ----------- |
> > | result | ()   |             |
>
> **instance** [Eq](/appdev/reference/daml-standard-library/prelude#class-ghc-classes-eq-22713) MergeDelegation\_RejectResult
>
> **instance** [Show](/appdev/reference/daml-standard-library/prelude#class-ghc-show-show-65360) MergeDelegation\_RejectResult
>
> **instance** GetField "result" MergeDelegation\_RejectResult ()
>
> **instance** SetField "result" MergeDelegation\_RejectResult ()
>
> **instance** [HasExercise](/appdev/reference/daml-standard-library/prelude#class-da-internal-template-functions-hasexercise-70422) MergeDelegation MergeDelegation\_Reject MergeDelegation\_RejectResult
>
> **instance** [HasFromAnyChoice](/appdev/reference/daml-standard-library/prelude#class-da-internal-template-functions-hasfromanychoice-81184) MergeDelegation MergeDelegation\_Reject MergeDelegation\_RejectResult
>
> **instance** [HasToAnyChoice](/appdev/reference/daml-standard-library/prelude#class-da-internal-template-functions-hastoanychoice-82571) MergeDelegation MergeDelegation\_Reject MergeDelegation\_RejectResult

<div id="type-splice-util-token-wallet-mergedelegation-mergedelegationwithdrawresult-70671">
  **data** MergeDelegation\_WithdrawResult
</div>

> Dedicated record type to simplify upgrading
>
> <div id="constr-splice-util-token-wallet-mergedelegation-mergedelegationwithdrawresult-6896">
>   MergeDelegation\_WithdrawResult
> </div>
>
> > | Field  | Type | Description |
> > | ------ | ---- | ----------- |
> > | result | ()   |             |
>
> **instance** [Eq](/appdev/reference/daml-standard-library/prelude#class-ghc-classes-eq-22713) MergeDelegation\_WithdrawResult
>
> **instance** [Show](/appdev/reference/daml-standard-library/prelude#class-ghc-show-show-65360) MergeDelegation\_WithdrawResult
>
> **instance** GetField "result" MergeDelegation\_WithdrawResult ()
>
> **instance** SetField "result" MergeDelegation\_WithdrawResult ()
>
> **instance** [HasExercise](/appdev/reference/daml-standard-library/prelude#class-da-internal-template-functions-hasexercise-70422) MergeDelegation MergeDelegation\_Withdraw MergeDelegation\_WithdrawResult
>
> **instance** [HasFromAnyChoice](/appdev/reference/daml-standard-library/prelude#class-da-internal-template-functions-hasfromanychoice-81184) MergeDelegation MergeDelegation\_Withdraw MergeDelegation\_WithdrawResult
>
> **instance** [HasToAnyChoice](/appdev/reference/daml-standard-library/prelude#class-da-internal-template-functions-hastoanychoice-82571) MergeDelegation MergeDelegation\_Withdraw MergeDelegation\_WithdrawResult

<div id="type-splice-util-token-wallet-mergedelegation-transfercall-7536">
  **data** TransferCall
</div>

> A call to perform a transfer using a transfer factory.
>
> <div id="constr-splice-util-token-wallet-mergedelegation-transfercall-34031">
>   TransferCall
> </div>
>
> > | Field      | Type                                                                                                               | Description |
> > | ---------- | ------------------------------------------------------------------------------------------------------------------ | ----------- |
> > | factoryCid | [ContractId](/appdev/reference/daml-standard-library/prelude#type-da-internal-lf-contractid-95282) TransferFactory |             |
> > | choiceArg  | TransferFactory\_Transfer                                                                                          |             |
>
> **instance** [Eq](/appdev/reference/daml-standard-library/prelude#class-ghc-classes-eq-22713) TransferCall
>
> **instance** [Show](/appdev/reference/daml-standard-library/prelude#class-ghc-show-show-65360) TransferCall
>
> **instance** GetField "choiceArg" TransferCall TransferFactory\_Transfer
>
> **instance** GetField "factoryCid" TransferCall ([ContractId](/appdev/reference/daml-standard-library/prelude#type-da-internal-lf-contractid-95282) TransferFactory)
>
> **instance** GetField "optExtraTransfer" MergeDelegation\_Merge ([Optional](/appdev/reference/daml-standard-library/prelude#type-da-internal-prelude-optional-37153) TransferCall)
>
> **instance** GetField "optMergeTransfer" MergeDelegation\_Merge ([Optional](/appdev/reference/daml-standard-library/prelude#type-da-internal-prelude-optional-37153) TransferCall)
>
> **instance** SetField "choiceArg" TransferCall TransferFactory\_Transfer
>
> **instance** SetField "factoryCid" TransferCall ([ContractId](/appdev/reference/daml-standard-library/prelude#type-da-internal-lf-contractid-95282) TransferFactory)
>
> **instance** SetField "optExtraTransfer" MergeDelegation\_Merge ([Optional](/appdev/reference/daml-standard-library/prelude#type-da-internal-prelude-optional-37153) TransferCall)
>
> **instance** SetField "optMergeTransfer" MergeDelegation\_Merge ([Optional](/appdev/reference/daml-standard-library/prelude#type-da-internal-prelude-optional-37153) TransferCall)

## Functions

<div id="function-splice-util-token-wallet-mergedelegation-runbatch-68276">
  runBatch
  : [Party](/appdev/reference/daml-standard-library/prelude#type-da-internal-lf-party-57932) -> \[MergeDelegationCall] -> InstrumentHoldingMap -> \[MergeDelegation\_MergeResult] -> [Update](/appdev/reference/daml-standard-library/prelude#type-da-internal-lf-update-68072) BatchMergeUtility\_BatchMergeResult

  Run a batch of token standard transfers.
</div>

<div id="function-splice-util-token-wallet-mergedelegation-createactivitymarkerforprovider-74667">
  createActivityMarkerForProvider
  : [Party](/appdev/reference/daml-standard-library/prelude#type-da-internal-lf-party-57932) -> FeaturedAppRightCall -> [Update](/appdev/reference/daml-standard-library/prelude#type-da-internal-lf-update-68072) ()
</div>

<div id="function-splice-util-token-wallet-mergedelegation-checkexpected-33668">
  checkExpected
  : ([Eq](/appdev/reference/daml-standard-library/prelude#class-ghc-classes-eq-22713) a, [Show](/appdev/reference/daml-standard-library/prelude#class-ghc-show-show-65360) a) => [Text](/appdev/reference/daml-standard-library/prelude#type-ghc-types-text-51952) -> a -> a -> [Update](/appdev/reference/daml-standard-library/prelude#type-da-internal-lf-update-68072) ()
</div>

<div id="function-splice-util-token-wallet-mergedelegation-require-88931">
  require
  : [CanAssert](/appdev/reference/daml-standard-library/prelude#class-da-internal-assert-canassert-67323) m => [Text](/appdev/reference/daml-standard-library/prelude#type-ghc-types-text-51952) -> [Bool](/appdev/reference/daml-standard-library/prelude#type-ghc-types-bool-66265) -> m ()

  Check whether a required condition is true. If it's not, abort the transaction with a message saying that the requirement was not met.
</div>
