import type { DiscoverFeaturesService } from './services'; import type { FeatureQueryOptions } from '../../agent/models'; /** * Get the supported protocol versions based on the provided discover features services. */ export type DiscoverFeaturesProtocolVersionType = DFSs[number]['version']; /** * Get the service map for usage in the discover features module. Will return a type mapping of protocol version to service. * * @example * ``` * type ServiceMap = DiscoverFeaturesServiceMap<[V1DiscoverFeaturesService,V2DiscoverFeaturesService]> * * // equal to * type ServiceMap = { * v1: V1DiscoverFeatureService * v2: V2DiscoverFeaturesService * } * ``` */ export type DiscoverFeaturesServiceMap = { [DFS in DFSs[number] as DFS['version']]: DiscoverFeaturesService; }; interface BaseOptions { connectionId: string; } export interface QueryFeaturesOptions extends BaseOptions { protocolVersion: DiscoverFeaturesProtocolVersionType; queries: FeatureQueryOptions[]; awaitDisclosures?: boolean; awaitDisclosuresTimeoutMs?: number; comment?: string; } export interface DiscloseFeaturesOptions extends BaseOptions { protocolVersion: DiscoverFeaturesProtocolVersionType; disclosureQueries: FeatureQueryOptions[]; threadId?: string; } export {};