> ## Documentation Index
> Fetch the complete documentation index at: https://cantonfoundation-feature-integrate-google-analytics.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Splice.Api.Token.BurnMintV1

> Documentation for Splice.Api.Token.BurnMintV1

An interface for registries to expose burn/mint operations in a generic way for bridges to use them, and for wallets to parse their use.

## Interfaces

<div id="type-splice-api-token-burnmintv1-burnmintfactory-79205">
  **interface** BurnMintFactory
</div>

> A factory for generic burn/mint operations.
>
> **viewtype** BurnMintFactoryView
>
> * **Choice** Archive
>
>   Controller: Signatories of implementing template
>
>   Returns: ()
>
>   (no fields)
>
> * <div id="type-splice-api-token-burnmintv1-burnmintfactoryburnmint-20312">
>     **Choice** BurnMintFactory\_BurnMint
>   </div>
>
>   Burn the holdings in `inputHoldingCids` and create holdings with the owners and amounts specified in outputs.
>
>   Note that this is jointly authorized by the admin and the `extraActors`. The `admin` thus controls all calls to this choice, and some implementations might required `extraActors` to be present, e.g., the owners of the minted and burnt holdings.
>
>   Implementations are free to restrict the implementation of this choice including failing on all inputs or not implementing this interface at all.
>
>   Controller: (DA.Internal.Record.getField @"admin" (view this)) :: extraActors
>
>   Returns: BurnMintFactory\_BurnMintResult
>
>   | Field            | Type                                                                                                         | Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
>   | ---------------- | ------------------------------------------------------------------------------------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
>   | expectedAdmin    | [Party](https://docs.daml.com/daml/stdlib/Prelude.html#type-da-internal-lf-party-57932)                      | The expected `admin` party issuing the factory. Implementations MUST validate that this matches the admin of the factory. Callers should ensure they get `expectedAdmin` from a trusted source, e.g., a read against their own participant. That way they can ensure that it is safe to exercise a choice on a factory contract acquired from an untrusted source *provided* all vetted Daml packages only contain interface implementations that check the expected admin party. |
>   | instrumentId     | InstrumentId                                                                                                 | The instrument id of the holdings. All holdings in `inputHoldingCids` as well as the resulting output holdings MUST have this instrument id.                                                                                                                                                                                                                                                                                                                                      |
>   | inputHoldingCids | \[[ContractId](https://docs.daml.com/daml/stdlib/Prelude.html#type-da-internal-lf-contractid-95282) Holding] | The holdings that should be burnt. All holdings in `inputHoldingCids` MUST be archived by this choice. Implementations MAY enforce additional restrictions such as all `inputHoldingCids` belonging to the same owner.                                                                                                                                                                                                                                                            |
>   | outputs          | \[BurnMintOutput]                                                                                            | The holdings that should be created. The choice MUST create new holdings with the given amounts.                                                                                                                                                                                                                                                                                                                                                                                  |
>   | extraActors      | \[[Party](https://docs.daml.com/daml/stdlib/Prelude.html#type-da-internal-lf-party-57932)]                   | Extra actors, the full actors required are the admin + extraActors. This is often the owners of inputHoldingCids and outputs but we allow different sets of actors to support token implementations with different authorization setups.                                                                                                                                                                                                                                          |
>   | extraArgs        | ExtraArgs                                                                                                    | Additional context. Implementations SHOULD include a `splice.lfdecentralizedtrust.org/reason` key in the metadata to provide a human readable description for explain why the `BurnMintFactory_BurnMint` choice was called, so that generic wallets can display it to the user.                                                                                                                                                                                                   |
>
> * <div id="type-splice-api-token-burnmintv1-burnmintfactorypublicfetch-64185">
>     **Choice** BurnMintFactory\_PublicFetch
>   </div>
>
>   Controller: actor
>
>   Returns: BurnMintFactoryView
>
>   | Field         | Type                                                                                    | Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
>   | ------------- | --------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
>   | expectedAdmin | [Party](https://docs.daml.com/daml/stdlib/Prelude.html#type-da-internal-lf-party-57932) | The expected admin party issuing the factory. Implementations MUST validate that this matches the admin of the factory. Callers should ensure they get `expectedAdmin` from a trusted source, e.g., a read against their own participant. That way they can ensure that it is safe to exercise a choice on a factory contract acquired from an untrusted source *provided* all vetted Daml packages only contain interface implementations that check the expected admin party. |
>   | actor         | [Party](https://docs.daml.com/daml/stdlib/Prelude.html#type-da-internal-lf-party-57932) | The party fetching the data.                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
>
> * **Method burnMintFactory\_burnMintImpl :** [ContractId](https://docs.daml.com/daml/stdlib/Prelude.html#type-da-internal-lf-contractid-95282) BurnMintFactory -> BurnMintFactory\_BurnMint -> [Update](https://docs.daml.com/daml/stdlib/Prelude.html#type-da-internal-lf-update-68072) BurnMintFactory\_BurnMintResult
>
> * **Method burnMintFactory\_publicFetchImpl :** [ContractId](https://docs.daml.com/daml/stdlib/Prelude.html#type-da-internal-lf-contractid-95282) BurnMintFactory -> BurnMintFactory\_PublicFetch -> [Update](https://docs.daml.com/daml/stdlib/Prelude.html#type-da-internal-lf-update-68072) BurnMintFactoryView

## Data Types

<div id="type-splice-api-token-burnmintv1-burnmintfactoryview-72718">
  **data** BurnMintFactoryView
</div>

> The view of a `BurnMintFactory`.
>
> <div id="constr-splice-api-token-burnmintv1-burnmintfactoryview-23617">
>   BurnMintFactoryView
> </div>
>
> > | Field | Type                                                                                    | Description                                                                                                             |
> > | ----- | --------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------- |
> > | admin | [Party](https://docs.daml.com/daml/stdlib/Prelude.html#type-da-internal-lf-party-57932) | The party representing the registry app that administers the instruments for which this burnt-mint factory can be used. |
> > | meta  | Metadata                                                                                | Additional metadata specific to the burn-mint factory, used for extensibility.                                          |
>
> **instance** [Eq](https://docs.daml.com/daml/stdlib/Prelude.html#class-ghc-classes-eq-22713) BurnMintFactoryView
>
> **instance** [Show](https://docs.daml.com/daml/stdlib/Prelude.html#class-ghc-show-show-65360) BurnMintFactoryView
>
> **instance** HasMethod BurnMintFactory "burnMintFactory\_publicFetchImpl" ([ContractId](https://docs.daml.com/daml/stdlib/Prelude.html#type-da-internal-lf-contractid-95282) BurnMintFactory -> BurnMintFactory\_PublicFetch -> [Update](https://docs.daml.com/daml/stdlib/Prelude.html#type-da-internal-lf-update-68072) BurnMintFactoryView)
>
> **instance** [HasFromAnyView](https://docs.daml.com/daml/stdlib/DA-Internal-Interface-AnyView.html#class-da-internal-interface-anyview-hasfromanyview-30108) BurnMintFactory BurnMintFactoryView
>
> **instance** [HasInterfaceView](https://docs.daml.com/daml/stdlib/Prelude.html#class-da-internal-interface-hasinterfaceview-4492) BurnMintFactory BurnMintFactoryView
>
> **instance** [GetField](https://docs.daml.com/daml/stdlib/DA-Record.html#class-da-internal-record-getfield-53979) "admin" BurnMintFactoryView [Party](https://docs.daml.com/daml/stdlib/Prelude.html#type-da-internal-lf-party-57932)
>
> **instance** [GetField](https://docs.daml.com/daml/stdlib/DA-Record.html#class-da-internal-record-getfield-53979) "meta" BurnMintFactoryView Metadata
>
> **instance** [SetField](https://docs.daml.com/daml/stdlib/DA-Record.html#class-da-internal-record-setfield-4311) "admin" BurnMintFactoryView [Party](https://docs.daml.com/daml/stdlib/Prelude.html#type-da-internal-lf-party-57932)
>
> **instance** [SetField](https://docs.daml.com/daml/stdlib/DA-Record.html#class-da-internal-record-setfield-4311) "meta" BurnMintFactoryView Metadata
>
> **instance** [HasExercise](https://docs.daml.com/daml/stdlib/Prelude.html#class-da-internal-template-functions-hasexercise-70422) BurnMintFactory BurnMintFactory\_PublicFetch BurnMintFactoryView
>
> **instance** [HasExerciseGuarded](https://docs.daml.com/daml/stdlib/Prelude.html#class-da-internal-template-functions-hasexerciseguarded-97843) BurnMintFactory BurnMintFactory\_PublicFetch BurnMintFactoryView
>
> **instance** [HasFromAnyChoice](https://docs.daml.com/daml/stdlib/Prelude.html#class-da-internal-template-functions-hasfromanychoice-81184) BurnMintFactory BurnMintFactory\_PublicFetch BurnMintFactoryView
>
> **instance** [HasToAnyChoice](https://docs.daml.com/daml/stdlib/Prelude.html#class-da-internal-template-functions-hastoanychoice-82571) BurnMintFactory BurnMintFactory\_PublicFetch BurnMintFactoryView

<div id="type-splice-api-token-burnmintv1-burnmintfactoryburnmintresult-61365">
  **data** BurnMintFactory\_BurnMintResult
</div>

> The result of calling the `BurnMintFactory_BurnMint` choice.
>
> <div id="constr-splice-api-token-burnmintv1-burnmintfactoryburnmintresult-13976">
>   BurnMintFactory\_BurnMintResult
> </div>
>
> > | Field      | Type                                                                                                         | Description                                                                                                              |
> > | ---------- | ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------ |
> > | outputCids | \[[ContractId](https://docs.daml.com/daml/stdlib/Prelude.html#type-da-internal-lf-contractid-95282) Holding] | The holdings created by the choice. Must contain exactly the outputs specified in the choice argument in the same order. |
>
> **instance** [Eq](https://docs.daml.com/daml/stdlib/Prelude.html#class-ghc-classes-eq-22713) BurnMintFactory\_BurnMintResult
>
> **instance** [Show](https://docs.daml.com/daml/stdlib/Prelude.html#class-ghc-show-show-65360) BurnMintFactory\_BurnMintResult
>
> **instance** HasMethod BurnMintFactory "burnMintFactory\_burnMintImpl" ([ContractId](https://docs.daml.com/daml/stdlib/Prelude.html#type-da-internal-lf-contractid-95282) BurnMintFactory -> BurnMintFactory\_BurnMint -> [Update](https://docs.daml.com/daml/stdlib/Prelude.html#type-da-internal-lf-update-68072) BurnMintFactory\_BurnMintResult)
>
> **instance** [GetField](https://docs.daml.com/daml/stdlib/DA-Record.html#class-da-internal-record-getfield-53979) "outputCids" BurnMintFactory\_BurnMintResult \[[ContractId](https://docs.daml.com/daml/stdlib/Prelude.html#type-da-internal-lf-contractid-95282) Holding]
>
> **instance** [SetField](https://docs.daml.com/daml/stdlib/DA-Record.html#class-da-internal-record-setfield-4311) "outputCids" BurnMintFactory\_BurnMintResult \[[ContractId](https://docs.daml.com/daml/stdlib/Prelude.html#type-da-internal-lf-contractid-95282) Holding]
>
> **instance** [HasExercise](https://docs.daml.com/daml/stdlib/Prelude.html#class-da-internal-template-functions-hasexercise-70422) BurnMintFactory BurnMintFactory\_BurnMint BurnMintFactory\_BurnMintResult
>
> **instance** [HasExerciseGuarded](https://docs.daml.com/daml/stdlib/Prelude.html#class-da-internal-template-functions-hasexerciseguarded-97843) BurnMintFactory BurnMintFactory\_BurnMint BurnMintFactory\_BurnMintResult
>
> **instance** [HasFromAnyChoice](https://docs.daml.com/daml/stdlib/Prelude.html#class-da-internal-template-functions-hasfromanychoice-81184) BurnMintFactory BurnMintFactory\_BurnMint BurnMintFactory\_BurnMintResult
>
> **instance** [HasToAnyChoice](https://docs.daml.com/daml/stdlib/Prelude.html#class-da-internal-template-functions-hastoanychoice-82571) BurnMintFactory BurnMintFactory\_BurnMint BurnMintFactory\_BurnMintResult

<div id="type-splice-api-token-burnmintv1-burnmintoutput-36483">
  **data** BurnMintOutput
</div>

> The specification of a holding to create as part of the burn/mint operation.
>
> <div id="constr-splice-api-token-burnmintv1-burnmintoutput-15750">
>   BurnMintOutput
> </div>
>
> > | Field   | Type                                                                                    | Description                                                                                               |
> > | ------- | --------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------- |
> > | owner   | [Party](https://docs.daml.com/daml/stdlib/Prelude.html#type-da-internal-lf-party-57932) | The owner of the holding to create.                                                                       |
> > | amount  | [Decimal](https://docs.daml.com/daml/stdlib/Prelude.html#type-ghc-types-decimal-18135)  | The amount of the holding to create.                                                                      |
> > | context | ChoiceContext                                                                           | Context specific to this output which can be used to support locking or other registry-specific features. |
>
> **instance** [Eq](https://docs.daml.com/daml/stdlib/Prelude.html#class-ghc-classes-eq-22713) BurnMintOutput
>
> **instance** [Show](https://docs.daml.com/daml/stdlib/Prelude.html#class-ghc-show-show-65360) BurnMintOutput
>
> **instance** [GetField](https://docs.daml.com/daml/stdlib/DA-Record.html#class-da-internal-record-getfield-53979) "amount" BurnMintOutput [Decimal](https://docs.daml.com/daml/stdlib/Prelude.html#type-ghc-types-decimal-18135)
>
> **instance** [GetField](https://docs.daml.com/daml/stdlib/DA-Record.html#class-da-internal-record-getfield-53979) "context" BurnMintOutput ChoiceContext
>
> **instance** [GetField](https://docs.daml.com/daml/stdlib/DA-Record.html#class-da-internal-record-getfield-53979) "outputs" BurnMintFactory\_BurnMint \[BurnMintOutput]
>
> **instance** [GetField](https://docs.daml.com/daml/stdlib/DA-Record.html#class-da-internal-record-getfield-53979) "owner" BurnMintOutput [Party](https://docs.daml.com/daml/stdlib/Prelude.html#type-da-internal-lf-party-57932)
>
> **instance** [SetField](https://docs.daml.com/daml/stdlib/DA-Record.html#class-da-internal-record-setfield-4311) "amount" BurnMintOutput [Decimal](https://docs.daml.com/daml/stdlib/Prelude.html#type-ghc-types-decimal-18135)
>
> **instance** [SetField](https://docs.daml.com/daml/stdlib/DA-Record.html#class-da-internal-record-setfield-4311) "context" BurnMintOutput ChoiceContext
>
> **instance** [SetField](https://docs.daml.com/daml/stdlib/DA-Record.html#class-da-internal-record-setfield-4311) "outputs" BurnMintFactory\_BurnMint \[BurnMintOutput]
>
> **instance** [SetField](https://docs.daml.com/daml/stdlib/DA-Record.html#class-da-internal-record-setfield-4311) "owner" BurnMintOutput [Party](https://docs.daml.com/daml/stdlib/Prelude.html#type-da-internal-lf-party-57932)

## Functions

<div id="function-splice-api-token-burnmintv1-burnmintfactoryburnmintimpl-9738">
  burnMintFactory\_burnMintImpl
  : BurnMintFactory -> [ContractId](https://docs.daml.com/daml/stdlib/Prelude.html#type-da-internal-lf-contractid-95282) BurnMintFactory -> BurnMintFactory\_BurnMint -> [Update](https://docs.daml.com/daml/stdlib/Prelude.html#type-da-internal-lf-update-68072) BurnMintFactory\_BurnMintResult
</div>

<div id="function-splice-api-token-burnmintv1-burnmintfactorypublicfetchimpl-75623">
  burnMintFactory\_publicFetchImpl
  : BurnMintFactory -> [ContractId](https://docs.daml.com/daml/stdlib/Prelude.html#type-da-internal-lf-contractid-95282) BurnMintFactory -> BurnMintFactory\_PublicFetch -> [Update](https://docs.daml.com/daml/stdlib/Prelude.html#type-da-internal-lf-update-68072) BurnMintFactoryView
</div>
