import { AXApplicationDomain } from '../../run/AXApplicationDomain';
import { Namespace } from './Namespace';
import { Multiname } from './Multiname';
import { MetadataInfo } from './MetadataInfo';
import { MethodInfo } from './MethodInfo';
import { MethodBodyInfo } from './MethodBodyInfo';
import { ClassInfo } from './ClassInfo';
import { ScriptInfo } from './ScriptInfo';
import { InstanceInfo } from './InstanceInfo';
import { CONSTANT } from './CONSTANT';
import { IndentingWriter } from '@awayfl/swf-loader';
export declare class ABCFile {
    private _buffer;
    ints: Int32Array;
    uints: Uint32Array;
    doubles: Float64Array;
    /**
     * Environment this ABC is loaded into.
     * In the shell, this is just a wrapper around an applicationDomain, but in the
     * SWF player, it's a flash.display.LoaderInfo object.
     */
    env: {
        app: AXApplicationDomain;
        url: string;
    };
    get applicationDomain(): AXApplicationDomain;
    private _stream;
    private _strings;
    private _namespaces;
    private _namespaceSets;
    private _multinames;
    private _deferredMultinames;
    private _metadata;
    private _methods;
    private _methodBodies;
    classes: ClassInfo[];
    scripts: ScriptInfo[];
    instances: InstanceInfo[];
    constructor(env: {
        app: AXApplicationDomain;
        url: string;
    }, _buffer: Uint8Array);
    private _parseNumericConstants;
    private _parseStringConstants;
    private _parseNamespaces;
    private _parseNamespaceSets;
    private _parseMultinames;
    private _parseMultiname;
    private _checkMagic;
    /**
     * String duplicates exist in practice but are extremely rare.
     */
    private _checkForDuplicateStrings;
    /**
     * Returns the string at the specified index in the string table.
     */
    getString(i: number): string;
    /**
     * Returns the multiname at the specified index in the multiname table.
     */
    getMultiname(i: number): Multiname;
    /**
     * Returns the namespace at the specified index in the namespace table.
     */
    getNamespace(i: number): Namespace;
    /**
     * Returns the namespace set at the specified index in the namespace set table.
     */
    getNamespaceSet(i: number): Namespace[];
    private _parseMethodInfos;
    private _parseMethodInfo;
    /**
     * Returns the method info at the specified index in the method info table.
     */
    getMethodInfo(i: number): MethodInfo;
    getMethodBodyInfo(i: number): MethodBodyInfo;
    private _parseMetaData;
    getMetadataInfo(i: number): MetadataInfo;
    private _parseInstanceAndClassInfos;
    private _parseInstanceInfo;
    private _parseTraits;
    private _parseTrait;
    private _parseClassInfos;
    private _parseClassInfo;
    private _parseScriptInfos;
    private _parseScriptInfo;
    private _parseMethodBodyInfos;
    private _parseException;
    getConstant(kind: CONSTANT, i: number): any;
    trace(writer: IndentingWriter): void;
}
//# sourceMappingURL=ABCFile.d.ts.map