import { MessagePort as NodeMessagePort, Worker as NodeWorker } from 'node:worker_threads'; import { tl } from '../../tl/index.js'; import { ConnectionState } from '../client.types.js'; import { CurrentUserInfo } from '../storage/service/current-user.js'; import { SerializedError } from './errors.js'; export type WorkerInboundMessage = { _mtcuteWorkerId: string; connectionId: string; type: 'connect'; } | { _mtcuteWorkerId: string; connectionId: string; type: 'release'; } | { _mtcuteWorkerId: string; connectionId: string; type: 'heartbeat'; } | { _mtcuteWorkerId: string; connectionId: string; type: 'invoke'; id: number; target: 'custom' | 'client' | 'storage' | 'storage-self' | 'storage-peers' | 'app-config' | 'timers'; method: string; args: SerializedResult; void: boolean; withAbort: boolean; } | { _mtcuteWorkerId: string; connectionId: string; type: 'abort'; id: number; }; export type WorkerOutboundMessage = { _mtcuteWorkerId: string; type: 'server_update'; update: SerializedResult; } | { _mtcuteWorkerId: string; type: 'update'; update: SerializedResult; users: SerializedResult>; chats: SerializedResult>; hasMin: boolean; } | { _mtcuteWorkerId: string; type: 'error'; error: SerializedError; } | { _mtcuteWorkerId: string; type: 'stop'; } | { _mtcuteWorkerId: string; type: 'conn_state'; state: ConnectionState; } | { _mtcuteWorkerId: string; type: 'log'; color: number; level: number; tag: string; fmt: string; args: unknown[]; } | { _mtcuteWorkerId: string; type: 'self_sync'; self: SerializedResult; } | { _mtcuteWorkerId: string; connectionId: string; type: 'connection_expired'; } | { _mtcuteWorkerId: string; connectionId: string; type: 'result'; id: number; result?: SerializedResult; error?: SerializedError; }; export declare const DEFAULT_WORKER_ID = "default"; export type SomeWorker = NodeWorker | NodeMessagePort | Worker | SharedWorker | MessagePort; export type SendFn = (message: WorkerInboundMessage) => void; export type ClientMessageHandler = (message: WorkerOutboundMessage) => void; export type RespondFn = (message: WorkerOutboundMessage) => void; export type WorkerMessageHandler = (message: WorkerInboundMessage, respond: RespondFn) => void; export type WorkerCustomMethods = Record Promise>; export interface SerializedResult { __serialized__: T; } export declare function serializeResult(result: T): SerializedResult; export declare function deserializeResult(result: SerializedResult): T;