import * as Rx from "rxjs"; import { RateLimitOp } from "../rate-limits/rxjs"; import { GatewayPayload, UpdatePresence } from "../types"; export interface Options { token: string; intents: number; shard?: [number, number]; baseURL?: string; sharderHeartbeat?: () => void; presence?: UpdatePresence; rateLimits: { op: RateLimitOp; sendLimit?: number; sendWindow?: number; }; } export declare function create({ token, baseURL, intents, sharderHeartbeat, shard, rateLimits: { op: rateLimitOp, sendLimit, sendWindow }, presence, }: Options): { id: [number, number]; conn: { setBaseUrl: (baseUrl: string) => void; raw$: Rx.Observable>; dispatch$: Rx.Observable>; heartbeat$: Rx.Observable>; reconnect$: Rx.Observable>; invalidSession$: Rx.Observable>; hello$: Rx.Observable>; heartbeatAck$: Rx.Observable>; }; send: (payload: GatewayPayload) => void; reconnect: () => void; raw$: Rx.Observable>; dispatch$: Rx.Observable>; ready$: Rx.Observable>; latency$: Rx.Observable; effects$: Rx.Observable; debug$: Rx.Observable; }; export type Shard = ReturnType;