/// <reference types="node" />
import { IModLoaderAPI } from "modloader64_api/IModLoaderAPI";
import Vector3 from "modloader64_api/math/Vector3";
import { Heap } from "modloader64_api/heap";
import { Z64LibSupportedGames } from "@Z64Lib/API/Utilities/Z64LibSupportedGames";
import { Command, IActor, ICommandBuffer } from "@Z64Lib/API/imports";
import { IInjectedAssembly } from "@Z64Lib/API/Common/IInjectedAssembly";
import { IZ64Core } from "@Z64Lib/API/Common/Z64API";
export declare enum CommandBuffer_CommandType {
    NONE = 0,
    ACTORSPAWN = 1,
    ACTORADDREMCAT = 2,
    RELOCATE = 3,
    UPDATEBUTTON = 4,
    PLAYSOUND = 5,
    WARP = 6,
    MOVEPLAYERTOADDRESS = 7,
    ARBITRARYFUNCTIONCALL = 8,
    PVPDAMAGE = 9,
    MALLOCFREE = 10,
    OBJECTLOAD = 11,
    SPAWN_NO_EVENT = 12
}
export declare enum CommandBuffer_CommandEventType {
    NONE = 0,
    INIT = 1,
    SPAWN = 2,
    SPAWNENTRY = 3,
    SPAWNTRANSITION = 4,
    ADDCAT = 5,
    REMCAT = 6,
    DESTROY = 7,
    UPDATE = 8,
    OBJECTSPAWN = 9,
    ERROR_FILLED = 10
}
export declare const COMMAND_MAX = 256;
export declare const COMMANDEVENT_MAX = 1024;
export declare const COMMAND_PARAM_SIZEOF = 32;
export declare const COMMAND_SIZEOF: number;
export declare const COMMAND_OFFSET = 4;
export declare const COMMAND_RETURN_DATA_SIZEOF = 4;
export declare const COMMAND_RETURN_SIZEOF: number;
export declare const COMMAND_RETURN_OFFSET: number;
export declare const COMMAND_EVENT_SIZEOF = 12;
export declare const COMMAND_EVENT_OFFSET: number;
export declare const COMMANDBUFFER_SIZEOF = 25604;
export declare const JRRA: Buffer;
export interface IPvpContext {
    damageQueue: number;
    damageType: number;
    damageAngle: number;
    damageFlags: number;
    iframes: number;
    enabled: number;
}
export declare class CommandBuffer implements ICommandBuffer {
    ModLoader: IModLoaderAPI;
    core: IZ64Core;
    cmdbuf: number;
    uuid: number;
    constructor(ModLoader: IModLoaderAPI, revision: number, game: Z64LibSupportedGames, core: IZ64Core);
    runCommand(command: Command, param: number, callback?: Function): void;
    spawnActor(actorId: number, params: number, rot: Vector3, pos: Vector3, address?: number): Promise<IActor>;
    spawnActorQuietly(actorId: number, params: number, rot: Vector3, pos: Vector3, address?: number): Promise<IActor>;
    spawnActorRXYZ(actorId: number, params: number, rotX: number, rotY: number, rotZ: number, pos: Vector3, address?: number): Promise<IActor>;
    spawnActorRXY_Z(actorId: number, params: number, rotXY: number, rotZ: number, pos: Vector3, address?: number): Promise<IActor>;
    relocateOverlay(allocatedVRamAddress: number, overlayInfoPointer: number, vRamAddress: number): Promise<void>;
    updateButton(button: number): void;
    playSound(sfxId: number, a1: Vector3, a2: number, a3: number, a4: number, a5: number): void;
    runWarp(entranceIndex: number, cutsceneIndex: number, age?: number, transition?: number): Promise<boolean>;
    movePlayerActorToAddress(address: number): Promise<boolean>;
    arbitraryFunctionCall(functionAddress: number, argsPointer: number, argsCount: number): Promise<Buffer>;
    PvpDamage(context: IPvpContext, invokingActorPointer: number): void;
    Zelda_MallocFree(malloc: number, data: number): Promise<number>;
    ObjectLoad(objectId: number): Promise<number>;
    onTick(): void;
}
export declare class CommandBuffer_Factory {
    static cmdbuf: number;
    static Inject(ModLoader: IModLoaderAPI, core: IZ64Core, parent: CommandBuffer, heap: Heap, revision: number, inject: IInjectedAssembly): number;
}
//# sourceMappingURL=CommandBuffer.d.ts.map