type Headers = { "Content-Type": string "X-Version": string Authorization?: string } async function createClient(config: { baseUrl: string token: string version: string method: string publicKey: string }): Promise { const version = config.version ?? "1.0.1" const method = config.method ?? "GET" const headers: Headers = { "Content-Type": "application/json", "X-Version": version, } if (config.token !== undefined) { headers.Authorization = `Bearer ${config.token}` const response = await fetch(config.baseUrl, { method: method, headers }) if (!response.ok) { throw new Error(response.statusText) } return (await response.json()) as T } const response = await fetch(`${config.baseUrl}/token`, { method: "POST", headers, body: JSON.stringify({ publicKey: config.publicKey, }), }) if (!response.ok) { throw new Error(response.statusText) } return (await response.json()) as T }