import type { AttributionAxes, AttributionAxisTag } from './types.js'; export interface MerkleFrame { /** Canonically-ordered axes used to derive the leaves. */ axes: AttributionAxes; leaves: { D: Buffer; P: Buffer; G: Buffer; C: Buffer; }; nodes: { N_content: Buffer; N_auth_infra: Buffer; }; root: Buffer; } export declare function buildMerkleFrame(rawAxes: AttributionAxes): MerkleFrame; /** Write-boundary twin of buildMerkleFrame(). * * Reaches a canonicalizer only indirectly, through hashAxisLeaf, so a call-site * census over canonicalizer usage cannot see it. Use when CONSTRUCTING a primitive; * projection and verification keep calling buildMerkleFrame() so a primitive built * before this rule still reconstructs. */ export declare function buildMerkleFrameForWrite(rawAxes: AttributionAxes): MerkleFrame; /** The sibling path for a projection, in the order §2.2 specifies: * [sibling_leaf_within_pair_hex, sibling_internal_node_hex]. */ export declare function projectionPath(frame: MerkleFrame, axis: AttributionAxisTag): [string, string]; /** Reconstruct the root from an axis's canonical leaf hash and the two-hop * sibling path. §2.3 algorithm. Returns raw bytes so callers can diff the * buffers; hex comparison is lossy under case normalization. */ export declare function reconstructRoot(axisLeaf: Buffer, path: [string, string], axis: AttributionAxisTag): Buffer; //# sourceMappingURL=merkle.d.ts.map