/** RFC 8785 JSON Canonicalization Scheme.
 *  Differences from legacy canonicalize():
 *  - null values ARE preserved (not filtered)
 *  - undefined object values become null
 *  - Number serialization follows ES2015 spec
 *  - All other behavior is identical (sorted keys, no whitespace) */
export declare function canonicalizeJCS(value: unknown): string;
/** Detect which canonicalization variant was likely used.
 *  Checks if null values are present — JCS preserves them, legacy strips them. */
export declare function detectCanonicalVariant(obj: unknown, canonicalString: string): 'jcs' | 'legacy' | 'ambiguous';
/** Cross-language test vector for canonicalization verification */
export interface CanonicalizationTestVector {
    id: string;
    description: string;
    input: unknown;
    expected_jcs: string;
    expected_legacy: string;
    sha256_jcs: string;
    sha256_legacy: string;
}
/** SHA-256 (lowercase hex) of canonicalizeJCS(obj). Strict-RFC-8785
 *  counterpart of canonicalHash() from ./canonical.ts. Use this for any
 *  cross-implementation hash whose conformance pin requires strict JCS
 *  (e.g. action_ref per draft-pidlisnyi-aps-01 §4.1). */
export declare function canonicalHashJCS(obj: Record<string, unknown>): string;
/** Built-in test vectors for cross-language verification */
export declare function getTestVectors(): CanonicalizationTestVector[];
//# sourceMappingURL=canonical-jcs.d.ts.map