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<string, unknown>;
    /** 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<VerifiablePresentation>;
/**
 * 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<CredentialResponseResult>;
//# sourceMappingURL=credential-request.d.ts.map