import { ICoreFeature, ITabulator } from '../../../../../types/src/table';
import { default as Comms } from '../modules/Comms/Comms';
import { default as Localize } from '../modules/Localize/Localize';
import { default as ExternalEventBus } from './tools/ExternalEventBus';
import { default as InternalEventBus } from './tools/InternalEventBus';
import { Options } from './types';

export default class CoreFeature implements ICoreFeature {
    table: ITabulator;
    constructor(table: ITabulator);
    /**
     * DataLoad
     */
    reloadData(data: unknown[] | null, silent?: boolean, columnsChanged?: boolean): Promise<void>;
    /**
     * Localization
     */
    langText(...args: Parameters<Localize['getText']>): any;
    langBind(...args: Parameters<Localize['bind']>): any;
    langLocale(...args: Parameters<Localize['getLocale']>): any;
    /**
     * Inter Table Comms
     */
    commsConnections(...args: Parameters<Comms['getConnections']>): any;
    commsSend(...args: Parameters<Comms['send']>): any;
    /**
     * Layout
     */
    layoutMode(): any;
    layoutRefresh(force: boolean): any;
    /**
     * Event Bus
     */
    subscribe(...args: Parameters<InternalEventBus['subscribe']>): void | undefined;
    unsubscribe(...args: Parameters<InternalEventBus['unsubscribe']>): void | undefined;
    subscribed(key: string): boolean | undefined;
    subscriptionChange(...args: Parameters<InternalEventBus['subscriptionChange']>): void | undefined;
    dispatch(...args: Parameters<InternalEventBus['dispatch']>): void | undefined;
    chain(...args: Parameters<InternalEventBus['chain']>): any;
    confirm(...args: Parameters<InternalEventBus['confirm']>): boolean | undefined;
    dispatchExternal(...args: Parameters<ExternalEventBus['dispatch']>): any;
    subscribedExternal(key: string): boolean | undefined;
    subscriptionChangeExternal(...args: Parameters<ExternalEventBus['subscriptionChange']>): void | undefined;
    /**
     * Options
     */
    options(key: keyof Options): any;
    setOption(key: keyof Options, value: unknown): any;
    /**
     * Deprecation Checks
     */
    deprecationCheck(oldOption: keyof Options, newOption: keyof Options, convert: (value: unknown) => unknown): boolean;
    deprecationCheckMsg(oldOption: keyof Options, msg: string): boolean;
    deprecationMsg(msg: string): void;
    /**
     * Modules
     */
    module(key: string): any;
}
