/**
 * Service-implementation helpers for the abstract `AttestationService` CDS
 * mixin. A consumer service that extends `AttestationService` calls
 * `registerAttestationServiceHandlers(this, db)` from its own `init()` to
 * wire:
 *
 *   1. `attachDisclosureRole` as a `before('*')` hook so every request
 *      gets `req.disclosureRole` populated from `midnight.DisclosureRoles`.
 *   2. Per-entity tier gates: `Disclosed` requires `legitimate_interest+`,
 *      `Authority` requires `authority`. `Public` has no gate.
 *
 * The gates reject with a 403 instead of silently returning an empty set,
 * so callers can tell "you can't reach this tier" apart from "this tier is
 * empty for you".
 *
 * TODO: Row-level visibility (e.g. "show me only attestations I have an on-chain
 * disclosure for") is deliberately out of scope for v1 — that requires
 * indexing the AttestationVault `disclosures` Map into NIGHTGATE and
 * joining at query time. Filed as future work.
 */
import type cds from '@sap/cds';
export type AttestationTier = 'Public' | 'Disclosed' | 'Authority';
/**
 * Wire the disclosure-role middleware + per-entity tier gates on the given
 * CAP service. Idempotent in the sense that re-registering on the same
 * service instance would just stack hooks (CAP allows that, but consumers
 * should call this once from their service's `init()`).
 */
export declare function registerAttestationServiceHandlers(srv: cds.ApplicationService, db: cds.DatabaseService): void;
/**
 * Portable Attestation Credential (PAC) proof envelope. Field names match the
 * envelope NIGHTPASS drops into a `PredicateAttestationCredential`, so the
 * output is consumed unchanged.
 *
 * On-chain-verified model: the proof is not standalone-verifiable with just a
 * VK `proofValue` is therefore the `provePredicate` transaction hash
 */
export interface PredicateAttestationEnvelope {
    digestMultibase: string | null;
    claim: {
        predicate: string;
        threshold: string;
        unit: string | null;
    };
    proof: {
        system: 'midnight-compact';
        circuit: 'provePredicate';
        verificationMethod: string;
        proofValue: string;
    };
}
/**
 * Shape a `PredicateAttestations` row (or the `issuePredicateAttestation` job
 * result) into the PAC proof envelope. Pure/synchronous so consumers can call
 * it without any NIGHTGATE service context.
 */
export declare function toPredicateEnvelope(row: {
    predicate: string;
    threshold: number | string;
    unit?: string | null;
    valueCommitment?: string | null;
    contractAddress: string;
    provenTxHash?: string | null;
}): PredicateAttestationEnvelope;
