import { Equal, FastCheck, Hash, Inspectable, Schema } from "effect";
import type * as Script from "./Script.js";
declare const ScriptHash_base: Schema.TaggedClass<ScriptHash, "ScriptHash", {
    readonly _tag: Schema.tag<"ScriptHash">;
} & {
    hash: Schema.filter<Schema.Schema<Uint8Array<ArrayBufferLike>, string, never>>;
}>;
/**
 * Schema for ScriptHash representing a script hash credential.
 * ```
 * script_hash = hash28
 * ```
 * Follows CIP-0019 binary representation.
 *
 * Stores raw 28-byte value for performance.
 *
 * @since 2.0.0
 * @category schemas
 */
export declare class ScriptHash extends ScriptHash_base {
    toJSON(): {
        _tag: "ScriptHash";
        hash: string;
    };
    toString(): string;
    [Inspectable.NodeInspectSymbol](): unknown;
    [Equal.symbol](that: unknown): boolean;
    [Hash.symbol](): number;
}
/**
 * Schema for transforming between Uint8Array and ScriptHash.
 *
 * @since 2.0.0
 * @category schemas
 */
export declare const FromBytes: Schema.transform<Schema.SchemaClass<Uint8Array<ArrayBufferLike>, Uint8Array<ArrayBufferLike>, never>, Schema.SchemaClass<ScriptHash, ScriptHash, never>>;
/**
 * Schema for transforming between hex string and ScriptHash.
 *
 * @since 2.0.0
 * @category schemas
 */
export declare const FromHex: Schema.transform<Schema.filter<Schema.Schema<Uint8Array<ArrayBufferLike>, string, never>>, Schema.transform<Schema.SchemaClass<Uint8Array<ArrayBufferLike>, Uint8Array<ArrayBufferLike>, never>, Schema.SchemaClass<ScriptHash, ScriptHash, never>>>;
/**
 * Parse a ScriptHash from raw bytes.
 * Expects exactly 28 bytes.
 *
 * @since 2.0.0
 * @category parsing
 */
export declare const fromBytes: (i: Uint8Array<ArrayBufferLike>, overrideOptions?: import("effect/SchemaAST").ParseOptions) => ScriptHash;
/**
 * Parse a ScriptHash from a hex string.
 * Expects exactly 56 hex characters (28 bytes).
 *
 * @since 2.0.0
 * @category parsing
 */
export declare const fromHex: (i: string, overrideOptions?: import("effect/SchemaAST").ParseOptions) => ScriptHash;
/**
 * Convert a ScriptHash to raw bytes.
 *
 * @since 2.0.0
 * @category encoding
 */
export declare const toBytes: (a: ScriptHash, overrideOptions?: import("effect/SchemaAST").ParseOptions) => Uint8Array<ArrayBufferLike>;
/**
 * Convert a ScriptHash to a hex string.
 *
 * @since 2.0.0
 * @category encoding
 */
export declare const toHex: (a: ScriptHash, overrideOptions?: import("effect/SchemaAST").ParseOptions) => string;
/**
 * Schema transformer from bech32 string (script1...) to ScriptHash.
 * Uses the CIP-0005 `script` prefix for script hashes.
 *
 * @since 2.0.0
 * @category schemas
 */
export declare const FromBech32: Schema.transformOrFail<typeof Schema.String, Schema.SchemaClass<ScriptHash, ScriptHash, never>, never>;
/**
 * Parse a ScriptHash from a bech32 string (script1...).
 *
 * @since 2.0.0
 * @category parsing
 */
export declare const fromBech32: (i: string, overrideOptions?: import("effect/SchemaAST").ParseOptions) => ScriptHash;
/**
 * Convert a ScriptHash to a bech32 string (script1...).
 *
 * @since 2.0.0
 * @category encoding
 */
export declare const toBech32: (a: ScriptHash, overrideOptions?: import("effect/SchemaAST").ParseOptions) => string;
/**
 * FastCheck arbitrary for generating random ScriptHash instances.
 * Used for property-based testing to generate valid test data.
 *
 * @since 2.0.0
 * @category arbitrary
 */
export declare const arbitrary: FastCheck.Arbitrary<ScriptHash>;
/**
 * Compute a script hash (policy id) from any Script variant.
 *
 * Conway-era rule: prepend a 1-byte language tag to the script bytes, then hash with blake2b-224.
 * - 0x00: native/multisig (hash over CBOR of native_script)
 * - 0x01: Plutus V1 (hash over raw script bytes)
 * - 0x02: Plutus V2 (hash over raw script bytes)
 * - 0x03: Plutus V3 (hash over raw script bytes)
 *
 * @since 2.0.0
 * @category computation
 */
export declare const fromScript: (script: Script.Script) => ScriptHash;
export {};
//# sourceMappingURL=ScriptHash.d.ts.map