import type { BilateralReceipt, BilateralReceiptVerification, InteractionOutcome, EvidenceCommitment, CompromiseWindowCheck, RevocationReason } from '../types/bilateral-receipt.js';
/**
 * Create a bilateral receipt. Called in two phases:
 *   Phase 1: Requesting agent proposes the outcome and signs
 *   Phase 2: Serving agent reviews, agrees, and countersigns
 *   Phase 3 (optional): Gateway witnesses and adds third signature
 */
export declare function createBilateralReceipt(opts: {
    requestingAgentId: string;
    servingAgentId: string;
    delegationId?: string;
    outcome: InteractionOutcome;
    requestedAt: string;
    completedAt: string;
    requestingAgentPrivateKey: string;
    servingAgentPrivateKey: string;
    gatewayPrivateKey?: string;
    evidenceCommitments?: EvidenceCommitment[];
    /**
     * Optional audience binding. When set, both co-signers sign over it and the
     * receipt is bound to the named recipient(s). When omitted, the canonical
     * body (and therefore both signatures) is byte-identical to a receipt without
     * audience binding, since canonicalize() omits undefined keys.
     */
    aud?: import('../types/bilateral-receipt.js').BilateralReceipt['aud'];
    fieldDisclosureProfile?: unknown;
}): BilateralReceipt;
export declare function verifyBilateralReceipt(receipt: BilateralReceipt, requestingAgentPublicKey: string, servingAgentPublicKey: string, gatewayPublicKey?: string): BilateralReceiptVerification;
/**
 * Create an evidence commitment from an external credential.
 * The credential (JWT, JWS, signed JSON) is hashed — not embedded.
 * Verifiers fetch the credential out-of-band and check hash match.
 */
export declare function createEvidenceCommitment(opts: {
    type: string;
    credential: string;
    issuerKid?: string;
    jwks?: string;
    pass?: boolean;
}): EvidenceCommitment;
/**
 * Verify that a credential matches its commitment.
 */
export declare function verifyEvidenceCommitment(commitment: EvidenceCommitment, credential: string): boolean;
/**
 * Check whether a proof timestamp falls within a compromise window.
 *
 * Three states:
 *   'safe'  — proof predates compromise, likely unaffected
 *   'warn'  — compromise window unknown, proof might be affected
 *   'error' — proof is definitely within the compromise window
 *
 * When revocationReason !== 'compromise', all pre-revocation
 * proofs are safe (key rotation, decommission, etc.).
 */
export declare function checkCompromiseWindow(opts: {
    proofTimestamp: string;
    revokedAt: string;
    revocationReason: RevocationReason;
    compromisedSince?: string;
}): CompromiseWindowCheck;
//# sourceMappingURL=bilateral-receipt.d.ts.map