///
import { AuthState } from '../auth/index.js';
import { DatabaseAdapter } from '../electric/adapter.js';
import { Migrator } from '../migrators/index.js';
import { Notifier } from '../notifiers/index.js';
import { AuthResponse, DbName, LSN, SatelliteError, DataTransaction, Relation, RelationsCache, DbRecord as DataRecord, StartReplicationResponse, StopReplicationResponse, OutboundStartedCallback, TransactionCallback, SocketCloseReason, ReplicationStatus, AdditionalDataCallback, ConnectivityState, ReplicatedRowTransformer, GoneBatchCallback, DataGone } from '../util/types.js';
import { ElectricConfig } from '../config/index.js';
import { Client, Satellite } from './index.js';
import { SatelliteOpts, SatelliteOverrides } from './config.js';
import { BaseRegistry } from './registry.js';
import { SocketFactory } from '../sockets/index.js';
import { AsyncEventEmitter, QualifiedTablename } from '../util/index.js';
import { Shape, SUBSCRIPTION_DELIVERED, SUBSCRIPTION_ERROR, ShapeRequest, SubscribeResponse, SubscriptionData, SubscriptionDeliveredCallback, SubscriptionErrorCallback, UnsubscribeResponse } from './shapes/types.js';
import { ShapeSubscription } from './process.js';
import { DbSchema } from '../client/model/schema.js';
import { SyncStatus } from '../client/model/shapes.js';
export declare const MOCK_BEHIND_WINDOW_LSN = 42;
export declare const MOCK_INTERNAL_ERROR = 27;
export declare class MockSatelliteProcess implements Satellite {
dbName: DbName;
adapter: DatabaseAdapter;
migrator: Migrator;
notifier: Notifier;
socketFactory: SocketFactory;
opts: SatelliteOpts;
token: string | undefined;
connectivityState?: ConnectivityState;
constructor(dbName: DbName, adapter: DatabaseAdapter, migrator: Migrator, notifier: Notifier, socketFactory: SocketFactory, opts: SatelliteOpts);
syncStatus(_key: string): SyncStatus;
subscribe(_shapeDefinitions: Shape[]): Promise;
unsubscribe(_shapeUuid: any): Promise;
start(): Promise;
setToken(token: string): void;
hasToken(): boolean;
connect(): Promise;
connectWithBackoff(): Promise;
disconnect(): void;
clientDisconnect(): void;
authenticate(_token: string): Promise;
stop(): Promise;
setReplicationTransform(_tableName: QualifiedTablename, _transform: ReplicatedRowTransformer): void;
clearReplicationTransform(_tableName: QualifiedTablename): void;
}
export declare class MockRegistry extends BaseRegistry {
private shouldFailToStart;
setShouldFailToStart(shouldFail: boolean): void;
startProcess(dbName: DbName, _dbDescription: DbSchema, adapter: DatabaseAdapter, migrator: Migrator, notifier: Notifier, socketFactory: SocketFactory, _config: ElectricConfig, overrides?: SatelliteOverrides): Promise;
}
type Events = {
[SUBSCRIPTION_DELIVERED]: (data: SubscriptionData) => void;
[SUBSCRIPTION_ERROR]: (error: SatelliteError, subscriptionId: string) => void;
outbound_started: OutboundStartedCallback;
error: (error: SatelliteError) => void;
goneBatch: GoneBatchCallback;
};
export declare class MockSatelliteClient extends AsyncEventEmitter implements Client {
isDown: boolean;
replicating: boolean;
disconnected: boolean;
inboundAck: Uint8Array;
outboundSent: Uint8Array;
outboundTransactionsEnqueued: DataTransaction[];
timeouts: NodeJS.Timeout[];
relations: RelationsCache;
relationsCb?: (relation: Relation) => void;
transactionsCb?: TransactionCallback;
additionalDataCb?: AdditionalDataCallback;
outboundStartedCallback?: OutboundStartedCallback;
relationData: Record;
goneBatches: Record;
deliverFirst: boolean;
doSkipNextEmit: boolean;
private startReplicationDelayMs;
private replicationTransforms;
setStartReplicationDelayMs(delayMs: number | null): void;
setRelations(relations: RelationsCache): void;
setRelationData(tablename: string, record: DataRecord): void;
setGoneBatch(subscriptionId: string, batch: {
tablename: string;
record: DataGone['oldRecord'];
}[]): void;
enableDeliverFirst(): void;
skipNextEmit(): void;
subscribe(subscriptionId: string, shapes: ShapeRequest[]): Promise;
unsubscribe(subIds: string[]): Promise;
subscribeToSubscriptionEvents(successCallback: SubscriptionDeliveredCallback, errorCallback: SubscriptionErrorCallback): void;
unsubscribeToSubscriptionEvents(successCallback: SubscriptionDeliveredCallback, errorCallback: SubscriptionErrorCallback): void;
subscribeToGoneBatch(callback: GoneBatchCallback): void;
unsubscribeToGoneBatch(callback: GoneBatchCallback): void;
subscribeToError(cb: (error: SatelliteError) => void): void;
emitSocketClosedError(ev: SocketCloseReason): void;
unsubscribeToError(cb: (error: SatelliteError) => void): void;
isConnected(): boolean;
getOutboundReplicationStatus(): ReplicationStatus;
shutdown(): Promise;
getLastSentLsn(): Uint8Array;
connect(): Promise;
disconnect(): Promise;
authenticate(_authState: AuthState): Promise;
startReplication(lsn: LSN): Promise;
stopReplication(): Promise;
subscribeToRelations(callback: (relation: Relation) => void): void;
unsubscribeToRelations(): void;
subscribeToTransactions(callback: TransactionCallback): void;
unsubscribeToTransactions(): void;
subscribeToAdditionalData(callback: AdditionalDataCallback): void;
unsubscribeToAdditionalData(_cb: AdditionalDataCallback): void;
enqueueTransaction(transaction: DataTransaction): void;
subscribeToOutboundStarted(callback: OutboundStartedCallback): void;
unsubscribeToOutboundStarted(): void;
sendErrorAfterTimeout(subscriptionId: string, timeout: number): void;
setReplicationTransform(tableName: QualifiedTablename, transform: ReplicatedRowTransformer): void;
clearReplicationTransform(tableName: QualifiedTablename): void;
}
export {};