import type { EventEmitter } from 'events'; import type { CallOptions, CallOptionsFactory } from '../base/options'; import type { CallContext, IServices } from './iapi'; export declare const zeroKey: Buffer; export declare const emptyKey: Buffer; export declare function toBuffer(input: string | Buffer | number): Buffer; export declare function endRangeForPrefix(prefix: Buffer): Buffer; export declare class NSApplicator { private readonly prefix; static readonly default: NSApplicator; private endRange; constructor(prefix: Buffer); applyKey(buf?: Buffer): Buffer | undefined; applyRangeEnd(buf?: Buffer): Buffer | undefined; applyToRequest(req: T): T; unprefix(buf: Buffer): Buffer; } export declare function minBy(items: T[], prop: (x: T) => number): T[]; export declare function sample(items: T[]): T; export declare function delay(duration: number): Promise; export declare function forOwn(obj: T, iterator: (value: T[K], key: K) => void): void; export declare function onceEvent(emitter: EventEmitter, ...events: string[]): Promise; export declare function debounce(duration: number, fn: () => void): { (): void; cancel(): void; }; export declare abstract class PromiseWrap implements PromiseLike { then(onFulfilled: (value: T) => R | Promise, onRejected?: (err: any) => V | Promise): Promise; catch(onRejected: (err: any) => R | Promise): Promise; protected abstract createPromise(): Promise; } export interface ICallContext { service: keyof IServices; method: string; params: unknown; } export declare const resolveCallOptions: (callOptions: CallOptions | undefined, defaultOptions: undefined | CallOptionsFactory, context: CallContext) => CallOptions | undefined; export interface IDeferred { resolve: (value: T) => void; reject: (error: unknown) => void; promise: Promise; } export declare const getDeferred: () => { promise: Promise; res: (value: T) => void; rej: (error: unknown) => void; };