steam-family-bot-core
Version:
一个用于新版 Steam 家庭的库存监控 Bot 插件
23 lines (22 loc) • 1.25 kB
TypeScript
import { NetReqResult } from './interface';
type Res<Base, T> = Base extends true ? NetReqResult<T> : T;
export declare class APIHelper<API, Base extends boolean = false> {
constructor();
private retryTime;
private _wrapper;
private _onRetry;
withRetry(times?: number, onRetry?: (retryTime: number, e?: any) => void): this;
onRetry(func: (times: number, e: any) => void): this;
call<T>(block: () => Promise<T>): Promise<Res<Base, T>>;
wrapperResult(): ServiceWithAPIHelper<API, true>;
}
export type ServiceWithAPIHelper<API, Wrap extends boolean = false> = Wrapped<API, Wrap> & APIHelper<API, Wrap>;
export type ServiceWithHelper<API, Wrap extends boolean = false> = Wrapped<API, Wrap> & {
helper: APIHelper<API, Wrap>;
};
type Wrapping<T, I extends boolean = false> = T extends (...args: infer Args) => infer R ? <Wrap extends boolean = false>(...args: Args) => R extends Promise<infer R1> ? I extends true ? Promise<NetReqResult<R1>> : Wrap extends true ? Promise<NetReqResult<R1>> : Promise<R1> : R : T;
type Wrapped<T, Wrap extends boolean = false> = {
[K in keyof T]: Wrapping<T[K], Wrap>;
};
export declare function createProxiedAPIService<T extends object>(instance: T): ServiceWithAPIHelper<T>;
export {};