///
import BigNumber from 'bignumber.js';
import { EventEmitter2 } from 'eventemitter2';
import { IlpPluginBtpConstructorOptions } from 'ilp-plugin-btp';
import LightningAccount from './account';
import { GrpcConnectionOpts, InvoiceStream, LndService, PaymentStream, GrpcClient } from './lightning';
import { LightningClientPlugin } from './plugins/client';
import { LightningServerPlugin, MiniAccountsOpts } from './plugins/server';
import { DataHandler, Logger, MoneyHandler, PluginInstance, PluginServices, Store } from './types/plugin';
export * from './lightning';
export { LightningAccount };
export interface LightningPluginOpts extends MiniAccountsOpts, IlpPluginBtpConstructorOptions {
role: 'client' | 'server';
lnd: GrpcConnectionOpts | LndService;
paymentStream?: PaymentStream;
invoiceStream?: InvoiceStream;
maxPacketAmount?: BigNumber.Value;
}
export default class LightningPlugin extends EventEmitter2 implements PluginInstance {
static readonly version = 2;
readonly _log: Logger;
readonly _store: Store;
readonly _maxPacketAmount: BigNumber;
readonly _maxBalance: BigNumber;
readonly _accounts: Map;
readonly _plugin: LightningServerPlugin | LightningClientPlugin;
_dataHandler: DataHandler;
_moneyHandler: MoneyHandler;
readonly _grpcClient?: GrpcClient;
readonly _lightning: LndService;
_paymentStream?: PaymentStream;
_invoiceStream?: InvoiceStream;
_lightningAddress?: string;
constructor({ role, lnd, paymentStream, invoiceStream, maxPacketAmount, ...opts }: LightningPluginOpts, { log, store }?: PluginServices);
_loadAccount(accountName: string): Promise;
connect(): Promise;
disconnect(): Promise;
isConnected(): boolean;
sendData(data: Buffer): Promise;
sendMoney(amount: string): Promise;
registerDataHandler(dataHandler: DataHandler): void;
deregisterDataHandler(): void;
registerMoneyHandler(moneyHandler: MoneyHandler): void;
deregisterMoneyHandler(): void;
}