@web5/agent
Version:
85 lines • 3.58 kB
TypeScript
/// <reference types="node" resolution-mode="require"/>
import type { AbstractLevel } from 'abstract-level';
import type { SyncEngine, SyncIdentityOptions } from './types/sync.js';
import type { Web5PlatformAgent } from './types/agent.js';
export type SyncEngineLevelParams = {
agent?: Web5PlatformAgent;
dataPath?: string;
db?: AbstractLevel<string | Buffer | Uint8Array>;
};
export declare class SyncEngineLevel implements SyncEngine {
/**
* Holds the instance of a `Web5PlatformAgent` that represents the current execution context for
* the `SyncEngineLevel`. This agent is used to interact with other Web5 agent components. It's
* vital to ensure this instance is set to correctly contextualize operations within the broader
* Web5 Agent framework.
*/
private _agent?;
/**
* An instance of the `AgentPermissionsApi` that is used to interact with permissions grants used during sync
*/
private _permissionsApi;
private _db;
private _syncIntervalId?;
private _syncLock;
private _ulidFactory;
constructor({ agent, dataPath, db }: SyncEngineLevelParams);
/**
* Retrieves the `Web5PlatformAgent` execution context.
*
* @returns The `Web5PlatformAgent` instance that represents the current execution context.
* @throws Will throw an error if the `agent` instance property is undefined.
*/
get agent(): Web5PlatformAgent;
set agent(agent: Web5PlatformAgent);
clear(): Promise<void>;
close(): Promise<void>;
private pull;
private push;
registerIdentity({ did, options }: {
did: string;
options?: SyncIdentityOptions;
}): Promise<void>;
unregisterIdentity(did: string): Promise<void>;
getIdentityOptions(did: string): Promise<SyncIdentityOptions | undefined>;
updateIdentityOptions({ did, options }: {
did: string;
options: SyncIdentityOptions;
}): Promise<void>;
sync(direction?: 'push' | 'pull'): Promise<void>;
startSync({ interval }: {
interval: string;
}): Promise<void>;
/**
* stopSync currently awaits the completion of the current sync operation before stopping the sync interval.
* TODO: implement a signal to gracefully stop sync immediately https://github.com/TBD54566975/web5-js/issues/890
*/
stopSync(timeout?: number): Promise<void>;
/**
* 202: message was successfully written to the remote DWN
* 204: an initial write message was written without any data, cannot yet be read until a subsequent message is written with data
* 409: message was already present on the remote DWN
* RecordsDelete and the status code is 404: the initial write message was not found or the message was already deleted
*/
private static syncMessageReplyIsSuccessful;
private enqueueOperations;
private static generateSyncMessageParamsKey;
private static parseSyncMessageParamsKey;
private getDwnEventLog;
private getDwnMessage;
private getSyncPeerState;
private getCursor;
private setCursor;
/**
* The message store is used to prevent "echoes" that occur during a sync pull operation.
* After a message is confirmed to already be synchronized on the local DWN, its CID is added
* to the message store to ensure that any subsequent pull attempts are skipped.
*/
private messageExists;
private addMessage;
private getMessageStore;
private getCursorStore;
private getPushQueue;
private getPullQueue;
}
//# sourceMappingURL=sync-engine-level.d.ts.map