import * as Rx from "rxjs"; import * as RL from "../rate-limits/rxjs"; import { Routes } from "../rest/client"; import * as Shard from "./shard"; import { SharderStore } from "./sharder/store"; export type CreateShard = (opts: { id: [number, number]; baseURL: string; heartbeat?: () => void; }) => Shard.Shard; export interface Options { createShard: CreateShard; routes: Routes; shardConfig?: { /** * Array of shard IDs you want to start. */ ids?: number[]; /** * The total amount of shards across your entire system. * * Defaults to a number provider by Discord */ count?: number; }; store: SharderStore; rateLimit: RL.RateLimitOp; identifyLimit: number; identifyWindow: number; } export declare const spawn: ({ createShard, routes, shardConfig, store, rateLimit, identifyLimit, identifyWindow, }: Options) => Rx.Observable<{ 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: import("../types").GatewayPayload) => void; reconnect: () => void; raw$: Rx.Observable>; dispatch$: Rx.Observable>; ready$: Rx.Observable>; latency$: Rx.Observable; effects$: Rx.Observable; debug$: Rx.Observable; }>;