import {CustomFetchApi} from '@shopify/graphql-client'; import {AdminApiClientOptions} from '../types'; export enum Method { Get = 'GET', Post = 'POST', Put = 'PUT', Delete = 'DELETE', } type SearchParamField = string | number; export type SearchParamFields = | SearchParamField | SearchParamField[] | Record; export type SearchParams = Record; export type HeaderOptions = Record; export interface GetRequestOptions { headers?: HeaderOptions; data?: Record | string; searchParams?: SearchParams; retries?: number; apiVersion?: string; } export interface PostRequestOptions extends GetRequestOptions { data: Required['data']; } export interface PutRequestOptions extends PostRequestOptions {} export interface DeleteRequestOptions extends GetRequestOptions {} export interface AdminRestApiClientOptions extends AdminApiClientOptions { scheme?: 'https' | 'http'; defaultRetryTime?: number; formatPaths?: boolean; } export type RequestOptions = (GetRequestOptions | PostRequestOptions) & { method: Method; }; export interface AdminRestApiClient { get: ( path: string, options?: GetRequestOptions, ) => ReturnType; put: ( path: string, options?: PutRequestOptions, ) => ReturnType; post: ( path: string, options?: PostRequestOptions, ) => ReturnType; delete: ( path: string, options?: DeleteRequestOptions, ) => ReturnType; }