@kya-os/mcp-i
Version:
The TypeScript MCP framework with identity features built-in
100 lines (99 loc) • 3.07 kB
TypeScript
import type { Request, Response, NextFunction } from "express";
import type { ProofMeta, DetachedProof } from "@kya-os/contracts/proof";
import type { Receipt } from "@kya-os/contracts/registry";
import { type StructuredError } from "@kya-os/contracts/verifier";
import { type CryptoProvider } from "@kya-os/mcp-i-core";
/**
* Verifier middleware for proof and receipt validation
*/
export interface VerifierConfig {
/**
* Enable receipt verification
*/
receiptVerification?: boolean;
/**
* Enable delegation checking
*/
delegationChecking?: boolean;
/**
* KTA base URL
*/
ktaBaseUrl?: string;
/**
* Policy toggle for receipt checking
*/
receiptPolicy?: "required" | "optional" | "disabled";
/**
* Allow mock data for testing
*/
allowMockData?: boolean;
/**
* Optional CryptoProvider for signature verification
* If provided, enables full JWS signature verification when DetachedProof is available
*/
cryptoProvider?: CryptoProvider;
}
export interface LocalVerifierResult {
success: boolean;
headers?: Record<string, string>;
error?: StructuredError;
}
export interface VerifierContext {
proof: ProofMeta;
receipt?: Receipt;
delegationRef?: string;
/**
* Optional full DetachedProof with JWS for signature verification
* If provided, enables full cryptographic signature verification
*/
detachedProof?: DetachedProof;
}
/**
* Core verifier implementation
*/
export declare class CoreVerifier {
private config;
private receiptVerifier;
private delegationManager;
private cryptoService?;
constructor(config?: VerifierConfig);
/**
* Verify proof with optional receipt checking
*/
verify(context: VerifierContext): Promise<LocalVerifierResult>;
/**
* Verify proof signature
*
* Note: Full signature verification requires DetachedProof with JWS.
* If only ProofMeta is available, performs structure validation only.
* To enable full verification, provide detachedProof in VerifierContext.
*/
private verifySignature;
/**
* Fetch public key from DID document
*
* Note: This is a simplified implementation. Production code should use
* a proper DID resolver that supports multiple DID methods (did:key, did:web, etc.)
*/
private fetchPublicKeyFromDID;
/**
* Verify delegation status
*/
private verifyDelegation;
/**
* Check if receipt verification should be performed
*/
private shouldVerifyReceipt;
/**
* Generate trusted headers for successful verification
*/
private generateHeaders;
}
/**
* Cloudflare Worker verifier
*/
export declare function verifyWorker(request: Request, config?: VerifierConfig): Promise<LocalVerifierResult>;
/**
* Express verifier middleware
*/
export declare function verifyExpress(config?: VerifierConfig): (req: Request, res: Response, next: NextFunction) => Promise<Response<any, Record<string, any>> | undefined>;