import { Equal, FastCheck, Hash, Inspectable, Schema } from "effect";
import * as Address from "./Address.js";
import * as Assets from "./Assets.js";
import * as CBOR from "./CBOR.js";
import * as DatumHash from "./DatumHash.js";
import * as ScriptRef from "./ScriptRef.js";
declare const TransactionOutput_base: Schema.TaggedClass<TransactionOutput, "TransactionOutput", {
    readonly _tag: Schema.tag<"TransactionOutput">;
} & {
    address: typeof Address.Address;
    assets: Schema.filter<typeof Assets.Assets>;
    datumOption: Schema.optional<Schema.Union<[typeof DatumHash.DatumHash, typeof import("./InlineDatum.js").InlineDatum]>>;
    scriptRef: Schema.optional<typeof ScriptRef.ScriptRef>;
}>;
/**
 * Babbage-era transaction output format
 *
 * CDDL:
 * ```
 * babbage_transaction_output =
 *   {0 : address, 1 : value, ? 2 : datum_option, ? 3 : script_ref}
 * ```
 *
 * @since 2.0.0
 * @category model
 */
export declare class TransactionOutput extends TransactionOutput_base {
    toJSON(): {
        _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;
    };
    toString(): string;
    [Inspectable.NodeInspectSymbol](): unknown;
    [Equal.symbol](that: unknown): boolean;
    [Hash.symbol](): number;
}
/**
 * Shelley-era transaction output CDDL format (array)
 *
 * @since 2.0.0
 * @category schemas
 */
export declare const ShelleyTransactionOutputCDDL: Schema.Tuple<[typeof Schema.Uint8ArrayFromSelf, Schema.SchemaClass<bigint | readonly [bigint, ReadonlyMap<Uint8Array<ArrayBufferLike>, ReadonlyMap<Uint8Array<ArrayBufferLike>, bigint>>], bigint | readonly [bigint, ReadonlyMap<Uint8Array<ArrayBufferLike>, ReadonlyMap<Uint8Array<ArrayBufferLike>, bigint>>], never>, Schema.Element<typeof Schema.Uint8ArrayFromSelf, "?">]>;
/**
 * Babbage-era transaction output CDDL format (map)
 *
 * @since 2.0.0
 * @category schemas
 */
export declare const BabbageTransactionOutputCDDL: Schema.MapFromSelf<typeof Schema.BigIntFromSelf, Schema.Schema<CBOR.CBOR, CBOR.CBOR, never>>;
/**
 * CDDL schema for transaction outputs (union of Shelley and Babbage formats)
 *
 * @since 2.0.0
 * @category schemas
 */
export declare const CDDLSchema: Schema.Union<[Schema.Tuple<[typeof Schema.Uint8ArrayFromSelf, Schema.SchemaClass<bigint | readonly [bigint, ReadonlyMap<Uint8Array<ArrayBufferLike>, ReadonlyMap<Uint8Array<ArrayBufferLike>, bigint>>], bigint | readonly [bigint, ReadonlyMap<Uint8Array<ArrayBufferLike>, ReadonlyMap<Uint8Array<ArrayBufferLike>, bigint>>], never>, Schema.Element<typeof Schema.Uint8ArrayFromSelf, "?">]>, Schema.MapFromSelf<typeof Schema.BigIntFromSelf, Schema.Schema<CBOR.CBOR, CBOR.CBOR, never>>]>;
/**
 * Transformation schema for Shelley transaction outputs
 *
 * @since 2.0.0
 * @category transformation
 */
export declare const FromShelleyTransactionOutputCDDL: Schema.transformOrFail<Schema.Tuple<[typeof Schema.Uint8ArrayFromSelf, Schema.SchemaClass<bigint | readonly [bigint, ReadonlyMap<Uint8Array<ArrayBufferLike>, ReadonlyMap<Uint8Array<ArrayBufferLike>, bigint>>], bigint | readonly [bigint, ReadonlyMap<Uint8Array<ArrayBufferLike>, ReadonlyMap<Uint8Array<ArrayBufferLike>, bigint>>], never>, Schema.Element<typeof Schema.Uint8ArrayFromSelf, "?">]>, Schema.SchemaClass<TransactionOutput, TransactionOutput, never>, never>;
/**
 * Transformation schema for Babbage transaction outputs
 *
 * @since 2.0.0
 * @category transformation
 */
export declare const FromBabbageTransactionOutputCDDL: Schema.transformOrFail<Schema.MapFromSelf<typeof Schema.BigIntFromSelf, Schema.Schema<CBOR.CBOR, CBOR.CBOR, never>>, Schema.SchemaClass<TransactionOutput, TransactionOutput, never>, never>;
/**
 * CDDL transformation schema for transaction outputs (supports both Shelley and Babbage formats)
 *
 * Encoding logic:
 * - Uses Shelley format (array) when no scriptRef and either no datumOption or only DatumHash
 * - Uses Babbage format (map) when scriptRef is present or datumOption contains InlineDatum
 *
 * Decoding: Accepts both formats
 *
 * @since 2.0.0
 * @category transformation
 */
export declare const FromCDDL: Schema.transformOrFail<Schema.Union<[Schema.Tuple<[typeof Schema.Uint8ArrayFromSelf, Schema.SchemaClass<bigint | readonly [bigint, ReadonlyMap<Uint8Array<ArrayBufferLike>, ReadonlyMap<Uint8Array<ArrayBufferLike>, bigint>>], bigint | readonly [bigint, ReadonlyMap<Uint8Array<ArrayBufferLike>, ReadonlyMap<Uint8Array<ArrayBufferLike>, bigint>>], never>, Schema.Element<typeof Schema.Uint8ArrayFromSelf, "?">]>, Schema.MapFromSelf<typeof Schema.BigIntFromSelf, Schema.Schema<CBOR.CBOR, CBOR.CBOR, never>>]>, Schema.SchemaClass<TransactionOutput, TransactionOutput, never>, never>;
/**
 * CBOR bytes transformation schema for TransactionOutput.
 *
 * @since 2.0.0
 * @category transformer
 */
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.Union<[Schema.Tuple<[typeof Schema.Uint8ArrayFromSelf, Schema.SchemaClass<bigint | readonly [bigint, ReadonlyMap<Uint8Array<ArrayBufferLike>, ReadonlyMap<Uint8Array<ArrayBufferLike>, bigint>>], bigint | readonly [bigint, ReadonlyMap<Uint8Array<ArrayBufferLike>, ReadonlyMap<Uint8Array<ArrayBufferLike>, bigint>>], never>, Schema.Element<typeof Schema.Uint8ArrayFromSelf, "?">]>, Schema.MapFromSelf<typeof Schema.BigIntFromSelf, Schema.Schema<CBOR.CBOR, CBOR.CBOR, never>>]>, Schema.SchemaClass<TransactionOutput, TransactionOutput, never>, never>>;
/**
 * CBOR hex transformation schema for TransactionOutput.
 *
 * @since 2.0.0
 * @category transformer
 */
export declare const FromCBORHex: (options?: CBOR.CodecOptions) => Schema.transform<Schema.Schema<Uint8Array<ArrayBufferLike>, string, never>, Schema.transform<Schema.transformOrFail<typeof Schema.Uint8ArrayFromSelf, Schema.declare<CBOR.CBOR, CBOR.CBOR, readonly [], never>, never>, Schema.transformOrFail<Schema.Union<[Schema.Tuple<[typeof Schema.Uint8ArrayFromSelf, Schema.SchemaClass<bigint | readonly [bigint, ReadonlyMap<Uint8Array<ArrayBufferLike>, ReadonlyMap<Uint8Array<ArrayBufferLike>, bigint>>], bigint | readonly [bigint, ReadonlyMap<Uint8Array<ArrayBufferLike>, ReadonlyMap<Uint8Array<ArrayBufferLike>, bigint>>], never>, Schema.Element<typeof Schema.Uint8ArrayFromSelf, "?">]>, Schema.MapFromSelf<typeof Schema.BigIntFromSelf, Schema.Schema<CBOR.CBOR, CBOR.CBOR, never>>]>, Schema.SchemaClass<TransactionOutput, TransactionOutput, never>, never>>>;
/**
 * @since 2.0.0
 * @category arbitrary
 */
export declare const arbitrary: FastCheck.Arbitrary<TransactionOutput>;
/**
 * Convert TransactionOutput to CBOR bytes.
 *
 * @since 2.0.0
 * @category encoding
 */
export declare const toCBORBytes: (data: TransactionOutput, options?: CBOR.CodecOptions) => Uint8Array<ArrayBufferLike>;
/**
 * Convert TransactionOutput to CBOR hex.
 *
 * @since 2.0.0
 * @category encoding
 */
export declare const toCBORHex: (data: TransactionOutput, options?: CBOR.CodecOptions) => string;
/**
 * Parse TransactionOutput from CBOR bytes.
 *
 * @since 2.0.0
 * @category decoding
 */
export declare const fromCBORBytes: (bytes: Uint8Array, options?: CBOR.CodecOptions) => TransactionOutput;
/**
 * Parse TransactionOutput from CBOR hex.
 *
 * @since 2.0.0
 * @category decoding
 */
export declare const fromCBORHex: (hex: string, options?: CBOR.CodecOptions) => TransactionOutput;
export {};
//# sourceMappingURL=TxOut.d.ts.map