import type Oas from 'oas'; import type { Operation } from 'oas'; import type { HttpMethods } from 'oas/dist/rmoas.types'; import 'isomorphic-fetch'; import getJSONSchemaDefaults from './getJSONSchemaDefaults'; import parseResponse from './parseResponse'; import prepareAuth from './prepareAuth'; import prepareParams from './prepareParams'; import prepareServer from './prepareServer'; export interface ConfigOptions { /** * Override the default `fetch` request timeout of 30 seconds. This number should be represented * in milliseconds. */ timeout?: number; } export interface FetchResponse { data: data; headers: Headers; res: Response; status: status; } type Enumerate = Acc['length'] extends N ? Acc[number] : Enumerate; export type HTTPMethodRange = Exclude, Enumerate>; export { getJSONSchemaDefaults, parseResponse, prepareAuth, prepareParams, prepareServer }; export default class APICore { spec: Oas; private auth; private server; private config; private userAgent; constructor(spec?: Oas, userAgent?: string); setSpec(spec: Oas): void; setConfig(config: ConfigOptions): this; setUserAgent(userAgent: string): this; setAuth(...values: string[] | number[]): this; setServer(url: string, variables?: Record): this; fetch(path: string, method: HttpMethods, body?: unknown, metadata?: Record): Promise; fetchOperation(operation: Operation, body?: unknown, metadata?: Record): Promise; }