import type { VerifiablePresentation } from '../types/did.js'; import type { ProviderAttestation } from '../types/attestation.js'; export interface CredentialRequest { /** Unique request ID */ id: string; /** Claims the verifier wants (e.g., ["grade", "capabilities", "delegationScope"]) */ requestedClaims: string[]; /** DID of the verifier making the request */ verifierDID: string; /** Challenge nonce for replay protection */ challenge: string; /** When this request was created */ createdAt: string; } export interface CredentialResponseResult { valid: boolean; /** Extracted claims that the verifier requested */ claims: Record; /** Detailed checks */ checks: string[]; } export interface SelectivePassport { agentId: string; publicKey: string; agentName?: string; mission?: string; capabilities?: string[]; grade?: number; delegationScope?: string[]; createdAt?: string; expiresAt?: string; evidence?: ProviderAttestation[]; } /** * Create a credential request specifying which claims the verifier needs. * The challenge provides replay protection: the agent must bind the VP * to this specific challenge. */ export declare function createCredentialRequest(claims: string[], verifierDID: string, challenge?: string): CredentialRequest; /** * Fulfill a credential request by creating a VP that contains only * the requested claims. This is selective disclosure: the agent * reveals only what the verifier asked for. * * The VC's credentialSubject will contain: * - id (always included, the agent's did:key) * - agentId (always included for APS correlation) * - only the fields listed in request.requestedClaims */ export declare function fulfillCredentialRequest(request: CredentialRequest, passport: SelectivePassport, privateKey: string): Promise; /** * Verify a credential response VP and extract the requested claims. * * Checks: * 1. VP proof is valid * 2. Challenge matches (replay protection) * 3. Each contained VC proof is valid * 4. Credential is not expired * 5. Extracts claims from credentialSubject */ export declare function verifyCredentialResponse(vp: VerifiablePresentation, expectedChallenge?: string): Promise; //# sourceMappingURL=credential-request.d.ts.map