import * as i0 from '@angular/core'; import { ValueProvider, ExistingProvider, FactoryProvider } from '@angular/core'; import { BehaviorSubject, Observable } from 'rxjs'; import { MemoizedSelector, MemoizedSelectorWithProps, Store, Action, ActionsSubject, ReducerManager, ActionReducer } from '@ngrx/store'; declare class MockState extends BehaviorSubject { constructor(); static ɵfac: i0.ɵɵFactoryDeclaration, never>; static ɵprov: i0.ɵɵInjectableDeclaration>; } interface MockSelector { selector: string | MemoizedSelector | MemoizedSelectorWithProps; value: any; } type OnlyMemoized = T extends string | MemoizedSelector ? MemoizedSelector : T extends MemoizedSelectorWithProps ? MemoizedSelectorWithProps : never; type Memoized = MemoizedSelector | MemoizedSelectorWithProps; declare class MockStore extends Store { private state$; private initialState; private readonly selectors; readonly scannedActions$: Observable; private lastState?; constructor(state$: MockState, actionsObserver: ActionsSubject, reducerManager: ReducerManager, initialState: T, mockSelectors?: MockSelector[]); setState(nextState: T): void; overrideSelector, Value extends Result, Result = Selector extends MemoizedSelector ? T : Selector extends MemoizedSelectorWithProps ? U : Value>(selector: Selector | string, value: Value): OnlyMemoized; resetSelectors(): void; select(selector: any, prop?: any): Observable; addReducer(): void; removeReducer(): void; /** * Refreshes the existing state. */ refreshState(): void; static ɵfac: i0.ɵɵFactoryDeclaration, never>; static ɵprov: i0.ɵɵInjectableDeclaration>; } declare class MockReducerManager extends BehaviorSubject> { constructor(); addFeature(feature: any): void; addFeatures(feature: any): void; removeFeature(feature: any): void; removeFeatures(features: any): void; addReducer(key: any, reducer: any): void; addReducers(reducers: any): void; removeReducer(featureKey: any): void; removeReducers(featureKeys: any): void; static ɵfac: i0.ɵɵFactoryDeclaration; static ɵprov: i0.ɵɵInjectableDeclaration; } interface MockStoreConfig { initialState?: T; selectors?: MockSelector[]; } /** * @description * Creates mock store providers. * * @param config `MockStoreConfig` to provide the values for `INITIAL_STATE` and `MOCK_SELECTORS` tokens. * By default, `initialState` and `selectors` are not defined. * @returns Mock store providers that can be used with both `TestBed.configureTestingModule` and `Injector.create`. * * @usageNotes * * **With `TestBed.configureTestingModule`** * * ```typescript * describe('Books Component', () => { * let store: MockStore; * * beforeEach(() => { * TestBed.configureTestingModule({ * providers: [ * provideMockStore({ * initialState: { books: { entities: [] } }, * selectors: [ * { selector: selectAllBooks, value: ['Book 1', 'Book 2'] }, * { selector: selectVisibleBooks, value: ['Book 1'] }, * ], * }), * ], * }); * * store = TestBed.inject(MockStore); * }); * }); * ``` * * **With `Injector.create`** * * ```typescript * describe('Counter Component', () => { * let injector: Injector; * let store: MockStore; * * beforeEach(() => { * injector = Injector.create({ * providers: [ * provideMockStore({ initialState: { counter: 0 } }), * ], * }); * store = injector.get(MockStore); * }); * }); * ``` */ declare function provideMockStore(config?: MockStoreConfig): (ValueProvider | ExistingProvider | FactoryProvider)[]; /** * @description * Creates mock store with all necessary dependencies outside of the `TestBed`. * * @param config `MockStoreConfig` to provide the values for `INITIAL_STATE` and `MOCK_SELECTORS` tokens. * By default, `initialState` and `selectors` are not defined. * @returns `MockStore` * * @usageNotes * * ```typescript * describe('Books Effects', () => { * let store: MockStore; * * beforeEach(() => { * store = createMockStore({ * initialState: { books: { entities: ['Book 1', 'Book 2', 'Book 3'] } }, * selectors: [ * { selector: selectAllBooks, value: ['Book 1', 'Book 2'] }, * { selector: selectVisibleBooks, value: ['Book 1'] }, * ], * }); * }); * }); * ``` */ declare function createMockStore(config?: MockStoreConfig): MockStore; export { MockReducerManager, MockState, MockStore, createMockStore, provideMockStore }; export type { MockSelector, MockStoreConfig };