import { TMethod } from '@onesy/models';
import OnesySubscription from '@onesy/subscription';
import { IOptionsRule, IValuesVersion, TMode, TRefs } from './interfaces';
import OnesyStyleRenderer from './OnesyStyleRenderer';
import OnesyStyleSheet from './OnesyStyleSheet';
import OnesyStyleSheetManager from './OnesyStyleSheetManager';
export interface IOnesyPluginItem {
    method: TMethod;
    arguments: any[];
}
export declare type TOnesyPlugin = TMethod | IOnesyPluginItem;
export declare type OnesyPlugins = TOnesyPlugin | TOnesyPlugin[];
interface IOptions {
    element?: Element;
    mode?: TMode;
    renderer?: OnesyStyleRenderer;
    rule?: IOptionsRule;
    minify?: boolean;
    optimize?: boolean;
    classNamePrefix?: string;
}
declare class OnesyStyle {
    options: IOptions;
    id?: string;
    element?: Element;
    mode?: TMode;
    renderer: OnesyStyleRenderer;
    direction: string;
    subscriptions: {
        className: {
            pre: OnesySubscription<any>;
            name: OnesySubscription<any>;
            post: OnesySubscription<any>;
        };
        keyframes: {
            pre: OnesySubscription<any>;
            name: OnesySubscription<any>;
            post: OnesySubscription<any>;
        };
        rule: {
            pre: OnesySubscription<any>;
            unit: OnesySubscription<any>;
            value: OnesySubscription<any>;
            prefix: OnesySubscription<any>;
            rtl: OnesySubscription<any>;
            add: OnesySubscription<any>;
            update: OnesySubscription<any>;
            update_props: OnesySubscription<any>;
            remove: OnesySubscription<any>;
            post: OnesySubscription<any>;
        };
        rules: {
            sort: OnesySubscription<any>;
        };
        sheet: {
            add: OnesySubscription<any>;
            update: OnesySubscription<any>;
            update_props: OnesySubscription<any>;
            remove: OnesySubscription<any>;
        };
        sheet_manager: {
            add: OnesySubscription<any>;
            update: OnesySubscription<any>;
            update_props: OnesySubscription<any>;
            remove: OnesySubscription<any>;
        };
    };
    values: {
        css: string;
    };
    refs: TRefs;
    sheets: Array<OnesyStyleSheet>;
    sheet_managers: Array<OnesyStyleSheetManager>;
    static counter: {
        className: number;
        keyframesName: number;
    };
    [p: string]: any;
    constructor(options?: IOptions);
    get response(): IValuesVersion;
    get css(): string;
    get plugins(): {
        add: OnesyPlugins;
        remove: OnesyPlugins;
    };
    init(): void;
    static attributes: string[];
    static get(value: Element, index?: number): OnesyStyle;
    static first(value: Element): OnesyStyle;
    static last(value: Element): OnesyStyle;
    static nearest(value: Element): OnesyStyle;
    static furthest(value: Element): OnesyStyle;
    static all(value: Element): Array<OnesyStyle>;
}
export default OnesyStyle;
