///
declare enum NativeTypes {
Void,
Bool,
Char,
UnsignedChar,
Short,
UnsignedShort,
Int,
UnsignedInt,
Long,
UnsignedLong,
LongLong,
UnsignedLongLong,
Float,
Double,
Pointer,
}
declare class NativeHook {
/**
* call功能
* @param params 对应NativeFunction所描述的函数参数
* @returns any 对应NativeFunction所描述的返回类型
*/
call(...params: any[]): any;
/** 函数指针的指针值 */
address: NativePointer | number;
}
declare class NativeFunction {
/**
* Symbol获得函数
* @param symbol 需要解析的函数
* @returns 原生函数实例
*/
static fromSymbol(symbol: string): NativeFunction;
/**
* Describe获得函数
* @param ReturnValue 返回值类型
* @param Params 参数类型,从左到右直接传递
* @returns 原生函数实例
*/
static fromDescription(
ReturnValue: NativeTypes,
Params: Array
): NativeFunction;
/**
* Script获得函数
* @param ReturnValue 返回值类型
* @param Params 参数类型,从左到右直接传递
* @param Callback 回调函数,当该原生包装函数被调用后,会调用此函数
* @returns 回调函数,当该原生包装函数被调用后,会调用此函数
*/
static fromScript(
ReturnValue: NativeTypes,
Params: Array,
Callback: (...Params: NativeTypes[]) => any
): NativeFunction;
/**
* Hook函数钩子
* @param func 回调函数,请注意保持参数类型与NativeFunction描述的一致
* @returns 原函数
*/
hook(func: (...params: any[]) => any): NativeHook;
}