import { Program, Type, Union, EmitContext } from "@typespec/compiler";
import { AnySchema, BinarySchema, BooleanSchema, NumberSchema, ObjectSchema, Parameter, Schema, StringSchema } from "@autorest/codemodel";
import { CodeModel } from "./common/code-model.js";
import { EmitterOptions } from "./emitter.js";
import { ProcessingCache } from "./type-utils.js";
export declare class CodeModelBuilder {
    private program;
    private typeNameOptions;
    private namespace;
    private sdkContext;
    private options;
    private codeModel;
    private loggingEnabled;
    readonly schemaCache: ProcessingCache<Type, Schema>;
    readonly typeUnionRefCache: Map<Type, Union | null | undefined>;
    private operationExamples;
    private apiVersion;
    constructor(program1: Program, context: EmitContext<EmitterOptions>);
    build(): Promise<CodeModel>;
    private processHost;
    private processAuth;
    private isBranded;
    private isInternal;
    private processModels;
    private processSchemaUsage;
    private deduplicateSchemaName;
    private resolveSchemaUsage;
    private processClients;
    /**
     * Filter api-versions for "ServiceVersion".
     * TODO(xiaofei) pending TCGC design: https://github.com/Azure/typespec-azure/issues/746
     *
     * @param pinnedApiVersion the api-version to use as filter base
     * @param versions api-versions to filter
     * @returns filtered api-versions
     */
    private getFilteredApiVersions;
    /**
     * `@armProviderNamespace` currently will add a default server if not defined globally:
     * https://github.com/Azure/typespec-azure/blob/8b8d7c05f168d9305a09691c4fedcb88f4a57652/packages/typespec-azure-resource-manager/src/namespace.ts#L121-L128
     * TODO: if the synthesized server has the right hostParameter, we can use that insteadß
     *
     * @param server returned by getServers
     * @returns whether it's synthesized by `@armProviderNamespace`
     */
    private isArmSynthesizedServer;
    private needToSkipProcessingOperation;
    /**
     * Whether we support advanced versioning in non-breaking fashion.
     */
    private supportsAdvancedVersioning;
    private getOperationExample;
    private processOperation;
    private processRouteForPaged;
    private processLroMetadata;
    private processRouteForLongRunning;
    private _armApiVersionParameter?;
    private processParameter;
    private addAcceptHeaderParameter;
    private processEtagHeaderParameters;
    private processParameterBody;
    private findResponseBody;
    private processResponse;
    private getStatusCodes;
    private getResponseDescription;
    private processSchema;
    private processSchemaImpl;
    private processScalar;
    private processAnySchema;
    private processStringSchema;
    private processByteArraySchema;
    private processIntegerSchema;
    private processNumberSchema;
    private processDecimalSchema;
    private processBooleanSchema;
    private processArraySchema;
    private processDictionarySchema;
    private processChoiceSchema;
    private processConstantSchemaForLiteral;
    private processConstantSchemaForEnumMember;
    private processConstantSchemaForUnionVariant;
    private processChoiceSchemaForUnion;
    private processUnixTimeSchema;
    private processDateTimeSchema;
    private processDateSchema;
    private processTimeSchema;
    private processDurationSchema;
    private processUrlSchema;
    private processObjectSchema;
    private getEffectiveSchemaType;
    private applyModelPropertyDecorators;
    private processModelProperty;
    private processFormatString;
    private processUnionSchema;
    private processBinarySchema;
    private getUnionVariantName;
    private processMultipartFormDataSchema;
    private getDefaultValue;
    private getDoc;
    private getSummary;
    private getName;
    private getSerializedName;
    private isReadOnly;
    private isSecret;
    private getConvenienceApiName;
    private logWarning;
    private trace;
    private _stringSchema?;
    get stringSchema(): StringSchema;
    private _integerSchema?;
    get integerSchema(): NumberSchema;
    private _doubleSchema?;
    get doubleSchema(): NumberSchema;
    private _booleanSchema?;
    get booleanSchema(): BooleanSchema;
    private _anySchema?;
    get anySchema(): AnySchema;
    private _binarySchema?;
    get binarySchema(): BinarySchema;
    private _pollResultSchema?;
    get pollResultSchema(): ObjectSchema;
    private createApiVersionParameter;
    private _apiVersionParameter?;
    get apiVersionParameter(): Parameter;
    private _apiVersionParameterInPath?;
    get apiVersionParameterInPath(): Parameter;
    private isSubscriptionId;
    private subscriptionIdParameter;
    private _subscriptionParameter?;
    private propagateSchemaUsage;
    private trackSchemaUsage;
    private isArm;
    private isSchemaUsageEmpty;
}
//# sourceMappingURL=code-model-builder.d.ts.map