/// <reference types="node" />
export declare function JAL_ENCODE(data: number): number;
export declare function J_ENCODE(data: number): number;
export declare function JAL_DECODE(data: Buffer): number;
export declare function LUIORI_ENCODE(data: Buffer, immediate: number): number;
export declare function LUIORI_DECODE(data: Buffer): number;
export declare enum OPCODE_DEFAULT {
    SPEC = 0,
    BCOND = 1,
    J = 2,
    JAL = 3,
    BEQ = 4,
    BNE = 5,
    BLEZ = 6,
    BGTZ = 7,
    ADDI = 8,
    ADDIU = 9,
    SLTI = 10,
    SLTIU = 11,
    ANDI = 12,
    ORI = 13,
    XORI = 14,
    LUI = 15,
    COP0 = 16,
    COP1 = 17,
    COP2 = 18,
    COP3 = 19,
    BEQL = 20,
    BNEL = 21,
    BLEZL = 22,
    BGTZL = 23,
    DADDI = 24,
    DADDIU = 25,
    LDL = 26,
    LDR = 27,
    OP34 = 28,
    OP35 = 29,
    OP36 = 30,
    OP37 = 31,
    LB = 32,
    LH = 33,
    LWL = 34,
    LW = 35,
    LBU = 36,
    LHU = 37,
    LWR = 38,
    LWU = 39,
    SB = 40,
    SH = 41,
    SWL = 42,
    SW = 43,
    SDL = 44,
    SDR = 45,
    SWR = 46,
    CACHE = 47,
    LL = 48,
    LWC1 = 49,
    LWC2 = 50,
    LWC3 = 51,
    LLD = 52,
    LDC1 = 53,
    LDC2 = 54,
    LD = 55,
    SC = 56,
    SWC1 = 57,
    SWC2 = 58,
    SWC3 = 59,
    SCD = 60,
    SDC1 = 61,
    SDC2 = 62,
    SD = 63,
    COUNT = 64
}
export declare enum OPCODE_SPECIAL0 {
    SLL = 0,
    SPEC01 = 1,
    SRL = 2,
    SRA = 3,
    SLLV = 4,
    SPEC05 = 5,
    SRLV = 6,
    SRAV = 7,
    JR = 8,
    JALR = 9,
    SPEC12 = 10,
    SPEC13 = 11,
    SYSCALL = 12,
    BREAK = 13,
    SPEC16 = 14,
    SYNC = 15,
    MFHI = 16,
    MTHI = 17,
    MFLO = 18,
    MTLO = 19,
    DSLLV = 20,
    SPEC25 = 21,
    DSRLV = 22,
    DSRAV = 23,
    MULT = 24,
    MULTU = 25,
    DIV = 26,
    DIVU = 27,
    DMULT = 28,
    DMULTU = 29,
    DDIV = 30,
    DDIVU = 31,
    ADD = 32,
    ADDU = 33,
    SUB = 34,
    SUBU = 35,
    AND = 36,
    OR = 37,
    XOR = 38,
    NOR = 39,
    SPEC50 = 40,
    SPEC51 = 41,
    SLT = 42,
    SLTU = 43,
    DADD = 44,
    DADDU = 45,
    DSUB = 46,
    DSUBU = 47,
    TGE = 48,
    TGEU = 49,
    TLT = 50,
    TLTU = 51,
    TEQ = 52,
    SPEC65 = 53,
    TNE = 54,
    SPEC67 = 55,
    DSLL = 56,
    SPEC71 = 57,
    DSRL = 58,
    DSRA = 59,
    DSLL32 = 60,
    SPEC75 = 61,
    DSRL32 = 62,
    DSRA32 = 63,
    COUNT = 64
}
export declare enum OPCODE_SPECIAL1 {
    MAD = 0,
    MADU = 1,
    MUL = 2,
    SPEC3 = 3,
    COUNT = 4
}
export declare enum OPCODE_COND {
    BLTZ = 0,
    BGEZ = 1,
    BLTZL = 2,
    BGEZL = 3,
    UNKNOWN0 = 4,
    UNKNOWN1 = 5,
    UNKNOWN2 = 6,
    UNKNOWN3 = 7,
    TGEI = 8,
    TGEIU = 9,
    TLTI = 10,
    TLTIU = 11,
    TEQI = 12,
    UNKNOWN4 = 13,
    TNEI = 14,
    UNKNOWN5 = 15,
    BLTZAL = 16,
    BGEZAL = 17,
    BLTZALL = 18,
    BGEZALL = 19,
    UNKNOWN6 = 20,
    UNKNOWN7 = 21,
    UNKNOWN8 = 22,
    UNKNOWN9 = 23,
    UNKNOWN10 = 24,
    UNKNOWN11 = 25,
    UNKNOWN12 = 26,
    UNKNOWN13 = 27,
    UNKNOWN14 = 28,
    UNKNOWN15 = 29,
    UNKNOWN16 = 30,
    UNKNOWN17 = 31,
    COUNT = 32
}
export declare enum OPCODETYPE {
    NONE = 0,
    IMMEDIATE = 1,
    JUMP = 2,
    REGISTER = 3,
    FR = 4,
    COUNT = 5
}
export declare enum OPCODEINDEXTYPE {
    NONE = 0,
    DEFAULT = 1,
    SPECIAL0 = 2,
    SPECIAL1 = 3,
    COND = 4,
    COUNT = 5
}
export declare enum REGISTER {
    R0 = 0,
    AT = 1,
    V0 = 2,
    V1 = 3,
    A0 = 4,
    A1 = 5,
    A2 = 6,
    A3 = 7,
    T0 = 8,
    T1 = 9,
    T2 = 10,
    T3 = 11,
    T4 = 12,
    T5 = 13,
    T6 = 14,
    T7 = 15,
    S0 = 16,
    S1 = 17,
    S2 = 18,
    S3 = 19,
    S4 = 20,
    S5 = 21,
    S6 = 22,
    S7 = 23,
    T8 = 24,
    T9 = 25,
    K0 = 26,
    K1 = 27,
    GP = 28,
    SP = 29,
    S8 = 30,
    RA = 31,
    COUNT = 32
}
export declare class Instruction {
    type: OPCODEINDEXTYPE;
    indx: number | OPCODE_DEFAULT | OPCODE_SPECIAL0 | OPCODE_SPECIAL1 | OPCODE_COND;
    data: Buffer;
    uint: number;
    code: string;
}
export declare function DecodeOpcode(inst: Buffer): Instruction;
export declare function EncodeOffset(inst: Instruction, offset: number): Instruction;
export declare function DecodeOffset(inst: Instruction): number;
export declare function EncodeShift(inst: Instruction, shift: number): Instruction;
export declare function DecodeShift(inst: Instruction): number;
export declare function EncodeRegisterDestination(inst: Instruction, register: REGISTER): Instruction;
export declare function DecodeRegisterDestination(inst: Instruction): REGISTER;
export declare function EncodeRegisterTarget(inst: Instruction, target: REGISTER): Instruction;
export declare function DecodeRegisterTarget(inst: Instruction): REGISTER;
export declare function EncodeRegisterSource(inst: Instruction, source: REGISTER): Instruction;
export declare function DecodeRegisterSource(inst: Instruction): REGISTER;
export declare function EncodeImmediate(inst: Instruction, immediate: number): Instruction;
export declare function DecodeImmediate(inst: Instruction): number;
export declare function EncodeJumpTarget(inst: Instruction, target: number): Instruction;
export declare function DecodeJumpTarget(inst: Instruction): number;
export declare function EncodeInstruction(data: number[]): Instruction;
export declare function GetOpcodeName(inst: Instruction): string;
//# sourceMappingURL=OpcodeBullshit.d.ts.map