import { SyncHook, SyncWaterfallHook, SyncBailHook } from "tapable-ts"; import type { Logger } from "../../logger"; import type { BindingParser, BindingLike } from "../../binding"; import { BindingInstance } from "../../binding"; import type { BatchSetTransaction, Updates, DataModelOptions, DataModelWithParser, DataPipeline, DataModelMiddleware } from "../../data"; import { PipelinedDataModel } from "../../data"; import type { RawSetTransaction } from "../../types"; import { ReadOnlyDataController } from "./utils"; /** The orchestrator for player data */ export declare class DataController implements DataModelWithParser { hooks: { resolve: SyncWaterfallHook>; resolveDataStages: SyncWaterfallHook<[DataPipeline], Record>; resolveDefaultValue: SyncBailHook<[BindingInstance], any, Record>; onDelete: SyncHook<[any], Record>; onSet: SyncHook<[BatchSetTransaction], Record>; onGet: SyncHook<[any, any], Record>; onUpdate: SyncHook<[Updates, DataModelOptions | undefined], Record>; format: SyncWaterfallHook<[any, BindingInstance], Record>; deformat: SyncWaterfallHook<[any, BindingInstance], Record>; serialize: SyncWaterfallHook<[any], Record>; }; private model?; private trash; private pathResolver; private baseMiddleware; private logger?; constructor(model: Record | undefined, options: { /** A means of parsing a raw binding to a Binding object */ pathResolver: BindingParser; /** middleware to use. typically for validation */ middleware?: Array; /** A logger to use */ logger?: Logger; }); getModel(): PipelinedDataModel; private resolveDataValue; set(transaction: RawSetTransaction, options?: DataModelOptions): Updates; private resolve; get(binding: BindingLike, options?: DataModelOptions): any; delete(binding: BindingLike, options?: DataModelOptions): void; serialize(): object; makeReadOnly(): ReadOnlyDataController; } //# sourceMappingURL=controller.d.ts.map