@radixdlt/atom-transaction-mapping
Version:
38 lines (33 loc) • 1.24 kB
text/typescript
import { UserAction, UserActionType } from '@radixdlt/actions'
import { AnySpunParticle, AnyUpParticle, ParticleBase } from '@radixdlt/atom'
import { Result } from 'neverthrow'
import { AddressT } from '@radixdlt/account'
import { ParticleGroupT } from '@radixdlt/atom/src/_types'
import { AmountT } from '@radixdlt/primitives/src/_types'
export type FungibleParticleTransitioner<From extends ParticleBase> = Readonly<{
transition: (
input: Readonly<{
currentParticles: From[]
totalAmountToTransfer: AmountT
}>,
) => Result<AnySpunParticle[], Error>
}>
export type ActionToParticleGroupsMapper<
T extends UserActionType = UserActionType
> = Readonly<{
actionType: T
particleGroupsFromAction: (
input: Readonly<{
action: UserAction<unknown>
upParticles: AnyUpParticle[]
addressOfActiveAccount: AddressT
}>,
) => Result<ParticleGroupT[], Error>
}>
export type MapperInput = Readonly<{
action: UserAction<unknown>
upParticles: AnyUpParticle[]
addressOfActiveAccount: AddressT
}>
export type TokenTransferActionToParticleGroupsMapper = ActionToParticleGroupsMapper<UserActionType.TOKEN_TRANSFER>
export type BurnTokensActionToParticleGroupsMapper = ActionToParticleGroupsMapper<UserActionType.BURN_TOKENS>