import { IMetaobjectProtocol } from '../run/IMetaobjectProtocol';
import { RuntimeTraits } from '../abc/lazy/RuntimeTraits';
import { ClassInfo } from '../abc/lazy/ClassInfo';
import { Multiname } from '../abc/lazy/Multiname';
import { AXSecurityDomain } from '../run/AXSecurityDomain';
import { Scope } from '../run/Scope';
import { AXFunction } from '../run/AXFunction';
import { Bytecode } from '../abc/ops';
export declare class ASObject implements IMetaobjectProtocol {
    traits: RuntimeTraits;
    sec: AXSecurityDomain;
    static forceNativeConstructor?: boolean;
    static forceNativeMethods?: boolean;
    static traits: RuntimeTraits;
    static dPrototype: ASObject;
    static tPrototype: ASObject;
    protected static _methodClosureCache: any;
    static classNatives: Object[];
    static instanceNatives: Object[];
    static sec: AXSecurityDomain;
    static classSymbols: any;
    static instanceSymbols: any;
    static classInfo: ClassInfo;
    static axResolveMultiname: (mn: Multiname) => any;
    static axHasProperty: (mn: Multiname) => boolean;
    static axDeleteProperty: (mn: Multiname) => boolean;
    static axCallProperty: (mn: Multiname, argArray: any[], isLex: boolean) => any;
    static axCallSuper: (mn: Multiname, scope: Scope, argArray: any[]) => any;
    static axConstructProperty: (mn: Multiname, args: any[]) => any;
    static axHasPropertyInternal: (mn: Multiname) => boolean;
    static axHasOwnProperty: (mn: Multiname) => boolean;
    static axSetProperty: (mn: Multiname, value: any, bc: Bytecode) => void;
    static axInitProperty: (mn: Multiname, value: any) => void;
    static axGetProperty: (mn: Multiname) => any;
    static axGetMethod: (name: string) => AXFunction;
    static axGetSuper: (mn: Multiname, scope: Scope) => any;
    static axSetSuper: (mn: Multiname, scope: Scope, value: any) => void;
    static axEnumerableKeys: any[];
    static axGetEnumerableKeys: () => any[];
    static axHasPublicProperty: (nm: any) => boolean;
    static axSetPublicProperty: (nm: any, value: any) => void;
    static axGetPublicProperty: (nm: any) => any;
    static axCallPublicProperty: (nm: any, argArray: any[]) => any;
    static axDeletePublicProperty: (nm: any) => boolean;
    static axSetNumericProperty: (nm: number, value: any) => void;
    static axGetNumericProperty: (nm: number) => any;
    static axCoerce: (v: any) => any;
    static axConstruct: (argArray?: any[]) => any;
    static axNextNameIndex: (index: number) => number;
    static axNextName: (index: number) => any;
    static axNextValue: (index: number) => any;
    static axGetSlot: (i: number) => any;
    static axSetSlot: (i: number, value: any) => void;
    static axIsType: (value: any) => boolean;
    static getPrototypeOf: () => boolean;
    static native_isPrototypeOf: (nm: string) => boolean;
    static native_hasOwnProperty: (nm: string) => boolean;
    static native_propertyIsEnumerable: (nm: string) => boolean;
    static native_setPropertyIsEnumerable: (nm: string, enumerable?: boolean) => boolean;
    static classInitializer(): void;
    static _init(): void;
    static init(): void;
    static axClass: any;
    static axClassName: string;
    axClass: any;
    axClassName: string;
    getPrototypeOf: () => any;
    native_isPrototypeOf(v: any): boolean;
    native_hasOwnProperty(nm: string): boolean;
    native_propertyIsEnumerable(nm: string): boolean;
    native_setPropertyIsEnumerable(nm: string, enumerable?: boolean): void;
    axResolveMultiname(mn: Multiname): any;
    axHasProperty(mn: Multiname): boolean;
    axHasPublicProperty(nm: any): boolean;
    axSetProperty(mn: Multiname, value: any, bc: Bytecode): void;
    axGetProperty(mn: Multiname): any;
    protected _methodClosureCache: any;
    axGetMethod(name: string): AXFunction;
    axGetSuper(mn: Multiname, scope: Scope): any;
    axSetSuper(mn: Multiname, scope: Scope, value: any): void;
    axDeleteProperty(mn: Multiname): any;
    axCallProperty(mn: Multiname, args: any[], isLex: boolean): any;
    axCallSuper(mn: Multiname, scope: Scope, args: any[]): any;
    axConstructProperty(mn: Multiname, args: any[]): any;
    axHasPropertyInternal(mn: Multiname): boolean;
    axHasOwnProperty(mn: Multiname): boolean;
    axGetEnumerableKeys(): any[];
    axGetPublicProperty(nm: any): any;
    axSetPublicProperty(nm: any, value: any): void;
    axCallPublicProperty(nm: any, argArray: any[]): any;
    axDeletePublicProperty(nm: any): boolean;
    axGetSlot(i: number): any;
    axSetSlot(i: number, value: any): void;
    /**
     * Gets the next name index of an object. Index |zero| is actually not an
     * index, but rather an indicator to start the iteration.
     */
    axNextNameIndex(index: number): number;
    /**
     * Gets the nextName after the specified |index|, which you would expect to
     * be index + 1, but it's actually index - 1;
     */
    axNextName(index: number): any;
    axNextValue(index: number): any;
    axSetNumericProperty(nm: number, value: any): void;
    axGetNumericProperty(nm: number): any;
    axEnumerableKeys: any[];
}
//# sourceMappingURL=ASObject.d.ts.map