net.corda.contracts.clause / AbstractConserveAmount / generateExit

# generateExit

`fun generateExit(tx: TransactionBuilder, amountIssued: Amount<Issued<T>>, assetStates: List<StateAndRef<S>>, deriveState: (TransactionState<S>, Amount<Issued<T>>, PublicKeyTree) -> TransactionState<S>, generateMoveCommand: () -> CommandData, generateExitCommand: (Amount<Issued<T>>) -> CommandData): PublicKeyTree`

Generate an transaction exiting fungible assets from the ledger.

### Parameters

`tx` - transaction builder to add states and commands to.
`amountIssued` - the amount to be exited, represented as a quantity of issued currency.
`assetStates` - the asset states to take funds from. No checks are done about ownership of these states, it is the responsibility of the caller to check that they do not attempt to exit funds held by others.

Return
the public key of the assets issuer, who must sign the transaction for it to be valid.