import { Equal, FastCheck, Hash, Inspectable, Schema } from "effect";
import * as AuxiliaryData from "./AuxiliaryData.js";
import * as CBOR from "./CBOR.js";
import * as TransactionBody from "./TransactionBody.js";
import * as TransactionWitnessSet from "./TransactionWitnessSet.js";
declare const Transaction_base: Schema.TaggedClass<Transaction, "Transaction", {
    readonly _tag: Schema.tag<"Transaction">;
} & {
    body: typeof TransactionBody.TransactionBody;
    witnessSet: typeof TransactionWitnessSet.TransactionWitnessSet;
    isValid: typeof Schema.Boolean;
    auxiliaryData: Schema.NullOr<Schema.Union<[typeof AuxiliaryData.ConwayAuxiliaryData, typeof AuxiliaryData.ShelleyMAAuxiliaryData, typeof AuxiliaryData.ShelleyAuxiliaryData]>>;
}>;
/**
 * Transaction based on Conway CDDL specification
 *
 * CDDL: transaction =
 *   [transaction_body, transaction_witness_set, bool, auxiliary_data / nil]
 *
 * @since 2.0.0
 * @category model
 */
export declare class Transaction extends Transaction_base {
    toJSON(): {
        _tag: "Transaction";
        body: {
            _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: import("./Anchor.js").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: import("./Anchor.js").Anchor | null | undefined;
            } | {
                _tag: "ResignCommitteeColdCert";
                committeeColdCredential: {
                    _tag: "KeyHash";
                    hash: string;
                } | {
                    _tag: "ScriptHash";
                    hash: string;
                };
                anchor: import("./Anchor.js").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: import("./KeyHash.js").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 [import("./KeyHash.js").KeyHash, ...import("./KeyHash.js").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: import("./RewardAccount.js").RewardAccount;
                    governanceAction: import("./GovernanceAction.js").ParameterChangeAction | import("./GovernanceAction.js").HardForkInitiationAction | import("./GovernanceAction.js").TreasuryWithdrawalsAction | import("./GovernanceAction.js").NoConfidenceAction | import("./GovernanceAction.js").UpdateCommitteeAction | import("./GovernanceAction.js").NewConstitutionAction | import("./GovernanceAction.js").InfoAction | {
                        _tag: "ParameterChangeAction";
                        govActionId: import("./GovernanceAction.js").GovActionId | null;
                        protocolParamUpdate: import("./ProtocolParamUpdate.js").ProtocolParamUpdate;
                        policyHash: import("./ScriptHash.js").ScriptHash | null;
                    } | {
                        _tag: "HardForkInitiationAction";
                        govActionId: import("./GovernanceAction.js").GovActionId | null;
                        protocolVersion: import("./ProtocolVersion.js").ProtocolVersion;
                    } | {
                        _tag: "TreasuryWithdrawalsAction";
                        withdrawals: Map<import("./RewardAccount.js").RewardAccount, bigint>;
                        policyHash: import("./ScriptHash.js").ScriptHash | null;
                    } | {
                        _tag: "NoConfidenceAction";
                        govActionId: import("./GovernanceAction.js").GovActionId | null;
                    } | {
                        _tag: "UpdateCommitteeAction";
                        govActionId: import("./GovernanceAction.js").GovActionId | null;
                        membersToRemove: readonly (import("./KeyHash.js").KeyHash | import("./ScriptHash.js").ScriptHash)[];
                        membersToAdd: Map<import("./KeyHash.js").KeyHash | import("./ScriptHash.js").ScriptHash, bigint>;
                        threshold: import("./UnitInterval.js").UnitInterval;
                    } | {
                        _tag: "NewConstitutionAction";
                        govActionId: import("./GovernanceAction.js").GovActionId | null;
                        constitution: import("./Constitution.js").Constitution;
                    } | {
                        _tag: "InfoAction";
                    };
                    anchor: import("./Anchor.js").Anchor | {
                        _tag: "Anchor";
                        anchorUrl: string;
                        anchorDataHash: string;
                    } | null;
                }[];
            } | undefined;
            currentTreasuryValue: string | undefined;
            donation: string | undefined;
        };
        witnessSet: {
            _tag: "TransactionWitnessSet";
            vkeyWitnesses: {
                _tag: "VKeyWitness";
                vkey: import("./VKey.js").VKey;
                signature: import("./Ed25519Signature.js").Ed25519Signature;
            }[] | undefined;
            nativeScripts: {
                readonly _tag: "NativeScript";
                readonly script: import("./NativeScripts.js").NativeScriptEncoded;
            }[] | undefined;
            bootstrapWitnesses: {
                _tag: string;
                publicKey: import("./VKey.js").VKey;
                signature: import("./Ed25519Signature.js").Ed25519Signature;
                chainCode: Uint8Array<ArrayBufferLike>;
                attributes: Uint8Array<ArrayBufferLike>;
            }[] | undefined;
            plutusV1Scripts: readonly import("./PlutusV1.js").PlutusV1[] | undefined;
            plutusData: readonly import("./Data.js").Data[] | undefined;
            redeemers: {
                _tag: "RedeemerMap";
                entries: {
                    key: {
                        tag: "vote" | "mint" | "spend" | "cert" | "reward" | "propose";
                        index: string;
                    };
                    value: {
                        data: import("./Data.js").Data;
                        exUnits: {
                            mem: string;
                            steps: string;
                        };
                    };
                }[];
            } | {
                _tag: "RedeemerArray";
                value: {
                    _tag: string;
                    tag: "vote" | "mint" | "spend" | "cert" | "reward" | "propose";
                    index: string;
                    data: import("./Data.js").Data;
                    exUnits: {
                        mem: string;
                        steps: string;
                    };
                }[];
            } | undefined;
            plutusV2Scripts: readonly import("./PlutusV2.js").PlutusV2[] | undefined;
            plutusV3Scripts: readonly import("./PlutusV3.js").PlutusV3[] | undefined;
        };
        isValid: boolean;
        auxiliaryData: {
            _tag: "ShelleyAuxiliaryData";
            metadata: Map<bigint, string | bigint | Uint8Array<ArrayBufferLike> | Map<import("./TransactionMetadatum.js").TransactionMetadatum, import("./TransactionMetadatum.js").TransactionMetadatum> | readonly import("./TransactionMetadatum.js").TransactionMetadatum[]>;
        } | {
            _tag: "ShelleyMAAuxiliaryData";
            metadata: Map<bigint, string | bigint | Uint8Array<ArrayBufferLike> | Map<import("./TransactionMetadatum.js").TransactionMetadatum, import("./TransactionMetadatum.js").TransactionMetadatum> | readonly import("./TransactionMetadatum.js").TransactionMetadatum[]> | undefined;
            nativeScripts: readonly import("./NativeScripts.js").NativeScript[] | undefined;
        } | {
            _tag: "ConwayAuxiliaryData";
            metadata: Map<bigint, string | bigint | Uint8Array<ArrayBufferLike> | Map<import("./TransactionMetadatum.js").TransactionMetadatum, import("./TransactionMetadatum.js").TransactionMetadatum> | readonly import("./TransactionMetadatum.js").TransactionMetadatum[]> | undefined;
            nativeScripts: readonly import("./NativeScripts.js").NativeScript[] | undefined;
            plutusV1Scripts: readonly import("./PlutusV1.js").PlutusV1[] | undefined;
            plutusV2Scripts: readonly import("./PlutusV2.js").PlutusV2[] | undefined;
            plutusV3Scripts: readonly import("./PlutusV3.js").PlutusV3[] | undefined;
        } | null;
    };
    toString(): string;
    [Inspectable.NodeInspectSymbol](): unknown;
    [Equal.symbol](that: unknown): boolean;
    [Hash.symbol](): number;
}
/**
 * Conway CDDL schema for Transaction tuple structure.
 *
 * CDDL: transaction = [transaction_body, transaction_witness_set, bool, auxiliary_data / nil]
 */
export declare const CDDLSchema: Schema.declare<readonly [Map<bigint, CBOR.CBOR>, Map<bigint, CBOR.CBOR>, boolean, CBOR.CBOR], readonly [Map<bigint, CBOR.CBOR>, Map<bigint, CBOR.CBOR>, boolean, CBOR.CBOR], readonly [], never>;
/**
 * Transform between CDDL tuple and Transaction class.
 */
export declare const FromCDDL: Schema.transformOrFail<Schema.declare<readonly [Map<bigint, CBOR.CBOR>, Map<bigint, CBOR.CBOR>, boolean, CBOR.CBOR], readonly [Map<bigint, CBOR.CBOR>, Map<bigint, CBOR.CBOR>, boolean, CBOR.CBOR], readonly [], never>, Schema.SchemaClass<Transaction, Transaction, never>, never>;
/**
 * CBOR bytes transformation schema for Transaction.
 */
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<readonly [Map<bigint, CBOR.CBOR>, Map<bigint, CBOR.CBOR>, boolean, CBOR.CBOR], readonly [Map<bigint, CBOR.CBOR>, Map<bigint, CBOR.CBOR>, boolean, CBOR.CBOR], readonly [], never>, Schema.SchemaClass<Transaction, Transaction, never>, never>>;
/**
 * CBOR hex transformation schema for Transaction.
 */
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<readonly [Map<bigint, CBOR.CBOR>, Map<bigint, CBOR.CBOR>, boolean, CBOR.CBOR], readonly [Map<bigint, CBOR.CBOR>, Map<bigint, CBOR.CBOR>, boolean, CBOR.CBOR], readonly [], never>, Schema.SchemaClass<Transaction, Transaction, never>, never>>;
export declare const fromCBORBytes: (bytes: Uint8Array, options?: CBOR.CodecOptions) => Transaction;
export declare const fromCBORHex: (hex: string, options?: CBOR.CodecOptions) => Transaction;
/**
 * Parse a Transaction from CBOR bytes and return the root format tree.
 *
 * @since 2.0.0
 * @category parsing
 */
export declare const fromCBORBytesWithFormat: (bytes: Uint8Array) => CBOR.DecodedWithFormat<Transaction>;
/**
 * Parse a Transaction from CBOR hex string and return the root format tree.
 *
 * @since 2.0.0
 * @category parsing
 */
export declare const fromCBORHexWithFormat: (hex: string) => CBOR.DecodedWithFormat<Transaction>;
export declare const toCBORBytes: (data: Transaction, options?: CBOR.CodecOptions) => Uint8Array;
export declare const toCBORHex: (data: Transaction, options?: CBOR.CodecOptions) => string;
/**
 * Convert a Transaction to CBOR bytes using an explicit root format tree.
 *
 * @since 2.0.0
 * @category encoding
 */
export declare const toCBORBytesWithFormat: (data: Transaction, format: CBOR.CBORFormat) => Uint8Array;
/**
 * Convert a Transaction to CBOR hex string using an explicit root format tree.
 *
 * @since 2.0.0
 * @category encoding
 */
export declare const toCBORHexWithFormat: (data: Transaction, format: CBOR.CBORFormat) => string;
/**
 * Merge wallet vkey witnesses into a transaction, preserving CBOR encoding.
 *
 * Uses the WithFormat round-trip: decode with format capture, mutate at the
 * domain level, re-encode with the original format tree. Body encoding,
 * redeemer bytes, map key ordering, and all non-witness data are preserved
 * through the format tree reconciliation.
 *
 * `options` applies only to parsing the wallet witness set bytes. Transaction
 * decoding and re-encoding are governed by the captured format tree, making
 * codec options irrelevant for the transaction round-trip path.
 *
 * @since 2.0.0
 * @category encoding
 */
export declare const addVKeyWitnessesBytes: (txBytes: Uint8Array, walletWitnessSetBytes: Uint8Array, options?: CBOR.CodecOptions) => Uint8Array;
/**
 * Hex variant of `addVKeyWitnessesBytes`.
 *
 * @since 2.0.0
 * @category encoding
 */
export declare const addVKeyWitnessesHex: (txHex: string, walletWitnessSetHex: string, options?: CBOR.CodecOptions) => string;
/**
 * Extract the original body bytes from a raw transaction CBOR byte array.
 * A Cardano transaction is a 4-element CBOR array: `[body, witnessSet, isValid, auxiliaryData]`.
 * This returns the raw body bytes without decoding/re-encoding, preserving the exact CBOR encoding.
 *
 * @since 2.0.0
 * @category encoding
 */
export declare const extractBodyBytes: (txBytes: Uint8Array) => Uint8Array;
/**
 * Add VKey witnesses to a transaction at the domain level.
 *
 * This creates a new Transaction with the additional witnesses merged in.
 * All encoding metadata (body bytes, redeemers format, witness map structure)
 * is preserved so that txId and scriptDataHash remain stable.
 *
 * @since 2.0.0
 * @category encoding
 */
export declare const addVKeyWitnesses: (tx: Transaction, witnesses: ReadonlyArray<TransactionWitnessSet.VKeyWitness>) => Transaction;
export declare const arbitrary: FastCheck.Arbitrary<Transaction>;
export {};
//# sourceMappingURL=Transaction.d.ts.map