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-' or 'approval_'. */ 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