> ## 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.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                 | 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 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]              | 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 | 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 | The party fetching the data.                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
>
> * **Method burnMintFactory\_burnMintImpl :** ContractId BurnMintFactory -> BurnMintFactory\_BurnMint -> Update BurnMintFactory\_BurnMintResult
>
> * **Method burnMintFactory\_publicFetchImpl :** ContractId BurnMintFactory -> BurnMintFactory\_PublicFetch -> Update 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    | 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 BurnMintFactoryView
>
> **instance** Show BurnMintFactoryView
>
> **instance** HasMethod BurnMintFactory "burnMintFactory\_publicFetchImpl" (ContractId BurnMintFactory -> BurnMintFactory\_PublicFetch -> Update BurnMintFactoryView)
>
> **instance** HasFromAnyView BurnMintFactory BurnMintFactoryView
>
> **instance** HasInterfaceView BurnMintFactory BurnMintFactoryView
>
> **instance** GetField "admin" BurnMintFactoryView Party
>
> **instance** GetField "meta" BurnMintFactoryView Metadata
>
> **instance** SetField "admin" BurnMintFactoryView Party
>
> **instance** SetField "meta" BurnMintFactoryView Metadata
>
> **instance** HasExercise BurnMintFactory BurnMintFactory\_PublicFetch BurnMintFactoryView
>
> **instance** HasExerciseGuarded BurnMintFactory BurnMintFactory\_PublicFetch BurnMintFactoryView
>
> **instance** HasFromAnyChoice BurnMintFactory BurnMintFactory\_PublicFetch BurnMintFactoryView
>
> **instance** HasToAnyChoice 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 Holding] | The holdings created by the choice. Must contain exactly the outputs specified in the choice argument in the same order. |
>
> **instance** Eq BurnMintFactory\_BurnMintResult
>
> **instance** Show BurnMintFactory\_BurnMintResult
>
> **instance** HasMethod BurnMintFactory "burnMintFactory\_burnMintImpl" (ContractId BurnMintFactory -> BurnMintFactory\_BurnMint -> Update BurnMintFactory\_BurnMintResult)
>
> **instance** GetField "outputCids" BurnMintFactory\_BurnMintResult \[ContractId Holding]
>
> **instance** SetField "outputCids" BurnMintFactory\_BurnMintResult \[ContractId Holding]
>
> **instance** HasExercise BurnMintFactory BurnMintFactory\_BurnMint BurnMintFactory\_BurnMintResult
>
> **instance** HasExerciseGuarded BurnMintFactory BurnMintFactory\_BurnMint BurnMintFactory\_BurnMintResult
>
> **instance** HasFromAnyChoice BurnMintFactory BurnMintFactory\_BurnMint BurnMintFactory\_BurnMintResult
>
> **instance** HasToAnyChoice 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         | The owner of the holding to create.                                                                       |
> > | amount  | Decimal       | 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 BurnMintOutput
>
> **instance** Show BurnMintOutput
>
> **instance** GetField "amount" BurnMintOutput Decimal
>
> **instance** GetField "context" BurnMintOutput ChoiceContext
>
> **instance** GetField "outputs" BurnMintFactory\_BurnMint \[BurnMintOutput]
>
> **instance** GetField "owner" BurnMintOutput Party
>
> **instance** SetField "amount" BurnMintOutput Decimal
>
> **instance** SetField "context" BurnMintOutput ChoiceContext
>
> **instance** SetField "outputs" BurnMintFactory\_BurnMint \[BurnMintOutput]
>
> **instance** SetField "owner" BurnMintOutput Party

## Functions

<div id="function-splice-api-token-burnmintv1-burnmintfactoryburnmintimpl-9738">
  burnMintFactory\_burnMintImpl
  : BurnMintFactory -> ContractId BurnMintFactory -> BurnMintFactory\_BurnMint -> Update BurnMintFactory\_BurnMintResult
</div>

<div id="function-splice-api-token-burnmintv1-burnmintfactorypublicfetchimpl-75623">
  burnMintFactory\_publicFetchImpl
  : BurnMintFactory -> ContractId BurnMintFactory -> BurnMintFactory\_PublicFetch -> Update BurnMintFactoryView
</div>
