import { Equal, FastCheck, Hash, Inspectable, Schema } from "effect";
import * as Anchor from "./Anchor.js";
import * as AuxiliaryDataHash from "./AuxiliaryDataHash.js";
import * as CBOR from "./CBOR.js";
import * as Certificate from "./Certificate.js";
import * as GovernanceAction from "./GovernanceAction.js";
import * as KeyHash from "./KeyHash.js";
import * as Mint from "./Mint.js";
import * as ProposalProcedures from "./ProposalProcedures.js";
import * as RewardAccount from "./RewardAccount.js";
import * as ScriptDataHash from "./ScriptDataHash.js";
import * as TransactionHash from "./TransactionHash.js";
import * as TransactionInput from "./TransactionInput.js";
import * as TxOut from "./TxOut.js";
import * as VotingProcedures from "./VotingProcedures.js";
import * as Withdrawals from "./Withdrawals.js";
declare const TransactionBody_base: Schema.TaggedClass<TransactionBody, "TransactionBody", {
    readonly _tag: Schema.tag<"TransactionBody">;
} & {
    inputs: Schema.Array$<typeof TransactionInput.TransactionInput>;
    outputs: Schema.Array$<typeof TxOut.TransactionOutput>;
    fee: Schema.refine<bigint, typeof Schema.BigInt>;
    ttl: Schema.optional<typeof Schema.BigInt>;
    certificates: Schema.optional<Schema.NonEmptyArray<Schema.Union<[typeof Certificate.StakeRegistration, typeof Certificate.StakeDeregistration, typeof Certificate.StakeDelegation, typeof Certificate.PoolRegistration, typeof Certificate.PoolRetirement, typeof Certificate.RegCert, typeof Certificate.UnregCert, typeof Certificate.VoteDelegCert, typeof Certificate.StakeVoteDelegCert, typeof Certificate.StakeRegDelegCert, typeof Certificate.VoteRegDelegCert, typeof Certificate.StakeVoteRegDelegCert, typeof Certificate.AuthCommitteeHotCert, typeof Certificate.ResignCommitteeColdCert, typeof Certificate.RegDrepCert, typeof Certificate.UnregDrepCert, typeof Certificate.UpdateDrepCert]>>>;
    withdrawals: Schema.optional<typeof Withdrawals.Withdrawals>;
    auxiliaryDataHash: Schema.optional<typeof AuxiliaryDataHash.AuxiliaryDataHash>;
    validityIntervalStart: Schema.optional<typeof Schema.BigInt>;
    mint: Schema.optional<typeof Mint.Mint>;
    scriptDataHash: Schema.optional<typeof ScriptDataHash.ScriptDataHash>;
    collateralInputs: Schema.optional<Schema.NonEmptyArray<typeof TransactionInput.TransactionInput>>;
    requiredSigners: Schema.optional<Schema.NonEmptyArray<typeof KeyHash.KeyHash>>;
    networkId: Schema.optional<Schema.refine<number, typeof Schema.NonNegative>>;
    collateralReturn: Schema.optional<typeof TxOut.TransactionOutput>;
    totalCollateral: Schema.optional<Schema.refine<bigint, typeof Schema.BigInt>>;
    referenceInputs: Schema.optional<Schema.NonEmptyArray<typeof TransactionInput.TransactionInput>>;
    votingProcedures: Schema.optional<typeof VotingProcedures.VotingProcedures>;
    proposalProcedures: Schema.optional<typeof ProposalProcedures.ProposalProcedures>;
    currentTreasuryValue: Schema.optional<Schema.refine<bigint, typeof Schema.BigInt>>;
    donation: Schema.optional<Schema.refine<bigint, typeof Schema.BigInt>>;
}>;
/**
 * TransactionBody
 *
 * ```
 * transaction_body =
 *   {   0  : set<transaction_input>
 *   ,   1  : [* transaction_output]
 *   ,   2  : coin
 *   , ? 3  : slot_no
 *   , ? 4  : certificates
 *   , ? 5  : withdrawals
 *   , ? 7  : auxiliary_data_hash
 *   , ? 8  : slot_no
 *   , ? 9  : mint
 *   , ? 11 : script_data_hash
 *   , ? 13 : nonempty_set<transaction_input>
 *   , ? 14 : required_signers
 *   , ? 15 : network_id
 *   , ? 16 : transaction_output
 *   , ? 17 : coin
 *   , ? 18 : nonempty_set<transaction_input>
 *   , ? 19 : voting_procedures
 *   , ? 20 : proposal_procedures
 *   , ? 21 : coin
 *   , ? 22 : positive_coin
 *   }
 * ```
 *
 * @since 2.0.0
 * @category model
 */
export declare class TransactionBody extends TransactionBody_base {
    toJSON(): {
        _tag: "TransactionBody";
        inputs: {
            _tag: "TransactionInput";
            transactionId: {
                _tag: "TransactionHash";
                hash: string;
            };
            index: string;
        }[];
        outputs: {
            _tag: "TransactionOutput";
            address: {
                networkId: number;
                paymentCredential: {
                    _tag: "KeyHash";
                    hash: string;
                } | {
                    _tag: "ScriptHash";
                    hash: string;
                };
                stakingCredential: {
                    _tag: "KeyHash";
                    hash: string;
                } | {
                    _tag: "ScriptHash";
                    hash: string;
                } | undefined;
            };
            assets: {
                lovelace: string;
                multiAsset: {
                    _tag: "MultiAsset";
                    map: Record<string, Record<string, string>>;
                } | undefined;
            };
            datumOption: {
                _tag: "InlineDatum";
                data: import("./Data.js").Data;
            } | {
                _tag: "DatumHash";
                hash: string;
            } | undefined;
            scriptRef: {
                _tag: "ScriptRef";
                bytes: Uint8Array<ArrayBufferLike>;
            } | undefined;
        }[];
        fee: string;
        ttl: string | undefined;
        certificates: ({
            _tag: "StakeRegistration";
            stakeCredential: {
                _tag: "KeyHash";
                hash: string;
            } | {
                _tag: "ScriptHash";
                hash: string;
            };
        } | {
            _tag: "UpdateDrepCert";
            drepCredential: {
                _tag: "KeyHash";
                hash: string;
            } | {
                _tag: "ScriptHash";
                hash: string;
            };
            anchor: Anchor.Anchor | null | undefined;
        } | {
            _tag: "UnregDrepCert";
            drepCredential: {
                _tag: "KeyHash";
                hash: string;
            } | {
                _tag: "ScriptHash";
                hash: string;
            };
            coin: string;
        } | {
            _tag: "RegDrepCert";
            drepCredential: {
                _tag: "KeyHash";
                hash: string;
            } | {
                _tag: "ScriptHash";
                hash: string;
            };
            coin: string;
            anchor: Anchor.Anchor | null | undefined;
        } | {
            _tag: "ResignCommitteeColdCert";
            committeeColdCredential: {
                _tag: "KeyHash";
                hash: string;
            } | {
                _tag: "ScriptHash";
                hash: string;
            };
            anchor: Anchor.Anchor | null | undefined;
        } | {
            _tag: "AuthCommitteeHotCert";
            committeeColdCredential: {
                _tag: "KeyHash";
                hash: string;
            } | {
                _tag: "ScriptHash";
                hash: string;
            };
            committeeHotCredential: {
                _tag: "KeyHash";
                hash: string;
            } | {
                _tag: "ScriptHash";
                hash: string;
            };
        } | {
            _tag: "StakeVoteRegDelegCert";
            stakeCredential: {
                _tag: "KeyHash";
                hash: string;
            } | {
                _tag: "ScriptHash";
                hash: string;
            };
            poolKeyHash: {
                _tag: "PoolKeyHash";
                hash: string;
            };
            drep: import("./DRep.js").KeyHashDRep | import("./DRep.js").ScriptHashDRep | import("./DRep.js").AlwaysAbstainDRep | import("./DRep.js").AlwaysNoConfidenceDRep;
            coin: string;
        } | {
            _tag: "VoteRegDelegCert";
            stakeCredential: {
                _tag: "KeyHash";
                hash: string;
            } | {
                _tag: "ScriptHash";
                hash: string;
            };
            drep: import("./DRep.js").KeyHashDRep | import("./DRep.js").ScriptHashDRep | import("./DRep.js").AlwaysAbstainDRep | import("./DRep.js").AlwaysNoConfidenceDRep;
            coin: string;
        } | {
            _tag: "StakeRegDelegCert";
            stakeCredential: {
                _tag: "KeyHash";
                hash: string;
            } | {
                _tag: "ScriptHash";
                hash: string;
            };
            poolKeyHash: {
                _tag: "PoolKeyHash";
                hash: string;
            };
            coin: string;
        } | {
            _tag: "StakeVoteDelegCert";
            stakeCredential: {
                _tag: "KeyHash";
                hash: string;
            } | {
                _tag: "ScriptHash";
                hash: string;
            };
            poolKeyHash: {
                _tag: "PoolKeyHash";
                hash: string;
            };
            drep: import("./DRep.js").KeyHashDRep | import("./DRep.js").ScriptHashDRep | import("./DRep.js").AlwaysAbstainDRep | import("./DRep.js").AlwaysNoConfidenceDRep;
        } | {
            _tag: "VoteDelegCert";
            stakeCredential: {
                _tag: "KeyHash";
                hash: string;
            } | {
                _tag: "ScriptHash";
                hash: string;
            };
            drep: import("./DRep.js").KeyHashDRep | import("./DRep.js").ScriptHashDRep | import("./DRep.js").AlwaysAbstainDRep | import("./DRep.js").AlwaysNoConfidenceDRep;
        } | {
            _tag: "UnregCert";
            stakeCredential: {
                _tag: "KeyHash";
                hash: string;
            } | {
                _tag: "ScriptHash";
                hash: string;
            };
            coin: string;
        } | {
            _tag: "RegCert";
            stakeCredential: {
                _tag: "KeyHash";
                hash: string;
            } | {
                _tag: "ScriptHash";
                hash: string;
            };
            coin: string;
        } | {
            _tag: "PoolRetirement";
            poolKeyHash: {
                _tag: "PoolKeyHash";
                hash: string;
            };
            epoch: string;
        } | {
            _tag: "PoolRegistration";
            poolParams: {
                _tag: "PoolParams";
                operator: {
                    _tag: "PoolKeyHash";
                    hash: string;
                };
                vrfKeyhash: {
                    _tag: "VrfKeyHash";
                    hash: string;
                };
                pledge: string;
                cost: string;
                margin: {
                    numerator: string;
                    denominator: string;
                };
                rewardAccount: {
                    _tag: "RewardAccount";
                    networkId: number;
                    stakeCredential: KeyHash.KeyHash | import("./ScriptHash.js").ScriptHash;
                };
                poolOwners: {
                    _tag: "KeyHash";
                    hash: string;
                }[];
                relays: ({
                    _tag: "MultiHostName";
                    dnsName: string & import("effect/Brand").Brand<"DnsName">;
                } | {
                    _tag: "SingleHostAddr";
                    port: string | null;
                    ipv4: {
                        _tag: "IPv4";
                        bytes: string;
                    } | null;
                    ipv6: {
                        _tag: "IPv6";
                        bytes: string;
                    } | null;
                } | {
                    _tag: "SingleHostName";
                    port: string | null;
                    dnsName: string & import("effect/Brand").Brand<"DnsName">;
                })[];
                poolMetadata: {
                    _tag: "PoolMetadata";
                    url: string;
                    hash: string;
                } | null;
            };
        } | {
            _tag: "StakeDelegation";
            stakeCredential: {
                _tag: "KeyHash";
                hash: string;
            } | {
                _tag: "ScriptHash";
                hash: string;
            };
            poolKeyHash: {
                _tag: "PoolKeyHash";
                hash: string;
            };
        } | {
            _tag: "StakeDeregistration";
            stakeCredential: {
                _tag: "KeyHash";
                hash: string;
            } | {
                _tag: "ScriptHash";
                hash: string;
            };
        })[] | undefined;
        withdrawals: {
            _tag: "Withdrawals";
            withdrawals: Record<string, string>;
        } | undefined;
        auxiliaryDataHash: {
            _tag: "AuxiliaryDataHash";
            bytes: string;
        } | undefined;
        validityIntervalStart: string | undefined;
        mint: {
            _tag: string;
            map: Record<string, Record<string, string>>;
        } | undefined;
        scriptDataHash: {
            _tag: "ScriptDataHash";
            hash: string;
        } | undefined;
        collateralInputs: {
            _tag: "TransactionInput";
            transactionId: {
                _tag: "TransactionHash";
                hash: string;
            };
            index: string;
        }[] | undefined;
        requiredSigners: readonly [KeyHash.KeyHash, ...KeyHash.KeyHash[]] | undefined;
        networkId: number | undefined;
        collateralReturn: {
            _tag: "TransactionOutput";
            address: {
                networkId: number;
                paymentCredential: {
                    _tag: "KeyHash";
                    hash: string;
                } | {
                    _tag: "ScriptHash";
                    hash: string;
                };
                stakingCredential: {
                    _tag: "KeyHash";
                    hash: string;
                } | {
                    _tag: "ScriptHash";
                    hash: string;
                } | undefined;
            };
            assets: {
                lovelace: string;
                multiAsset: {
                    _tag: "MultiAsset";
                    map: Record<string, Record<string, string>>;
                } | undefined;
            };
            datumOption: {
                _tag: "InlineDatum";
                data: import("./Data.js").Data;
            } | {
                _tag: "DatumHash";
                hash: string;
            } | undefined;
            scriptRef: {
                _tag: "ScriptRef";
                bytes: Uint8Array<ArrayBufferLike>;
            } | undefined;
        } | undefined;
        totalCollateral: string | undefined;
        referenceInputs: {
            _tag: "TransactionInput";
            transactionId: {
                _tag: "TransactionHash";
                hash: string;
            };
            index: string;
        }[] | undefined;
        votingProcedures: {
            procedures: any[];
        } | undefined;
        proposalProcedures: {
            _tag: "ProposalProcedures";
            procedures: {
                _tag: string;
                deposit: string;
                rewardAccount: RewardAccount.RewardAccount;
                governanceAction: GovernanceAction.ParameterChangeAction | GovernanceAction.HardForkInitiationAction | GovernanceAction.TreasuryWithdrawalsAction | GovernanceAction.NoConfidenceAction | GovernanceAction.UpdateCommitteeAction | GovernanceAction.NewConstitutionAction | GovernanceAction.InfoAction | {
                    _tag: "ParameterChangeAction";
                    govActionId: GovernanceAction.GovActionId | null;
                    protocolParamUpdate: import("./ProtocolParamUpdate.js").ProtocolParamUpdate;
                    policyHash: import("./ScriptHash.js").ScriptHash | null;
                } | {
                    _tag: "HardForkInitiationAction";
                    govActionId: GovernanceAction.GovActionId | null;
                    protocolVersion: import("./ProtocolVersion.js").ProtocolVersion;
                } | {
                    _tag: "TreasuryWithdrawalsAction";
                    withdrawals: Map<RewardAccount.RewardAccount, bigint>;
                    policyHash: import("./ScriptHash.js").ScriptHash | null;
                } | {
                    _tag: "NoConfidenceAction";
                    govActionId: GovernanceAction.GovActionId | null;
                } | {
                    _tag: "UpdateCommitteeAction";
                    govActionId: GovernanceAction.GovActionId | null;
                    membersToRemove: readonly (KeyHash.KeyHash | import("./ScriptHash.js").ScriptHash)[];
                    membersToAdd: Map<KeyHash.KeyHash | import("./ScriptHash.js").ScriptHash, bigint>;
                    threshold: import("./UnitInterval.js").UnitInterval;
                } | {
                    _tag: "NewConstitutionAction";
                    govActionId: GovernanceAction.GovActionId | null;
                    constitution: import("./Constitution.js").Constitution;
                } | {
                    _tag: "InfoAction";
                };
                anchor: Anchor.Anchor | {
                    _tag: "Anchor";
                    anchorUrl: string;
                    anchorDataHash: string;
                } | null;
            }[];
        } | undefined;
        currentTreasuryValue: string | undefined;
        donation: string | undefined;
    };
    toString(): string;
    [Inspectable.NodeInspectSymbol](): unknown;
    [Equal.symbol](that: unknown): boolean;
    /**
     * Custom hash implementation for TransactionBody.
     * Only hashes frequently-changing fields for performance.
     *
     * @since 2.0.0
     * @category hashing
     */
    [Hash.symbol](): number;
}
/**
 * CDDL schema for TransactionBody struct structure.
 *
 * @since 2.0.0
 * @category schemas
 */
export declare const CDDLSchema: Schema.declare<Map<bigint, CBOR.CBOR>, Map<bigint, CBOR.CBOR>, readonly [], never>;
export declare const FromCDDL: Schema.transformOrFail<Schema.declare<Map<bigint, CBOR.CBOR>, Map<bigint, CBOR.CBOR>, readonly [], never>, Schema.SchemaClass<TransactionBody, TransactionBody, never>, never>;
/**
 * CBOR bytes transformation schema for TransactionBody.
 * Transforms between CBOR bytes and TransactionBody using Conway CDDL specification.
 *
 * @since 2.0.0
 * @category schemas
 */
export declare const FromCBORBytes: (options?: CBOR.CodecOptions) => Schema.transform<Schema.transformOrFail<typeof Schema.Uint8ArrayFromSelf, Schema.declare<CBOR.CBOR, CBOR.CBOR, readonly [], never>, never>, Schema.transformOrFail<Schema.declare<Map<bigint, CBOR.CBOR>, Map<bigint, CBOR.CBOR>, readonly [], never>, Schema.SchemaClass<TransactionBody, TransactionBody, never>, never>>;
/**
 * CBOR hex transformation schema for TransactionBody.
 * Transforms between CBOR hex string and TransactionBody using Conway CDDL specification.
 *
 * @since 2.0.0
 * @category schemas
 */
export declare const FromCBORHex: (options?: CBOR.CodecOptions) => Schema.transform<Schema.transform<Schema.Schema<Uint8Array<ArrayBufferLike>, string, never>, Schema.transformOrFail<typeof Schema.Uint8ArrayFromSelf, Schema.declare<CBOR.CBOR, CBOR.CBOR, readonly [], never>, never>>, Schema.transformOrFail<Schema.declare<Map<bigint, CBOR.CBOR>, Map<bigint, CBOR.CBOR>, readonly [], never>, Schema.SchemaClass<TransactionBody, TransactionBody, never>, never>>;
export declare const isTransactionBody: (u: unknown, overrideOptions?: import("effect/SchemaAST").ParseOptions | number) => u is TransactionBody;
/**
 * Convert CBOR bytes to TransactionBody.
 *
 * @since 2.0.0
 * @category conversion
 */
export declare const fromCBORBytes: (bytes: Uint8Array, options?: CBOR.CodecOptions) => TransactionBody;
/**
 * Convert CBOR hex string to TransactionBody.
 *
 * @since 2.0.0
 * @category conversion
 */
export declare const fromCBORHex: (hex: string, options?: CBOR.CodecOptions) => TransactionBody;
/**
 * Convert TransactionBody to CBOR bytes.
 *
 * @since 2.0.0
 * @category conversion
 */
export declare const toCBORBytes: (data: TransactionBody, options?: CBOR.CodecOptions) => Uint8Array<ArrayBufferLike>;
/**
 * Convert TransactionBody to CBOR hex string.
 *
 * @since 2.0.0
 * @category conversion
 */
export declare const toCBORHex: (data: TransactionBody, options?: CBOR.CodecOptions) => string;
/**
 * Parse a TransactionBody from CBOR bytes and return the root format tree.
 *
 * @since 2.0.0
 * @category conversion
 */
export declare const fromCBORBytesWithFormat: (bytes: Uint8Array) => CBOR.DecodedWithFormat<TransactionBody>;
/**
 * Parse a TransactionBody from CBOR hex string and return the root format tree.
 *
 * @since 2.0.0
 * @category conversion
 */
export declare const fromCBORHexWithFormat: (hex: string) => CBOR.DecodedWithFormat<TransactionBody>;
/**
 * Convert a TransactionBody to CBOR bytes using an explicit root format tree.
 *
 * @since 2.0.0
 * @category conversion
 */
export declare const toCBORBytesWithFormat: (data: TransactionBody, format: CBOR.CBORFormat) => Uint8Array;
/**
 * Convert a TransactionBody to CBOR hex string using an explicit root format tree.
 *
 * @since 2.0.0
 * @category conversion
 */
export declare const toCBORHexWithFormat: (data: TransactionBody, format: CBOR.CBORFormat) => string;
/**
 * FastCheck arbitrary for generating random TransactionBody instances.
 * Used for property-based testing to generate valid test data.
 *
 * Generates basic TransactionBody instances with required fields (inputs, outputs, fee)
 * and optionally includes some other common fields.
 *
 * @since 2.0.0
 * @category arbitrary
 */
/**
 * Compute the transaction body hash (blake2b-256 over CBOR of body).
 *
 * @since 2.0.0
 * @category hashing
 */
export declare const toHash: (body: TransactionBody) => TransactionHash.TransactionHash;
/**
 * Compute the transaction body hash from raw CBOR bytes, preserving original encoding.
 *
 * @since 2.0.0
 * @category hashing
 */
export declare const toHashFromBytes: (bodyBytes: Uint8Array) => TransactionHash.TransactionHash;
export declare const arbitrary: FastCheck.Arbitrary<TransactionBody>;
export {};
//# sourceMappingURL=TransactionBody.d.ts.map