///
import { Entity, Mutation } from '../../api/types';
import AEntityUpdateRequest from '../../logic/updateRequest/AEntityUpdateRequest';
import UpdateMethodType from './UpdateMethodType';
import { FieldReference } from '../../logic/fieldReferences';
import { SyncFieldReference } from './useSyncFieldImperativeHandle';
export interface EntityContextValue {
entity: E;
updateEntity: (updateRequest: AEntityUpdateRequest) => void | Promise;
isSyncing: boolean;
/**
* If true, whole entity cannot be edited
*/
readonly: boolean;
registerFieldDefinition: (def: SyncFieldReference) => void;
unregisterFieldDefinition: (def: SyncFieldReference) => void;
settings: EntitySettings;
}
export interface EntitySettings {
type: UpdateMethodType;
entity: Entity | undefined;
readonly: boolean;
sourceKey: FieldReference;
updateKey?: FieldReference;
deleteKey?: FieldReference;
updateEntity?: (entity: Entity) => void;
updateMutation?: Mutation;
}
declare const EditableEntityContext: import("react").Context | null>;
export declare const useEntityContext: () => EntityContextValue;
export default EditableEntityContext;