import type { Awaitable, MakeRequired } from '../common'; export * from './api'; export * from './utils/constants'; export * from './utils/types'; export { calculateUserDefaultAvatarIndex } from './utils/utils'; export interface ApiHandlerOptions { baseUrl?: string; domain?: string; token: string; debug?: boolean; agent?: string; smartBucket?: boolean; workerProxy?: boolean; type?: 'Bearer' | 'Bot'; } export interface ApiHandlerInternalOptions extends MakeRequired { userAgent: string; } export interface RawFile { contentType?: string; data: ArrayBuffer | Buffer | Uint8Array | Uint8ClampedArray | boolean | number | string; key?: string; filename: string; } export interface ApiRequestOptions { body?: Record; query?: Record; files?: RawFile[]; auth?: boolean; reason?: string; route?: `/${string}`; unshift?: boolean; appendToFormData?: boolean; token?: string; } export type HttpMethods = 'GET' | 'DELETE' | 'PUT' | 'POST' | 'PATCH'; export interface RestObserverRequestPayload { readonly client: TClient; readonly method: HttpMethods; readonly url: `/${string}`; readonly request: Readonly; } export interface RestObserverSuccessPayload extends RestObserverRequestPayload { readonly response: Response; } export interface RestObserverFailPayload extends RestObserverRequestPayload { readonly error: unknown; readonly statusCode?: number; } export interface RestObserverRatelimitPayload extends RestObserverRequestPayload { readonly response: Response; } export interface RestObserver { onRequest?(payload: RestObserverRequestPayload): Awaitable; onSuccess?(payload: RestObserverSuccessPayload): Awaitable; onFail?(payload: RestObserverFailPayload): Awaitable; onRatelimit?(payload: RestObserverRatelimitPayload): Awaitable; } export interface RestObserverEntry { readonly plugin?: string; readonly observer: RestObserver; } export interface RestObserveOptions { } export type RestObserverDisposer = () => void;