import { BasePlugin } from '../common/BasePlugin'; import { ComputedFieldResource } from './ComputedFieldInterface'; export type OnUpdatePluginStatus = 'ok' | 'error'; export interface PluginResponse { status: OnUpdatePluginStatus; } export interface OnUpdatePluginResponse extends PluginResponse { data: { state: S; }; } export interface OnUpdateBatchPluginResponse extends PluginResponse { data: { state: S; }; } export interface BuildResultPluginResponse extends PluginResponse { data: { result: R; }; } export interface BaseUserActivity { } export interface BaseUserProfile { } export interface BaseComputedField { } export type DataType = 'USER_ACTIVITY' | 'USER_PROFILE' | 'COMPUTED_FIELD'; export type Operation = 'UPSERT' | 'DELETE'; export interface Update { data_type: DataType; operation: Operation; data: BaseUserActivity | BaseUserProfile | BaseComputedField; } export interface RequestData { computed_field_id: string; state: S; update: Update; } export interface RequestDataBatch { computed_field_id: string; state: S; updates: Update[]; } export interface RequestResult { computed_field_id: string; state: S; } export interface ComputedFieldBaseInstanceContext { computedField: ComputedFieldResource; } export declare abstract class ComputedFieldPlugin extends BasePlugin { constructor(); abstract onUpdateActivity(state: State | null, userActivity: UserActivity, instanceContext: ComputedFieldBaseInstanceContext): State | null; abstract onUpdateUserProfile(state: State | null, userProfile: UserProfile, operation: Operation, instanceContext: ComputedFieldBaseInstanceContext): State | null; abstract onUpdateComputedField(state: State | null, computedField: ComputedField, instanceContext: ComputedFieldBaseInstanceContext): State | null; abstract buildResult(state: State | null, instanceContext: ComputedFieldBaseInstanceContext): Result | null; protected fetchComputedField(computedFieldId: string): Promise; protected instanceContextBuilder(computedFieldId: string): Promise; protected getInstanceContext(computedFieldId: string): Promise; private getUpdateMethod; private onUpdateBatch; private formatResponse; private formatRequestData; private initUpdateRoute; private initUpdateBatchRoute; private initBuildResultRoute; }