import { InProgressTestResult, FailedTestResult, OfflineTestResult, FinishedDnsTestResult, FinishedHttpTestResult, FinishedMtrTestResult, FinishedPingTestResult, FinishedTracerouteTestResult, MeasurementDnsOptions, MeasurementHttpOptions, MeasurementMtrOptions, MeasurementPingOptions, MeasurementTracerouteOptions, MeasurementRequest, MeasurementResponse, MeasurementResultItem, MeasurementType, } from './openapi-ts/index.js'; type CommonMeasurementOptions = Omit; type FinishedTestResultTypes = { ping: FinishedPingTestResult; traceroute: FinishedTracerouteTestResult; dns: FinishedDnsTestResult; mtr: FinishedMtrTestResult; http: FinishedHttpTestResult; }; export type PingMeasurementRequest = { type: 'ping'; measurementOptions?: MeasurementPingOptions; } & CommonMeasurementOptions; export type TracerouteMeasurementRequest = { type: 'traceroute'; measurementOptions?: MeasurementTracerouteOptions; } & CommonMeasurementOptions; export type MtrMeasurementRequest = { type: 'mtr'; measurementOptions?: MeasurementMtrOptions; } & CommonMeasurementOptions; export type DnsMeasurementRequest = { type: 'dns'; measurementOptions?: MeasurementDnsOptions; } & CommonMeasurementOptions; export type HttpMeasurementRequest = { type: 'http'; measurementOptions?: MeasurementHttpOptions; } & CommonMeasurementOptions; export type TypedMeasurementRequest = PingMeasurementRequest | TracerouteMeasurementRequest | MtrMeasurementRequest | DnsMeasurementRequest | HttpMeasurementRequest; export type TypedMeasurementResultItem = { result: InProgressTestResult | FailedTestResult | OfflineTestResult | FinishedTestResultTypes[T]; } & Omit; export type TypedMeasurementResponse = { type: T; measurementOptions?: Coalesce['measurementOptions'], never>; results: Array>; } & Omit; export type TypedMeasurementResponses = { 200: TypedMeasurementResponse; }; export type FinishedMeasurementResponse = { status: 'finished'; } & Omit, 'status'>; export type SuccessCallResult = { ok: true; data: NonNullable[ST]; request: Request; response: Response; }; export type ErrorCallResult = { ok: false; data: ErrorType[ST]; request: Request; response: Response; }; export type CallResult = SuccessCallResult | ErrorCallResult; export type NoResponseTypes = { [k: number]: never }; export type KnownResponseTypes = { [k: number]: object }; export type ResponseTypes = KnownResponseTypes | unknown; export type Awaitable = T | PromiseLike; export type Coalesce = T extends undefined ? D : T;