export type FileType = "yaml" | "json";
export type OpenAPIVersion = "3.0.0" | "3.1.0" | "3.2.0";
export type ExperimentalParameterExamplesStrategy = "data" | "serialized";
export type EnumStrategy = "default" | "annotated";
export interface OpenAPI3EmitterOptions {
    /**
     * If the content should be serialized as YAML or JSON. Can be a single value or an array to emit multiple file types.
     * When an array is provided, the `{file-type}` variable can be used in `output-file` to produce distinct filenames.
     * @default yaml, it not specified infer from the `output-file` extension
     */
    "file-type"?: FileType | FileType[];
    /**
     * Name of the output file.
     * Output file will interpolate the following values:
     *  - service-name: Name of the service
     *  - service-name-if-multiple: Name of the service if multiple
     *  - version: Version of the service if multiple
     *
     * @default `{service-name-if-multiple}.{version}.openapi.yaml` or `.json` if {@link OpenAPI3EmitterOptions["file-type"]} is `"json"`. When `file-type` is an array, uses `{file-type}` variable.
     *
     * @example Single service no versioning
     *  - `openapi.yaml`
     *
     * @example Multiple services no versioning
     *  - `openapi.Org1.Service1.yaml`
     *  - `openapi.Org1.Service2.yaml`
     *
     * @example Single service with versioning
     *  - `openapi.v1.yaml`
     *  - `openapi.v2.yaml`
     *
     * @example Multiple service with versioning
     *  - `openapi.Org1.Service1.v1.yaml`
     *  - `openapi.Org1.Service1.v2.yaml`
     *  - `openapi.Org1.Service2.v1.0.yaml`
     *  - `openapi.Org1.Service2.v1.1.yaml`
     */
    "output-file"?: string;
    /**
     * The Open API specification versions to emit.
     * If more than one version is specified, then the output file
     * will be created inside a directory matching each specification version.
     *
     * @default ["3.0.0"]
     */
    "openapi-versions"?: OpenAPIVersion[];
    /**
     * Set the newline character for emitting files.
     * @default lf
     */
    "new-line"?: "crlf" | "lf";
    /**
     * Omit unreachable types.
     * By default all types declared under the service namespace will be included. With this flag on only types references in an operation will be emitted.
     */
    "omit-unreachable-types"?: boolean;
    /**
     * If the generated openapi types should have the `x-typespec-name` extension set with the name of the TypeSpec type that created it.
     * This extension is meant for debugging and should not be depended on.
     * @default "never"
     */
    "include-x-typespec-name"?: "inline-only" | "never";
    /**
     * How to handle safeint type. Options are:
     *  - `double-int`: Will produce `type: integer, format: double-int`
     *  - `int64`: Will produce `type: integer, format: int64`
     * @default "int64"
     */
    "safeint-strategy"?: "double-int" | "int64";
    /**
     * If true, then for models emitted as object schemas we default `additionalProperties` to false for
     * OpenAPI 3.0, and `unevaluatedProperties` to false for OpenAPI 3.1, if not explicitly specified elsewhere.
     * @default false
     */
    "seal-object-schemas"?: boolean;
    /**
     * Determines how to emit examples on parameters.
     *
     * Note: This is an experimental feature and may change in future versions.
     * @see https://spec.openapis.org/oas/v3.0.4.html#style-examples for parameter example serialization rules.
     * @see https://github.com/OAI/OpenAPI-Specification/discussions/4622 for discussion on handling parameter examples.
     */
    "experimental-parameter-examples"?: ExperimentalParameterExamplesStrategy;
    /**
     * How should operation ID be generated when `@operationId` is not used.
     * Available options are
     * - `parent-container`: Uses the parent namespace/interface and operation name to generate the ID.
     * - `fqn`: Uses the fully qualified name(from service root) of the operation to generate the ID.
     * - `explicit-only`: Only use explicitly defined operation IDs.
     * @default parent-container
     */
    "operation-id-strategy"?: OperationIdStrategy | {
        /** Strategy used to generate the operation ID. */
        kind: OperationIdStrategy;
        /** Separator used to join segment in the operation name. */
        separator?: string;
    };
    /**
     * How to emit TypeSpec enums.
     *
     *  - `default`: Emit as a single schema using the `enum` keyword.
     *  - `annotated`: Emit as a `oneOf` of `const` subschemas, each annotated with `title` and `description`
     *    when the corresponding enum member has `@summary` or `@doc`. This follows the OpenAPI 3.1.1
     *    [annotated enumerations](https://spec.openapis.org/oas/v3.1.1.html#annotated-enumerations) pattern.
     *    Only supported by OpenAPI 3.1.0 and above. When emitting OpenAPI 3.0.0, a warning will be reported
     *    and the `default` style will be used instead.
     *
     * @default "default"
     */
    "enum-strategy"?: EnumStrategy;
}
export type OperationIdStrategy = "parent-container" | "fqn" | "explicit-only";
export declare const $lib: import("@typespec/compiler").TypeSpecLibrary<{
    "oneof-union": {
        readonly default: "@oneOf decorator can only be used on a union or a model property which type is a union.";
    };
    "inconsistent-shared-route-request-visibility": {
        readonly default: "All operations with `@sharedRoutes` must have the same `@requestVisibility`.";
    };
    "invalid-server-variable": {
        readonly default: import("@typespec/compiler").CallableMessage<["propName"]>;
    };
    "invalid-format": {
        readonly default: import("@typespec/compiler").CallableMessage<["value", "paramType"]>;
    };
    "invalid-style": {
        readonly default: import("@typespec/compiler").CallableMessage<["style", "paramType"]>;
        readonly optionalPath: import("@typespec/compiler").CallableMessage<["style", "paramType", "style"]>;
    };
    "path-reserved-expansion": {
        readonly default: "Reserved expansion of path parameter with '+' operator #{allowReserved: true} is not supported in OpenAPI3.";
    };
    "resource-namespace": {
        readonly default: "Resource goes on namespace";
    };
    "path-query": {
        readonly default: "OpenAPI does not allow paths containing a query string.";
    };
    "duplicate-header": {
        readonly default: import("@typespec/compiler").CallableMessage<["header"]>;
    };
    "status-code-in-default-response": {
        readonly default: "a default response should not have an explicit status code";
    };
    "invalid-schema": {
        readonly default: import("@typespec/compiler").CallableMessage<["type"]>;
    };
    "union-null": {
        readonly default: "Cannot have a union containing only null types.";
    };
    "empty-union": {
        readonly default: "Empty unions are not supported for OpenAPI v3 - enums must have at least one value.";
    };
    "empty-enum": {
        readonly default: "Empty enums are not supported for OpenAPI v3 - enums must have at least one value.";
    };
    "enum-unique-type": {
        readonly default: "Enums are not supported unless all options are literals of the same type.";
    };
    "inline-cycle": {
        readonly default: import("@typespec/compiler").CallableMessage<["type"]>;
    };
    "unsupported-status-code-range": {
        readonly default: import("@typespec/compiler").CallableMessage<["start", "end"]>;
    };
    "invalid-model-property": {
        readonly default: import("@typespec/compiler").CallableMessage<["type"]>;
    };
    "unsupported-auth": {
        readonly default: import("@typespec/compiler").CallableMessage<["authType"]>;
    };
    "xml-attribute-invalid-property-type": {
        readonly default: import("@typespec/compiler").CallableMessage<["name"]>;
    };
    "xml-unwrapped-invalid-property-type": {
        readonly default: import("@typespec/compiler").CallableMessage<["name"]>;
    };
    "invalid-component-fixed-field-key": {
        readonly default: import("@typespec/compiler").CallableMessage<["value"]>;
    };
    "streams-not-supported": {
        readonly default: "Streams with itemSchema are only fully supported in OpenAPI 3.2.0 or above. The response will be emitted without itemSchema. Consider using OpenAPI 3.2.0 for full stream support.";
    };
    "default-not-supported": {
        readonly default: import("@typespec/compiler").CallableMessage<["message"]>;
    };
    "enum-strategy-not-supported": {
        readonly default: "`enum-strategy: annotated` is only supported for OpenAPI 3.1.0 and above. The default enum strategy will be used for OpenAPI 3.0.0.";
    };
}, OpenAPI3EmitterOptions, never>;
export declare const createDiagnostic: <C extends "oneof-union" | "inconsistent-shared-route-request-visibility" | "invalid-server-variable" | "invalid-format" | "invalid-style" | "path-reserved-expansion" | "resource-namespace" | "path-query" | "duplicate-header" | "status-code-in-default-response" | "invalid-schema" | "union-null" | "empty-union" | "empty-enum" | "enum-unique-type" | "inline-cycle" | "unsupported-status-code-range" | "invalid-model-property" | "unsupported-auth" | "xml-attribute-invalid-property-type" | "xml-unwrapped-invalid-property-type" | "invalid-component-fixed-field-key" | "streams-not-supported" | "default-not-supported" | "enum-strategy-not-supported", M extends keyof {
    "oneof-union": {
        readonly default: "@oneOf decorator can only be used on a union or a model property which type is a union.";
    };
    "inconsistent-shared-route-request-visibility": {
        readonly default: "All operations with `@sharedRoutes` must have the same `@requestVisibility`.";
    };
    "invalid-server-variable": {
        readonly default: import("@typespec/compiler").CallableMessage<["propName"]>;
    };
    "invalid-format": {
        readonly default: import("@typespec/compiler").CallableMessage<["value", "paramType"]>;
    };
    "invalid-style": {
        readonly default: import("@typespec/compiler").CallableMessage<["style", "paramType"]>;
        readonly optionalPath: import("@typespec/compiler").CallableMessage<["style", "paramType", "style"]>;
    };
    "path-reserved-expansion": {
        readonly default: "Reserved expansion of path parameter with '+' operator #{allowReserved: true} is not supported in OpenAPI3.";
    };
    "resource-namespace": {
        readonly default: "Resource goes on namespace";
    };
    "path-query": {
        readonly default: "OpenAPI does not allow paths containing a query string.";
    };
    "duplicate-header": {
        readonly default: import("@typespec/compiler").CallableMessage<["header"]>;
    };
    "status-code-in-default-response": {
        readonly default: "a default response should not have an explicit status code";
    };
    "invalid-schema": {
        readonly default: import("@typespec/compiler").CallableMessage<["type"]>;
    };
    "union-null": {
        readonly default: "Cannot have a union containing only null types.";
    };
    "empty-union": {
        readonly default: "Empty unions are not supported for OpenAPI v3 - enums must have at least one value.";
    };
    "empty-enum": {
        readonly default: "Empty enums are not supported for OpenAPI v3 - enums must have at least one value.";
    };
    "enum-unique-type": {
        readonly default: "Enums are not supported unless all options are literals of the same type.";
    };
    "inline-cycle": {
        readonly default: import("@typespec/compiler").CallableMessage<["type"]>;
    };
    "unsupported-status-code-range": {
        readonly default: import("@typespec/compiler").CallableMessage<["start", "end"]>;
    };
    "invalid-model-property": {
        readonly default: import("@typespec/compiler").CallableMessage<["type"]>;
    };
    "unsupported-auth": {
        readonly default: import("@typespec/compiler").CallableMessage<["authType"]>;
    };
    "xml-attribute-invalid-property-type": {
        readonly default: import("@typespec/compiler").CallableMessage<["name"]>;
    };
    "xml-unwrapped-invalid-property-type": {
        readonly default: import("@typespec/compiler").CallableMessage<["name"]>;
    };
    "invalid-component-fixed-field-key": {
        readonly default: import("@typespec/compiler").CallableMessage<["value"]>;
    };
    "streams-not-supported": {
        readonly default: "Streams with itemSchema are only fully supported in OpenAPI 3.2.0 or above. The response will be emitted without itemSchema. Consider using OpenAPI 3.2.0 for full stream support.";
    };
    "default-not-supported": {
        readonly default: import("@typespec/compiler").CallableMessage<["message"]>;
    };
    "enum-strategy-not-supported": {
        readonly default: "`enum-strategy: annotated` is only supported for OpenAPI 3.1.0 and above. The default enum strategy will be used for OpenAPI 3.0.0.";
    };
}[C]>(diag: import("@typespec/compiler").DiagnosticReport<{
    "oneof-union": {
        readonly default: "@oneOf decorator can only be used on a union or a model property which type is a union.";
    };
    "inconsistent-shared-route-request-visibility": {
        readonly default: "All operations with `@sharedRoutes` must have the same `@requestVisibility`.";
    };
    "invalid-server-variable": {
        readonly default: import("@typespec/compiler").CallableMessage<["propName"]>;
    };
    "invalid-format": {
        readonly default: import("@typespec/compiler").CallableMessage<["value", "paramType"]>;
    };
    "invalid-style": {
        readonly default: import("@typespec/compiler").CallableMessage<["style", "paramType"]>;
        readonly optionalPath: import("@typespec/compiler").CallableMessage<["style", "paramType", "style"]>;
    };
    "path-reserved-expansion": {
        readonly default: "Reserved expansion of path parameter with '+' operator #{allowReserved: true} is not supported in OpenAPI3.";
    };
    "resource-namespace": {
        readonly default: "Resource goes on namespace";
    };
    "path-query": {
        readonly default: "OpenAPI does not allow paths containing a query string.";
    };
    "duplicate-header": {
        readonly default: import("@typespec/compiler").CallableMessage<["header"]>;
    };
    "status-code-in-default-response": {
        readonly default: "a default response should not have an explicit status code";
    };
    "invalid-schema": {
        readonly default: import("@typespec/compiler").CallableMessage<["type"]>;
    };
    "union-null": {
        readonly default: "Cannot have a union containing only null types.";
    };
    "empty-union": {
        readonly default: "Empty unions are not supported for OpenAPI v3 - enums must have at least one value.";
    };
    "empty-enum": {
        readonly default: "Empty enums are not supported for OpenAPI v3 - enums must have at least one value.";
    };
    "enum-unique-type": {
        readonly default: "Enums are not supported unless all options are literals of the same type.";
    };
    "inline-cycle": {
        readonly default: import("@typespec/compiler").CallableMessage<["type"]>;
    };
    "unsupported-status-code-range": {
        readonly default: import("@typespec/compiler").CallableMessage<["start", "end"]>;
    };
    "invalid-model-property": {
        readonly default: import("@typespec/compiler").CallableMessage<["type"]>;
    };
    "unsupported-auth": {
        readonly default: import("@typespec/compiler").CallableMessage<["authType"]>;
    };
    "xml-attribute-invalid-property-type": {
        readonly default: import("@typespec/compiler").CallableMessage<["name"]>;
    };
    "xml-unwrapped-invalid-property-type": {
        readonly default: import("@typespec/compiler").CallableMessage<["name"]>;
    };
    "invalid-component-fixed-field-key": {
        readonly default: import("@typespec/compiler").CallableMessage<["value"]>;
    };
    "streams-not-supported": {
        readonly default: "Streams with itemSchema are only fully supported in OpenAPI 3.2.0 or above. The response will be emitted without itemSchema. Consider using OpenAPI 3.2.0 for full stream support.";
    };
    "default-not-supported": {
        readonly default: import("@typespec/compiler").CallableMessage<["message"]>;
    };
    "enum-strategy-not-supported": {
        readonly default: "`enum-strategy: annotated` is only supported for OpenAPI 3.1.0 and above. The default enum strategy will be used for OpenAPI 3.0.0.";
    };
}, C, M>) => import("@typespec/compiler").Diagnostic, reportDiagnostic: <C extends "oneof-union" | "inconsistent-shared-route-request-visibility" | "invalid-server-variable" | "invalid-format" | "invalid-style" | "path-reserved-expansion" | "resource-namespace" | "path-query" | "duplicate-header" | "status-code-in-default-response" | "invalid-schema" | "union-null" | "empty-union" | "empty-enum" | "enum-unique-type" | "inline-cycle" | "unsupported-status-code-range" | "invalid-model-property" | "unsupported-auth" | "xml-attribute-invalid-property-type" | "xml-unwrapped-invalid-property-type" | "invalid-component-fixed-field-key" | "streams-not-supported" | "default-not-supported" | "enum-strategy-not-supported", M extends keyof {
    "oneof-union": {
        readonly default: "@oneOf decorator can only be used on a union or a model property which type is a union.";
    };
    "inconsistent-shared-route-request-visibility": {
        readonly default: "All operations with `@sharedRoutes` must have the same `@requestVisibility`.";
    };
    "invalid-server-variable": {
        readonly default: import("@typespec/compiler").CallableMessage<["propName"]>;
    };
    "invalid-format": {
        readonly default: import("@typespec/compiler").CallableMessage<["value", "paramType"]>;
    };
    "invalid-style": {
        readonly default: import("@typespec/compiler").CallableMessage<["style", "paramType"]>;
        readonly optionalPath: import("@typespec/compiler").CallableMessage<["style", "paramType", "style"]>;
    };
    "path-reserved-expansion": {
        readonly default: "Reserved expansion of path parameter with '+' operator #{allowReserved: true} is not supported in OpenAPI3.";
    };
    "resource-namespace": {
        readonly default: "Resource goes on namespace";
    };
    "path-query": {
        readonly default: "OpenAPI does not allow paths containing a query string.";
    };
    "duplicate-header": {
        readonly default: import("@typespec/compiler").CallableMessage<["header"]>;
    };
    "status-code-in-default-response": {
        readonly default: "a default response should not have an explicit status code";
    };
    "invalid-schema": {
        readonly default: import("@typespec/compiler").CallableMessage<["type"]>;
    };
    "union-null": {
        readonly default: "Cannot have a union containing only null types.";
    };
    "empty-union": {
        readonly default: "Empty unions are not supported for OpenAPI v3 - enums must have at least one value.";
    };
    "empty-enum": {
        readonly default: "Empty enums are not supported for OpenAPI v3 - enums must have at least one value.";
    };
    "enum-unique-type": {
        readonly default: "Enums are not supported unless all options are literals of the same type.";
    };
    "inline-cycle": {
        readonly default: import("@typespec/compiler").CallableMessage<["type"]>;
    };
    "unsupported-status-code-range": {
        readonly default: import("@typespec/compiler").CallableMessage<["start", "end"]>;
    };
    "invalid-model-property": {
        readonly default: import("@typespec/compiler").CallableMessage<["type"]>;
    };
    "unsupported-auth": {
        readonly default: import("@typespec/compiler").CallableMessage<["authType"]>;
    };
    "xml-attribute-invalid-property-type": {
        readonly default: import("@typespec/compiler").CallableMessage<["name"]>;
    };
    "xml-unwrapped-invalid-property-type": {
        readonly default: import("@typespec/compiler").CallableMessage<["name"]>;
    };
    "invalid-component-fixed-field-key": {
        readonly default: import("@typespec/compiler").CallableMessage<["value"]>;
    };
    "streams-not-supported": {
        readonly default: "Streams with itemSchema are only fully supported in OpenAPI 3.2.0 or above. The response will be emitted without itemSchema. Consider using OpenAPI 3.2.0 for full stream support.";
    };
    "default-not-supported": {
        readonly default: import("@typespec/compiler").CallableMessage<["message"]>;
    };
    "enum-strategy-not-supported": {
        readonly default: "`enum-strategy: annotated` is only supported for OpenAPI 3.1.0 and above. The default enum strategy will be used for OpenAPI 3.0.0.";
    };
}[C]>(program: import("@typespec/compiler").Program, diag: import("@typespec/compiler").DiagnosticReport<{
    "oneof-union": {
        readonly default: "@oneOf decorator can only be used on a union or a model property which type is a union.";
    };
    "inconsistent-shared-route-request-visibility": {
        readonly default: "All operations with `@sharedRoutes` must have the same `@requestVisibility`.";
    };
    "invalid-server-variable": {
        readonly default: import("@typespec/compiler").CallableMessage<["propName"]>;
    };
    "invalid-format": {
        readonly default: import("@typespec/compiler").CallableMessage<["value", "paramType"]>;
    };
    "invalid-style": {
        readonly default: import("@typespec/compiler").CallableMessage<["style", "paramType"]>;
        readonly optionalPath: import("@typespec/compiler").CallableMessage<["style", "paramType", "style"]>;
    };
    "path-reserved-expansion": {
        readonly default: "Reserved expansion of path parameter with '+' operator #{allowReserved: true} is not supported in OpenAPI3.";
    };
    "resource-namespace": {
        readonly default: "Resource goes on namespace";
    };
    "path-query": {
        readonly default: "OpenAPI does not allow paths containing a query string.";
    };
    "duplicate-header": {
        readonly default: import("@typespec/compiler").CallableMessage<["header"]>;
    };
    "status-code-in-default-response": {
        readonly default: "a default response should not have an explicit status code";
    };
    "invalid-schema": {
        readonly default: import("@typespec/compiler").CallableMessage<["type"]>;
    };
    "union-null": {
        readonly default: "Cannot have a union containing only null types.";
    };
    "empty-union": {
        readonly default: "Empty unions are not supported for OpenAPI v3 - enums must have at least one value.";
    };
    "empty-enum": {
        readonly default: "Empty enums are not supported for OpenAPI v3 - enums must have at least one value.";
    };
    "enum-unique-type": {
        readonly default: "Enums are not supported unless all options are literals of the same type.";
    };
    "inline-cycle": {
        readonly default: import("@typespec/compiler").CallableMessage<["type"]>;
    };
    "unsupported-status-code-range": {
        readonly default: import("@typespec/compiler").CallableMessage<["start", "end"]>;
    };
    "invalid-model-property": {
        readonly default: import("@typespec/compiler").CallableMessage<["type"]>;
    };
    "unsupported-auth": {
        readonly default: import("@typespec/compiler").CallableMessage<["authType"]>;
    };
    "xml-attribute-invalid-property-type": {
        readonly default: import("@typespec/compiler").CallableMessage<["name"]>;
    };
    "xml-unwrapped-invalid-property-type": {
        readonly default: import("@typespec/compiler").CallableMessage<["name"]>;
    };
    "invalid-component-fixed-field-key": {
        readonly default: import("@typespec/compiler").CallableMessage<["value"]>;
    };
    "streams-not-supported": {
        readonly default: "Streams with itemSchema are only fully supported in OpenAPI 3.2.0 or above. The response will be emitted without itemSchema. Consider using OpenAPI 3.2.0 for full stream support.";
    };
    "default-not-supported": {
        readonly default: import("@typespec/compiler").CallableMessage<["message"]>;
    };
    "enum-strategy-not-supported": {
        readonly default: "`enum-strategy: annotated` is only supported for OpenAPI 3.1.0 and above. The default enum strategy will be used for OpenAPI 3.0.0.";
    };
}, C, M>) => void, createStateSymbol: (name: string) => symbol;
export type OpenAPILibrary = typeof $lib;
//# sourceMappingURL=lib.d.ts.map