///
///
import LeastRecentlyUsed from 'blru';
import tls from 'tls';
import { Config } from '../fileStores/config';
import { Logger } from '../logger';
import { RpcSocketClient } from '../rpc/clients';
import { SerializedBlockTemplate } from '../serde/BlockTemplateSerde';
import { MiningPoolShares } from './poolShares';
import { MiningStatusMessage } from './stratum/messages';
import { StratumServer } from './stratum/stratumServer';
import { StratumServerClient } from './stratum/stratumServerClient';
import { Explorer, WebhookNotifier } from './webhooks';
export declare class MiningPool {
readonly stratum: StratumServer;
readonly rpc: RpcSocketClient;
readonly logger: Logger;
readonly shares: MiningPoolShares;
readonly config: Config;
readonly webhooks: WebhookNotifier[];
private consensus;
private blockHasher;
private started;
private stopPromise;
private stopResolve;
private connectWarned;
private connectTimeout;
private eventLoopTimeout;
name: string;
nextMiningRequestId: number;
miningRequestBlocks: LeastRecentlyUsed;
recentSubmissions: Map;
difficulty: bigint;
target: Buffer;
currentHeadTimestamp: number | null;
currentHeadDifficulty: bigint | null;
private recalculateTargetInterval;
private notifyStatusInterval;
private getExplorer;
private constructor();
static init(options: {
rpc: RpcSocketClient;
config: Config;
logger: Logger;
webhooks?: WebhookNotifier[];
enablePayouts?: boolean;
host: string;
port: number;
banning?: boolean;
tls?: boolean;
tlsOptions?: tls.TlsOptions;
getExplorer?: (networkId: number) => Explorer | null;
}): Promise;
start(): Promise;
stop(): Promise;
private eventLoop;
waitForStop(): Promise;
getTarget(): string;
submitWork(client: StratumServerClient, miningRequestId: number, randomness: string, graffiti: string): Promise<{
error: string | null;
}>;
private startConnectingRpc;
private onDisconnectRpc;
private processNewBlocks;
private recalculateTarget;
graffiti(): Buffer;
private distributeNewBlock;
private restartCalculateTargetInterval;
private isDuplicateSubmission;
private addWorkSubmission;
estimateHashRate(publicAddress?: string): Promise;
notifyStatus(): Promise;
getStatus(publicAddress?: string): Promise;
updateUnconfirmedBlocks(): Promise;
updateUnconfirmedPayoutTransactions(): Promise;
}
//# sourceMappingURL=pool.d.ts.map