import { type MeterProvider } from '@opentelemetry/api';
import type { Logger } from '@opentelemetry/api-logs';
import type { Resource } from '@opentelemetry/resources';
import type { InstrumentationScope } from '@opentelemetry/core';
import type { LogRecordProcessor } from '../LogRecordProcessor';
import type { LogRecordLimits, LoggerConfig, LoggerConfigurator } from '../types';
import { LoggerMetrics } from '../LoggerMetrics';
/**
 * Default LoggerConfigurator that returns the default config for all loggers
 */
export declare const DEFAULT_LOGGER_CONFIGURATOR: LoggerConfigurator;
export declare class LoggerProviderSharedState {
    readonly loggers: Map<string, Logger>;
    activeProcessor: LogRecordProcessor;
    readonly registeredLogRecordProcessors: LogRecordProcessor[];
    readonly resource: Resource;
    readonly logRecordLimits: Required<LogRecordLimits>;
    readonly processors: LogRecordProcessor[];
    readonly loggerMetrics: LoggerMetrics;
    hasShutdown: boolean;
    private _loggerConfigurator;
    private _loggerConfigs;
    constructor(resource: Resource, logRecordLimits: Required<LogRecordLimits>, processors: LogRecordProcessor[], loggerConfigurator?: LoggerConfigurator, meterProvider?: MeterProvider);
    /**
     * Get the LoggerConfig for a given instrumentation scope.
     * Uses the LoggerConfigurator function to compute the config on first access
     * and caches the result.
     *
     * @experimental This feature is in development as per the OpenTelemetry specification.
     */
    getLoggerConfig(instrumentationScope: InstrumentationScope): Required<LoggerConfig>;
}
//# sourceMappingURL=LoggerProviderSharedState.d.ts.map