import { Address, AddressStr, CanBeHash28, IProposalProcedure, IUTxO, IVotingProceduresEntry, PubKeyHash, TxMetadata, TxOut, UTxO } from "@harmoniclabs/cardano-ledger-ts";
import { NormalizedITxBuildCert, type ITxBuildCert } from "./ITxBuildCert.js";
import { NormalizedITxBuildInput, type ITxBuildInput } from "./ITxBuildInput/ITxBuildInput.js";
import { NormalizedITxBuildMint, type ITxBuildMint } from "./ITxBuildMint.js";
import { type ITxBuildOutput } from "./ITxBuildOutput.js";
import { NormalizedITxBuildWithdrawal, type ITxBuildWithdrawal } from "./ITxBuildWithdrawal.js";
import { CanBeUInteger } from "../utils/ints.js";
import { ChangeInfos, NormalizedChangeInfos } from "./ChangeInfos/ChangeInfos.js";
import { ITxBuildVotingProcedure, NormalizedITxBuildVotingProcedure } from "./ITxBuildVotingProcedure.js";
import { ITxBuildProposalProcedure, NormalizedITxBuildProposalProcedure } from "./ITxBuildProposalProcedure.js";
export interface ITxBuildArgs {
    inputs: (ITxBuildInput | IUTxO)[];
    /**
     * same as `changeAddress` but allows to specify datums and ref scripts
     * @example
     * ```ts
     * txBuilder.build({
     *     change: { address: "your_address" }
     * });
     * ```
     */
    changeAddress?: Address | AddressStr;
    change?: ChangeInfos;
    outputs?: ITxBuildOutput[];
    readonlyRefInputs?: IUTxO[];
    requiredSigners?: CanBeHash28[];
    collaterals?: IUTxO[];
    collateralReturn?: ITxBuildOutput;
    mints?: ITxBuildMint[];
    invalidBefore?: CanBeUInteger;
    invalidAfter?: CanBeUInteger;
    certificates?: ITxBuildCert[];
    withdrawals?: ITxBuildWithdrawal[];
    /**
     * # metadata message following cip20
     *
     * overwrites the metadata at label 674 if already present.
     **/
    memo?: string;
    metadata?: TxMetadata;
    votingProcedures?: (IVotingProceduresEntry | ITxBuildVotingProcedure)[];
    proposalProcedures?: (IProposalProcedure | ITxBuildProposalProcedure)[];
    currentTreasuryValue?: CanBeUInteger;
    paymentToTreasury?: CanBeUInteger;
}
export interface NormalizedITxBuildArgs extends ITxBuildArgs {
    inputs: NormalizedITxBuildInput[];
    changeAddress?: Address;
    change?: NormalizedChangeInfos;
    outputs?: TxOut[];
    readonlyRefInputs?: UTxO[];
    requiredSigners?: PubKeyHash[];
    collaterals?: UTxO[];
    collateralReturn?: TxOut;
    mints?: NormalizedITxBuildMint[];
    invalidBefore?: CanBeUInteger;
    invalidAfter?: CanBeUInteger;
    certificates?: NormalizedITxBuildCert[];
    withdrawals?: NormalizedITxBuildWithdrawal[];
    /**
     * # metadata message following cip20
     *
     * overwrites the metadata at label 674 if already present.
     **/
    memo?: string;
    metadata?: TxMetadata;
    votingProcedures?: NormalizedITxBuildVotingProcedure[];
    proposalProcedures?: NormalizedITxBuildProposalProcedure[];
    currentTreasuryValue?: bigint;
    paymentToTreasury?: bigint;
}
export declare function normalizeITxBuildArgs({ inputs, change, changeAddress, outputs, readonlyRefInputs, requiredSigners, collaterals, collateralReturn, mints, invalidBefore, invalidAfter, certificates, withdrawals, memo, metadata, votingProcedures, proposalProcedures, currentTreasuryValue, paymentToTreasury }: ITxBuildArgs): NormalizedITxBuildArgs;
/** @deprecated use `normalizeITxBuildArgs` instead */
export declare function cloneITxBuildArgs(args: ITxBuildArgs): ITxBuildArgs;
