///
///
import { EventEmitter } from 'events';
import timestamp = require('monotonic-timestamp');
import { Duplex } from './duplex';
import { Debug } from '@jacobbubu/debug';
import { ScuttlebuttOptions, Sources, Update, Verify, Sign, StreamOptions } from './interfaces';
import { createId, filter, order, sort } from './utils';
declare class Scuttlebutt extends EventEmitter {
protected _sign?: Sign;
protected _verify?: Verify;
protected _clones: number;
streams: number;
sources: Sources;
id: string;
accept: any;
readonly logger: Debug;
constructor(opts?: ScuttlebuttOptions | string);
isAccepted(peerAccept: any, update: Update): boolean;
applyUpdate(update: Update): boolean | Promise;
history(peerSources: Sources, accept?: any): Update[];
_update(update: Update): boolean | Promise;
localUpdate(trx: any): boolean | Promise;
createStream(opts?: StreamOptions): Duplex;
createWriteStream(opts?: StreamOptions): Duplex;
createSinkStream(opts?: StreamOptions): Duplex;
createReadStream(opts?: StreamOptions): Duplex;
createSourceStream(opts?: StreamOptions): Duplex;
dispose(): void;
setId(id: string | null): this;
get clones(): number;
clone(): Scuttlebutt;
}
export default Scuttlebutt;
export { Scuttlebutt };
export { createId };
export { filter };
export { order };
export { sort };
export { filter as updateIsRecent };
export { timestamp };
export * from './duplex';
export * from './interfaces';
export * from './model';
export * from './reliable-event';
export * from './async-scuttlebutt';
export * from './async-model';