///
///
import net from 'net';
import { Config } from '../../fileStores/config';
import { Logger } from '../../logger';
import { MiningPool } from '../pool';
import { IStratumAdapter } from './adapters';
import { MiningDisconnectMessage, MiningNotifyMessage, MiningSetTargetMessage, MiningStatusMessage, MiningSubmittedMessage, MiningSubscribedMessageV1, MiningSubscribedMessageV2 } from './messages';
import { StratumPeers } from './stratumPeers';
import { StratumServerClient } from './stratumServerClient';
export declare class StratumServer {
readonly pool: MiningPool;
readonly config: Config;
readonly logger: Logger;
readonly peers: StratumPeers;
readonly adapters: IStratumAdapter[];
clients: Map;
nextMinerId: number;
nextMessageId: number;
subscribed: number;
currentWork: Buffer | null;
currentMiningRequestId: number | null;
readonly supportedVersions: number[];
private _isRunning;
private _startPromise;
constructor(options: {
pool: MiningPool;
config: Config;
logger: Logger;
banning?: boolean;
});
get isRunning(): boolean;
/** Starts the Stratum server and tells any attached adapters to start serving requests */
start(): Promise;
/** Stops the Stratum server and tells any attached adapters to stop serving requests */
stop(): Promise;
/** Adds an adapter to the Stratum server and starts it if the server has already been started */
mount(adapter: IStratumAdapter): void;
newWork(miningRequestId: number, block: Buffer): void;
waitForWork(): void;
hasWork(): boolean;
onConnection(socket: net.Socket): void;
private onDisconnect;
private onData;
private handleMiningSubscribeMessage;
private handleMiningSubmitMessage;
private handleMiningGetStatusMessage;
private onError;
getNotifyMessage(): MiningNotifyMessage;
getSetTargetMessage(): MiningSetTargetMessage;
private broadcast;
send(socket: net.Socket, method: 'mining.notify', body: MiningNotifyMessage): void;
send(socket: net.Socket, method: 'mining.disconnect', body: MiningDisconnectMessage): void;
send(socket: net.Socket, method: 'mining.set_target', body: MiningSetTargetMessage): void;
send(socket: net.Socket, method: 'mining.subscribed', body: MiningSubscribedMessageV1): void;
send(socket: net.Socket, method: 'mining.subscribed', body: MiningSubscribedMessageV2): void;
send(socket: net.Socket, method: 'mining.submitted', body: MiningSubmittedMessage): void;
send(socket: net.Socket, method: 'mining.wait_for_work'): void;
send(socket: net.Socket, method: 'mining.status', body: MiningStatusMessage): void;
sendStratumError(client: StratumServerClient, id: number, message: string): void;
}
//# sourceMappingURL=stratumServer.d.ts.map