import { type OptionalTopBarComponentProvider, type TopBarComponentProvider } from "../../presentation/dashboardContexts/types.js";
import { type CustomTopBarComponent } from "../../presentation/topBar/topBar/types.js";
import { type ITopBarCustomizer } from "../customizer.js";
import { type IDashboardCustomizationLogger } from "./customizationLogging.js";
import { type CustomizerMutationsContext } from "./types.js";
interface ITopBarCustomizerResult {
    TopBarComponent: CustomTopBarComponent | undefined;
}
/**
 * Default implementation of the TopBar rendering customizer. Notice that the state of the customizations
 * is kept separate from this class.
 *
 * This code is responsible for creation of the providers (if needed) and then updating the state
 * accordingly. The customizer state methods are responsible for doing correct updates of the state itself. This
 * decoupling is in place so that it is possible to seal the state and prevent write operations from some point
 * onward. See {@link SealedTopBarCustomizerState} for more motivation behind this.
 *
 * @internal
 */
export declare class DefaultTopBarCustomizer implements ITopBarCustomizer {
    private readonly logger;
    private readonly mutationContext;
    private state;
    private updated;
    constructor(logger: IDashboardCustomizationLogger, mutationContext: CustomizerMutationsContext, defaultProvider?: TopBarComponentProvider);
    withCustomProvider: (provider: (props: import("../../presentation/topBar/topBar/types.js").ITopBarProps) => CustomTopBarComponent | undefined) => ITopBarCustomizer;
    withCustomDecorator(providerFactory: (next: TopBarComponentProvider) => OptionalTopBarComponentProvider): ITopBarCustomizer;
    getCustomizerResult: () => ITopBarCustomizerResult;
    sealCustomizer: () => void;
}
export {};
//# sourceMappingURL=topBarCustomizer.d.ts.map