import { ITxProposal, IWallet, TxProposal } from '../model';
import { WalletService } from '../server';
export interface INotificationData {
    out: {
        address: any;
        amount: any;
        tokenAddress?: any;
    };
    txid: any;
}
export interface IChain {
    getWalletBalance(server: WalletService, wallet: IWallet, opts: {
        coin: string;
        addresses: string[];
    } & any, cb: any): any;
    getWalletSendMaxInfo(server: WalletService, wallet: IWallet, opts: {
        excludeUnconfirmedUtxos: string;
        returnInputs: string;
        from: string;
        feePerKb: number;
        useProUrl: boolean;
    } & any, cb: any): any;
    getInputSizeSafetyMargin(opts: any): number;
    getSizeSafetyMargin(opts: any): number;
    getDustAmountValue(): any;
    getTransactionCount(server: WalletService, wallet: IWallet, from: string): any;
    getChangeAddress(server: WalletService, wallet: IWallet, opts: {
        changeAddress: string;
    } & any): any;
    checkDust(output: {
        amount: number;
        toAddress: string;
        valid: boolean;
    }, opts: {
        outputs: any[];
    } & any): any;
    checkScriptOutput(output: {
        script: string;
        amount: number;
    }): any;
    getFee(server: WalletService, wallet: IWallet, opts: {
        fee: number;
        feePerKb: number;
        signatures?: number;
    } & any): any;
    getBitcoreTx(txp: TxProposal, opts: {
        signed: boolean;
    }): any;
    convertFeePerKb(p: number, feePerKb: number): any;
    checkTx(server: WalletService, txp: ITxProposal): any;
    checkTxUTXOs(server: WalletService, txp: ITxProposal, opts: {
        noCashAddr: boolean;
    } & any, cb: any): any;
    selectTxInputs(server: WalletService, txp: ITxProposal, wallet: IWallet, opts: {
        utxosToExclude: any[];
    } & any, cb: any): any;
    checkUtxos(opts: {
        fee: number;
        inputs: any[];
    }): any;
    checkValidTxAmount(output: any): boolean;
    isUTXOChain(): boolean;
    isSingleAddress(): boolean;
    supportsMultisig(): boolean;
    notifyConfirmations(network: string): boolean;
    addSignaturesToBitcoreTx(tx: string, inputs: any[], inputPaths: any[], signatures: any[], xpub: string, signingMethod?: string): any;
    addressToStorageTransform(network: string, address: {}): void;
    addressFromStorageTransform(network: string, address: {}): void;
    validateAddress(wallet: IWallet, inaddr: string, opts: {
        noCashAddr: boolean;
    } & any): any;
    onCoin(coin: any): INotificationData | null;
    onTx(tx: any): INotificationData | null;
    getReserve(server: WalletService, wallet: IWallet, cb: (err?: any, reserve?: number) => void): any;
    refreshTxData(server: WalletService, txp: TxProposal, opts: any, cb: any): any;
}
declare class ChainProxy {
    get(chain: string): IChain;
    getChain(coin: string): string;
    getWalletBalance(server: any, wallet: any, opts: any, cb: any): any;
    getWalletSendMaxInfo(server: any, wallet: any, opts: any, cb: any): any;
    getDustAmountValue(chain: any): any;
    getTransactionCount(server: any, wallet: any, from: any): any;
    getChangeAddress(server: any, wallet: any, opts: any): any;
    checkDust(chain: any, output: any, opts: any): any;
    checkScriptOutput(chain: any, output: any): any;
    getFee(server: any, wallet: any, opts: any): any;
    getBitcoreTx(txp: TxProposal, opts?: {
        signed: boolean;
    }): any;
    convertFeePerKb(chain: any, p: any, feePerKb: any): any;
    addressToStorageTransform(chain: any, network: any, address: any): void;
    addressFromStorageTransform(chain: any, network: any, address: any): void;
    checkTx(server: any, txp: any): any;
    checkTxUTXOs(server: any, txp: any, opts: any, cb: any): any;
    selectTxInputs(server: any, txp: any, wallet: any, opts: any, cb: any): any;
    checkUtxos(chain: any, opts: any): any;
    checkValidTxAmount(chain: string, output: any): boolean;
    isUTXOChain(chain: string): boolean;
    isSingleAddress(chain: string): boolean;
    notifyConfirmations(chain: string, network: string): boolean;
    supportsMultisig(chain: string): boolean;
    addSignaturesToBitcoreTx(chain: any, tx: any, inputs: any, inputPaths: any, signatures: any, xpub: any, signingMethod: any): void;
    validateAddress(wallet: any, inaddr: any, opts: any): any;
    onCoin(chain: string, coinData: any): INotificationData;
    onTx(chain: string, tx: any): INotificationData;
    getReserve(server: WalletService, wallet: IWallet, cb: (err?: any, reserve?: number) => void): any;
    refreshTxData(server: any, txp: any, opts: any, cb: any): any;
}
export declare let ChainService: ChainProxy;
export {};
//# sourceMappingURL=index.d.ts.map