UNPKG

@coinbase/cdp-sdk

Version:

SDK for interacting with the Coinbase Developer Platform Wallet API

105 lines (93 loc) 4.2 kB
// This file was auto-generated by Fern from our API Definition. import { BearerAuthProvider } from "./auth/BearerAuthProvider.js"; import * as core from "./core/index.js"; import type * as environments from "./environments.js"; export type AuthOption = | false | core.AuthProvider["getAuthRequest"] | core.AuthProvider | BearerAuthProvider.AuthOptions; export type BaseClientOptions = { environment?: core.Supplier<environments.CoinbaseApiEnvironment | string>; /** Specify a custom URL to connect the client to. */ baseUrl?: core.Supplier<string>; /** Additional headers to include in requests. */ headers?: Record<string, string | core.EndpointSupplier<string | null | undefined> | null | undefined>; /** The default maximum time to wait for a response in seconds. */ timeoutInSeconds?: number; /** The default number of times to retry the request. Defaults to 2. */ maxRetries?: number; /** Provide a custom fetch implementation. Useful for platforms that don't have a built-in fetch or need a custom implementation. */ fetch?: typeof fetch; /** Configure logging for the client. */ logging?: core.logging.LogConfig | core.logging.Logger; /** The CDP API key ID used to authenticate requests. */ apiKeyId: string; /** The CDP API key secret used to sign the Bearer JWT. */ apiKeySecret: string; /** Optional wallet secret used to sign the X-Wallet-Auth header for wallet-scoped endpoints. */ walletSecret?: string; /** Enables verbose debug logging for auth and request signing. */ debugging?: boolean; /** Override auth. Pass false to disable, a function returning auth headers, an AuthProvider, or auth options. */ auth?: AuthOption; } & BearerAuthProvider.AuthOptions; export interface BaseRequestOptions { /** The maximum time to wait for a response in seconds. */ timeoutInSeconds?: number; /** The number of times to retry the request. Defaults to 2. */ maxRetries?: number; /** A hook to abort the request. */ abortSignal?: AbortSignal; /** Additional query string parameters to include in the request. */ queryParams?: Record<string, unknown>; /** Additional headers to include in the request. */ headers?: Record<string, string | core.EndpointSupplier<string | null | undefined> | null | undefined>; } export type NormalizedClientOptions<T extends BaseClientOptions = BaseClientOptions> = T & { logging: core.logging.Logger; authProvider?: core.AuthProvider; }; export type NormalizedClientOptionsWithAuth<T extends BaseClientOptions = BaseClientOptions> = NormalizedClientOptions<T> & { authProvider: core.AuthProvider; }; export function normalizeClientOptions<T extends BaseClientOptions = BaseClientOptions>( options: T, ): NormalizedClientOptions<T> { return { ...options, logging: core.logging.createLogger(options?.logging), } as NormalizedClientOptions<T>; } export function normalizeClientOptionsWithAuth<T extends BaseClientOptions = BaseClientOptions>( options: T, ): NormalizedClientOptionsWithAuth<T> { const normalized = normalizeClientOptions(options) as NormalizedClientOptionsWithAuth<T>; if (options.auth === false) { normalized.authProvider = new core.NoOpAuthProvider(); return normalized; } if (options.auth != null) { if (typeof options.auth === "function") { normalized.authProvider = { getAuthRequest: options.auth }; return normalized; } if (core.isAuthProvider(options.auth)) { normalized.authProvider = options.auth; return normalized; } Object.assign(normalized, options.auth); } const normalizedWithNoOpAuthProvider = withNoOpAuthProvider(normalized); normalized.authProvider ??= new BearerAuthProvider(normalizedWithNoOpAuthProvider); return normalized; } function withNoOpAuthProvider<T extends BaseClientOptions = BaseClientOptions>( options: NormalizedClientOptions<T>, ): NormalizedClientOptionsWithAuth<T> { return { ...options, authProvider: new core.NoOpAuthProvider(), }; }