import { BlockBase, BlockHeaderBase, BlockTipBase } from "../base-objects/BlockBase";
import { FullBlockBase } from "../base-objects/FullBlockBase";
import { INodeStatus } from "../base-objects/StatusBase";
import { TransactionBase } from "../base-objects/TransactionBase";
interface BaseRpcInterface {
    chainType: ChainType;
}
export interface ReadRpcInterface<BT extends BlockTipBase, BH extends BlockHeaderBase, B extends BlockBase, FB extends FullBlockBase<T>, T extends TransactionBase> extends BaseRpcInterface {
    getNodeStatus(): Promise<INodeStatus>;
    /**
     * The lowest block in the latest joined set of blocks
     */
    getBottomBlockHeight(): Promise<number>;
    getBlockHeader(blockNumberOrHash: number | string | any): Promise<BH>;
    getBlock(blockNumberOrHash: number | string | any): Promise<B>;
    getFullBlock(blockNumberOrHash: number | string): Promise<FB>;
    getBlockHeight(): Promise<number>;
    getBlockTips?(height_gte: number): Promise<BT[]>;
    getTopLiteBlocks(branch_len: number, read_main?: boolean): Promise<BT[]>;
    getTransaction(txId: string, metaData?: getTransactionOptions): Promise<T>;
    listTransactions?(options?: any): any;
}
export interface WriteRpcInterface extends BaseRpcInterface {
    createAddress(createAddressData: any): any;
    createRawTransaction(walletLabel: string, vin: any[], out: any[]): any;
    signRawTransaction(walletLabel: string, rawTx: string, keysList: string[]): any;
    sendRawTransaction(walletLabel: string, signedRawTx: string): any;
    sendRawTransactionInBlock(walletLabel: string, signedRawTx: string): any;
    fundAddress(address: string, amount: number): any;
}
export interface RPCInterface<BT extends BlockTipBase, BH extends BlockHeaderBase, B extends BlockBase, FB extends FullBlockBase<T>, T extends TransactionBase> extends ReadRpcInterface<BT, BH, B, FB, T>, WriteRpcInterface {
}
export interface IIGetTransactionRes {
}
export interface IIGetBlockRes {
}
export declare enum TransactionSuccessStatus {
    SUCCESS = 0,
    SENDER_FAILURE = 1,
    RECEIVER_FAILURE = 2
}
/**
 * Object to use in get transaction additional parameters
 */
export interface getTransactionOptions {
    verbose?: boolean;
    binary?: boolean;
    min_block?: number;
    max_block?: number;
}
export declare enum ChainType {
    invalid = -1,
    BTC = 0,
    LTC = 1,
    DOGE = 2,
    XRP = 3,
    ALGO = 4
}
export declare type LoggingModes = "off" | "production" | "develop";
export declare type IExceptionCallback = (error: any, message: string) => void;
export declare type ILoggingCallback = (message: string) => void;
export declare class MccLoggingOptions {
    mode?: LoggingModes;
    loggingCallback?: ILoggingCallback;
    warningCallback?: ILoggingCallback;
    exceptionCallback?: IExceptionCallback;
}
export declare class MccLoggingOptionsFull {
    mode: LoggingModes;
    loggingCallback: ILoggingCallback;
    warningCallback: ILoggingCallback;
    exceptionCallback: IExceptionCallback;
}
export interface IEmptyObject {
}
export {};
//# sourceMappingURL=genericMccTypes.d.ts.map