import { Multiname } from "../abc/lazy/Multiname"; import { Scope } from "./Scope"; import { Bytecode } from "../abc/ops"; /** * MetaobjectProtocol interface. */ export interface IMetaobjectProtocol { axResolveMultiname(mn: Multiname): any; axHasProperty(mn: Multiname): boolean; axDeleteProperty(mn: Multiname): boolean; axCallProperty(mn: Multiname, argArray: any [], isLex: boolean): any; axCallSuper(mn: Multiname, scope: Scope, argArray: any []): any; axConstructProperty(mn: Multiname, args: any []): any; axHasPropertyInternal(mn: Multiname): boolean; axHasOwnProperty(mn: Multiname): boolean; axSetProperty(mn: Multiname, value: any, bc: Bytecode); axGetProperty(mn: Multiname): any; axGetSuper(mn: Multiname, scope: Scope): any; axSetSuper(mn: Multiname, scope: Scope, value: any); axNextNameIndex(index: number): any; axNextName(index: number): any; axNextValue(index: number): any; axEnumerableKeys: any []; axGetEnumerableKeys(): any []; axHasPublicProperty(nm: any): boolean; axSetPublicProperty(nm: any, value: any); axGetPublicProperty(nm: any): any; axCallPublicProperty(nm: any, argArray: any []): any; axDeletePublicProperty(nm: any): boolean; axSetNumericProperty(nm: number, value: any); axGetNumericProperty(nm: number): any; axGetSlot(i: number): any; axSetSlot(i: number, value: any); getPrototypeOf(): any; }