export interface Headers { // eslint-disable-next-line @typescript-eslint/method-signature-style get(name: string): string | null // eslint-disable-next-line @typescript-eslint/method-signature-style forEach(callbackfn: (value: string, key: string) => void): void } export interface RequestResult { ok: boolean headers: Headers json: () => Promise status: number } export interface FetchOptions { method?: string headers?: any body?: any } export type GraphQLFieldError = { message: string locations: { line: number; column: number }[] path?: (string | number)[] extensions?: Record } export type DeepNullable = T extends (infer R)[] ? (DeepNullable | null)[] : T extends Record ? { [P in keyof T]: DeepNullable | null } | null : T | null