import { TypedEvent } from "@node-projects/base-custom-webcomponent"; import { IDesignItem } from '../../item/IDesignItem.js'; import { IDocumentStylesheet, IStyleDeclaration, IStyleRule, IStylesheet, IStylesheetService } from './IStylesheetService.js'; import { InstanceServiceContainer } from "../InstanceServiceContainer.js"; import { IDesignerCanvas } from "../../widgets/designerView/IDesignerCanvas.js"; import { Specificity } from "./SpecificityCalculator.js"; export declare abstract class AbstractStylesheetService implements IStylesheetService { protected _stylesheets: Map; protected _documentStylesheets: Map; protected _allStylesheets: Map; protected _instanceServiceContainer: InstanceServiceContainer; constructor(designerCanvas: IDesignerCanvas | InstanceServiceContainer); abstract getRules(rule: string): IStyleRule[]; abstract addRule(stylesheet: IStylesheet, rule: string): Promise; setStylesheets(stylesheets: IStylesheet[]): Promise; setDocumentStylesheets(stylesheets: IDocumentStylesheet[]): Promise; internalSetStylesheets(stylesheets: IStylesheet[], targetMap: Map): Promise; protected internalReparseStylesheet(name: string): Promise; protected abstract internalParse(style: string): Promise; getStylesheets(): IStylesheet[]; abstract getAppliedRules(designItem: IDesignItem): IStyleRule[]; abstract getDeclarations(designItem: IDesignItem, styleName: string): IStyleDeclaration[]; getDeclarationsSortedBySpecificity(designItem: IDesignItem, styleName: string): IStyleDeclaration[]; updateDeclarationValue(declaration: IStyleDeclaration, value: string, important: boolean): void; abstract insertDeclarationIntoRule(rule: IStyleRule, property: string, value: string, important: boolean): boolean; abstract removeDeclarationFromRule(rule: IStyleRule, property: string): boolean; abstract updateCompleteStylesheet(name: string, newStyle: string): any; abstract updateCompleteStylesheetWithoutUndo(name: string, newStyle: string): any; abstract updateDeclarationValueWithoutUndo(declaration: IStyleDeclaration, value: string, important: boolean): any; stylesheetChanged: TypedEvent<{ name: string; newStyle: string; oldStyle: string; changeSource: "extern" | "styleupdate" | "undo"; }>; stylesheetsChanged: TypedEvent; static patchStylesheetSelectorForDesigner(text: string): string; protected elementMatchesASelector(designItem: IDesignItem, selectors: string[]): false | Specificity; }