import OnesySubscription from '@onesy/subscription';
import OnesyStyle from './OnesyStyle';
import OnesyStyleSheet from './OnesyStyleSheet';
import OnesyStyleRuleProperty from './OnesyStyleRuleProperty';
import { IOptionsRule, IValuesVersion, TMode, TRef, TStatus, TValueVersion } from './interfaces';
export declare type TVersion = 'property' | 'at-rule';
export interface IRuleItemWithString {
    property: string;
    value: OnesyStyleRule | OnesyStyleRuleProperty;
}
export interface IOnesyStyleRuleValue {
    value: Array<string | (() => any) | OnesySubscription>;
    options?: {
        rule?: IOptionsRule;
    };
}
export declare type TRules = Array<{
    property: string;
    value: OnesyStyleRule | OnesyStyleRuleProperty;
}>;
interface IOptions extends IOptionsRule {
    mode?: TMode;
    value_version?: TValueVersion;
    version?: TVersion;
    pure?: boolean;
    index?: number;
    owner?: OnesyStyleRule | OnesyStyleSheet;
    parents?: Array<OnesyStyleSheet | OnesyStyleRule>;
    onesyStyle?: OnesyStyle;
    onesyStyleSheet?: OnesyStyleSheet;
}
declare class OnesyStyleRule {
    value: any;
    property: string;
    options: IOptions;
    id: string;
    value_version: TValueVersion;
    mode: TMode;
    version: TVersion;
    pure: boolean;
    index: number;
    owner: OnesyStyleRule | OnesyStyleSheet;
    parents: Array<OnesyStyleSheet | OnesyStyleRule>;
    onesyStyleSheet: OnesyStyleSheet;
    onesyStyle: OnesyStyle;
    rule_: CSSStyleRule;
    status: TStatus;
    level: number;
    level_actual: number;
    isVariable: boolean;
    hash_: string;
    static: boolean;
    rules_owned: Array<OnesyStyleRule | OnesyStyleRuleProperty>;
    ref: TRef;
    className_: string;
    selector_: string;
    classNames_: string;
    keyframesName_: string;
    values: {
        value: any;
        css: string;
    };
    rules: TRules;
    constructor(value: any, property: string, options?: IOptions);
    get selector(): string;
    private set selector(value);
    get className(): string;
    set className(value: string);
    get classNames(): string;
    set classNames(value: string);
    get keyframesName(): string;
    set keyframesName(value: string);
    get hash(): string;
    get parent(): OnesyStyleRule | OnesyStyleSheet;
    get response(): IValuesVersion;
    get css(): string;
    get allOwnedCss(): string;
    get counter(): {
        className: number;
        keyframesName: number;
    };
    private makeRuleClassNameDefault;
    private makeRuleKeyframesNameDefault;
    updateValues(hash_?: boolean): void;
    private makeHash;
    private init;
    addProperty(prop: string, value: any, index?: number, unique?: boolean, add?: boolean): void;
    add(update?: boolean): boolean;
    updateProps(): void;
    update(value?: any): void;
    remove(): void;
    private addRuleToCss;
    addRuleRef(): void;
    makeSelector(): void;
    private makeClassName;
    private makeRuleClassName;
    private makeRuleKeyframesName;
    get rule(): CSSStyleRule;
    set rule(rule: CSSStyleRule);
    private get unique();
    private clear;
    static make(value: any, property: string, options?: IOptions): OnesyStyleRule;
}
export default OnesyStyleRule;
