interface Oas3DefinitionBase<T extends Oas3Schema | Oas3_1Schema> {
    openapi: string;
    info?: Oas3Info;
    servers?: Oas3Server[];
    paths?: Oas3Paths<T>;
    components?: T extends Oas3_1Schema ? Oas3_1Components : Oas3Components;
    security?: Oas3SecurityRequirement[];
    tags?: Oas3Tag[];
    externalDocs?: Oas3ExternalDocs;
}
export interface Oas3Definition extends Oas3DefinitionBase<Oas3Schema> {
    'x-webhooks'?: Oas3Webhooks<Oas3Schema>;
}
export interface Oas3_1Definition extends Oas3DefinitionBase<Oas3_1Schema> {
    webhooks?: Oas3Webhooks<Oas3_1Schema>;
}
export interface Oas3_2Definition extends Oas3_1Definition {
    $self?: string;
    tags?: Oas3_2Tag[];
}
export interface Oas3Info {
    title: string;
    version: string;
    description?: string;
    termsOfService?: string;
    contact?: Oas3Contact;
    license?: Oas3License;
}
export interface Oas3Server {
    url: string;
    description?: string;
    variables?: {
        [name: string]: Oas3ServerVariable;
    };
    name?: string;
}
export interface Oas3ServerVariable {
    enum?: string[];
    default: string;
    description?: string;
}
export interface Oas3Paths<T extends Oas3Schema | Oas3_1Schema = Oas3Schema | Oas3_1Schema> {
    [path: string]: Referenced<Oas3PathItem<T>>;
}
export interface OasRef {
    $ref: string;
}
export type Referenced<T> = OasRef | T;
export interface Oas3PathItem<T extends Oas3Schema | Oas3_1Schema = Oas3Schema | Oas3_1Schema> {
    summary?: string;
    description?: string;
    get?: Oas3Operation<T>;
    put?: Oas3Operation<T>;
    post?: Oas3Operation<T>;
    delete?: Oas3Operation<T>;
    options?: Oas3Operation<T>;
    head?: Oas3Operation<T>;
    patch?: Oas3Operation<T>;
    trace?: Oas3Operation<T>;
    query?: Oas3Operation<T>;
    additionalOperations?: {
        [name: string]: Referenced<Oas3Operation<T>>;
    };
    servers?: Oas3Server[];
    parameters?: Array<Referenced<Oas3Parameter<T>>>;
}
export interface Oas3XCodeSample {
    lang: string;
    label?: string;
    source: string;
}
export interface Oas3Operation<T extends Oas3Schema | Oas3_1Schema = Oas3Schema | Oas3_1Schema> {
    tags?: string[];
    summary?: string;
    description?: string;
    externalDocs?: Oas3ExternalDocs;
    operationId?: string;
    parameters?: Array<Referenced<Oas3Parameter<T>>>;
    requestBody?: Referenced<Oas3RequestBody<T>>;
    responses: Oas3Responses<T>;
    callbacks?: {
        [name: string]: Referenced<Oas3Callback<T>>;
    };
    deprecated?: boolean;
    security?: Oas3SecurityRequirement[];
    servers?: Oas3Server[];
    'x-codeSamples'?: Oas3XCodeSample[];
    'x-code-samples'?: Oas3XCodeSample[];
    'x-hideTryItPanel'?: boolean;
}
export interface Oas3Parameter<T extends Oas3Schema | Oas3_1Schema = Oas3Schema | Oas3_1Schema> {
    name: string;
    in?: Oas3ParameterLocation;
    description?: string;
    required?: boolean;
    deprecated?: boolean;
    allowEmptyValue?: boolean;
    style?: Oas3ParameterStyle;
    explode?: boolean;
    allowReserved?: boolean;
    schema?: Referenced<T>;
    example?: unknown;
    examples?: {
        [media: string]: Referenced<Oas3Example>;
    };
    content?: {
        [media: string]: Oas3MediaType<T>;
    };
}
export interface Oas3Example {
    value: unknown;
    dataValue?: unknown;
    serializedValue?: string;
    summary?: string;
    description?: string;
    externalValue?: string;
}
export interface Oas3Xml {
    nodeType?: 'element' | 'attribute' | 'text' | 'cdata' | 'none';
    name?: string;
    namespace?: string;
    prefix?: string;
    attribute?: boolean;
    wrapped?: boolean;
}
interface Oas3XSchemaBase<T extends Oas3Schema | Oas3_1Schema> {
    $ref?: string;
    properties?: {
        [name: string]: Referenced<T>;
    };
    additionalProperties?: boolean | T;
    description?: string;
    default?: unknown;
    required?: string[];
    readOnly?: boolean;
    writeOnly?: boolean;
    deprecated?: boolean;
    format?: string;
    externalDocs?: Oas3ExternalDocs;
    discriminator?: Oas3Discriminator;
    oneOf?: T[];
    anyOf?: T[];
    allOf?: T[];
    not?: T;
    title?: string;
    multipleOf?: number;
    maximum?: number;
    minimum?: number;
    maxLength?: number;
    minLength?: number;
    pattern?: string;
    items?: boolean | T;
    maxItems?: number;
    minItems?: number;
    uniqueItems?: boolean;
    maxProperties?: number;
    minProperties?: number;
    enum?: unknown[];
    example?: unknown;
    xml?: Oas3Xml;
    'x-tags'?: string[];
}
export interface Oas3Schema extends Oas3XSchemaBase<Oas3Schema> {
    type?: string;
    exclusiveMaximum?: boolean;
    exclusiveMinimum?: boolean;
    nullable?: boolean;
}
export interface Oas3_1Schema extends Oas3XSchemaBase<Oas3_1Schema> {
    $id?: string;
    $schema?: string;
    $anchor?: string;
    $dynamicAnchor?: string;
    $dynamicRef?: string;
    $defs?: {
        [name: string]: Referenced<Oas3_1Schema>;
    };
    $vocabulary?: {
        [uri: string]: boolean;
    };
    $comment?: string;
    type?: string | string[];
    examples?: unknown[];
    prefixItems?: Oas3_1Schema[];
    exclusiveMaximum?: number;
    exclusiveMinimum?: number;
    const?: unknown;
    contains?: Oas3_1Schema;
    minContains?: number;
    maxContains?: number;
    propertyNames?: Oas3_1Schema;
    if?: Oas3_1Schema;
    then?: Oas3_1Schema;
    else?: Oas3_1Schema;
    dependentRequired?: {
        [name: string]: string[];
    };
    dependentSchemas?: {
        [name: string]: Referenced<Oas3_1Schema>;
    };
    patternProperties?: {
        [name: string]: Referenced<Oas3_1Schema>;
    };
    unevaluatedItems?: boolean | Oas3_1Schema;
    unevaluatedProperties?: boolean | Oas3_1Schema;
    contentSchema?: Oas3_1Schema;
    contentMediaType?: string;
    contentEncoding?: string;
}
export interface Oas3Webhooks<T extends Oas3Schema | Oas3_1Schema> {
    [webhook: string]: Referenced<Oas3PathItem<T>>;
}
export interface Oas3Discriminator {
    propertyName: string;
    mapping?: {
        [name: string]: string;
    };
    defaultMapping?: string;
    'x-explicitMappingOnly'?: boolean;
}
export interface Oas3MediaType<T extends Oas3Schema | Oas3_1Schema = Oas3Schema | Oas3_1Schema> {
    schema?: Referenced<T>;
    example?: unknown;
    examples?: {
        [name: string]: Referenced<Oas3Example>;
    };
    encoding?: {
        [field: string]: Oas3Encoding<T>;
    };
    itemSchema?: Referenced<T>;
    prefixEncoding?: Oas3Encoding<T>[];
    itemEncoding?: Referenced<Oas3Encoding<T>>;
}
export interface Oas3Encoding<T extends Oas3Schema | Oas3_1Schema = Oas3Schema | Oas3_1Schema> {
    contentType: string;
    headers?: {
        [name: string]: Referenced<Oas3Header<T>>;
    };
    style: Oas3ParameterStyle;
    explode: boolean;
    allowReserved: boolean;
}
export type Oas3ParameterLocation = 'query' | 'querystring' | 'header' | 'path' | 'cookie';
export type Oas3ParameterStyle = 'matrix' | 'label' | 'form' | 'simple' | 'spaceDelimited' | 'pipeDelimited' | 'deepObject';
export interface Oas3RequestBody<T extends Oas3Schema | Oas3_1Schema = Oas3Schema | Oas3_1Schema> {
    description?: string;
    required?: boolean;
    content: {
        [mime: string]: Oas3MediaType<T>;
    };
}
export interface Oas3Responses<T extends Oas3Schema | Oas3_1Schema = Oas3Schema | Oas3_1Schema> {
    [code: string]: Oas3Response<T>;
}
export interface Oas3Response<T extends Oas3Schema | Oas3_1Schema = Oas3Schema | Oas3_1Schema> {
    description?: string;
    summary?: string;
    headers?: {
        [name: string]: Referenced<Oas3Header<T>>;
    };
    content?: {
        [mime: string]: Oas3MediaType<T>;
    };
    links?: {
        [name: string]: Referenced<Oas3Link>;
    };
}
export interface Oas3Link {
    operationRef?: string;
    operationId?: string;
    parameters?: {
        [name: string]: unknown;
    };
    requestBody?: unknown;
    description?: string;
    server?: Oas3Server;
}
export type Oas3Header<T extends Oas3Schema | Oas3_1Schema = Oas3Schema | Oas3_1Schema> = Omit<Oas3Parameter<T>, 'in' | 'name'>;
export interface Oas3Callback<T extends Oas3Schema | Oas3_1Schema = Oas3Schema | Oas3_1Schema> {
    [name: string]: Oas3PathItem<T>;
}
export interface Oas3ComponentsBase<T extends Oas3Schema | Oas3_1Schema> {
    schemas?: {
        [name: string]: Referenced<T>;
    };
    responses?: {
        [name: string]: Referenced<Oas3Response<T>>;
    };
    parameters?: {
        [name: string]: Referenced<Oas3Parameter<T>>;
    };
    examples?: {
        [name: string]: Referenced<Oas3Example>;
    };
    requestBodies?: {
        [name: string]: Referenced<Oas3RequestBody<T>>;
    };
    headers?: {
        [name: string]: Referenced<Oas3Header<T>>;
    };
    securitySchemes?: {
        [name: string]: Referenced<Oas3SecurityScheme>;
    };
    links?: {
        [name: string]: Referenced<Oas3Link>;
    };
    callbacks?: {
        [name: string]: Referenced<Oas3Callback<T>>;
    };
}
export interface Oas3_1Components extends Oas3ComponentsBase<Oas3_1Schema> {
    pathItems?: {
        [name: string]: Referenced<Oas3PathItem<Oas3_1Schema>>;
    };
}
export interface Oas3_2Components extends Oas3_1Components {
    mediaTypes?: {
        [name: string]: Referenced<Oas3MediaType<Oas3_1Schema>>;
    };
}
export interface Oas3Components extends Oas3ComponentsBase<Oas3Schema> {
}
export type Oas3ComponentName<T extends Oas3Schema | Oas3_1Schema = Oas3Schema | Oas3_1Schema> = keyof Oas3ComponentsBase<T>;
export interface Oas3SecurityRequirement {
    [name: string]: string[];
}
type SecuritySchemeBase = {
    description?: string;
    deprecated?: boolean;
    [key: `x-${string}`]: unknown;
};
export type ApiKeyAuth = {
    type: 'apiKey';
    in: 'query' | 'header' | 'cookie';
    name: string;
} & SecuritySchemeBase;
export type HttpAuth = {
    type: 'http';
    scheme: string;
} & SecuritySchemeBase;
export type BasicAuth = {
    type: 'http';
    scheme: 'basic';
} & SecuritySchemeBase;
export type BearerAuth = {
    type: 'http';
    scheme: 'bearer';
    bearerFormat?: string;
} & SecuritySchemeBase;
export type DigestAuth = {
    type: 'http';
    scheme: 'digest';
} & SecuritySchemeBase;
export type MutualTLSAuth = {
    type: 'mutualTLS';
} & SecuritySchemeBase;
export type OAuth2Auth = {
    type: 'oauth2';
    flows: {
        implicit?: {
            authorizationUrl: string;
            scopes: Record<string, string>;
            refreshUrl?: string;
        };
        password?: {
            tokenUrl: string;
            scopes: Record<string, string>;
            refreshUrl?: string;
        };
        clientCredentials?: {
            tokenUrl: string;
            scopes: Record<string, string>;
            refreshUrl?: string;
        };
        authorizationCode?: {
            authorizationUrl: string;
            tokenUrl: string;
            scopes: Record<string, string>;
            refreshUrl?: string;
        };
        deviceAuthorization?: {
            deviceAuthorizationUrl: string;
            tokenUrl: string;
            scopes: Record<string, string>;
            refreshUrl?: string;
        };
    };
    oauth2MetadataUrl?: string;
} & SecuritySchemeBase;
export type OpenIDAuth = {
    type: 'openIdConnect';
    openIdConnectUrl: string;
} & SecuritySchemeBase;
export type Oas3SecurityScheme = ApiKeyAuth | HttpAuth | BasicAuth | BearerAuth | DigestAuth | MutualTLSAuth | OAuth2Auth | OpenIDAuth;
export interface Oas3Tag {
    name: string;
    description?: string;
    externalDocs?: Oas3ExternalDocs;
    'x-displayName'?: string;
}
export type Oas3_2Tag = Omit<Oas3Tag, 'x-displayName'> & {
    kind?: string;
    parent?: string;
    summary?: string;
};
export interface Oas3ExternalDocs {
    description?: string;
    url: string;
}
export interface Oas3Contact {
    name?: string;
    url?: string;
    email?: string;
}
export interface Oas3License {
    name: string;
    url?: string;
}
export {};
//# sourceMappingURL=openapi.d.ts.map