import { type EffectRef, type Signal } from '@angular/core'; import { type PartialOrValue } from 'ngxtension/connect'; import { Subject, type Observable } from 'rxjs'; type ActionSourceFn = (state: Signal, value: TPayload) => Observable>; type NoOptionalProperties = { [P in keyof T]-?: T[P]; }; type NamedActionSources = { [actionName: string]: Subject | ActionSourceFn; }; type NamedSelectors = { [selectorName: string]: () => any; }; type Selectors = { [K in keyof TSignalValue]: Signal; }; type ExtraSelectors = { [K in keyof TSelectors]: Signal>; }; type NamedEffects = { [selectorName: string]: () => void | (() => void); }; type Effects = { [K in keyof TEffects]: EffectRef; }; type Action = TValue extends [void] ? () => Promise : [unknown] extends TValue ? () => Promise : (value: TValue extends [infer TInferred] ? TInferred | Observable : TValue | Observable) => Promise; type ActionMethod[string]> = TActionSource extends (state: Signal, value: Observable) => any ? Action : TActionSource extends Subject ? Action : never; type ActionMethods> = { [K in keyof TActionSources]: ActionMethod; }; type ActionStreams> = { [K in keyof TActionSources & string as `${K}$`]: TActionSources[K] extends ActionSourceFn ? Observable : TActionSources[K] extends ActionSourceFn ? TValue extends Observable ? TValue : Observable : never; }; type InitialStateStreams = { [K in keyof TSignalValue & string as `${K}$`]: Observable; }; type ActionUpdates> = { [K in keyof TActionSources & string as `${K}Updated`]: Signal; }; export type Source = Observable>; type SourceConfig = Array | ((state: Signal & InitialStateStreams) => Source)>; export type SignalSlice, TActionSources extends NamedActionSources, TSelectors extends NamedSelectors, TEffects extends NamedEffects> = Signal & Selectors & ExtraSelectors & Effects & InitialStateStreams & ActionMethods & ActionStreams & ActionUpdates; type SelectorsState> = Signal & Selectors; type EffectsState, TActionSources extends NamedActionSources, TSelectors extends NamedSelectors> = SelectorsState & ExtraSelectors & ActionMethods; export declare function signalSlice, TActionSources extends NamedActionSources, TSelectors extends NamedSelectors, TEffects extends NamedEffects>(config: { initialState: TSignalValue; sources?: SourceConfig; lazySources?: SourceConfig; actionSources?: TActionSources; selectors?: (state: SelectorsState) => TSelectors; /** @deprecated */ effects?: (state: EffectsState) => TEffects; }): SignalSlice; export {};