| import Model from './Model.js'; | 
| import * as componentUtil from '../util/component.js'; | 
| import { ExtendableConstructor, ClassManager } from '../util/clazz.js'; | 
| import { QueryReferringOpt } from '../util/model.js'; | 
| import GlobalModel from './Global.js'; | 
| import { ComponentOption, ComponentMainType, ComponentSubType, ComponentFullType, ComponentLayoutMode } from '../util/types.js'; | 
| declare class ComponentModel<Opt extends ComponentOption = ComponentOption> extends Model<Opt> { | 
|     /** | 
|      * @readonly | 
|      */ | 
|     type: ComponentFullType; | 
|     /** | 
|      * @readonly | 
|      */ | 
|     id: string; | 
|     /** | 
|      * Because simplified concept is probably better, series.name (or component.name) | 
|      * has been having too many resposibilities: | 
|      * (1) Generating id (which requires name in option should not be modified). | 
|      * (2) As an index to mapping series when merging option or calling API (a name | 
|      * can refer to more then one components, which is convinient is some case). | 
|      * (3) Display. | 
|      * @readOnly But injected | 
|      */ | 
|     name: string; | 
|     /** | 
|      * @readOnly | 
|      */ | 
|     mainType: ComponentMainType; | 
|     /** | 
|      * @readOnly | 
|      */ | 
|     subType: ComponentSubType; | 
|     /** | 
|      * @readOnly | 
|      */ | 
|     componentIndex: number; | 
|     /** | 
|      * @readOnly | 
|      */ | 
|     protected defaultOption: ComponentOption; | 
|     /** | 
|      * @readOnly | 
|      */ | 
|     ecModel: GlobalModel; | 
|     /** | 
|      * @readOnly | 
|      */ | 
|     static dependencies: string[]; | 
|     readonly uid: string; | 
|     /** | 
|      * Support merge layout params. | 
|      * Only support 'box' now (left/right/top/bottom/width/height). | 
|      */ | 
|     static layoutMode: ComponentLayoutMode | ComponentLayoutMode['type']; | 
|     /** | 
|      * Prevent from auto set z, zlevel, z2 by the framework. | 
|      */ | 
|     preventAutoZ: boolean; | 
|     __viewId: string; | 
|     __requireNewView: boolean; | 
|     static protoInitialize: void; | 
|     constructor(option: Opt, parentModel: Model, ecModel: GlobalModel); | 
|     init(option: Opt, parentModel: Model, ecModel: GlobalModel): void; | 
|     mergeDefaultAndTheme(option: Opt, ecModel: GlobalModel): void; | 
|     mergeOption(option: Opt, ecModel: GlobalModel): void; | 
|     /** | 
|      * Called immediately after `init` or `mergeOption` of this instance called. | 
|      */ | 
|     optionUpdated(newCptOption: Opt, isInit: boolean): void; | 
|     /** | 
|      * [How to declare defaultOption]: | 
|      * | 
|      * (A) If using class declaration in typescript (since echarts 5): | 
|      * ```ts | 
|      * import {ComponentOption} from '../model/option.js'; | 
|      * export interface XxxOption extends ComponentOption { | 
|      *     aaa: number | 
|      * } | 
|      * export class XxxModel extends Component { | 
|      *     static type = 'xxx'; | 
|      *     static defaultOption: XxxOption = { | 
|      *         aaa: 123 | 
|      *     } | 
|      * } | 
|      * Component.registerClass(XxxModel); | 
|      * ``` | 
|      * ```ts | 
|      * import {inheritDefaultOption} from '../util/component.js'; | 
|      * import {XxxModel, XxxOption} from './XxxModel.js'; | 
|      * export interface XxxSubOption extends XxxOption { | 
|      *     bbb: number | 
|      * } | 
|      * class XxxSubModel extends XxxModel { | 
|      *     static defaultOption: XxxSubOption = inheritDefaultOption(XxxModel.defaultOption, { | 
|      *         bbb: 456 | 
|      *     }) | 
|      *     fn() { | 
|      *         let opt = this.getDefaultOption(); | 
|      *         // opt is {aaa: 123, bbb: 456} | 
|      *     } | 
|      * } | 
|      * ``` | 
|      * | 
|      * (B) If using class extend (previous approach in echarts 3 & 4): | 
|      * ```js | 
|      * let XxxComponent = Component.extend({ | 
|      *     defaultOption: { | 
|      *         xx: 123 | 
|      *     } | 
|      * }) | 
|      * ``` | 
|      * ```js | 
|      * let XxxSubComponent = XxxComponent.extend({ | 
|      *     defaultOption: { | 
|      *         yy: 456 | 
|      *     }, | 
|      *     fn: function () { | 
|      *         let opt = this.getDefaultOption(); | 
|      *         // opt is {xx: 123, yy: 456} | 
|      *     } | 
|      * }) | 
|      * ``` | 
|      */ | 
|     getDefaultOption(): Opt; | 
|     /** | 
|      * Notice: always force to input param `useDefault` in case that forget to consider it. | 
|      * The same behavior as `modelUtil.parseFinder`. | 
|      * | 
|      * @param useDefault In many cases like series refer axis and axis refer grid, | 
|      *        If axis index / axis id not specified, use the first target as default. | 
|      *        In other cases like dataZoom refer axis, if not specified, measn no refer. | 
|      */ | 
|     getReferringComponents(mainType: ComponentMainType, opt: QueryReferringOpt): { | 
|         models: ComponentModel[]; | 
|         specified: boolean; | 
|     }; | 
|     getBoxLayoutParams(): { | 
|         left: string | number; | 
|         top: string | number; | 
|         right: string | number; | 
|         bottom: string | number; | 
|         width: string | number; | 
|         height: string | number; | 
|     }; | 
|     /** | 
|      * Get key for zlevel. | 
|      * If developers don't configure zlevel. We will assign zlevel to series based on the key. | 
|      * For example, lines with trail effect and progressive series will in an individual zlevel. | 
|      */ | 
|     getZLevelKey(): string; | 
|     setZLevel(zlevel: number): void; | 
|     static registerClass: ClassManager['registerClass']; | 
|     static hasClass: ClassManager['hasClass']; | 
|     static registerSubTypeDefaulter: componentUtil.SubTypeDefaulterManager['registerSubTypeDefaulter']; | 
| } | 
| export declare type ComponentModelConstructor = typeof ComponentModel & ClassManager & componentUtil.SubTypeDefaulterManager & ExtendableConstructor & componentUtil.TopologicalTravelable<object>; | 
| export default ComponentModel; |