import { type MultiSourceStatusDecision, type MultiSourceStatusInput } from './types.js'; /** Thrown when the input is not something the module can decide over. A malformed input * is a programming error, not a verdict: returning `not_established` for a caller that * passed an unparseable instant would report ignorance about the authority when the * defect is in the call. */ export declare class StatusCoverageError extends Error { readonly code: string; constructor(code: string, message: string); } /** * Decide what an authorization boundary can establish about one authority_ref from a SET * of status answers, each measured against the freshness bound declared for its own * source. * * BROAD-L7 in one function, for the source and freshness limbs, plus a declared-set * coverage report that is explicitly not a completeness claim. The procedure, in order, * and every step is a consequence of the candidate rather than a design preference: * * 1. Age every answer against `now`. An answer is within bound when its age is at most * the bound declared for its source, inclusive. An answer dated after the boundary * is refused as skew rather than read as fresh. * 2. Decide which answers are USED. `unavailable` is never used. Within bound is used. * Past bound is used only where `stalePolicy` says that class of answer still * counts, and the line records which of the two it was. * 3. If the used answers carry more than one determinate state, that is a conflict. * Per `conflictPolicy` the boundary denies or returns not established. The artifact * state is NOT ESTABLISHED either way, with the source limb missing, never invalid: * a conflict is the verifier failing to reach a conclusion, not a finding that the * authority ended. A conflict never admits, whatever coverage says. * 4. If every used answer is `revoked`, the boundary denies and the artifact state is * invalid. This is checked BEFORE coverage, because an observed revocation from an * accepted source does not need a complete source set to count, and before the * offline branch, because being offline does not soften an observed revocation. * 5. Offline mode resolves on the declared snapshot: inside its declared bound and * active, the boundary admits and the basis names the snapshot and the age it * admitted at. Past the bound, the freshness limb is missing. No snapshot answer at * all, the source limb is missing. * 6. Online mode admits only when coverage is complete under the declared reading and * every used answer is active. Short of that the reason distinguishes no usable * answer at all, a silent required source, and a required source whose answer was * past its bound. * * Nothing in the result is the negation of a claim. `not_established` is ignorance about * the authority and never a statement that the authority is inactive, active, or anything * about the world. * * Concept source: aeoess/agent-authority-lifecycle, invariant candidate BROAD-L7 and * invariant L7. Proposed, and the two policy parameters mark the two places the proposed * text does not choose. */ export declare function decideMultiSourceStatus(input: MultiSourceStatusInput): MultiSourceStatusDecision; //# sourceMappingURL=decide.d.ts.map