export type RequestMethod = 'GET' | 'POST' | 'PUT' | 'DELETE' | 'OPTIONS' | 'HEAD' | 'PATCH' | 'TRACE'; export type RequestContentType = 'application/json' | 'application/x-www-form-urlencoded' | 'multipart/form-data'; export type RequestBody = FormData | Record | string | undefined; export type RequestQuery = Record | URLSearchParams | string | undefined; type RequiredFields = T extends void ? T : T extends Array> ? Array> : T extends Record ? Required<{ [K in keyof T]: T[K]; }> : T; export interface BigCommerceApiSuccessResponse { data?: any; meta?: any; } export type RequestOptions = { path: string; contentType?: RequestContentType; body?: RequestBody; query?: RequestQuery; }; export type RequestSuccessResponse = { status: 'success'; http_status: T_Status; data: T_Data extends BigCommerceApiSuccessResponse ? RequiredFields : RequiredFields; meta?: T_Data extends BigCommerceApiSuccessResponse ? T_Data['meta'] : any; }; export type RequestErrorResponse = { status: 'error'; http_status: T_Status; errors: T_Errors; }; export {};