import { AssetEmitter } from "@typespec/asset-emitter";
import { EmitContext, ModelProperty, Namespace, Program, Scalar } from "@typespec/compiler";
import { MetadataInfo } from "@typespec/http";
import { JsonSchemaModule } from "./json-schema.js";
import { OpenAPI3EmitterOptions, OpenAPIVersion } from "./lib.js";
import { ResolvedOpenAPI3EmitterOptions } from "./openapi.js";
import { SSEModule } from "./sse-module.js";
import { OpenAPI3Schema, OpenAPISchema3_1, SupportedOpenAPIDocuments } from "./types.js";
import { VisibilityUsageTracker } from "./visibility-usage.js";
import { XmlModule } from "./xml-module.js";
export type CreateSchemaEmitter = (props: {
    program: Program;
    context: EmitContext<OpenAPI3EmitterOptions>;
    metadataInfo: MetadataInfo;
    visibilityUsage: VisibilityUsageTracker;
    options: ResolvedOpenAPI3EmitterOptions;
    optionalDependencies: {
        jsonSchemaModule?: JsonSchemaModule;
        xmlModule?: XmlModule;
        sseModule?: SSEModule;
    };
}) => AssetEmitter<OpenAPI3Schema | OpenAPISchema3_1, OpenAPI3EmitterOptions>;
export interface OpenApiSpecSpecificProps {
    applyEncoding(program: Program, typespecType: Scalar | ModelProperty, target: OpenAPI3Schema, options: ResolvedOpenAPI3EmitterOptions): OpenAPI3Schema & OpenAPISchema3_1;
    createRootDoc: (program: Program, serviceType: Namespace, serviceVersion?: string) => SupportedOpenAPIDocuments;
    createSchemaEmitter: CreateSchemaEmitter;
    /**
     * Returns the binary description for an unencoded binary type
     * @see https://spec.openapis.org/oas/v3.1.1.html#migrating-binary-descriptions-from-oas-3-0
     */
    getRawBinarySchema(contentType?: string): OpenAPI3Schema | OpenAPISchema3_1;
    isRawBinarySchema(schema: OpenAPI3Schema | OpenAPISchema3_1): boolean;
}
export declare function getOpenApiSpecProps(specVersion: OpenAPIVersion): OpenApiSpecSpecificProps;
//# sourceMappingURL=openapi-spec-mappings.d.ts.map