import { EventEmitter } from 'events'; import { PutBuilder } from './builder'; import { type EBError } from '../base/errors'; import * as RPC from './rpc'; import { type NSApplicator } from '../base/util'; import type { CallOptions } from '../base/options'; import type IDriver from '../driver/i-driver'; export declare enum LeaseState { Pending = 0, Alive = 1, Revoked = 2 } export interface ILeaseOptions extends CallOptions { autoKeepAlive?: boolean; } export declare class Lease extends EventEmitter { private readonly driver; private readonly namespace; private readonly ttl; private readonly leaseID; private innerState; private readonly client; private lastKeepAlive; private readonly defaultOptions; get state(): LeaseState; constructor(driver: IDriver, namespace: NSApplicator, ttl: number, options?: ILeaseOptions); grant(): Promise; revoke(options?: CallOptions | undefined): Promise; release(): void; put(key: string | Buffer): PutBuilder; keepaliveOnce(options?: CallOptions | undefined): Promise; revoked(): boolean; on(event: 'lost', handler: (err: EBError) => void): this; on(event: 'keepaliveFired' | 'keepaliveEstablished', handler: () => void): this; on(event: 'keepaliveSucceeded' | 'keepaliveFailed', handler: (res: RPC.ILeaseKeepAliveResponse) => void): this; private teardown; private close; private emitLoss; private keepalive; private fireKeepAlive; private handleKeepaliveError; }