/**
* Copyright Super iPaaS Integration LLC, an IBM Company 2024
*/
import { FileAccessType, OpenApiPathItemObject, OpenApiDocumentObject, OpenApiTagObject, OpenAPISpecComponentsSchema, OpenAPISpecComponentsSchemaObject, OpenApiSpecServer, OpenApiSpecV3Components, OpenApiSpecExampleObj, OpenAPIExamples } from "./api-spec-handler.interface.js";
import { OpenAPIV3 } from "openapi-types";
import { VCSFileInfo } from "../../vcs/models/vcs-file-info.model.js";
export interface IOpenApiV3Handler {
    setInfo(file: FileSystemFileHandle | VCSFileInfo, info: OpenAPIV3.InfoObject): Promise<OpenAPIV3.InfoObject>;
    addComponentExample(file: FileAccessType, Key: string, ExampleObject: OpenApiSpecExampleObj): Promise<OpenAPIExamples>;
    updateComponentExample(file: FileAccessType, PrevKey: string, CurrentKey: string, ExampleObject: OpenApiSpecExampleObj): Promise<OpenAPIExamples>;
    deleteComponentExample(file: FileAccessType, Key: string): Promise<OpenAPIExamples>;
    setInfo(file: FileAccessType, info: OpenAPIV3.InfoObject): Promise<OpenAPIV3.InfoObject>;
    addServer(file: FileAccessType, newServer: OpenApiSpecServer): Promise<OpenAPIV3.ServerObject[]>;
    updateServer(file: FileAccessType, prevServer: OpenApiSpecServer, newServer: OpenApiSpecServer): Promise<OpenAPIV3.ServerObject[]>;
    deleteServer(file: FileAccessType, server: OpenApiSpecServer): Promise<OpenAPIV3.ServerObject[]>;
    addPath(file: FileAccessType, key: string, newPath: OpenApiPathItemObject): Promise<OpenAPIV3.Document>;
    updatePath(file: FileAccessType, prevKey: string, newKey: string, newPath: OpenApiPathItemObject): Promise<OpenAPIV3.Document>;
    deletePath(file: FileAccessType, path: string): Promise<OpenAPIV3.Document>;
    addComponentsSchema(file: FileAccessType, key: string, newSchema: OpenAPISpecComponentsSchemaObject): Promise<OpenAPISpecComponentsSchema>;
    deleteComponentsSchema(file: FileAccessType, key: string): Promise<OpenAPISpecComponentsSchema>;
    updateComponentsSchema(file: FileAccessType, prevKey: string, newKey: string, updatedSchema: OpenAPISpecComponentsSchemaObject): Promise<OpenAPISpecComponentsSchema>;
    addTag(file: FileAccessType, tag: OpenApiTagObject): Promise<OpenAPIV3.TagObject[]>;
    updateTag(file: FileAccessType, prevKey: string, tag: OpenApiTagObject): Promise<OpenAPIV3.TagObject[]>;
    deleteTag(file: FileAccessType, tag: string): Promise<OpenAPIV3.TagObject[]>;
    addOrUpdateDocument(file: FileAccessType, document: OpenApiDocumentObject): Promise<OpenAPIV3.ExternalDocumentationObject>;
    deleteDocument(file: FileAccessType): Promise<undefined>;
    addComponent(file: FileAccessType, key: string, object: OpenApiSpecV3Components, typeOfComponent: keyof OpenAPIV3.ComponentsObject): Promise<OpenApiSpecV3Components>;
    updateComponent(file: FileAccessType, prevKey: string, currentKey: string, object: OpenApiSpecV3Components, typeOfComponent: keyof OpenAPIV3.ComponentsObject): Promise<OpenApiSpecV3Components>;
    deleteComponent(file: FileAccessType, key: string, typeOfComponent: keyof OpenAPIV3.ComponentsObject): Promise<OpenApiSpecV3Components>;
    setComponent: (file: FileAccessType, data: Record<string, OpenApiSpecV3Components>, typeOfComponent: keyof OpenAPIV3.ComponentsObject) => Promise<OpenAPIV3.Document>;
    addSecurityRequirement(file: FileAccessType, securityRequirementObj: OpenAPIV3.SecurityRequirementObject[]): Promise<OpenAPIV3.SecurityRequirementObject[]>;
    updateSecurityRequirement(file: FileAccessType, prevsecurityRequirementName: string, securityRequirementObj: OpenAPIV3.SecurityRequirementObject): Promise<OpenAPIV3.SecurityRequirementObject[]>;
    deleteSecurityRequirement(file: FileAccessType, securityRequirementName: string): Promise<OpenAPIV3.SecurityRequirementObject[]>;
}
//# sourceMappingURL=openapi-v3-handler.interface.d.ts.map