import type { ApprovalSubjectType } from '../../types/approval.js';
import type { EvidenceCommitment } from '../../types/bilateral-receipt.js';
export type CoSignerRole = 'human' | 'agent' | 'gateway';
export interface CoSignerEntry {
    /** Ed25519 public key (hex) of the signer. */
    publicKey: string;
    /** Party class this signature represents. */
    role: CoSignerRole;
    /** Key class label (e.g. 'human', 'operations'), mirrors
     *  ApprovalSignature.keyClass. Free of policy meaning here; the
     *  verifier reads it as a mechanical fact, not as an assurance grade. */
    keyClass: string;
    /** Optional DID the signer asserts. Used by the descriptor to derive
     *  signer independence from the key and DID graph. */
    did?: string;
    /** ISO 8601 timestamp the signature was produced. */
    signedAt: string;
    /** Ed25519 signature over canonical(receipt-minus-co_signer-slot), hex. */
    signature: string;
}
export interface ApprovalReference {
    /** Existing request id: 'approval-<hex>' or 'approval_<uuid12>'. */
    requestId: string;
    /** Optional subject-type classification, reusing the approval union. */
    subjectType?: ApprovalSubjectType;
    /** Optional hash commitment to the signed approval artifact. The full
     *  approval is fetched out of band and checked against the hash; it is
     *  NOT embedded here (bilateral-receipt.ts:149-174 pattern). */
    commitment?: EvidenceCommitment;
}
export interface BreakGlass {
    /** Why the override was declared. Free text, recorded verbatim. */
    reason: string;
    /** Public key (hex) or DID of the human who approved the override. */
    approved_by: string;
    /** ISO 8601 instant after which the override is no longer in force. */
    expires_at: string;
    /** Whether a post-hoc human review is owed for this override. */
    post_review_required: boolean;
    /** Optional action class the override applies to. The verifier rejects
     *  the declaration when this names a class the relying party forbids
     *  from break-glass override. */
    action_class?: string;
}
export interface HumanOversightSlots {
    /** Co-signatures over the receipt body for the NON-bilateral case. */
    co_signer?: CoSignerEntry[];
    /** Pointer to an out-of-band approval request. */
    approval_reference?: ApprovalReference;
    /** Emergency-override declaration (format only). */
    break_glass?: BreakGlass;
    /** Slot-format version. Present only when any slot is present. */
    human_oversight_version?: '1.0';
}
export interface CoSignerKeyResolution {
    /** The public key (hex) to verify this entry's signature against. */
    publicKey: string;
    /** Optional DID the key was resolved from, for the descriptor graph. */
    did?: string;
}
export type SharesRoot = (a: CoSignerEntry, b: CoSignerEntry) => boolean;
//# sourceMappingURL=types.d.ts.map