import { CookieSchema, DocPathTemplateMethod, HeaderSchema, PathSchema, PathTemplate, QuerySchema, RequestBodyToJsonSchema, RequiredDoc, ResponseBodyToJsonSchema, TemplateToDocPath } from './types';
/**
 * @public
 */
export type Response<Doc extends RequiredDoc, Path extends PathTemplate<Extract<keyof Doc['paths'], string>>, Method extends DocPathTemplateMethod<Doc, Path>> = ResponseBodyToJsonSchema<Doc, TemplateToDocPath<Doc, Path>, Method>;
/**
 * @public
 */
export type Request<Doc extends RequiredDoc, Path extends PathTemplate<Extract<keyof Doc['paths'], string>>, Method extends DocPathTemplateMethod<Doc, Path>> = RequestBodyToJsonSchema<Doc, TemplateToDocPath<Doc, Path>, Method>;
/**
 * @public
 */
export type HeaderParameters<Doc extends RequiredDoc, Path extends PathTemplate<Extract<keyof Doc['paths'], string>>, Method extends DocPathTemplateMethod<Doc, Path>> = HeaderSchema<Doc, TemplateToDocPath<Doc, Path>, Method>;
/**
 * @public
 */
export type CookieParameters<Doc extends RequiredDoc, Path extends PathTemplate<Extract<keyof Doc['paths'], string>>, Method extends DocPathTemplateMethod<Doc, Path>> = CookieSchema<Doc, TemplateToDocPath<Doc, Path>, Method>;
/**
 * @public
 */
export type PathParameters<Doc extends RequiredDoc, Path extends PathTemplate<Extract<keyof Doc['paths'], string>>, Method extends DocPathTemplateMethod<Doc, Path>> = PathSchema<Doc, TemplateToDocPath<Doc, Path>, Method>;
/**
 * @public
 */
export type QueryParameters<Doc extends RequiredDoc, Path extends PathTemplate<Extract<keyof Doc['paths'], string>>, Method extends DocPathTemplateMethod<Doc, Path>> = QuerySchema<Doc, TemplateToDocPath<Doc, Path>, Method>;
