import * as _ngrx_signals from '@ngrx/signals';
import * as _angular_core from '@angular/core';
import { Injector } from '@angular/core';
import { AXPSettingDefinitionGroup } from '@acorex/platform/common';
import { AXPPageStatus } from '@acorex/platform/layout/widget-core';
import { AXFormComponent } from '@acorex/components/form';
import { AXPPlatformScopeKey, AXPAppStartUpService } from '@acorex/platform/core';

declare const AXPSettingsViewModel: _angular_core.Type<{
    groups: _angular_core.Signal<AXPSettingDefinitionGroup[]>;
    activateGroup: _angular_core.Signal<AXPSettingDefinitionGroup | undefined>;
    scope: _angular_core.Signal<AXPPlatformScopeKey>;
    searchExpression: _angular_core.Signal<string | null>;
    previousContext: _angular_core.Signal<Record<string, any>>;
    context: _angular_core.Signal<Record<string, any>>;
    status: _angular_core.Signal<AXPPageStatus>;
    form: _angular_core.Signal<AXFormComponent | null>;
    searchResults: _angular_core.Signal<AXPSettingDefinitionGroup[]>;
    hasActivateGroup: _angular_core.Signal<boolean>;
    showGroups: _angular_core.Signal<boolean>;
    scopeTitle: _angular_core.Signal<string>;
    scopeDescription: _angular_core.Signal<string>;
    isSearching: _angular_core.Signal<boolean>;
    isBusy: _angular_core.Signal<boolean>;
    isSaving: _angular_core.Signal<boolean>;
    isLoaded: _angular_core.Signal<boolean>;
    registerForm: (form: AXFormComponent) => void;
    load: (scope: AXPPlatformScopeKey) => Promise<void>;
    reload: () => Promise<void>;
    updateContext: (context: Record<string, any>) => void;
    updatePreviousContext: (context: Record<string, any>) => void;
    setActivateGroup: (group: AXPSettingDefinitionGroup) => void;
    unloadActivateGroup: () => void;
    setActivateGroupByName: (name: string) => void;
    search: (expression: string) => Promise<void>;
    clearSearch: () => void;
    isDirty: () => boolean;
    apply: () => Promise<boolean>;
    discard: () => Promise<void>;
    resetToDefault: () => Promise<void>;
} & _ngrx_signals.StateSource<{
    groups: AXPSettingDefinitionGroup[];
    activateGroup: AXPSettingDefinitionGroup | undefined;
    scope: AXPPlatformScopeKey;
    searchExpression: string | null;
    previousContext: Record<string, any>;
    context: Record<string, any>;
    status: AXPPageStatus;
    form: AXFormComponent | null;
}>>;

declare class AXMSettingsManagementModule {
    constructor(appInitService: AXPAppStartUpService, injector: Injector);
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXMSettingsManagementModule, never>;
    static ɵmod: _angular_core.ɵɵNgModuleDeclaration<AXMSettingsManagementModule, never, never, never>;
    static ɵinj: _angular_core.ɵɵInjectorDeclaration<AXMSettingsManagementModule>;
}

export { AXMSettingsManagementModule, AXPSettingsViewModel };
