import type { Address, TransferableInput, TransferableOutput } from '../../../serializable';
import { OutputOwners } from '../../../serializable';
import type { Utxo } from '../../../serializable/avax/utxo';
import type { Dimensions } from '../../common/fees/dimensions';
import type { Context } from '../../context';
import type { FeeState } from '../models';
import type { SpendReducerFunction } from './spend-reducers';
type SpendResult = Readonly<{
    changeOutputs: readonly TransferableOutput[];
    fee: bigint;
    inputs: readonly TransferableInput[];
    inputUTXOs: readonly Utxo[];
    stakeOutputs: readonly TransferableOutput[];
}>;
export type SpendProps = Readonly<{
    changeOutputOwners: OutputOwners;
    excessAVAX?: bigint;
    feeState: FeeState;
    fromAddresses: readonly Address[];
    initialComplexity: Dimensions;
    minIssuanceTime: bigint;
    shouldConsolidateOutputs?: boolean;
    toBurn?: Map<string, bigint>;
    toStake?: Map<string, bigint>;
    utxos: readonly Utxo[];
}>;
export declare const spend: ({ changeOutputOwners, excessAVAX, feeState, fromAddresses, initialComplexity, minIssuanceTime, shouldConsolidateOutputs, toBurn, toStake, utxos, }: SpendProps, spendReducers: readonly SpendReducerFunction[], context: Context) => SpendResult;
export {};
//# sourceMappingURL=spend.d.ts.map