import { SdkClientType, SdkContext, SdkHttpOperation, SdkHttpResponse, SdkModelPropertyType, SdkType } from "@azure-tools/typespec-client-generator-core";
import { Type } from "@typespec/compiler";
import { Logger } from "./lib/logger.js";
import { CSharpEmitterOptions } from "./options.js";
import { InputParameter } from "./type/input-parameter.js";
import { InputClient, InputEnumType, InputModelProperty, InputModelType, InputType } from "./type/input-type.js";
import { OperationResponse } from "./type/operation-response.js";
/**
 * The emitter context for the CSharp emitter.
 * @beta
 */
export interface CSharpEmitterContext extends SdkContext<CSharpEmitterOptions> {
    logger: Logger;
    __typeCache: SdkTypeCache;
}
export declare function createCSharpEmitterContext<TOptions extends CSharpEmitterOptions = CSharpEmitterOptions>(context: SdkContext<TOptions>, logger: Logger): CSharpEmitterContext;
declare class SdkTypeCache {
    clients: Map<SdkClientType<SdkHttpOperation>, InputClient>;
    properties: Map<SdkModelPropertyType, InputParameter | InputModelProperty>;
    responses: Map<SdkHttpResponse, OperationResponse>;
    types: Map<SdkType, InputType>;
    models: Map<string, InputModelType>;
    enums: Map<string, InputEnumType>;
    crossLanguageDefinitionIds: Map<string, Type | undefined>;
    constructor();
    updateSdkClientReferences(sdkClient: SdkClientType<SdkHttpOperation>, inputClient: InputClient): void;
    updateSdkPropertyReferences(sdkProperty: SdkModelPropertyType, inputProperty: InputParameter | InputModelProperty): void;
    updateSdkResponseReferences(sdkResponse: SdkHttpResponse, response: OperationResponse): void;
    updateSdkTypeReferences(sdkType: SdkType, inputType: InputType): void;
    updateTypeCache(typeName: string, type: InputType): void;
}
export {};
//# sourceMappingURL=sdk-context.d.ts.map