import type { Draft } from 'immer'; import type { InfiniteAction, NormalAction } from './types'; import { NormalAccessor } from './NormalAccessor'; import { InfiniteAccessor } from './InfiniteAccessor'; interface BaseAccessorCreator { setIsStale(isStale: boolean): void; } export interface NormalAccessorCreator extends BaseAccessorCreator { (arg: Arg): NormalAccessor; } export interface InfiniteAccessorCreator extends BaseAccessorCreator { (arg: Arg): InfiniteAccessor; } export declare function createModel(initialState: S): { mutate: (fn: (draft: Draft) => void, serverStateKey?: object) => void; defineAccessor: { (type: 'normal', action: NormalAction): NormalAccessorCreator; (type: 'infinite', action: InfiniteAction): InfiniteAccessorCreator; }; getState: (serverStateKey?: object) => S; setIsStale: (isStale: boolean) => void; }; export {};