/// import { BSONSerializeOptions, Document, Long, ObjectId } from '../bson'; import type { AutoEncrypter } from '../deps'; import type { ServerApi, SupportedNodeConnectionOptions } from '../mongo_client'; import { CancellationToken, TypedEventEmitter } from '../mongo_types'; import { ReadPreference, ReadPreferenceLike } from '../read_preference'; import { ClientSession } from '../sessions'; import { Callback, ClientMetadata, HostAddress, MongoDBNamespace } from '../utils'; import type { WriteConcern } from '../write_concern'; import type { MongoCredentials } from './auth/mongo_credentials'; import { CommandFailedEvent, CommandStartedEvent, CommandSucceededEvent } from './command_monitoring_events'; import { BinMsg, Response } from './commands'; import type { Stream } from './connect'; import { MessageStream, OperationDescription } from './message_stream'; import { StreamDescription, StreamDescriptionOptions } from './stream_description'; /** @internal */ declare const kStream: unique symbol; /** @internal */ declare const kQueue: unique symbol; /** @internal */ declare const kMessageStream: unique symbol; /** @internal */ declare const kGeneration: unique symbol; /** @internal */ declare const kLastUseTime: unique symbol; /** @internal */ declare const kClusterTime: unique symbol; /** @internal */ declare const kDescription: unique symbol; /** @internal */ declare const kHello: unique symbol; /** @internal */ declare const kAutoEncrypter: unique symbol; /** @internal */ declare const kFullResult: unique symbol; /** @internal */ declare const kDelayedTimeoutId: unique symbol; /** @internal */ export interface QueryOptions extends BSONSerializeOptions { readPreference: ReadPreference; documentsReturnedIn?: string; batchSize?: number; limit?: number; skip?: number; projection?: Document; tailable?: boolean; awaitData?: boolean; noCursorTimeout?: boolean; /** @deprecated use `noCursorTimeout` instead */ timeout?: boolean; partial?: boolean; oplogReplay?: boolean; } /** @internal */ export interface CommandOptions extends BSONSerializeOptions { command?: boolean; secondaryOk?: boolean; /** Specify read preference if command supports it */ readPreference?: ReadPreferenceLike; raw?: boolean; monitoring?: boolean; [kFullResult]?: boolean; socketTimeoutMS?: number; /** Session to use for the operation */ session?: ClientSession; documentsReturnedIn?: string; noResponse?: boolean; omitReadPreference?: boolean; willRetryWrite?: boolean; writeConcern?: WriteConcern; } /** @internal */ export interface GetMoreOptions extends CommandOptions { batchSize?: number; maxTimeMS?: number; maxAwaitTimeMS?: number; /** * Comment to apply to the operation. * * In server versions pre-4.4, 'comment' must be string. A server * error will be thrown if any other type is provided. * * In server versions 4.4 and above, 'comment' can be any valid BSON type. */ comment?: unknown; } /** @public */ export interface ProxyOptions { proxyHost?: string; proxyPort?: number; proxyUsername?: string; proxyPassword?: string; } /** @public */ export interface ConnectionOptions extends SupportedNodeConnectionOptions, StreamDescriptionOptions, ProxyOptions { id: number | ''; generation: number; hostAddress: HostAddress; autoEncrypter?: AutoEncrypter; serverApi?: ServerApi; monitorCommands: boolean; /** @internal */ connectionType?: typeof Connection; credentials?: MongoCredentials; connectTimeoutMS?: number; tls: boolean; keepAlive?: boolean; keepAliveInitialDelay?: number; noDelay?: boolean; socketTimeoutMS?: number; cancellationToken?: CancellationToken; metadata: ClientMetadata; } /** @public */ export interface DestroyOptions { /** Force the destruction. */ force?: boolean; } /** @public */ export declare type ConnectionEvents = { commandStarted(event: CommandStartedEvent): void; commandSucceeded(event: CommandSucceededEvent): void; commandFailed(event: CommandFailedEvent): void; clusterTimeReceived(clusterTime: Document): void; close(): void; message(message: any): void; pinned(pinType: string): void; unpinned(pinType: string): void; }; /** @internal */ export declare class Connection extends TypedEventEmitter { id: number | ''; address: string; socketTimeoutMS: number; monitorCommands: boolean; closed: boolean; destroyed: boolean; lastHelloMS?: number; serverApi?: ServerApi; helloOk?: boolean; /**@internal */ [kDelayedTimeoutId]: NodeJS.Timeout | null; /** @internal */ [kDescription]: StreamDescription; /** @internal */ [kGeneration]: number; /** @internal */ [kLastUseTime]: number; /** @internal */ [kQueue]: Map; /** @internal */ [kMessageStream]: MessageStream; /** @internal */ [kStream]: Stream; /** @internal */ [kHello]: Document | null; /** @internal */ [kClusterTime]: Document | null; /** @event */ static readonly COMMAND_STARTED: "commandStarted"; /** @event */ static readonly COMMAND_SUCCEEDED: "commandSucceeded"; /** @event */ static readonly COMMAND_FAILED: "commandFailed"; /** @event */ static readonly CLUSTER_TIME_RECEIVED: "clusterTimeReceived"; /** @event */ static readonly CLOSE: "close"; /** @event */ static readonly MESSAGE: "message"; /** @event */ static readonly PINNED: "pinned"; /** @event */ static readonly UNPINNED: "unpinned"; constructor(stream: Stream, options: ConnectionOptions); get description(): StreamDescription; get hello(): Document | null; set hello(response: Document | null); set isMonitoringConnection(value: boolean); get isMonitoringConnection(): boolean; get serviceId(): ObjectId | undefined; get loadBalanced(): boolean; get generation(): number; set generation(generation: number); get idleTime(): number; get clusterTime(): Document | null; get stream(): Stream; markAvailable(): void; onError(error: Error): void; onClose(): void; onTimeout(): void; onMessage(message: BinMsg | Response): void; destroy(options?: DestroyOptions, callback?: Callback): void; command(ns: MongoDBNamespace, cmd: Document, options: CommandOptions | undefined, callback: Callback): void; /** @internal */ query(ns: MongoDBNamespace, cmd: Document, options: QueryOptions, callback: Callback): void; /** @internal */ getMore(ns: MongoDBNamespace, cursorId: Long, options: GetMoreOptions, callback: Callback): void; killCursors(ns: MongoDBNamespace, cursorIds: Long[], options: CommandOptions, callback: Callback): void; } /** @internal */ export declare class CryptoConnection extends Connection { /** @internal */ [kAutoEncrypter]?: AutoEncrypter; constructor(stream: Stream, options: ConnectionOptions); /** @internal @override */ command(ns: MongoDBNamespace, cmd: Document, options: CommandOptions, callback: Callback): void; } /** @internal */ export declare function hasSessionSupport(conn: Connection): boolean; export {}; //# sourceMappingURL=connection.d.ts.map