///
import { Patch } from 'immer/dist/internal';
import * as t from 'io-ts';
import { Component, UnknownComponent } from '../component';
import { Entity } from '../entity';
import { Plugin } from '../plugin';
import { Resource } from '../resource';
import { Serializer } from './serializer_plugin';
export interface OptionalComponentDelta {
componentType: t.Type;
deltaType?: t.Type;
getDelta?: (a: Data, b: Data, patches: Patch[]) => Delta | undefined;
applyDelta?: (componentData: Data, delta: Delta) => Data | void;
}
export declare type ComponentDelta = {
[K in keyof OptionalComponentDelta]-?: OptionalComponentDelta[K];
};
interface ComponentDeltaMap> extends Map> {
get(key: Component): ComponentDelta | undefined;
set(key: Component, val: ComponentDelta): this;
}
export declare const EntityDelta: t.PartialC<{
componentStates: t.Type