type ChangeCallback<T> = <K extends keyof T>(key: K, newValue: T[K], oldValue: T[K]) => void;
type StoreWithProps<T extends object> = T & {
    set<K extends keyof T>(key: K, value: T[K]): void;
    onChange(callback: ChangeCallback<T>): () => void;
    signal<K extends keyof T>(key: K): [T[K], (value: T[K]) => void];
};
export declare function createStore<T extends object>(obj: T): StoreWithProps<T>;
export {};
