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 declare type FungibleParticleTransitioner<From extends ParticleBase> = Readonly<{
    transition: (input: Readonly<{
        currentParticles: From[];
        totalAmountToTransfer: AmountT;
    }>) => Result<AnySpunParticle[], Error>;
}>;
export declare type ActionToParticleGroupsMapper<T extends UserActionType = UserActionType> = Readonly<{
    actionType: T;
    particleGroupsFromAction: (input: Readonly<{
        action: UserAction<unknown>;
        upParticles: AnyUpParticle[];
        addressOfActiveAccount: AddressT;
    }>) => Result<ParticleGroupT[], Error>;
}>;
export declare type MapperInput = Readonly<{
    action: UserAction<unknown>;
    upParticles: AnyUpParticle[];
    addressOfActiveAccount: AddressT;
}>;
export declare type TokenTransferActionToParticleGroupsMapper = ActionToParticleGroupsMapper<UserActionType.TOKEN_TRANSFER>;
export declare type BurnTokensActionToParticleGroupsMapper = ActionToParticleGroupsMapper<UserActionType.BURN_TOKENS>;
//# sourceMappingURL=_types.d.ts.map