import { ApiCheckDsl, EntityRule, Result, DocsLinkHelper } from '@useoptic/api-checks'; import { OpenApiHeaderFact, OpenApiOperationFact, IChange, IFact, OpenApiFieldFact, ILocation, OpenAPIV3, OpenApiRequestParameterFact, OpenApiResponseFact, ShouldOrMust, OperationLocation } from '@useoptic/openapi-utilities'; declare type SnykStablity = 'wip' | 'experimental' | 'beta' | 'ga'; declare type DateString = string; declare type ResourceName = string; export interface SynkApiCheckContext { changeDate: DateString; changeResource: ResourceName; changeVersion: { date: DateString; stability: SnykStablity; }; resourceVersions: { [ResourceName: string]: { [DateString: string]: { [SnykStablity: string]: { deprecatedBy: { date: DateString; stability: SnykStablity; } | null; }; }; }; }; } export interface SnykEntityRule extends EntityRule { } export declare class SnykApiCheckDsl implements ApiCheckDsl { private nextFacts; private changelog; private currentJsonLike; private nextJsonLike; private providedContext; private checks; constructor(nextFacts: IFact[], changelog: IChange[], currentJsonLike: OpenAPIV3.Document, nextJsonLike: OpenAPIV3.Document, providedContext: SynkApiCheckContext); checkPromises(): Promise[]; getContext(location: ILocation): OperationLocation & SynkApiCheckContext; get operations(): { added: ShouldOrMust<(added: OpenApiOperationFact, context: OperationLocation & SynkApiCheckContext & import("@useoptic/openapi-utilities").StructuralContext, docs: { includeDocsLink: (link: string) => void; becomesEffectiveOn: (date: Date) => void; }, specItem: { tags?: string[] | undefined; summary?: string | undefined; description?: string | undefined; externalDocs?: OpenAPIV3.ExternalDocumentationObject | undefined; operationId?: string | undefined; parameters?: (OpenAPIV3.ReferenceObject | OpenAPIV3.ParameterObject)[] | undefined; requestBody?: OpenAPIV3.ReferenceObject | OpenAPIV3.RequestBodyObject | undefined; responses: OpenAPIV3.ResponsesObject; callbacks?: { [callback: string]: OpenAPIV3.ReferenceObject | OpenAPIV3.CallbackObject; } | undefined; deprecated?: boolean | undefined; security?: OpenAPIV3.SecurityRequirementObject[] | undefined; servers?: OpenAPIV3.ServerObject[] | undefined; }) => void | Promise>; changed: ShouldOrMust<(before: OpenApiOperationFact, after: OpenApiOperationFact, context: OperationLocation & SynkApiCheckContext & import("@useoptic/openapi-utilities").StructuralContext, docs: { includeDocsLink: (link: string) => void; becomesEffectiveOn: (date: Date) => void; }, specItem: { tags?: string[] | undefined; summary?: string | undefined; description?: string | undefined; externalDocs?: OpenAPIV3.ExternalDocumentationObject | undefined; operationId?: string | undefined; parameters?: (OpenAPIV3.ReferenceObject | OpenAPIV3.ParameterObject)[] | undefined; requestBody?: OpenAPIV3.ReferenceObject | OpenAPIV3.RequestBodyObject | undefined; responses: OpenAPIV3.ResponsesObject; callbacks?: { [callback: string]: OpenAPIV3.ReferenceObject | OpenAPIV3.CallbackObject; } | undefined; deprecated?: boolean | undefined; security?: OpenAPIV3.SecurityRequirementObject[] | undefined; servers?: OpenAPIV3.ServerObject[] | undefined; }) => void | Promise> & { attributes: (limitToKey: string, ...andKeys: string[]) => ShouldOrMust<(before: OpenApiOperationFact, after: OpenApiOperationFact, context: OperationLocation & SynkApiCheckContext & import("@useoptic/openapi-utilities").StructuralContext, docs: { includeDocsLink: (link: string) => void; becomesEffectiveOn: (date: Date) => void; }, specItem: { tags?: string[] | undefined; summary?: string | undefined; description?: string | undefined; externalDocs?: OpenAPIV3.ExternalDocumentationObject | undefined; operationId?: string | undefined; parameters?: (OpenAPIV3.ReferenceObject | OpenAPIV3.ParameterObject)[] | undefined; requestBody?: OpenAPIV3.ReferenceObject | OpenAPIV3.RequestBodyObject | undefined; responses: OpenAPIV3.ResponsesObject; callbacks?: { [callback: string]: OpenAPIV3.ReferenceObject | OpenAPIV3.CallbackObject; } | undefined; deprecated?: boolean | undefined; security?: OpenAPIV3.SecurityRequirementObject[] | undefined; servers?: OpenAPIV3.ServerObject[] | undefined; }) => void | Promise>; }; requirementOnChange: ShouldOrMust<(addedOrAfter: OpenApiOperationFact, context: OperationLocation & SynkApiCheckContext & import("@useoptic/openapi-utilities").StructuralContext, docs: { includeDocsLink: (link: string) => void; becomesEffectiveOn: (date: Date) => void; }, specItem: { tags?: string[] | undefined; summary?: string | undefined; description?: string | undefined; externalDocs?: OpenAPIV3.ExternalDocumentationObject | undefined; operationId?: string | undefined; parameters?: (OpenAPIV3.ReferenceObject | OpenAPIV3.ParameterObject)[] | undefined; requestBody?: OpenAPIV3.ReferenceObject | OpenAPIV3.RequestBodyObject | undefined; responses: OpenAPIV3.ResponsesObject; callbacks?: { [callback: string]: OpenAPIV3.ReferenceObject | OpenAPIV3.CallbackObject; } | undefined; deprecated?: boolean | undefined; security?: OpenAPIV3.SecurityRequirementObject[] | undefined; servers?: OpenAPIV3.ServerObject[] | undefined; }) => void | Promise> & { attributes: (limitToKey: string, ...andKeys: string[]) => ShouldOrMust<(addedOrAfter: OpenApiOperationFact, context: OperationLocation & SynkApiCheckContext & import("@useoptic/openapi-utilities").StructuralContext, docs: { includeDocsLink: (link: string) => void; becomesEffectiveOn: (date: Date) => void; }, specItem: { tags?: string[] | undefined; summary?: string | undefined; description?: string | undefined; externalDocs?: OpenAPIV3.ExternalDocumentationObject | undefined; operationId?: string | undefined; parameters?: (OpenAPIV3.ReferenceObject | OpenAPIV3.ParameterObject)[] | undefined; requestBody?: OpenAPIV3.ReferenceObject | OpenAPIV3.RequestBodyObject | undefined; responses: OpenAPIV3.ResponsesObject; callbacks?: { [callback: string]: OpenAPIV3.ReferenceObject | OpenAPIV3.CallbackObject; } | undefined; deprecated?: boolean | undefined; security?: OpenAPIV3.SecurityRequirementObject[] | undefined; servers?: OpenAPIV3.ServerObject[] | undefined; }) => void | Promise>; }; removed: ShouldOrMust<(before: OpenApiOperationFact, context: OperationLocation & SynkApiCheckContext & import("@useoptic/openapi-utilities").StructuralContext, docs: { includeDocsLink: (link: string) => void; becomesEffectiveOn: (date: Date) => void; }) => void | Promise>; requirement: ShouldOrMust<(value: OpenApiOperationFact, context: OperationLocation & SynkApiCheckContext & import("@useoptic/openapi-utilities").StructuralContext, docs: { includeDocsLink: (link: string) => void; becomesEffectiveOn: (date: Date) => void; }, specItem: { tags?: string[] | undefined; summary?: string | undefined; description?: string | undefined; externalDocs?: OpenAPIV3.ExternalDocumentationObject | undefined; operationId?: string | undefined; parameters?: (OpenAPIV3.ReferenceObject | OpenAPIV3.ParameterObject)[] | undefined; requestBody?: OpenAPIV3.ReferenceObject | OpenAPIV3.RequestBodyObject | undefined; responses: OpenAPIV3.ResponsesObject; callbacks?: { [callback: string]: OpenAPIV3.ReferenceObject | OpenAPIV3.CallbackObject; } | undefined; deprecated?: boolean | undefined; security?: OpenAPIV3.SecurityRequirementObject[] | undefined; servers?: OpenAPIV3.ServerObject[] | undefined; }) => void | Promise>; selectJsonPath: (humanReadable: string, path: string) => { when: (qualifier: (current: T_1[], next: T_1[]) => boolean) => ShouldOrMust<(current: T[], next: T[], docsHelper: DocsLinkHelper) => void>; }; }; get context(): ShouldOrMust<(context: SynkApiCheckContext, docs: DocsLinkHelper) => Promise | void>; get specification(): { requirement: ShouldOrMust<(document: OpenAPIV3.Document, context: SynkApiCheckContext, docs: DocsLinkHelper) => Promise | void>; }; get request(): { queryParameter: EntityRule; pathParameter: EntityRule; header: EntityRule; }; get responses(): { headers: EntityRule; added: ShouldOrMust<(added: OpenApiResponseFact, context: OperationLocation & SynkApiCheckContext & import("@useoptic/openapi-utilities").StructuralContext, docs: { includeDocsLink: (link: string) => void; becomesEffectiveOn: (date: Date) => void; }, specItem: OpenAPIV3.ResponsesObject) => void | Promise>; changed: ShouldOrMust<(before: OpenApiResponseFact, after: OpenApiResponseFact, context: OperationLocation & SynkApiCheckContext & import("@useoptic/openapi-utilities").StructuralContext, docs: { includeDocsLink: (link: string) => void; becomesEffectiveOn: (date: Date) => void; }, specItem: OpenAPIV3.ResponsesObject) => void | Promise> & { attributes: (limitToKey: string, ...andKeys: string[]) => ShouldOrMust<(before: OpenApiResponseFact, after: OpenApiResponseFact, context: OperationLocation & SynkApiCheckContext & import("@useoptic/openapi-utilities").StructuralContext, docs: { includeDocsLink: (link: string) => void; becomesEffectiveOn: (date: Date) => void; }, specItem: OpenAPIV3.ResponsesObject) => void | Promise>; }; requirementOnChange: ShouldOrMust<(addedOrAfter: OpenApiResponseFact, context: OperationLocation & SynkApiCheckContext & import("@useoptic/openapi-utilities").StructuralContext, docs: { includeDocsLink: (link: string) => void; becomesEffectiveOn: (date: Date) => void; }, specItem: OpenAPIV3.ResponsesObject) => void | Promise> & { attributes: (limitToKey: string, ...andKeys: string[]) => ShouldOrMust<(addedOrAfter: OpenApiResponseFact, context: OperationLocation & SynkApiCheckContext & import("@useoptic/openapi-utilities").StructuralContext, docs: { includeDocsLink: (link: string) => void; becomesEffectiveOn: (date: Date) => void; }, specItem: OpenAPIV3.ResponsesObject) => void | Promise>; }; removed: ShouldOrMust<(before: OpenApiResponseFact, context: OperationLocation & SynkApiCheckContext & import("@useoptic/openapi-utilities").StructuralContext, docs: { includeDocsLink: (link: string) => void; becomesEffectiveOn: (date: Date) => void; }) => void | Promise>; requirement: ShouldOrMust<(value: OpenApiResponseFact, context: OperationLocation & SynkApiCheckContext & import("@useoptic/openapi-utilities").StructuralContext, docs: { includeDocsLink: (link: string) => void; becomesEffectiveOn: (date: Date) => void; }, specItem: OpenAPIV3.ResponsesObject) => void | Promise>; }; get checkApiContext(): ShouldOrMust<(context: SynkApiCheckContext, docs: DocsLinkHelper) => void>; get bodyProperties(): SnykEntityRule; } export {}; //# sourceMappingURL=dsl.d.ts.map