export declare function assert(condition: any, message?: any): void;
export interface IDataDecoder {
    onData: (data: Uint8Array) => void;
    onError: (e: any) => void;
    push(data: Uint8Array): any;
    close(): any;
}
export interface TypedArray {
    buffer: ArrayBuffer;
    length: number;
    set: (array: TypedArray, offset?: number) => void;
    subarray: (begin: number, end?: number) => TypedArray;
}
export declare function memCopy(destination: any, source: any, doffset?: number, soffset?: number, length?: number): void;
/**
 * Faster release version of bounds.
 */
export declare class Bounds {
    xMin: number;
    yMin: number;
    xMax: number;
    yMax: number;
    constructor(xMin: number, yMin: number, xMax: number, yMax: number);
    static FromUntyped(source: any): Bounds;
    static FromRectangle(source: any): Bounds;
    setElements(xMin: number, yMin: number, xMax: number, yMax: number): void;
    copyFrom(source: Bounds): void;
    contains(x: number, y: number): boolean;
    unionInPlace(other: Bounds): void;
    extendByPoint(x: number, y: number): void;
    extendByX(x: number): void;
    extendByY(y: number): void;
    intersects(toIntersect: Bounds): boolean;
    isEmpty(): boolean;
    get width(): number;
    set width(value: number);
    get height(): number;
    set height(value: number);
    getBaseWidth(angle: number): number;
    getBaseHeight(angle: number): number;
    setEmpty(): void;
    /**
   * Set all fields to the sentinel value 0x8000000.
   *
   * This is what Flash uses to indicate uninitialized bounds. Important for bounds calculation
   * in `Graphics` instances, which start out with empty bounds but must not just extend them
   * from an 0,0 origin.
   */
    setToSentinels(): void;
    clone(): Bounds;
    toString(): string;
}
export declare enum ImageType {
    None = 0,
    /**
     * Premultiplied ARGB (byte-order).
     */
    PremultipliedAlphaARGB = 1,
    /**
     * Unpremultiplied ARGB (byte-order).
     */
    StraightAlphaARGB = 2,
    /**
     * Unpremultiplied RGBA (byte-order), this is what putImageData expects.
     */
    StraightAlphaRGBA = 3,
    JPEG = 4,
    PNG = 5,
    GIF = 6
}
export declare function clamp(value: number, min: number, max: number): number;
export declare function roundToMultipleOfFour(x: number): number;
export declare function isObject(value: any): boolean;
export declare function isNullOrUndefined(value: any): boolean;
export declare function utf8decode(str: string): Uint8Array;
export declare function utf8encode(buffer: Uint8Array): string;
/**
 * Simple pool allocator for ArrayBuffers. This reduces memory usage in data structures
 * that resize buffers.
 */
export declare class ArrayBufferPool {
    private _list;
    private _maxSize;
    private static _enabled;
    /**
     * Creates a pool that manages a pool of a |maxSize| number of array buffers.
     */
    constructor(maxSize?: number);
    /**
     * Creates or reuses an existing array buffer that is at least the
     * specified |length|.
     */
    acquire(length: number): ArrayBuffer;
    /**
     * Releases an array buffer that is no longer needed back to the pool.
     */
    release(buffer: ArrayBuffer): void;
    /**
     * Resizes a Uint8Array to have the given length.
     */
    ensureUint8ArrayLength(array: Uint8Array, length: number): Uint8Array;
    /**
     * Resizes a Float64Array to have the given length.
     */
    ensureFloat64ArrayLength(array: Float64Array, length: number): Float64Array;
}
/**
 * Makes sure that a typed array has the requested capacity. If required, it creates a new
 * instance of the array's class with a power-of-two capacity at least as large as required.
 */
export declare function ensureTypedArrayCapacity(array: any, capacity: number): any;
export declare module IntegerUtilities {
    var i8: Int8Array;
    var u8: Uint8Array;
    var i32: Int32Array;
    var f32: Float32Array;
    var f64: Float64Array;
    var nativeLittleEndian: boolean;
    /**
     * Convert a float into 32 bits.
     */
    function floatToInt32(v: number): number;
    /**
     * Convert 32 bits into a float.
     */
    function int32ToFloat(i: number): number;
    /**
     * Swap the bytes of a 16 bit number.
     */
    function swap16(i: number): number;
    /**
     * Swap the bytes of a 32 bit number.
     */
    function swap32(i: number): number;
    /**
     * Converts a number to s8.u8 fixed point representation.
     */
    function toS8U8(v: number): number;
    /**
     * Converts a number from s8.u8 fixed point representation.
     */
    function fromS8U8(i: number): number;
    /**
     * Round trips a number through s8.u8 conversion.
     */
    function clampS8U8(v: number): number;
    /**
     * Converts a number to signed 16 bits.
     */
    function toS16(v: number): number;
    function bitCount(i: number): number;
    function ones(i: number): number;
    function trailingZeros(i: number): number;
    function getFlags(i: number, flags: string[]): string;
    function isPowerOfTwo(x: number): boolean;
    function roundToMultipleOfFour(x: number): number;
    function nearestPowerOfTwo(x: number): number;
    function roundToMultipleOfPowerOfTwo(i: number, powerOfTwo: number): number;
    function toHEX(i: number): string;
    /**
     * Polyfill imul.
     */
    /**
     * Polyfill clz32.
     */
}
export declare class ABCBlock {
    name: string;
    flags: number;
    data: Uint8Array;
}
export declare class EncryptedBlock {
    data: Uint8Array;
    size: ui32;
    bytePos: ui32;
    rawTagId: ui8;
    constructor(data: Uint8Array, size: ui32, bytePos: ui32, rawTagId?: ui8);
}
export declare class ActionBlock {
    actionsData: Uint8Array;
    precedence: number;
    encryptedData?: EncryptedBlock;
}
export declare class InitActionBlock {
    spriteId: number;
    actionsData: Uint8Array;
    encryptedData?: EncryptedBlock;
}
export declare class SymbolExport {
    symbolId: number;
    className: string;
    constructor(symbolId: number, className: string);
}
export declare class UnparsedTag {
    tagCode: number;
    byteOffset: number;
    byteLength: number;
    constructor(tagCode: number, byteOffset: number, byteLength: number);
}
export declare class DictionaryEntry extends UnparsedTag {
    id: number;
    constructor(id: number, tagCode: number, byteOffset: number, byteLength: number);
}
export declare class EagerlyParsedDictionaryEntry extends DictionaryEntry {
    type: string;
    definition: Object;
    ready: boolean;
    constructor(id: number, unparsed: UnparsedTag, type: string, definition: any);
}
/**
 * Similar to |toString| but returns |null| for |null| or |undefined| instead
 * of "null" or "undefined".
 */
export declare function axCoerceString(x: any): string;
export declare var Errors: {
    /**
     * AVM2 Error Codes
     */
    NotImplementedError: {
        code: number;
        message: string;
    };
    InvalidPrecisionError: {
        code: number;
        message: string;
    };
    InvalidRadixError: {
        code: number;
        message: string;
    };
    InvokeOnIncompatibleObjectError: {
        code: number;
        message: string;
    };
    ArrayIndexNotIntegerError: {
        code: number;
        message: string;
    };
    CallOfNonFunctionError: {
        code: number;
        message: string;
    };
    ConstructOfNonFunctionError: {
        code: number;
        message: string;
    };
    ConvertNullToObjectError: {
        code: number;
        message: string;
    };
    ConvertUndefinedToObjectError: {
        code: number;
        message: string;
    };
    ClassNotFoundError: {
        code: number;
        message: string;
    };
    DescendentsError: {
        code: number;
        message: string;
    };
    StackOverflowError: {
        code: number;
        message: string;
    };
    CpoolIndexRangeError: {
        code: number;
        message: string;
    };
    CpoolEntryWrongTypeError: {
        code: number;
        message: string;
    };
    CheckTypeFailedError: {
        code: number;
        message: string;
    };
    CannotAssignToMethodError: {
        code: number;
        message: string;
    };
    CantUseInstanceofOnNonObjectError: {
        code: number;
        message: string;
    };
    IsTypeMustBeClassError: {
        code: number;
        message: string;
    };
    InvalidMagicError: {
        code: number;
        message: string;
    };
    UnsupportedTraitsKindError: {
        code: number;
        message: string;
    };
    PrototypeTypeError: {
        code: number;
        message: string;
    };
    ConvertToPrimitiveError: {
        code: number;
        message: string;
    };
    InvalidURIError: {
        code: number;
        message: string;
    };
    WriteSealedError: {
        code: number;
        message: string;
    };
    WrongArgumentCountError: {
        code: number;
        message: string;
    };
    UndefinedVarError: {
        code: number;
        message: string;
    };
    ReadSealedError: {
        code: number;
        message: string;
    };
    ConstWriteError: {
        code: number;
        message: string;
    };
    XMLPrefixNotBound: {
        code: number;
        message: string;
    };
    XMLUnterminatedElementTag: {
        code: number;
        message: string;
    };
    XMLOnlyWorksWithOneItemLists: {
        code: number;
        message: string;
    };
    XMLAssignmentToIndexedXMLNotAllowed: {
        code: number;
        message: string;
    };
    XMLMarkupMustBeWellFormed: {
        code: number;
        message: string;
    };
    XMLAssigmentOneItemLists: {
        code: number;
        message: string;
    };
    XMLMalformedElement: {
        code: number;
        message: string;
    };
    XMLUnterminatedCData: {
        code: number;
        message: string;
    };
    XMLUnterminatedXMLDecl: {
        code: number;
        message: string;
    };
    XMLUnterminatedDocTypeDecl: {
        code: number;
        message: string;
    };
    XMLUnterminatedComment: {
        code: number;
        message: string;
    };
    XMLUnterminatedElement: {
        code: number;
        message: string;
    };
    XMLNamespaceWithPrefixAndNoURI: {
        code: number;
        message: string;
    };
    RegExpFlagsArgumentError: {
        code: number;
        message: string;
    };
    InvalidBaseClassError: {
        code: number;
        message: string;
    };
    XMLInvalidName: {
        code: number;
        message: string;
    };
    XMLIllegalCyclicalLoop: {
        code: number;
        message: string;
    };
    FilterError: {
        code: number;
        message: string;
    };
    OutOfRangeError: {
        code: number;
        message: string;
    };
    VectorFixedError: {
        code: number;
        message: string;
    };
    TypeAppOfNonParamType: {
        code: number;
        message: string;
    };
    WrongTypeArgCountError: {
        code: number;
        message: string;
    };
    JSONCyclicStructure: {
        code: number;
        message: string;
    };
    JSONInvalidReplacer: {
        code: number;
        message: string;
    };
    JSONInvalidParseInput: {
        code: number;
        message: string;
    };
    InvalidRangeError: {
        code: number;
        message: string;
    };
    NullArgumentError: {
        code: number;
        message: string;
    };
    InvalidArgumentError: {
        code: number;
        message: string;
    };
    ArrayFilterNonNullObjectError: {
        code: number;
        message: string;
    };
    InvalidParamError: {
        code: number;
        message: string;
    };
    ParamRangeError: {
        code: number;
        message: string;
    };
    NullPointerError: {
        code: number;
        message: string;
    };
    InvalidEnumError: {
        code: number;
        message: string;
    };
    CantInstantiateError: {
        code: number;
        message: string;
    };
    InvalidBitmapData: {
        code: number;
        message: string;
    };
    EOFError: {
        code: number;
        message: string;
        fqn: string;
    };
    CompressedDataError: {
        code: number;
        message: string;
        fqn: string;
    };
    EmptyStringError: {
        code: number;
        message: string;
    };
    ProxyGetPropertyError: {
        code: number;
        message: string;
    };
    ProxySetPropertyError: {
        code: number;
        message: string;
    };
    ProxyCallPropertyError: {
        code: number;
        message: string;
    };
    ProxyHasPropertyError: {
        code: number;
        message: string;
    };
    ProxyDeletePropertyError: {
        code: number;
        message: string;
    };
    ProxyGetDescendantsError: {
        code: number;
        message: string;
    };
    ProxyNextNameIndexError: {
        code: number;
        message: string;
    };
    ProxyNextNameError: {
        code: number;
        message: string;
    };
    ProxyNextValueError: {
        code: number;
        message: string;
    };
    /**
     * Player Error Codes
     */
    TooFewArgumentsError: {
        code: number;
        message: string;
    };
    ParamTypeError: {
        code: number;
        message: string;
    };
    SocketConnectError: {
        code: number;
        message: string;
    };
    CantAddSelfError: {
        code: number;
        message: string;
    };
    NotAChildError: {
        code: number;
        message: string;
    };
    UnhandledError: {
        code: number;
        message: string;
    };
    AllowDomainArgumentError: {
        code: number;
        message: string;
    };
    DelayRangeError: {
        code: number;
        message: string;
    };
    ExternalInterfaceNotAvailableError: {
        code: number;
        message: string;
    };
    InvalidLoaderMethodError: {
        code: number;
        message: string;
    };
    InvalidStageMethodError: {
        code: number;
        message: string;
    };
    TimelineObjectNameSealedError: {
        code: number;
        message: string;
    };
    AlreadyConnectedError: {
        code: number;
        message: string;
    };
    CloseNotConnectedError: {
        code: number;
        message: string;
    };
    ArgumentSizeError: {
        code: number;
        message: string;
    };
    AsyncError: {
        code: number;
        message: string;
    };
    LoadingObjectNotSWFError: {
        code: number;
        message: string;
    };
    LoadingObjectNotInitializedError: {
        code: number;
        message: string;
    };
    DecodeParamError: {
        code: number;
        message: string;
    };
    SceneNotFoundError: {
        code: number;
        message: string;
    };
    FrameLabelNotFoundError: {
        code: number;
        message: string;
    };
    InvalidLoaderInfoMethodError: {
        code: number;
        message: string;
    };
    SecuritySwfNotAllowedError: {
        code: number;
        message: string;
    };
    UnknownFileTypeError: {
        code: number;
        message: string;
    };
    CantAddParentError: {
        code: number;
        message: string;
    };
    Matrix3DRefCannontBeShared: {
        code: number;
        message: string;
    };
    ObjectWithStringsParamError: {
        code: number;
        message: string;
    };
    AllowCodeImportError: {
        code: number;
        message: string;
    };
    PermissionDenied: {
        code: number;
        message: string;
    };
    InternalErrorIV: {
        code: number;
        message: string;
    };
};
//# sourceMappingURL=utilities.d.ts.map