import * as GraphQLNorm from "graphql-norm"; /** * A definition of an operation that modifies fields in the cache */ export declare type Patch = CreateEntity | DeleteEntity | UpdateEntity | UpdateField | InsertElement | RemoveElement | RemoveEntityElement; export interface CreateEntity { readonly type: "CreateEntity"; readonly id: GraphQLNorm.NormKey; readonly newValue: GraphQLNorm.NormObj; } export interface UpdateEntity { readonly type: "UpdateEntity"; readonly id: GraphQLNorm.NormKey; readonly newValues: GraphQLNorm.NormObj; } export interface DeleteEntity { readonly type: "DeleteEntity"; readonly id: GraphQLNorm.NormKey; } export interface UpdateField { readonly type: "UpdateField"; readonly id: string; readonly fieldName: string; readonly newValue: GraphQLNorm.NormFieldValue | null; readonly fieldArguments: {} | undefined; } export interface InsertElement { readonly type: "InsertElement"; readonly id: GraphQLNorm.NormKey; readonly fieldName: string; readonly index: number; readonly newValue: GraphQLNorm.NormFieldValue; readonly fieldArguments: {} | undefined; } export interface RemoveElement { readonly type: "RemoveElement"; readonly id: GraphQLNorm.NormKey; readonly fieldName: string; readonly index: number; readonly fieldArguments: {} | undefined; } export interface RemoveEntityElement { readonly type: "RemoveEntityElement"; readonly id: GraphQLNorm.NormKey; readonly fieldName: string; readonly entityId: GraphQLNorm.NormKey; readonly fieldArguments: {} | undefined; } /** * Create a new entity */ export declare function createEntity(id: GraphQLNorm.NormKey, newValue: T): CreateEntity; /** * Update multiple fields (without arguments) on an existing entity */ export declare function updateEntity(id: GraphQLNorm.NormKey, newValues: Partial): UpdateEntity; /** * Deletes an existing entity */ export declare function deleteEntity(id: GraphQLNorm.NormKey): DeleteEntity; /** * Update a single field with optional arguments */ export declare function updateField(id: GraphQLNorm.NormKey, fieldName: Extract, newValue: GraphQLNorm.NormFieldValue | null, fieldArguments?: A): UpdateField; /** * Inserts an element into an array-field in an entity */ export declare function insertElement(id: GraphQLNorm.NormKey, fieldName: Extract, index: number, newValue: GraphQLNorm.NormFieldValue | null, fieldArguments?: A): InsertElement; /** * Remove an element from an array-field in an entity */ export declare function removeElement(id: GraphQLNorm.NormKey, fieldName: Extract, index: number, fieldArguments?: A): RemoveElement; /** * Remove all occurances of elements with specified ID from an array-field in an entity */ export declare function removeEntityElement(id: GraphQLNorm.NormKey, fieldName: Extract, entityId: GraphQLNorm.NormKey, fieldArguments?: A): RemoveEntityElement;