import { ModelDefinition, GraphbackCRUDService, GraphbackOperationType } from '@graphback/core'; import { GraphQLObjectType } from 'graphql'; import { DataSyncCRUDService } from "./services"; export declare function isDataSyncModel(model: ModelDefinition): boolean; export declare function isDataSyncType(graphqlType: GraphQLObjectType): boolean; export declare function getDataSyncAnnotationData(model: ModelDefinition): any; export declare function isDataSyncService(service: GraphbackCRUDService): DataSyncCRUDService; /** * Interface for holding the conflicting states * between server and client */ export interface ConflictMetadata { base: any; serverData: any; serverDiff: any; clientData: any; clientDiff: any; operation: GraphbackOperationType; } /** * Interface for global configuration of conflicts */ export interface GlobalConflictConfig extends DataSyncModelConflictConfig { models?: DataSyncModelConfigMap; } /** * Function to get conflict configuration of specific model from specified global configuration * @param {string} modelName Name of the model's GraphQL type * @param {GlobalConflictConfig} globalConfig Specified global config */ export declare function getModelConfigFromGlobal(modelName: string, globalConfig?: GlobalConflictConfig): DataSyncModelConflictConfig; /** * Error that signifies conflict between server-side and client-side data */ export declare class ConflictError extends Error { conflictInfo: ConflictMetadata; constructor(stateMap: ConflictMetadata); } export declare const DataSyncFieldNames: { version: string; lastUpdatedAt: string; deleted: string; ttl: string; }; /** * Interface for specifying conflict configuration of a model */ export interface DataSyncModelConflictConfig { /** * Flag that enables conflict resolution */ enabled?: boolean; /** * One of the conflict resolutions strategies: * - ThrowOnConflict, * - ClientSideWins, * - ServerSideWins */ conflictResolution?: ConflictResolutionStrategy; /** * Value in seconds used to delete old history entries wth diffs that may no longer be needed. */ deltaTTL?: number; } /** * Interface for creating a map of modelName to conflict configuration */ export interface DataSyncModelConfigMap { [modelName: string]: DataSyncModelConflictConfig; } /** * Interface for implementing conflict resolution strategies */ export interface ConflictResolutionStrategy { resolveUpdate(conflict: ConflictMetadata): any; resolveDelete(conflict: ConflictMetadata): any; } /** * The ServerSideWins conflict resolution strategy */ export declare const ServerSideWins: ConflictResolutionStrategy; /** * The ClientSideWins conflict resolution strategy */ export declare const ClientSideWins: ConflictResolutionStrategy; export declare const ThrowOnConflict: ConflictResolutionStrategy; //# sourceMappingURL=util.d.ts.map