import Long from 'long'; import { AuthConfig, AuthState } from '../auth/index.js'; import { InternalElectricConfig } from '../config/index.js'; import { DatabaseAdapter } from '../electric/adapter.js'; import { Migrator } from '../migrators/index.js'; import { Notifier } from '../notifiers/index.js'; import { SocketFactory } from '../sockets/index.js'; import { AuthResponse, ConnectivityState, DbName, LSN, DataTransaction, StartReplicationResponse, StopReplicationResponse, ErrorCallback, TransactionCallback, RelationCallback, OutboundStartedCallback, SatelliteError, ReplicationStatus, AdditionalDataCallback, DbRecord, ReplicatedRowTransformer, GoneBatchCallback } from '../util/types.js'; import { ShapeRequest, SubscribeResponse, SubscriptionDeliveredCallback, SubscriptionErrorCallback, UnsubscribeResponse } from './shapes/types.js'; import { DbSchema } from '../client/model/schema.js'; import { QualifiedTablename } from '../util/index.js'; import { IShapeManager } from '../client/model/shapes.js'; export { MockRegistry } from './mock.js'; export { SatelliteProcess } from './process.js'; export { GlobalRegistry, globalRegistry } from './registry.js'; export type { ShapeSubscription } from './process.js'; export type { Shape, Rel } from './shapes/types.js'; export interface Registry { satellites: { [key: DbName]: Satellite; }; ensureStarted(dbName: DbName, dbDescription: DbSchema, adapter: DatabaseAdapter, migrator: Migrator, notifier: Notifier, socketFactory: SocketFactory, config: InternalElectricConfig): Promise; ensureAlreadyStarted(dbName: DbName): Promise; stop(dbName: DbName): Promise; stopAll(): Promise; } export interface Satellite extends IShapeManager { dbName: DbName; adapter: DatabaseAdapter; migrator: Migrator; notifier: Notifier; connectivityState?: ConnectivityState; start(authConfig: AuthConfig): Promise; stop(shutdown?: boolean): Promise; setToken(token?: string): void; hasToken(): boolean; connectWithBackoff(): Promise; disconnect(error?: SatelliteError): void; clientDisconnect(): void; authenticate(token: string): Promise; setReplicationTransform(tableName: QualifiedTablename, transform: ReplicatedRowTransformer): void; clearReplicationTransform(tableName: QualifiedTablename): void; } export interface Client { connect(): Promise; disconnect(): void; shutdown(): Promise; authenticate(authState: AuthState): Promise; isConnected(): boolean; getOutboundReplicationStatus(): ReplicationStatus; startReplication(lsn?: LSN, schemaVersion?: string, subscriptionIds?: string[], observedTransactionData?: Long[]): Promise; stopReplication(): Promise; subscribeToRelations(callback: RelationCallback): void; unsubscribeToRelations(callback: RelationCallback): void; subscribeToTransactions(callback: TransactionCallback): void; unsubscribeToTransactions(callback: TransactionCallback): void; subscribeToAdditionalData(callback: AdditionalDataCallback): void; unsubscribeToAdditionalData(callback: AdditionalDataCallback): void; subscribeToGoneBatch(callback: GoneBatchCallback): void; unsubscribeToGoneBatch(callback: GoneBatchCallback): void; enqueueTransaction(transaction: DataTransaction): void; getLastSentLsn(): LSN; subscribeToOutboundStarted(callback: OutboundStartedCallback): void; unsubscribeToOutboundStarted(callback: OutboundStartedCallback): void; subscribeToError(callback: ErrorCallback): void; unsubscribeToError(callback: ErrorCallback): void; subscribe(subId: string, shapes: ShapeRequest[]): Promise; unsubscribe(subIds: string[]): Promise; subscribeToSubscriptionEvents(successCallback: SubscriptionDeliveredCallback, errorCallback: SubscriptionErrorCallback): void; unsubscribeToSubscriptionEvents(successCallback: SubscriptionDeliveredCallback, errorCallback: SubscriptionErrorCallback): void; setReplicationTransform(tableName: QualifiedTablename, transformer: ReplicatedRowTransformer): void; clearReplicationTransform(tableName: QualifiedTablename): void; }