openclaw
Version:
Multi-channel AI gateway with extensible messaging integrations
111 lines • 3.51 kB
TypeScript
//#region extensions/discord/src/internal/rest-scheduler.d.ts
type RequestPriority$1 = "critical" | "standard" | "background";
type RequestQuery = Record<string, string | number | boolean>;
//#endregion
//#region extensions/discord/src/internal/rest.d.ts
type RuntimeProfile = "serverless" | "persistent";
type RequestPriority = RequestPriority$1;
type RequestSchedulerOptions = {
lanes?: Partial<Record<RequestPriority, {
maxQueueSize?: number;
staleAfterMs?: number;
weight?: number;
}>>;
maxConcurrency?: number;
maxRateLimitRetries?: number;
};
type RequestClientOptions = {
tokenHeader?: "Bot" | "Bearer";
baseUrl?: string;
apiVersion?: number;
userAgent?: string;
timeout?: number;
queueRequests?: boolean;
maxQueueSize?: number;
runtimeProfile?: RuntimeProfile;
scheduler?: RequestSchedulerOptions;
fetch?: (input: string | URL | Request, init?: RequestInit) => Promise<Response>;
};
type NormalizedRequestClientOptions = RequestClientOptions & {
apiVersion: number;
maxQueueSize: number;
timeout: number;
};
type RequestData = {
body?: unknown;
multipartStyle?: "message" | "form";
rawBody?: boolean;
headers?: Record<string, string>;
};
type QueuedRequest = {
method: string;
path: string;
data?: RequestData;
query?: RequestQuery;
resolve: (value?: unknown) => void;
reject: (reason?: unknown) => void;
routeKey: string;
};
declare class RequestClient {
readonly options: NormalizedRequestClientOptions;
protected token: string;
protected customFetch: RequestClientOptions["fetch"];
protected requestControllers: Set<AbortController>;
private scheduler;
constructor(token: string, options?: RequestClientOptions);
get(path: string, query?: QueuedRequest["query"]): Promise<unknown>;
post(path: string, data?: RequestData, query?: QueuedRequest["query"]): Promise<unknown>;
patch(path: string, data?: RequestData, query?: QueuedRequest["query"]): Promise<unknown>;
put(path: string, data?: RequestData, query?: QueuedRequest["query"]): Promise<unknown>;
delete(path: string, data?: RequestData, query?: QueuedRequest["query"]): Promise<unknown>;
protected request(method: string, path: string, params: {
data?: RequestData;
query?: QueuedRequest["query"];
}): Promise<unknown>;
protected executeRequest(method: string, path: string, params: {
data?: RequestData;
query?: QueuedRequest["query"];
}, routeKey?: string): Promise<unknown>;
clearQueue(): void;
get queueSize(): number;
getSchedulerMetrics(): {
globalRateLimitUntil: number;
activeBuckets: number;
routeBucketMappings: number;
buckets: {
key: string;
active: number;
bucket: string | undefined;
invalidRequests: number;
pending: number;
pendingByLane: {
[k: string]: number;
};
rateLimitHits: number;
remaining: number | undefined;
resetAt: number;
routeKeyCount: number;
}[];
invalidRequestCount: number;
invalidRequestCountByStatus: Record<number, number>;
queueSize: number;
queueSizeByLane: {
critical: number;
background: number;
standard: number;
};
droppedByLane: {
critical: number;
background: number;
standard: number;
};
oldestQueuedByLane: {
[k: string]: number;
};
activeWorkers: number;
maxConcurrentWorkers: number;
};
abortAllRequests(): void;
}
//#endregion
export { RequestClientOptions as n, RequestClient as t };