import { FastCheck, Inspectable, Schema } from "effect"; /** * CDDL specs * hash32 = bytes .size 32 */ /** * The length in bytes of a DatumHash. * * @since 2.0.0 * @category constants */ export declare const DATUM_HASH_BYTES_LENGTH = 32; /** * The length in hex characters of a DatumHash. * * @since 2.0.0 * @category constants */ export declare const DATUM_HASH_HEX_LENGTH = 64; declare const DatumHashError_base: new = {}>(args: import("effect/Types").Equals extends true ? void : { readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }) => import("effect/Cause").YieldableError & { readonly _tag: "DatumHashError"; } & Readonly; /** * Error class for DatumHash related operations. * * @example * import { DatumHash } from "@lucid-evolution/experimental"; * import assert from "assert"; * * const error = new DatumHash.DatumHashError({ message: "Invalid datum hash" }); * assert(error.message === "Invalid datum hash"); * * @since 2.0.0 * @category errors */ export declare class DatumHashError extends DatumHashError_base<{ message?: string; reason?: "InvalidHexLength" | "InvalidBytesLength" | "InvalidHexFormat" | "InvalidCBORFormat"; }> { } /** * Schema for validating hex strings as datum hashes * * @since 2.0.0 * @category schemas */ export declare const Hash: Schema.refine, Schema.SchemaClass, string & import("effect/Brand").Brand<"HexString">, never>>; declare const DatumHash_base: Schema.TaggedClass; } & { hash: Schema.refine, Schema.SchemaClass, string & import("effect/Brand").Brand<"HexString">, never>>; }>; /** * Schema for a 32-byte datum hash * * @since 2.0.0 * @category schemas */ export declare class DatumHash extends DatumHash_base { [Inspectable.NodeInspectSymbol](): { _tag: string; hash: string & import("effect/Brand").Brand<"HexString">; }; } /** * Check if the given value is a valid DatumHash * * @since 2.0.0 * @category predicates */ export declare const isDatumHash: (u: unknown, overrideOptions?: import("effect/SchemaAST").ParseOptions | number) => u is DatumHash; /** * Schema for DatumHash bytes validation * * @since 2.0.0 * @category schemas */ export declare const DatumHashBytes: Schema.SchemaClass, Uint8Array, never>; /** * Schema for transforming between Uint8Array and DatumHash * * @since 2.0.0 * @category encoding/decoding */ export declare const Bytes: Schema.transform, Uint8Array, never>, Schema.Schema; }, never>>; /** * Schema for transforming between hex string and DatumHash * * @since 2.0.0 * @category encoding/decoding */ export declare const HexString: Schema.transform, Schema.SchemaClass, string & import("effect/Brand").Brand<"HexString">, never>>, typeof DatumHash>; /** * Schema for transforming between CBOR bytes and DatumHash * * @since 2.0.0 * @category encoding/decoding */ export declare const CBORBytes: Schema.transformOrFail, Uint8Array, readonly [], never>, typeof DatumHash, never>; /** * Schema for transforming between CBOR hex and DatumHash * * @since 2.0.0 * @category encoding/decoding */ export declare const CBORHex: Schema.transformOrFail, string & import("effect/Brand").Brand<"HexString">, never>, typeof DatumHash, never>; /** * Check if two DatumHash instances are equal. * * @example * import { DatumHash } from "@lucid-evolution/experimental"; * import { Schema } from "effect"; * import assert from "assert"; * * const hash1 = Schema.decodeUnknownSync(DatumHash.HexString)( * "5160f88b929bf8a6c57c285b889488f9137c0ef3cfd0bcf408a10020e69146d5" * ); * const hash2 = Schema.decodeUnknownSync(DatumHash.HexString)( * "5160f88b929bf8a6c57c285b889488f9137c0ef3cfd0bcf408a10020e69146d5" * ); * const hash3 = Schema.decodeUnknownSync(DatumHash.HexString)( * "bfd6dd1e96e4fd26c6379aa3093aaef25639d58ee76d045bd4528ef9f2fed808" * ); * * assert(DatumHash.equals(hash1, hash2) === true); // Same hash * assert(DatumHash.equals(hash1, hash3) === false); // Different hashes * * @since 2.0.0 * @category equality */ export declare const equals: (a: DatumHash, b: DatumHash) => boolean; /** * Generator for creating random DatumHash instances for testing * * @example * import { DatumHash } from "@lucid-evolution/experimental"; * import { FastCheck } from "effect"; * import assert from "assert"; * * const randomSamples = FastCheck.sample(DatumHash.generator, 10); * randomSamples.forEach((datumHash) => { * assert(datumHash._tag === "DatumHash"); * assert(datumHash.hash.length === 64); * }); * * @since 2.0.0 * @category generators */ export declare const generator: FastCheck.Arbitrary; export {}; //# sourceMappingURL=DatumHash.d.ts.map