local ____lualib = require("lualib_bundle")
local __TS__Class = ____lualib.__TS__Class
local __TS__New = ____lualib.__TS__New
local __TS__ObjectAssign = ____lualib.__TS__ObjectAssign
local __TS__SourceMapTraceBack = ____lualib.__TS__SourceMapTraceBack
__TS__SourceMapTraceBack(debug.getinfo(1).short_src, {["8"] = 6,["9"] = 6,["10"] = 6,["11"] = 13,["12"] = 14,["13"] = 14,["14"] = 14,["15"] = 14,["16"] = 21,["17"] = 21,["18"] = 21,["19"] = 21,["20"] = 21,["21"] = 21,["22"] = 21,["23"] = 21,["24"] = 21,["25"] = 21,["26"] = 14,["27"] = 14,["28"] = 14,["29"] = 14,["30"] = 13,["31"] = 9,["32"] = 10,["33"] = 9,["34"] = 37,["35"] = 38,["36"] = 37,["37"] = 41,["38"] = 42,["39"] = 43,["40"] = 41,["41"] = 45,["42"] = 46,["43"] = 47,["44"] = 45,["45"] = 49,["46"] = 50,["47"] = 51,["48"] = 49,["49"] = 53,["50"] = 54,["51"] = 55,["52"] = 53,["53"] = 57,["54"] = 58,["55"] = 59,["56"] = 57,["57"] = 61,["58"] = 62,["59"] = 63,["60"] = 61,["61"] = 65,["62"] = 66,["63"] = 67,["64"] = 65,["65"] = 69,["66"] = 70,["67"] = 71,["68"] = 69,["69"] = 73,["70"] = 74,["71"] = 75,["72"] = 79,["73"] = 73,["74"] = 81,["75"] = 85,["76"] = 86,["77"] = 87,["78"] = 88,["79"] = 81,["80"] = 90,["81"] = 94,["82"] = 95,["83"] = 96,["84"] = 97,["85"] = 90,["86"] = 99,["87"] = 103,["88"] = 104,["89"] = 106,["90"] = 107,["91"] = 99,["92"] = 109,["93"] = 113,["94"] = 114,["95"] = 115,["96"] = 116,["97"] = 109,["98"] = 118,["99"] = 122,["100"] = 123,["101"] = 125,["102"] = 126,["103"] = 118,["104"] = 128,["105"] = 132,["106"] = 133,["107"] = 134,["108"] = 135,["109"] = 128,["110"] = 137,["111"] = 141,["112"] = 142,["113"] = 144,["114"] = 145,["115"] = 137,["116"] = 147,["117"] = 151,["118"] = 152,["119"] = 153,["120"] = 154,["121"] = 147,["122"] = 156,["123"] = 160,["124"] = 161,["125"] = 162,["126"] = 163,["127"] = 156,["128"] = 165,["129"] = 166,["130"] = 167,["131"] = 167,["132"] = 168,["133"] = 165,["134"] = 170,["135"] = 171,["136"] = 172,["137"] = 172,["138"] = 173,["139"] = 170,["140"] = 175,["141"] = 176,["142"] = 177,["143"] = 175,["144"] = 179,["145"] = 180,["146"] = 180,["147"] = 180,["149"] = 181,["150"] = 182,["151"] = 179});
local ____exports = {}
____exports.OpenApiBuilder = __TS__Class()
local OpenApiBuilder = ____exports.OpenApiBuilder
OpenApiBuilder.name = "OpenApiBuilder"
function OpenApiBuilder.prototype.____constructor(self, doc)
    self.rootDoc = doc or ({
        openapi = "3.1.0",
        info = {title = "app", version = "version"},
        paths = {},
        components = {
            schemas = {},
            responses = {},
            parameters = {},
            examples = {},
            requestBodies = {},
            headers = {},
            securitySchemes = {},
            links = {},
            callbacks = {}
        },
        tags = {},
        servers = {}
    })
end
function OpenApiBuilder.create(self, doc)
    return __TS__New(____exports.OpenApiBuilder, doc)
end
function OpenApiBuilder.prototype.getSpec(self)
    return self.rootDoc
end
function OpenApiBuilder.prototype.addOpenApiVersion(self, openApiVersion)
    self.rootDoc.openapi = openApiVersion
    return self
end
function OpenApiBuilder.prototype.addInfo(self, info)
    self.rootDoc.info = info
    return self
end
function OpenApiBuilder.prototype.addContact(self, contact)
    self.rootDoc.info.contact = contact
    return self
end
function OpenApiBuilder.prototype.addLicense(self, license)
    self.rootDoc.info.license = license
    return self
end
function OpenApiBuilder.prototype.addTitle(self, title)
    self.rootDoc.info.title = title
    return self
end
function OpenApiBuilder.prototype.addDescription(self, description)
    self.rootDoc.info.description = description
    return self
end
function OpenApiBuilder.prototype.addTermsOfService(self, termsOfService)
    self.rootDoc.info.termsOfService = termsOfService
    return self
end
function OpenApiBuilder.prototype.addVersion(self, version)
    self.rootDoc.info.version = version
    return self
end
function OpenApiBuilder.prototype.addPath(self, path, pathItem)
    self.rootDoc.paths = self.rootDoc.paths or ({})
    self.rootDoc.paths[path] = __TS__ObjectAssign({}, self.rootDoc.paths[path] or ({}), pathItem)
    return self
end
function OpenApiBuilder.prototype.addSchema(self, name, schema)
    self.rootDoc.components = self.rootDoc.components or ({})
    self.rootDoc.components.schemas = self.rootDoc.components.schemas or ({})
    self.rootDoc.components.schemas[name] = schema
    return self
end
function OpenApiBuilder.prototype.addResponse(self, name, response)
    self.rootDoc.components = self.rootDoc.components or ({})
    self.rootDoc.components.responses = self.rootDoc.components.responses or ({})
    self.rootDoc.components.responses[name] = response
    return self
end
function OpenApiBuilder.prototype.addParameter(self, name, parameter)
    self.rootDoc.components = self.rootDoc.components or ({})
    self.rootDoc.components.parameters = self.rootDoc.components.parameters or ({})
    self.rootDoc.components.parameters[name] = parameter
    return self
end
function OpenApiBuilder.prototype.addExample(self, name, example)
    self.rootDoc.components = self.rootDoc.components or ({})
    self.rootDoc.components.examples = self.rootDoc.components.examples or ({})
    self.rootDoc.components.examples[name] = example
    return self
end
function OpenApiBuilder.prototype.addRequestBody(self, name, reqBody)
    self.rootDoc.components = self.rootDoc.components or ({})
    self.rootDoc.components.requestBodies = self.rootDoc.components.requestBodies or ({})
    self.rootDoc.components.requestBodies[name] = reqBody
    return self
end
function OpenApiBuilder.prototype.addHeader(self, name, header)
    self.rootDoc.components = self.rootDoc.components or ({})
    self.rootDoc.components.headers = self.rootDoc.components.headers or ({})
    self.rootDoc.components.headers[name] = header
    return self
end
function OpenApiBuilder.prototype.addSecurityScheme(self, name, secScheme)
    self.rootDoc.components = self.rootDoc.components or ({})
    self.rootDoc.components.securitySchemes = self.rootDoc.components.securitySchemes or ({})
    self.rootDoc.components.securitySchemes[name] = secScheme
    return self
end
function OpenApiBuilder.prototype.addLink(self, name, link)
    self.rootDoc.components = self.rootDoc.components or ({})
    self.rootDoc.components.links = self.rootDoc.components.links or ({})
    self.rootDoc.components.links[name] = link
    return self
end
function OpenApiBuilder.prototype.addCallback(self, name, callback)
    self.rootDoc.components = self.rootDoc.components or ({})
    self.rootDoc.components.callbacks = self.rootDoc.components.callbacks or ({})
    self.rootDoc.components.callbacks[name] = callback
    return self
end
function OpenApiBuilder.prototype.addServer(self, server)
    self.rootDoc.servers = self.rootDoc.servers or ({})
    local ____self_rootDoc_servers_0 = self.rootDoc.servers
    ____self_rootDoc_servers_0[#____self_rootDoc_servers_0 + 1] = server
    return self
end
function OpenApiBuilder.prototype.addTag(self, tag)
    self.rootDoc.tags = self.rootDoc.tags or ({})
    local ____self_rootDoc_tags_1 = self.rootDoc.tags
    ____self_rootDoc_tags_1[#____self_rootDoc_tags_1 + 1] = tag
    return self
end
function OpenApiBuilder.prototype.addExternalDocs(self, extDoc)
    self.rootDoc.externalDocs = extDoc
    return self
end
function OpenApiBuilder.prototype.addWebhook(self, webhook, webhookItem)
    local ____self_rootDoc_2, ____webhooks_3 = self.rootDoc, "webhooks"
    if ____self_rootDoc_2[____webhooks_3] == nil then
        ____self_rootDoc_2[____webhooks_3] = {}
    end
    self.rootDoc.webhooks[webhook] = webhookItem
    return self
end
return ____exports
