/// import type { LogContext } from '@balena/jellyfish-logger'; import type { AutumnDBSession, Contract } from 'autumndb'; import type { Map, WorkerContext } from '../types'; import * as errors from './errors'; import * as oauth from './oauth'; import * as pipeline from './pipeline'; import * as syncContext from './sync-context'; import type { HttpRequestOptions, Integration, IntegrationDefinition, IntegrationInitializationOptions, SequenceItem } from './types'; export { errors, Integration, IntegrationDefinition, IntegrationInitializationOptions, HttpRequestOptions, oauth, SequenceItem, }; /** * Jellyfish sync library module. * * @module sync */ interface SyncOptions { integrations?: Map; } export declare class Sync { integrations: Map; errors: typeof errors; pipeline: typeof pipeline; constructor(options?: SyncOptions); /** * @summary Gets external user * @function * @public * * @param {Object} syncActionContext - sync action context * @param {String} name - integration name * @param {String} credentials - access token for external provider api * @returns {Object} external user */ whoami(syncActionContext: syncContext.SyncActionContext, name: string, credentials: any): Promise; /** * @summary Gets local user matching the external user * @function * @public * * @param {Object} context - execution context * @param {String} name - integration name * @param {Object} externalUser - external user * @param {Object} options - options * @param {String} options.slug - slug to be used as a fallback to get a user * @returns {Object} external user */ match(context: syncContext.SyncActionContext, name: string, externalUser: any, options: { slug: string; }): Promise[]; }> | null>; getExternalUserSyncEventData(logContext: LogContext, name: string, externalUser: any): Promise; /** * @summary Associate a user with an external OAuth service * @function * @public * * @param name - integration name * @param userContract - user to associate external token to * @param credentials - external provider's api token * @param context - sync action context * @returns upserted user contract */ associate(name: string, userContract: Contract, credentials: any, context: syncContext.SyncActionContext): Promise[]; }> | null>; /** * @summary Check if an external event request is valid * @function * @public * * @param logContext - log context * @param name - integration name * @param token - token details * @param event - event * @param event.raw - raw event payload * @param event.headers - request headers * @returns whether the external event should be accepted or not */ isValidEvent(logContext: LogContext, name: string, token: any, event: { raw: any; headers: any; }): Promise; /** * @summary Mirror back a contract insert coming from Jellyfish * @function * @public * * @param name - integration name * @param token - token details * @param contract - action target contract * @param context - sync action context * @param options - options object * @param options.actor - actor id * @param options.origin - oauth origin url * @param options.defaultUser - default user id * @returns inserted contracts */ mirror(name: string, token: any, contract: Contract, context: syncContext.SyncActionContext, options: { actor: string; origin: string; defaultUser: string; }): Promise[]; }>[]>; /** * @summary Translate an external event into Jellyfish * @function * @public * * @param name - integration name * @param token - token details * @param contract - action target contract * @param context - execution context * @param options - options * @param options.actor - actor id * @param options.defaultUser - default user id * @param options.origin - oauth origin url * @returns inserted contracts */ translate(name: string, token: string, contract: Contract, context: syncContext.SyncActionContext, options: { actor: string; defaultUser: string; origin: string; }): Promise[]; }>[]>; /** * @summary Fetch a file synced in an external service * @function * @public * * @param name - integration name * @param token - token details * @param file - file id * @param context - sync action context * @param options - options object * @param options.actor - actor id * @returns file */ getFile(name: string, token: any, file: string, context: syncContext.SyncActionContext, options: { actor: string; }): Promise; getActionContext(provider: string, workerContext: WorkerContext, context: any, session: AutumnDBSession): { getContactByEmail: (email: string) => Promise[]; }> | null>; getElementBySlug: (slug: string, usePrivilegedSession?: boolean) => Promise; getElementById: (id: string) => Promise; getOauthProviderByIntegration: (integration: string) => Promise; getElementByMirrorId: (type: string, mirrorId: string, getOptions?: { usePattern?: boolean | undefined; }) => Promise; getElementByMirrorIds: (type: string, mirrorIds: string[]) => Promise; logContext: LogContext; log: { warn: (message: string, data: any) => void; error: (message: string, data: any) => void; debug: (message: string, data: any) => void; info: (message: string, data: any) => void; exception: (message: string, error: any) => void; }; getLocalUsername: (username: string) => string; getRemoteUsername: (username: string) => string; upsertElement: (type: string, object: Partial[]; }>> | { id: string; type: string; patch: import("fast-json-patch").Operation[]; }, options: { actor?: string | undefined; timestamp?: Date | undefined; originator?: string | undefined; }) => Promise[]; }> | null>; query: (query: import("autumndb").JsonSchema, options?: import("autumndb").QueryOptions | undefined) => Promise[]; }>[]>; }; }