import { MatrixClient } from "matrix-js-sdk/src/matrix";
import { AsyncStore } from "./AsyncStore";
import { ActionPayload } from "../dispatcher/payloads";
import { ReadyWatchingStore } from "./ReadyWatchingStore";
import { MatrixDispatcher } from "../dispatcher/dispatcher";
export declare abstract class AsyncStoreWithClient<T extends Object> extends AsyncStore<T> {
    protected readyStore: ReadyWatchingStore;
    protected constructor(dispatcher: MatrixDispatcher, initialState?: T);
    start(): Promise<void>;
    get matrixClient(): MatrixClient | null;
    protected onReady(): Promise<void>;
    protected onNotReady(): Promise<void>;
    protected abstract onAction(payload: ActionPayload): Promise<void>;
    protected onDispatch(payload: ActionPayload): Promise<void>;
}
