import { jsonTypes, xmlTypes, textTypes, binaryTypes, additionalTypes } from './constants'; export type KnownContentType = (typeof jsonTypes)[number] | (typeof xmlTypes)[number] | (typeof textTypes)[number] | (typeof binaryTypes)[number] | (typeof additionalTypes)[number]; export interface ParseOptions { contentType?: KnownContentType; reviver?: (key: string, value: any) => any; } export interface SuccessResult { success: true; data: T; } export type BaseApiError = { kind: 'parse' | 'http' | 'network'; message: string; originalError?: unknown; }; export type ParseError = BaseApiError & { kind: 'parse'; }; export type HttpError = BaseApiError & { kind: 'http'; status: number; statusText: string; bodyText?: string; }; export type NetworkError = BaseApiError & { kind: 'network'; }; export interface FailureResult { success: false; errors: BaseApiError[]; } export type ParseResult = SuccessResult | FailureResult; export declare function isParseResult(value: unknown): value is ParseResult; export interface ParseStrategy { canHandle: (contentType: KnownContentType) => boolean; parse: (response: Response, options: ParseOptions) => Promise; } export type ParsableResponse = Response & { parse: (options?: ParseOptions) => Promise; }; export declare class ParsablePromise extends Promise { constructor(executor: (resolve: (value: ParsableResponse) => void, reject: (reason?: any) => void) => void); parse(options?: ParseOptions): Promise; } export type SafeParsableResponse = Response & { parse: (options?: ParseOptions) => Promise>; }; export declare class SafeParsablePromise extends Promise { constructor(executor: (resolve: (value: SafeParsableResponse) => void, reject: (reason?: any) => void) => void); parse(options?: ParseOptions): Promise>; } //# sourceMappingURL=types.d.ts.map