import { SdkClientType, SdkConstantType, SdkContext, SdkHttpOperation, SdkHttpParameter, SdkHttpResponse, SdkMethodParameter, SdkModelPropertyType, SdkNamespace, SdkServiceMethod, 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 { InputOperation } from "./type/input-operation.js";
import { InputServiceMethod } from "./type/input-service-method.js";
import { InputClient, InputHttpParameter, InputLiteralType, InputMethodParameter, InputModelProperty, InputNamespace, 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;
}
/**
 * Creates a new CSharp emitter context.
 * @param context - The SDK context.
 * @param logger - The logger to use.
 * @returns The CSharp emitter context.
 * @beta
 */
export declare function createCSharpEmitterContext<TOptions extends CSharpEmitterOptions = CSharpEmitterOptions>(context: SdkContext<TOptions>, logger: Logger): CSharpEmitterContext;
declare class SdkTypeCache {
    clients: Map<SdkClientType<SdkHttpOperation>, InputClient>;
    methods: Map<SdkServiceMethod<SdkHttpOperation>, InputServiceMethod>;
    operations: Map<SdkHttpOperation, InputOperation>;
    methodParmeters: Map<SdkMethodParameter, InputMethodParameter>;
    operationParameters: Map<SdkHttpParameter | SdkModelPropertyType, InputHttpParameter>;
    properties: Map<SdkModelPropertyType, InputModelProperty>;
    responses: Map<SdkHttpResponse, OperationResponse>;
    types: Map<SdkType, InputType>;
    constants: Map<SdkConstantType, InputLiteralType>;
    crossLanguageDefinitionIds: Map<string, Type | undefined>;
    namespaces: Map<string, InputNamespace>;
    constructor();
    updateSdkClientReferences(sdkClient: SdkClientType<SdkHttpOperation>, inputClient: InputClient): void;
    updateSdkMethodReferences(sdkMethod: SdkServiceMethod<SdkHttpOperation>, inputMethod: InputServiceMethod): void;
    updateSdkOperationReferences(sdkOperation: SdkHttpOperation, inputMethod: InputOperation): void;
    updateSdkPropertyReferences(sdkProperty: SdkModelPropertyType, inputProperty: InputModelProperty): void;
    updateSdkOperationParameterReferences(sdkParameter: SdkHttpParameter | SdkModelPropertyType, inputParameter: InputHttpParameter): void;
    updateSdkMethodParameterReferences(sdkMethodParameter: SdkMethodParameter, inputParameter: InputMethodParameter): void;
    updateSdkResponseReferences(sdkResponse: SdkHttpResponse, response: OperationResponse): void;
    updateSdkTypeReferences(sdkType: SdkType, inputType: InputType): void;
    updateConstantCache(sdkType: SdkConstantType, type: InputLiteralType): void;
    updateNamespaceCache(sdkNamespace: SdkNamespace<SdkHttpOperation>, inputNamespace: InputNamespace): void;
}
export {};
//# sourceMappingURL=sdk-context.d.ts.map