import { VerifiablePresentation } from '../types'; import { VerificationError } from './verification-errors'; export interface AttributeConstraint { name: string; required: boolean; expectedValue?: any; allowedValues?: any[]; minValue?: number; maxValue?: number; pattern?: string; } export interface CredentialRequirement { type: string[]; issuer?: string; trustedIssuers?: string[]; attributes: AttributeConstraint[]; maxAge?: number; } export interface PresentationRequestOptions { credentialRequirements: CredentialRequirement[]; purpose: string; challenge?: string; domain?: string; expiresAt?: Date; allowPartialMatch?: boolean; } export interface PresentationRequestObject { id: string; type: ['PresentationRequest']; from: string; purpose: string; challenge: string; domain?: string; credentialRequirements: CredentialRequirement[]; createdAt: Date; expiresAt?: Date; allowPartialMatch: boolean; } export interface ValidationResult { valid: boolean; matchedRequirements: CredentialRequirement[]; unmatchedRequirements: CredentialRequirement[]; errors: VerificationError[]; score: number; } export declare class PresentationRequest { private serviceProviderDID; constructor(serviceProviderDID: string); /** * Create a presentation request with specific requirements */ createRequest(options: PresentationRequestOptions): Promise; /** * Validate a presentation against a request */ validateAgainstRequest(presentation: VerifiablePresentation, request: PresentationRequestObject): Promise; /** * Create a simple request for specific credential types */ createSimpleRequest(credentialTypes: string[], purpose: string, requiredAttributes?: string[], optionalAttributes?: string[]): Promise; /** * Validate challenge in presentation */ private validateChallenge; /** * Validate domain in presentation */ private validateDomain; /** * Find credentials that match a requirement */ private findMatchingCredentials; /** * Validate attributes against constraints */ private validateAttributes; /** * Generate a secure challenge */ private generateChallenge; } //# sourceMappingURL=presentation-request.d.ts.map