import { Boom } from '@hapi/boom'
import { SocketConfig } from '../Types'
import { BinaryNode } from '../WABinary'
import { USyncQuery } from '../WAUSync'

export declare const makeUSyncSocket: (config: SocketConfig) => {
   executeUSyncQuery: (usyncQuery: USyncQuery) => Promise<import("../WAUSync").USyncQueryResult | undefined>
   type: "md"
   ws: import("./Client").WebSocketClient
   ev: import("../Types").BaileysEventEmitter & {
      process(handler: (events: Partial<import("../Types").BaileysEventMap>) => void | Promise<void>): () => void
      buffer(): void
      createBufferedFunction<A extends any[], T>(work: (...args: A) => Promise<T>): (...args: A) => Promise<T>
      flush(force?: boolean | undefined): boolean
      isBuffering(): boolean
   }
   authState: {
      creds: import("../Types").AuthenticationCreds
      keys: import("../Types").SignalKeyStoreWithTransaction
   }
   signalRepository: import("../Types").SignalRepository
   user: import("../Types").Contact | undefined
   generateMessageTag: () => string
   query: (node: BinaryNode, timeoutMs?: number | undefined) => Promise<BinaryNode>
   waitForMessage: <T_1>(msgId: string, timeoutMs?: number | undefined) => Promise<T_1>
   waitForSocketOpen: () => Promise<void>
   sendRawMessage: (data: Uint8Array | Buffer) => Promise<void>
   sendNode: (frame: BinaryNode) => Promise<void>
   logout: (msg?: string | undefined) => Promise<void>
   end: (error: Error | undefined) => void
   onUnexpectedError: (err: Error | Boom<any>, msg: string) => void
   uploadPreKeys: (count?: number) => Promise<void>
   uploadPreKeysToServerIfRequired: () => Promise<void>
   requestPairingCode: (phoneNumber: string, code?: string) => Promise<string>
   waitForConnectionUpdate: (check: (u: Partial<import("../Types").ConnectionState>) => boolean | undefined, timeoutMs?: number | undefined) => Promise<void>
   sendWAMBuffer: (wamBuffer: Buffer) => Promise<BinaryNode>
}