/**
 * Default CryptoPort singleton for domain services.
 *
 * Provides SHA hashing, HMAC, and timing-safe comparison. The
 * platform binding (`NodeCryptoAdapter` over `node:crypto`) is
 * loaded through a **dynamic top-level import** so this module
 * does not reach Node platform APIs directly. That keeps the
 * hexagonal wall intact at static analysis time: nothing in this
 * file statically imports from `node:*` or
 * `src/infrastructure/**`.
 *
 * The dynamic import still runs at module-load time (top-level
 * await), preserving the pre-0025D behavior where the platform
 * binding is resolved exactly once before the first caller uses
 * the singleton. In a Node / Bun / Deno runtime, the adapter loads
 * normally. In runtimes where `node:crypto` is stubbed (e.g. Vite
 * browser bundles), the dynamic import rejects at load time and
 * every method on this singleton throws a `CryptoError` at call
 * time — the caller must then inject a `CryptoPort` explicitly
 * (for example `WebCryptoAdapter`).
 *
 * Relocated patterning: pre-cycle-0025D this file imported Node crypto
 * types directly and loaded the same platform module dynamically. The
 * static type import was the quarantined violation. Cycle 0025D removes
 * the static platform surface and switches the dynamic binding to the
 * existing `NodeCryptoAdapter`, which is the only file authorized to
 * import `node:crypto`. Runtime behavior is preserved.
 *
 * @module domain/utils/defaultCrypto
 */
import CryptoPort from '../../ports/CryptoPort.ts';
declare class DefaultCrypto extends CryptoPort {
    hash(algorithm: string, data: string | Uint8Array): Promise<string>;
    hmac(algorithm: string, key: string | Uint8Array, data: string | Uint8Array): Promise<Uint8Array>;
    timingSafeEqual(a: Uint8Array, b: Uint8Array): boolean;
}
declare const defaultCrypto: DefaultCrypto;
export default defaultCrypto;
