/// <reference types="node" />
import { ICore } from 'modloader64_api/IModLoaderAPI';
import Vector3 from 'modloader64_api/math/Vector3';
import * as Z64API from '../../API/imports';
export declare const enum LinkState {
    UNKNOWN = 0,
    STANDING = 1,
    SWIMMING = 2,
    OCARINA = 3,
    BUSY = 4,
    LOADING_ZONE = 5,
    ENTERING_GROTTO = 6,
    FIRST_PERSON = 7,
    JUMPING = 8,
    CLIMBING_OUT_OF_WATER = 9,
    HANGING_FROM_LEDGE = 10,
    CHARGING_SPIN_ATTACK = 11,
    HOLDING_ACTOR = 12,
    GETTING_ITEM = 13,
    SHOOTING_BOW_OR_HOOKSHOT = 14,
    RIDING_EPONA = 15,
    DYING = 16,
    TAKING_DAMAGE = 17,
    FALLING = 18,
    VOIDING_OUT = 19,
    TALKING = 20,
    HOVERING = 21,
    Z_TARGETING = 22,
    CAMERA = 23
}
export declare const enum LinkState2 {
    UNKNOWN = 0,
    IDLE = 1,
    CRAWLSPACE = 2,
    MOVING_FORWARD = 3
}
export declare enum Sword {
    NONE = 0,
    KOKIRI_OOT = 1,
    MASTER = 2,
    GIANT_KNIFE = 3,
    BIGGORON = 4,
    KOKIRI_MM = 1,
    RAZOR = 2,
    GILDED = 3
}
export declare const enum Shield {
    NONE = 0,
    DEKU = 1,
    HYLIAN = 2,
    MIRROR_OOT = 3,
    HERO = 1,
    MIRROR_MM = 2
}
export declare const enum Ocarina {
    NONE = 0,
    FAIRY_OCARINA = 1,
    OCARINA_OF_TIME = 2,
    OCARINA_OF_TIME_MM = 1
}
export interface ISwords {
    kokiriSword: boolean;
    masterSword: boolean;
    giantKnife: boolean;
    biggoronSword: boolean;
    swordLevel: Sword;
}
export interface IShields {
    dekuShield: boolean;
    hylianShield: boolean;
    mirrorShield: boolean;
    shieldLevel: Shield;
}
export declare const enum Magic {
    NONE = 0,
    NORMAL = 1,
    EXTENDED = 2
}
export declare const enum MagicQuantities {
    NONE = 0,
    NORMAL = 48,
    EXTENDED = 96
}
export declare const enum AmmoUpgrade {
    NONE = 0,
    BASE = 1,
    UPGRADED = 2,
    MAX = 3
}
export declare enum Wallet {
    CHILD = 0,
    ADULT = 1,
    GIANT = 2,
    TYCOON = 3,
    ROYAL = 4
}
export declare const enum AgeOrForm {
    ADULT = 0,
    CHILD = 1,
    FD = 0,
    GORON = 1,
    ZORA = 2,
    DEKU = 3,
    HUMAN = 4
}
export declare const enum Mask {
    NONE = 0,
    OOT_KEATON = 1,
    OOT_SKULL = 2,
    OOT_SPOOKY = 3,
    OOT_BUNNY = 4,
    OOT_TRUTH = 5,
    MM_POSTMAN = 9,
    MM_ALL_NIGHT = 3,
    MM_BLAST = 18,
    MM_STONE = 16,
    MM_GREAT_FAIRY = 11,
    MM_DEKU = 24,
    MM_KEATON = 5,
    MM_BREMEN = 17,
    MM_BUNNY_HOOD = 4,
    MM_DON_GERO = 13,
    MM_OF_SCENTS = 19,
    MM_GORON = 22,
    MM_ROMANI = 7,
    MM_CIRCUS_LEADER = 8,
    MM_KAFEI = 2,
    MM_COUPLES = 10,
    MM_OF_TRUTH = 1,
    MM_ZORA = 23,
    MM_KAMERO = 14,
    MM_GIBDO = 12,
    MM_GARO = 6,
    MM_CAPTAIN = 15,
    MM_GIANT = 20,
    MM_FIERCE_DEITY = 21
}
export interface ILink extends Z64API.IActor {
    state: LinkState;
    state2: LinkState2;
    rawStateValue: number;
    tunic: Z64API.OoT.Tunic | any;
    shield: Shield;
    boots: Z64API.OoT.Boots | any;
    mask: Mask;
    anim_data: Buffer;
    current_sound_id: number;
    sword: Sword;
    get_anim_id(): number;
    get_anim_frame(): number;
    projected_position: Vector3;
    iframes: number;
}
export interface IGlobalContext {
    scene: number;
    room: number;
    framecount: number;
    scene_framecount: number;
    continue_state: boolean;
    liveSceneData_chests: Buffer;
    liveSceneData_clear: Buffer;
    liveSceneData_switch: Buffer;
    liveSceneData_temp: Buffer;
    liveSceneData_collectable: Buffer;
    getSaveDataForCurrentScene(): Buffer;
    writeSaveDataForCurrentScene(buf: Buffer): void;
    viewStruct: IViewStruct;
    fogDistance: number;
    fogColor: number;
    lastOrCurrentEntrance: number;
}
export interface IViewStruct {
    readonly VIEW: string;
    gfx_ctx_pointer: number;
    fov: number;
    near_clip: number;
    far_clip: number;
    position: Vector3;
    focus: Vector3;
    axis: Vector3;
}
export interface IOotHelper {
    isTitleScreen(): boolean;
    isSceneNumberValid(): boolean;
    isLinkEnteringLoadingZone(): boolean;
    isPaused(): boolean;
    isInterfaceShown(): boolean;
    Player_InBlockingCsMode(): boolean;
}
export interface IZ64Core extends ICore {
    link: Z64API.Z64.ILink;
    save: Z64API.OoT.ISaveContext | Z64API.MM.ISaveContext;
    helper: Z64API.OoT.IOotHelper | Z64API.MM.IMMHelper;
    global: Z64API.OoT.IGlobalContext | Z64API.MM.IGlobalContext;
    commandBuffer: Z64API.ICommandBuffer;
    actorManager: IActorManager;
    toggleMapSelectKeybind(): boolean;
}
export declare enum Z64Events {
    ON_SAVE_LOADED = "onSaveLoaded",
    ON_SCENE_CHANGE = "onSceneChange",
    ON_LOADING_ZONE = "onLoadingZone",
    ON_ACTOR_SPAWN = "onActorSpawn",
    ON_ACTOR_DESPAWN = "onActorDespawn",
    ON_ACTOR_ADDED_TO_CATEGORY = "onActorAddedToCategory",
    ON_ACTOR_REMOVED_FROM_CATEGORY = "onActorRemovedFromCategory",
    ON_ROOM_CHANGE = "onRoomChange",
    ON_ROOM_CHANGE_PRE = "onPreRoomChange",
    ON_AGE_CHANGE = "onAgeChange",
    ON_SAVE_FLAG_CHANGE = "onSaveFlagChange",
    ON_LOCAL_FLAG_CHANGE = "onLocalFlagChange",
    ON_DAY_TRANSITION = "onDayTransition",
    ON_NIGHT_TRANSITION = "onNightTransition",
    ON_HEALTH_CHANGE = "onHealthChange",
    ON_TUNIC_CHANGE = "onTunicChanged",
    ON_ACTOR_UPDATE = "onActorUpdate",
    ON_UNPAUSE = "onUnpause"
}
export interface IActorManager {
    createIActorFromPointer(pointer: number): Z64API.IActor;
    getActors(category: Z64API.ActorCategory): Z64API.IActor[];
}
export declare const NO_KEYS = 255;
export interface IKeyManager {
    getKeyCountForIndex(index: number): number;
    setKeyCountByIndex(index: number, count: number): void;
    getRawKeyBuffer(): Buffer;
}
export declare function UpgradeCountLookup(item: Z64API.OoT.InventoryItem | Z64API.MM.InventoryItem, level: AmmoUpgrade): number;
export interface IOvlPayloadResult {
    slot: number;
    spawn(params: number, rot: Vector3, pos: Vector3, address?: number): Promise<Z64API.IActor>;
    spawnActorRXYZ(params: number, rotX: number, rotY: number, rotZ: number, pos: Vector3, address?: number): Promise<Z64API.IActor>;
    spawnActorRXY_Z(params: number, rotXY: number, rotZ: number, pos: Vector3, address?: number): Promise<Z64API.IActor>;
}
export declare class SceneStruct {
    buf: Buffer;
    constructor(buf: Buffer);
    get chests(): Buffer;
    get switches(): Buffer;
    get room_clear(): Buffer;
    get collectible(): Buffer;
    get unused(): Buffer;
    get visited_rooms(): Buffer;
    get visited_floors(): Buffer;
}
export declare const enum SongNotes {
    NONE = 0,
    A_FLAT = 1,
    A_NOTE = 2,
    A_SHARP = 3,
    C_DOWN_FLAT = 4,
    C_DOWN_NOTE = 5,
    C_DOWN_SHARP = 6,
    C_RIGHT_FLAT = 8,
    C_RIGHT_NOTE = 9,
    C_RIGHT_SHARP = 10,
    C_LEFT_FLAT = 10,
    C_LEFT_NOTE = 11,
    C_LEFT_SHARP = 12,
    C_UP_FLAT = 13,
    C_UP_NOTE = 14,
    C_UP_SHARP = 15,
    SILENCE = 255
}
export declare const enum SongFlags {
    NONE = 0,
    FLATTENED_NOTE = 64,
    SHARPENED_NOTE = 128,
    CONTINUE_SILENCE = 192
}
export interface IScarecrowSongNote {
    note: SongNotes;
    duration: number;
    volume: number;
    vibrato: number;
    pitch: number;
    special: SongFlags;
}
export declare class ScarecrowSongNoteStruct {
    buf: Buffer;
    constructor(buf: Buffer);
    get note(): Buffer;
    get unused(): Buffer;
    get duration(): Buffer;
    get volume(): Buffer;
    get vibrato(): Buffer;
    get pitch(): Buffer;
    get special(): Buffer;
}
//# sourceMappingURL=Z64API.d.ts.map