@vqp/core
Version:
Core VQP protocol implementation - adapter-agnostic
81 lines • 2.7 kB
TypeScript
/**
* Query Builder - Fluent interface for building VQP queries
*/
import { VQPQuery, ResponseModeType } from './types.js';
export declare class QueryBuilder {
private query;
constructor();
/**
* Set the requester DID
*/
requester(did: string): QueryBuilder;
/**
* Set the target DID (optional for broadcast queries)
*/
target(did: string): QueryBuilder;
/**
* Set response mode for the query
*/
responseMode(mode: ResponseModeType, config?: any): QueryBuilder;
/**
* Set strict response mode (default) - only returns boolean result
*/
strict(): QueryBuilder;
/**
* Set consensual response mode - returns actual value if consent is granted
*/
consensual(justification?: string, consentRequired?: boolean): QueryBuilder;
/**
* Set reciprocal response mode - requires mutual verification
*/
reciprocal(requesterProof: any, requiredClaims: string[]): QueryBuilder;
/**
* Set obfuscated response mode - returns obfuscated actual value
*/
obfuscated(method: 'range' | 'noise' | 'rounding', options?: any): QueryBuilder;
/**
* Set the vocabulary URI
*/
vocabulary(vocabUri: string): QueryBuilder;
/**
* Set the query expression
*/
expression(expr: object): QueryBuilder;
/**
* Set a custom query ID
*/
id(queryId: string): QueryBuilder;
/**
* Set a custom timestamp
*/
timestamp(timestamp: string): QueryBuilder;
/**
* Set the query language (defaults to jsonlogic@1.0.0)
*/
language(lang: 'jsonlogic@1.0.0'): QueryBuilder;
/**
* Build the complete VQP query
*/
build(): VQPQuery;
/**
* Create a query with a simple field comparison
*/
static compare(requester: string, vocabulary: string, field: string, operator: '>=' | '<=' | '==' | '!=' | '>' | '<', value: any, target?: string): VQPQuery;
/**
* Create a query with an 'and' condition
*/
static and(requester: string, vocabulary: string, conditions: object[], target?: string): VQPQuery;
/**
* Create a query with an 'or' condition
*/
static or(requester: string, vocabulary: string, conditions: object[], target?: string): VQPQuery;
/**
* Create a query with an 'in' condition (array membership)
*/
static in(requester: string, vocabulary: string, value: any, arrayField: string, target?: string): VQPQuery;
/**
* Create a query from raw JSONLogic expression
*/
static fromExpression(requester: string, vocabulary: string, expression: object, target?: string): VQPQuery;
}
//# sourceMappingURL=query-builder.d.ts.map