import * as i0 from '@angular/core';
import { InjectionToken, ModuleWithProviders, EnvironmentProviders } from '@angular/core';
import { NgxsPlugin, NgxsNextPluginFn } from '@ngxs/store/plugins';

interface NgxsLoggerPluginOptions {
    /** Auto expand logged actions  */
    collapsed?: boolean;
    /** Provide alternate console.log implementation */
    logger?: any;
    /** Disable the logger. Useful for prod mode. */
    disabled?: boolean;
    /** Predicate for actions to be the logged. Takes action and state snapshot as parameters */
    filter?: (action: any, state: any) => boolean;
}
declare const NGXS_LOGGER_PLUGIN_OPTIONS: InjectionToken<NgxsLoggerPluginOptions>;

declare class NgxsLoggerPluginModule {
    static forRoot(options?: NgxsLoggerPluginOptions): ModuleWithProviders<NgxsLoggerPluginModule>;
    static ɵfac: i0.ɵɵFactoryDeclaration<NgxsLoggerPluginModule, never>;
    static ɵmod: i0.ɵɵNgModuleDeclaration<NgxsLoggerPluginModule, never, never, never>;
    static ɵinj: i0.ɵɵInjectorDeclaration<NgxsLoggerPluginModule>;
}
declare function withNgxsLoggerPlugin(options?: NgxsLoggerPluginOptions): EnvironmentProviders;

declare class NgxsLoggerPlugin implements NgxsPlugin {
    private _store;
    private _logWriter;
    private _options;
    private _injector;
    handle(state: any, event: any, next: NgxsNextPluginFn): any;
    private _skipLogging;
    static ɵfac: i0.ɵɵFactoryDeclaration<NgxsLoggerPlugin, never>;
    static ɵprov: i0.ɵɵInjectableDeclaration<NgxsLoggerPlugin>;
}

export { NGXS_LOGGER_PLUGIN_OPTIONS, NgxsLoggerPlugin, NgxsLoggerPluginModule, type NgxsLoggerPluginOptions, withNgxsLoggerPlugin };
