import { Equal, FastCheck, Hash, Inspectable, Schema } from "effect";
import * as AuxiliaryDataHash from "./AuxiliaryDataHash.js";
import * as CBOR from "./CBOR.js";
import * as Metadata from "./Metadata.js";
import * as NativeScripts from "./NativeScripts.js";
import * as PlutusV1 from "./PlutusV1.js";
import * as PlutusV2 from "./PlutusV2.js";
import * as PlutusV3 from "./PlutusV3.js";
import * as TransactionMetadatum from "./TransactionMetadatum.js";
declare const ConwayAuxiliaryData_base: Schema.TaggedClass<ConwayAuxiliaryData, "ConwayAuxiliaryData", {
    readonly _tag: Schema.tag<"ConwayAuxiliaryData">;
} & {
    metadata: Schema.optional<Schema.SchemaClass<Map<bigint, string | bigint | Uint8Array<ArrayBufferLike> | Map<TransactionMetadatum.TransactionMetadatum, TransactionMetadatum.TransactionMetadatum> | readonly TransactionMetadatum.TransactionMetadatum[]>, Map<bigint, string | bigint | Uint8Array<ArrayBufferLike> | Map<TransactionMetadatum.TransactionMetadatum, TransactionMetadatum.TransactionMetadatum> | readonly TransactionMetadatum.TransactionMetadatum[]>, never>>;
    nativeScripts: Schema.optional<Schema.Array$<typeof NativeScripts.NativeScript>>;
    plutusV1Scripts: Schema.optional<Schema.Array$<typeof PlutusV1.PlutusV1>>;
    plutusV2Scripts: Schema.optional<Schema.Array$<typeof PlutusV2.PlutusV2>>;
    plutusV3Scripts: Schema.optional<Schema.Array$<typeof PlutusV3.PlutusV3>>;
}>;
/**
 * AuxiliaryData based on Conway CDDL specification.
 *
 * CDDL (Conway era):
 * ```
 * auxiliary_data = {
 *   ? 0 => metadata           ; transaction_metadata
 *   ? 1 => [* native_script]  ; native_scripts
 *   ? 2 => [* plutus_v1_script] ; plutus_v1_scripts
 *   ? 3 => [* plutus_v2_script] ; plutus_v2_scripts
 *   ? 4 => [* plutus_v3_script] ; plutus_v3_scripts
 * }
 * ```
 *
 * Uses map format with numeric keys as per Conway specification.
 *
 * @since 2.0.0
 * @category model
 */
export declare class ConwayAuxiliaryData extends ConwayAuxiliaryData_base {
    /**
     * @since 2.0.0
     * @category json
     */
    toJSON(): {
        _tag: "ConwayAuxiliaryData";
        metadata: Map<bigint, string | bigint | Uint8Array<ArrayBufferLike> | Map<TransactionMetadatum.TransactionMetadatum, TransactionMetadatum.TransactionMetadatum> | readonly TransactionMetadatum.TransactionMetadatum[]> | undefined;
        nativeScripts: readonly NativeScripts.NativeScript[] | undefined;
        plutusV1Scripts: readonly PlutusV1.PlutusV1[] | undefined;
        plutusV2Scripts: readonly PlutusV2.PlutusV2[] | undefined;
        plutusV3Scripts: readonly PlutusV3.PlutusV3[] | undefined;
    };
    /**
     * @since 2.0.0
     * @category string
     */
    toString(): string;
    /**
     * @since 2.0.0
     * @category inspect
     */
    [Inspectable.NodeInspectSymbol](): unknown;
    /**
     * @since 2.0.0
     * @category equality
     */
    [Equal.symbol](that: unknown): boolean;
    /**
     * @since 2.0.0
     * @category hash
     */
    [Hash.symbol](): number;
}
declare const ShelleyMAAuxiliaryData_base: Schema.TaggedClass<ShelleyMAAuxiliaryData, "ShelleyMAAuxiliaryData", {
    readonly _tag: Schema.tag<"ShelleyMAAuxiliaryData">;
} & {
    metadata: Schema.optional<Schema.SchemaClass<Map<bigint, string | bigint | Uint8Array<ArrayBufferLike> | Map<TransactionMetadatum.TransactionMetadatum, TransactionMetadatum.TransactionMetadatum> | readonly TransactionMetadatum.TransactionMetadatum[]>, Map<bigint, string | bigint | Uint8Array<ArrayBufferLike> | Map<TransactionMetadatum.TransactionMetadatum, TransactionMetadatum.TransactionMetadatum> | readonly TransactionMetadatum.TransactionMetadatum[]>, never>>;
    nativeScripts: Schema.optional<Schema.Array$<typeof NativeScripts.NativeScript>>;
}>;
/**
 * AuxiliaryData for ShelleyMA era (array format).
 *
 * CDDL (ShelleyMA era):
 * ```
 * auxiliary_data = [ metadata?, [* native_script]? ]
 * ```
 *
 * @since 2.0.0
 * @category model
 */
export declare class ShelleyMAAuxiliaryData extends ShelleyMAAuxiliaryData_base {
    /**
     * @since 2.0.0
     * @category json
     */
    toJSON(): {
        _tag: "ShelleyMAAuxiliaryData";
        metadata: Map<bigint, string | bigint | Uint8Array<ArrayBufferLike> | Map<TransactionMetadatum.TransactionMetadatum, TransactionMetadatum.TransactionMetadatum> | readonly TransactionMetadatum.TransactionMetadatum[]> | undefined;
        nativeScripts: readonly NativeScripts.NativeScript[] | undefined;
    };
    /**
     * @since 2.0.0
     * @category string
     */
    toString(): string;
    /**
     * @since 2.0.0
     * @category inspect
     */
    [Inspectable.NodeInspectSymbol](): unknown;
    /**
     * @since 2.0.0
     * @category equality
     */
    [Equal.symbol](that: unknown): boolean;
    /**
     * @since 2.0.0
     * @category hash
     */
    [Hash.symbol](): number;
}
declare const ShelleyAuxiliaryData_base: Schema.TaggedClass<ShelleyAuxiliaryData, "ShelleyAuxiliaryData", {
    readonly _tag: Schema.tag<"ShelleyAuxiliaryData">;
} & {
    metadata: Schema.SchemaClass<Map<bigint, string | bigint | Uint8Array<ArrayBufferLike> | Map<TransactionMetadatum.TransactionMetadatum, TransactionMetadatum.TransactionMetadatum> | readonly TransactionMetadatum.TransactionMetadatum[]>, Map<bigint, string | bigint | Uint8Array<ArrayBufferLike> | Map<TransactionMetadatum.TransactionMetadatum, TransactionMetadatum.TransactionMetadatum> | readonly TransactionMetadatum.TransactionMetadatum[]>, never>;
}>;
/**
 * AuxiliaryData for Shelley era (direct metadata).
 *
 * CDDL (Shelley era):
 * ```
 * auxiliary_data = metadata
 * ```
 *
 * @since 2.0.0
 * @category model
 */
export declare class ShelleyAuxiliaryData extends ShelleyAuxiliaryData_base {
    /**
     * @since 2.0.0
     * @category json
     */
    toJSON(): {
        _tag: "ShelleyAuxiliaryData";
        metadata: Map<bigint, string | bigint | Uint8Array<ArrayBufferLike> | Map<TransactionMetadatum.TransactionMetadatum, TransactionMetadatum.TransactionMetadatum> | readonly TransactionMetadatum.TransactionMetadatum[]>;
    };
    /**
     * @since 2.0.0
     * @category string
     */
    toString(): string;
    /**
     * @since 2.0.0
     * @category inspect
     */
    [Inspectable.NodeInspectSymbol](): unknown;
    /**
     * @since 2.0.0
     * @category equality
     */
    [Equal.symbol](that: unknown): boolean;
    /**
     * @since 2.0.0
     * @category hash
     */
    [Hash.symbol](): number;
}
/**
 * Union of all AuxiliaryData era formats.
 *
 * @since 2.0.0
 * @category model
 */
export declare const AuxiliaryData: Schema.Union<[typeof ConwayAuxiliaryData, typeof ShelleyMAAuxiliaryData, typeof ShelleyAuxiliaryData]>;
/**
 * Type representing any AuxiliaryData format.
 *
 * @since 2.0.0
 * @category model
 */
export type AuxiliaryData = Schema.Schema.Type<typeof AuxiliaryData>;
/**
 * Tagged CDDL schema for AuxiliaryData (#6.259 wrapping the struct).
 *
 * @since 2.0.0
 * @category schemas
 */
export declare const CDDLSchema: Schema.TaggedStruct<"Tag", {
    tag: Schema.Literal<[259]>;
    value: Schema.MapFromSelf<typeof Schema.BigIntFromSelf, Schema.Schema<CBOR.CBOR, CBOR.CBOR, never>>;
}>;
export declare const FromCDDL: Schema.transformOrFail<Schema.Union<[Schema.TaggedStruct<"Tag", {
    tag: Schema.Literal<[259]>;
    value: Schema.MapFromSelf<typeof Schema.BigIntFromSelf, Schema.Schema<CBOR.CBOR, CBOR.CBOR, never>>;
}>, Schema.Array$<Schema.suspend<CBOR.CBOR, CBOR.CBOR, never>>, Schema.MapFromSelf<typeof Schema.BigIntFromSelf, Schema.suspend<string | bigint | Uint8Array<ArrayBufferLike> | Map<TransactionMetadatum.TransactionMetadatum, TransactionMetadatum.TransactionMetadatum> | readonly TransactionMetadatum.TransactionMetadatum[], string | bigint | Uint8Array<ArrayBufferLike> | Map<TransactionMetadatum.TransactionMetadatum, TransactionMetadatum.TransactionMetadatum> | readonly TransactionMetadatum.TransactionMetadatum[], never>>]>, Schema.SchemaClass<ConwayAuxiliaryData | ShelleyMAAuxiliaryData | ShelleyAuxiliaryData, ConwayAuxiliaryData | ShelleyMAAuxiliaryData | ShelleyAuxiliaryData, never>, never>;
/**
 * CBOR bytes transformation schema for AuxiliaryData.
 * Transforms between CBOR bytes and AuxiliaryData using CDDL format.
 *
 * @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.Union<[Schema.TaggedStruct<"Tag", {
    tag: Schema.Literal<[259]>;
    value: Schema.MapFromSelf<typeof Schema.BigIntFromSelf, Schema.Schema<CBOR.CBOR, CBOR.CBOR, never>>;
}>, Schema.Array$<Schema.suspend<CBOR.CBOR, CBOR.CBOR, never>>, Schema.MapFromSelf<typeof Schema.BigIntFromSelf, Schema.suspend<string | bigint | Uint8Array<ArrayBufferLike> | Map<TransactionMetadatum.TransactionMetadatum, TransactionMetadatum.TransactionMetadatum> | readonly TransactionMetadatum.TransactionMetadatum[], string | bigint | Uint8Array<ArrayBufferLike> | Map<TransactionMetadatum.TransactionMetadatum, TransactionMetadatum.TransactionMetadatum> | readonly TransactionMetadatum.TransactionMetadatum[], never>>]>, Schema.SchemaClass<ConwayAuxiliaryData | ShelleyMAAuxiliaryData | ShelleyAuxiliaryData, ConwayAuxiliaryData | ShelleyMAAuxiliaryData | ShelleyAuxiliaryData, never>, never>>;
/**
 * CBOR hex transformation schema for AuxiliaryData.
 * Transforms between CBOR hex string and AuxiliaryData using CDDL format.
 *
 * @since 2.0.0
 * @category schemas
 */
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.TaggedStruct<"Tag", {
    tag: Schema.Literal<[259]>;
    value: Schema.MapFromSelf<typeof Schema.BigIntFromSelf, Schema.Schema<CBOR.CBOR, CBOR.CBOR, never>>;
}>, Schema.Array$<Schema.suspend<CBOR.CBOR, CBOR.CBOR, never>>, Schema.MapFromSelf<typeof Schema.BigIntFromSelf, Schema.suspend<string | bigint | Uint8Array<ArrayBufferLike> | Map<TransactionMetadatum.TransactionMetadatum, TransactionMetadatum.TransactionMetadatum> | readonly TransactionMetadatum.TransactionMetadatum[], string | bigint | Uint8Array<ArrayBufferLike> | Map<TransactionMetadatum.TransactionMetadatum, TransactionMetadatum.TransactionMetadatum> | readonly TransactionMetadatum.TransactionMetadatum[], never>>]>, Schema.SchemaClass<ConwayAuxiliaryData | ShelleyMAAuxiliaryData | ShelleyAuxiliaryData, ConwayAuxiliaryData | ShelleyMAAuxiliaryData | ShelleyAuxiliaryData, never>, never>>>;
/**
 * Create an empty Conway AuxiliaryData instance.
 *
 * @since 2.0.0
 * @category constructors
 */
export declare const emptyConwayAuxiliaryData: () => AuxiliaryData;
/**
 * Backwards-friendly helper returning empty Conway-format auxiliary data.
 * Alias kept for ergonomics and CML-compat tests.
 */
export declare const empty: () => AuxiliaryData;
/**
 * Create a Conway-era AuxiliaryData instance.
 *
 * @since 2.0.0
 * @category constructors
 */
export declare const conway: (input: {
    metadata?: Metadata.Metadata;
    nativeScripts?: Array<NativeScripts.NativeScript>;
    plutusV1Scripts?: Array<PlutusV1.PlutusV1>;
    plutusV2Scripts?: Array<PlutusV2.PlutusV2>;
    plutusV3Scripts?: Array<PlutusV3.PlutusV3>;
}) => AuxiliaryData;
/**
 * Create a ShelleyMA-era AuxiliaryData instance.
 *
 * @since 2.0.0
 * @category constructors
 */
export declare const shelleyMA: (input: {
    metadata?: Metadata.Metadata;
    nativeScripts?: Array<NativeScripts.NativeScript>;
}) => AuxiliaryData;
/**
 * Create a Shelley-era AuxiliaryData instance.
 *
 * @since 2.0.0
 * @category constructors
 */
export declare const shelley: (input: {
    metadata: Metadata.Metadata;
}) => AuxiliaryData;
/**
 * FastCheck arbitrary for generating Conway-era AuxiliaryData instances.
 * Conway era supports all features: metadata, native scripts, and all Plutus script versions.
 *
 * @since 2.0.0
 * @category arbitrary
 */
export declare const conwayArbitrary: FastCheck.Arbitrary<ConwayAuxiliaryData>;
export declare const shelleyMAArbitrary: FastCheck.Arbitrary<ShelleyMAAuxiliaryData>;
export declare const shelleyArbitrary: FastCheck.Arbitrary<ShelleyAuxiliaryData>;
/**
 * FastCheck arbitrary for generating random AuxiliaryData instances.
 * Generates all three era formats with equal probability.
 *
 * @since 2.0.0
 * @category arbitrary
 */
export declare const arbitrary: FastCheck.Arbitrary<AuxiliaryData>;
/**
 * Decode AuxiliaryData from CBOR bytes.
 *
 * @since 2.0.0
 * @category parsing
 */
export declare const fromCBORBytes: (bytes: Uint8Array, options?: CBOR.CodecOptions) => ConwayAuxiliaryData | ShelleyMAAuxiliaryData | ShelleyAuxiliaryData;
/**
 * Decode AuxiliaryData from CBOR hex string.
 *
 * @since 2.0.0
 * @category parsing
 */
export declare const fromCBORHex: (hex: string, options?: CBOR.CodecOptions) => ConwayAuxiliaryData | ShelleyMAAuxiliaryData | ShelleyAuxiliaryData;
/**
 * Encode AuxiliaryData to CBOR bytes.
 *
 * @since 2.0.0
 * @category encoding
 */
export declare const toCBORBytes: (data: AuxiliaryData, options?: CBOR.CodecOptions) => Uint8Array<ArrayBufferLike>;
/**
 * Encode AuxiliaryData to CBOR hex string.
 *
 * @since 2.0.0
 * @category encoding
 */
export declare const toCBORHex: (data: AuxiliaryData, options?: CBOR.CodecOptions) => string;
/**
 * Compute hash of auxiliary data (tag 259) per ledger rules.
 *
 * @since 2.0.0
 * @category hashing
 */
export declare const toHash: (aux: AuxiliaryData) => AuxiliaryDataHash.AuxiliaryDataHash;
export {};
//# sourceMappingURL=AuxiliaryData.d.ts.map