export declare type Action = (getState: GetState, dispatch: Dispatch) => T | void | Promise; export declare type Dispatch = (action: Action) => Promise; export declare type GetState = () => T; export declare type ActionCreator = (...args: U) => Action; export declare const $name: unique symbol; export declare type NamedAction = Action & { [$name]: string; }; export declare type SelfDispatchingActionCreator = (...args: T) => Promise; export declare type Middleware = (store: Store) => Store; export interface StoreOptions { verbose?: boolean; logger?: (logger: (...args: any) => void, actionName: string, state: T) => void; middleware?: Middleware[]; } export declare const action: (name: string, action: Action) => NamedAction; export declare const isNamedAction: (action: Action) => action is NamedAction; export declare class Store extends EventTarget { #private; constructor(initialState: T, options?: StoreOptions); get state(): T; dispatch(action: Action): Promise; }