@stated-library/base
Version:
25 lines (24 loc) • 1.32 kB
TypeScript
import { StatedLibraryInterface, StatedLibraryObservable, StateEvent } from '@stated-library/interface';
export declare type LibOpts<RawState, State> = {
deriveState?: (state: RawState) => State;
createObs?: ObservableCtor<any>;
};
export declare type GetUpdates<State, RawState> = (state: State) => Partial<RawState>;
interface Observable<Value> extends StatedLibraryObservable<Value> {
next: (value: Value) => void;
}
declare type ObservableCtor<Value> = (initialValue: Value) => Observable<Value>;
export declare function bindMethodsFromProto(obj: any): void;
declare class StatedLibBase<RawState, State = RawState, Meta = {}> implements StatedLibraryInterface<RawState, State, Meta> {
opts: LibOpts<RawState, State>;
stateEvent$: StatedLibraryObservable<StateEvent<RawState, State, Meta>>;
state$: StatedLibraryObservable<State>;
constructor(initialState: RawState, opts?: LibOpts<RawState, State>);
static bindMethods(obj: any): void;
readonly state: State;
setState(rawState: RawState, event: string, meta?: Meta): void;
updateState(updatesOrGetUpdates: Partial<RawState> | GetUpdates<State, RawState>, event: string, meta?: Meta): void;
resetState(rawState: RawState, event: string, meta?: Meta): void;
}
export default StatedLibBase;
export { StatedLibBase };