@izak0s/spacebring-api 7.1.0 → 8.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../node_modules/openapi-fetch/src/index.js","../src/error.ts","../src/core.ts","../src/generated/resources/altCurrencies.ts","../src/generated/resources/benefits.ts","../src/generated/resources/billing.ts","../src/generated/resources/community.ts","../src/generated/resources/contracts.ts","../src/generated/resources/discounts.ts","../src/generated/resources/events.ts","../src/generated/resources/feed.ts","../src/generated/resources/floors.ts","../src/generated/resources/guides.ts","../src/generated/resources/locations.ts","../src/generated/resources/networks.ts","../src/generated/resources/packages.ts","../src/generated/resources/plans.ts","../src/generated/resources/registrations.ts","../src/generated/resources/resources.ts","../src/generated/resources/shop.ts","../src/generated/resources/subscriptions.ts","../src/generated/resources/support.ts","../src/generated/resources/transactions.ts","../src/generated/resources/visitors.ts","../src/generated/resources/index.ts","../src/client.ts"],"sourcesContent":["// settings & const\nconst PATH_PARAM_RE = /\\{[^{}]+\\}/g;\n\nconst supportsRequestInitExt = () => {\n return (\n typeof process === \"object\" &&\n Number.parseInt(process?.versions?.node?.substring(0, 2)) >= 18 &&\n process.versions.undici\n );\n};\n\n/**\n * Returns a cheap, non-cryptographically-secure random ID\n * Courtesy of @imranbarbhuiya (https://github.com/imranbarbhuiya)\n */\nexport function randomID() {\n return Math.random().toString(36).slice(2, 11);\n}\n\n/**\n * Create an openapi-fetch client.\n * @type {import(\"./index.js\").default}\n */\nexport default function createClient(clientOptions) {\n let {\n baseUrl = \"\",\n Request: CustomRequest = globalThis.Request,\n fetch: baseFetch = globalThis.fetch,\n querySerializer: globalQuerySerializer,\n bodySerializer: globalBodySerializer,\n pathSerializer: globalPathSerializer,\n headers: baseHeaders,\n requestInitExt = undefined,\n ...baseOptions\n } = { ...clientOptions };\n requestInitExt = supportsRequestInitExt() ? requestInitExt : undefined;\n baseUrl = removeTrailingSlash(baseUrl);\n const globalMiddlewares = [];\n\n /**\n * Per-request fetch (keeps settings created in createClient()\n * @param {T} url\n * @param {import('./index.js').FetchOptions<T>} fetchOptions\n */\n async function coreFetch(schemaPath, fetchOptions) {\n const {\n baseUrl: localBaseUrl,\n fetch = baseFetch,\n Request = CustomRequest,\n headers,\n params = {},\n parseAs = \"json\",\n querySerializer: requestQuerySerializer,\n bodySerializer = globalBodySerializer ?? defaultBodySerializer,\n pathSerializer: requestPathSerializer,\n body,\n middleware: requestMiddlewares = [],\n ...init\n } = fetchOptions || {};\n let finalBaseUrl = baseUrl;\n if (localBaseUrl) {\n finalBaseUrl = removeTrailingSlash(localBaseUrl) ?? baseUrl;\n }\n\n let querySerializer =\n typeof globalQuerySerializer === \"function\"\n ? globalQuerySerializer\n : createQuerySerializer(globalQuerySerializer);\n if (requestQuerySerializer) {\n querySerializer =\n typeof requestQuerySerializer === \"function\"\n ? requestQuerySerializer\n : createQuerySerializer({\n ...(typeof globalQuerySerializer === \"object\" ? globalQuerySerializer : {}),\n ...requestQuerySerializer,\n });\n }\n\n const pathSerializer = requestPathSerializer || globalPathSerializer || defaultPathSerializer;\n\n const serializedBody =\n body === undefined\n ? undefined\n : bodySerializer(\n body,\n // Note: we declare mergeHeaders() both here and below because it’s a bit of a chicken-or-egg situation:\n // bodySerializer() needs all headers so we aren’t dropping ones set by the user, however,\n // the result of this ALSO sets the lowest-priority content-type header. So we re-merge below,\n // setting the content-type at the very beginning to be overwritten.\n // Lastly, based on the way headers work, it’s not a simple “present-or-not” check becauase null intentionally un-sets headers.\n mergeHeaders(baseHeaders, headers, params.header),\n );\n const finalHeaders = mergeHeaders(\n // with no body, we should not to set Content-Type\n serializedBody === undefined ||\n // if serialized body is FormData; browser will correctly set Content-Type & boundary expression\n serializedBody instanceof FormData\n ? {}\n : {\n \"Content-Type\": \"application/json\",\n },\n baseHeaders,\n headers,\n params.header,\n );\n\n // Client level middleware take priority over request-level middleware\n const finalMiddlewares = [...globalMiddlewares, ...requestMiddlewares];\n\n const requestInit = {\n redirect: \"follow\",\n ...baseOptions,\n ...init,\n body: serializedBody,\n headers: finalHeaders,\n };\n\n let id;\n let options;\n let request = new Request(\n createFinalURL(schemaPath, { baseUrl: finalBaseUrl, params, querySerializer, pathSerializer }),\n requestInit,\n );\n let response;\n\n /** Add custom parameters to Request object */\n for (const key in init) {\n if (!(key in request)) {\n request[key] = init[key];\n }\n }\n\n if (finalMiddlewares.length) {\n id = randomID();\n\n // middleware (request)\n options = Object.freeze({\n baseUrl: finalBaseUrl,\n fetch,\n parseAs,\n querySerializer,\n bodySerializer,\n pathSerializer,\n });\n for (const m of finalMiddlewares) {\n if (m && typeof m === \"object\" && typeof m.onRequest === \"function\") {\n const result = await m.onRequest({\n request,\n schemaPath,\n params,\n options,\n id,\n });\n if (result) {\n if (result instanceof Request) {\n request = result;\n } else if (result instanceof Response) {\n response = result;\n break;\n } else {\n throw new Error(\"onRequest: must return new Request() or Response() when modifying the request\");\n }\n }\n }\n }\n }\n\n if (!response) {\n // fetch!\n try {\n response = await fetch(request, requestInitExt);\n } catch (error) {\n let errorAfterMiddleware = error;\n // middleware (error)\n // execute in reverse-array order (first priority gets last transform)\n if (finalMiddlewares.length) {\n for (let i = finalMiddlewares.length - 1; i >= 0; i--) {\n const m = finalMiddlewares[i];\n if (m && typeof m === \"object\" && typeof m.onError === \"function\") {\n const result = await m.onError({\n request,\n error: errorAfterMiddleware,\n schemaPath,\n params,\n options,\n id,\n });\n if (result) {\n // if error is handled by returning a response, skip remaining middleware\n if (result instanceof Response) {\n errorAfterMiddleware = undefined;\n response = result;\n break;\n }\n\n if (result instanceof Error) {\n errorAfterMiddleware = result;\n continue;\n }\n\n throw new Error(\"onError: must return new Response() or instance of Error\");\n }\n }\n }\n }\n\n // rethrow error if not handled by middleware\n if (errorAfterMiddleware) {\n throw errorAfterMiddleware;\n }\n }\n\n // middleware (response)\n // execute in reverse-array order (first priority gets last transform)\n if (finalMiddlewares.length) {\n for (let i = finalMiddlewares.length - 1; i >= 0; i--) {\n const m = finalMiddlewares[i];\n if (m && typeof m === \"object\" && typeof m.onResponse === \"function\") {\n const result = await m.onResponse({\n request,\n response,\n schemaPath,\n params,\n options,\n id,\n });\n if (result) {\n if (!(result instanceof Response)) {\n throw new Error(\"onResponse: must return new Response() when modifying the response\");\n }\n response = result;\n }\n }\n }\n }\n }\n\n const contentLength = response.headers.get(\"Content-Length\");\n // handle empty content\n if (\n response.status === 204 ||\n request.method === \"HEAD\" ||\n (contentLength === \"0\" && !response.headers.get(\"Transfer-Encoding\")?.includes(\"chunked\"))\n ) {\n return response.ok ? { data: undefined, response } : { error: undefined, response };\n }\n\n // parse response (falling back to .text() when necessary)\n if (response.ok) {\n const getResponseData = async () => {\n // if \"stream\", skip parsing entirely\n if (parseAs === \"stream\") {\n return response.body;\n }\n\n if (parseAs === \"json\" && !contentLength) {\n // use text() when no content-length is provided to avoid errors parsing empty bodies (200 with no content)\n const raw = await response.text();\n return raw ? JSON.parse(raw) : undefined;\n }\n\n return await response[parseAs]();\n };\n return { data: await getResponseData(), response };\n }\n\n // handle errors\n let error = await response.text();\n try {\n error = JSON.parse(error); // attempt to parse as JSON\n } catch {\n // noop\n }\n return { error, response };\n }\n\n return {\n request(method, url, init) {\n return coreFetch(url, { ...init, method: method.toUpperCase() });\n },\n /** Call a GET endpoint */\n GET(url, init) {\n return coreFetch(url, { ...init, method: \"GET\" });\n },\n /** Call a PUT endpoint */\n PUT(url, init) {\n return coreFetch(url, { ...init, method: \"PUT\" });\n },\n /** Call a POST endpoint */\n POST(url, init) {\n return coreFetch(url, { ...init, method: \"POST\" });\n },\n /** Call a DELETE endpoint */\n DELETE(url, init) {\n return coreFetch(url, { ...init, method: \"DELETE\" });\n },\n /** Call a OPTIONS endpoint */\n OPTIONS(url, init) {\n return coreFetch(url, { ...init, method: \"OPTIONS\" });\n },\n /** Call a HEAD endpoint */\n HEAD(url, init) {\n return coreFetch(url, { ...init, method: \"HEAD\" });\n },\n /** Call a PATCH endpoint */\n PATCH(url, init) {\n return coreFetch(url, { ...init, method: \"PATCH\" });\n },\n /** Call a TRACE endpoint */\n TRACE(url, init) {\n return coreFetch(url, { ...init, method: \"TRACE\" });\n },\n /** Register middleware */\n use(...middleware) {\n for (const m of middleware) {\n if (!m) {\n continue;\n }\n if (typeof m !== \"object\" || !(\"onRequest\" in m || \"onResponse\" in m || \"onError\" in m)) {\n throw new Error(\"Middleware must be an object with one of `onRequest()`, `onResponse() or `onError()`\");\n }\n globalMiddlewares.push(m);\n }\n },\n /** Unregister middleware */\n eject(...middleware) {\n for (const m of middleware) {\n const i = globalMiddlewares.indexOf(m);\n if (i !== -1) {\n globalMiddlewares.splice(i, 1);\n }\n }\n },\n };\n}\n\nclass PathCallForwarder {\n constructor(client, url) {\n this.client = client;\n this.url = url;\n }\n\n GET = (init) => {\n return this.client.GET(this.url, init);\n };\n PUT = (init) => {\n return this.client.PUT(this.url, init);\n };\n POST = (init) => {\n return this.client.POST(this.url, init);\n };\n DELETE = (init) => {\n return this.client.DELETE(this.url, init);\n };\n OPTIONS = (init) => {\n return this.client.OPTIONS(this.url, init);\n };\n HEAD = (init) => {\n return this.client.HEAD(this.url, init);\n };\n PATCH = (init) => {\n return this.client.PATCH(this.url, init);\n };\n TRACE = (init) => {\n return this.client.TRACE(this.url, init);\n };\n}\n\nclass PathClientProxyHandler {\n constructor() {\n this.client = null;\n }\n\n // Assume the property is an URL.\n get(coreClient, url) {\n const forwarder = new PathCallForwarder(coreClient, url);\n this.client[url] = forwarder;\n return forwarder;\n }\n}\n\n/**\n * Wrap openapi-fetch client to support a path based API.\n * @type {import(\"./index.js\").wrapAsPathBasedClient}\n */\nexport function wrapAsPathBasedClient(coreClient) {\n const handler = new PathClientProxyHandler();\n const proxy = new Proxy(coreClient, handler);\n\n // Put the proxy on the prototype chain of the actual client.\n // This means if we do not have a memoized PathCallForwarder,\n // we fall back to the proxy to synthesize it.\n // However, the proxy itself is not on the hot-path (if we fetch the same\n // endpoint multiple times, only the first call will hit the proxy).\n function Client() {}\n Client.prototype = proxy;\n\n const client = new Client();\n\n // Feed the client back to the proxy handler so it can store the generated\n // PathCallForwarder.\n handler.client = client;\n\n return client;\n}\n\n/**\n * Convenience method to an openapi-fetch path based client.\n * Strictly equivalent to `wrapAsPathBasedClient(createClient(...))`.\n * @type {import(\"./index.js\").createPathBasedClient}\n */\nexport function createPathBasedClient(clientOptions) {\n return wrapAsPathBasedClient(createClient(clientOptions));\n}\n\n// utils\n\n/**\n * Serialize primitive param values\n * @type {import(\"./index.js\").serializePrimitiveParam}\n */\nexport function serializePrimitiveParam(name, value, options) {\n if (value === undefined || value === null) {\n return \"\";\n }\n if (typeof value === \"object\") {\n throw new Error(\n \"Deeply-nested arrays/objects aren’t supported. Provide your own `querySerializer()` to handle these.\",\n );\n }\n return `${name}=${options?.allowReserved === true ? value : encodeURIComponent(value)}`;\n}\n\n/**\n * Serialize object param (shallow only)\n * @type {import(\"./index.js\").serializeObjectParam}\n */\nexport function serializeObjectParam(name, value, options) {\n if (!value || typeof value !== \"object\") {\n return \"\";\n }\n const values = [];\n const joiner =\n {\n simple: \",\",\n label: \".\",\n matrix: \";\",\n }[options.style] || \"&\";\n\n // explode: false\n if (options.style !== \"deepObject\" && options.explode === false) {\n for (const k in value) {\n values.push(k, options.allowReserved === true ? value[k] : encodeURIComponent(value[k]));\n }\n const final = values.join(\",\"); // note: values are always joined by comma in explode: false (but joiner can prefix)\n switch (options.style) {\n case \"form\": {\n return `${name}=${final}`;\n }\n case \"label\": {\n return `.${final}`;\n }\n case \"matrix\": {\n return `;${name}=${final}`;\n }\n default: {\n return final;\n }\n }\n }\n\n // explode: true\n for (const k in value) {\n const finalName = options.style === \"deepObject\" ? `${name}[${k}]` : k;\n values.push(serializePrimitiveParam(finalName, value[k], options));\n }\n const final = values.join(joiner);\n return options.style === \"label\" || options.style === \"matrix\" ? `${joiner}${final}` : final;\n}\n\n/**\n * Serialize array param (shallow only)\n * @type {import(\"./index.js\").serializeArrayParam}\n */\nexport function serializeArrayParam(name, value, options) {\n if (!Array.isArray(value)) {\n return \"\";\n }\n\n // explode: false\n if (options.explode === false) {\n const joiner = { form: \",\", spaceDelimited: \"%20\", pipeDelimited: \"|\" }[options.style] || \",\"; // note: for arrays, joiners vary wildly based on style + explode behavior\n const final = (options.allowReserved === true ? value : value.map((v) => encodeURIComponent(v))).join(joiner);\n switch (options.style) {\n case \"simple\": {\n return final;\n }\n case \"label\": {\n return `.${final}`;\n }\n case \"matrix\": {\n return `;${name}=${final}`;\n }\n // case \"spaceDelimited\":\n // case \"pipeDelimited\":\n default: {\n return `${name}=${final}`;\n }\n }\n }\n\n // explode: true\n const joiner = { simple: \",\", label: \".\", matrix: \";\" }[options.style] || \"&\";\n const values = [];\n for (const v of value) {\n if (options.style === \"simple\" || options.style === \"label\") {\n values.push(options.allowReserved === true ? v : encodeURIComponent(v));\n } else {\n values.push(serializePrimitiveParam(name, v, options));\n }\n }\n return options.style === \"label\" || options.style === \"matrix\"\n ? `${joiner}${values.join(joiner)}`\n : values.join(joiner);\n}\n\n/**\n * Serialize query params to string\n * @type {import(\"./index.js\").createQuerySerializer}\n */\nexport function createQuerySerializer(options) {\n return function querySerializer(queryParams) {\n const search = [];\n if (queryParams && typeof queryParams === \"object\") {\n for (const name in queryParams) {\n const value = queryParams[name];\n if (value === undefined || value === null) {\n continue;\n }\n if (Array.isArray(value)) {\n if (value.length === 0) {\n continue;\n }\n search.push(\n serializeArrayParam(name, value, {\n style: \"form\",\n explode: true,\n ...options?.array,\n allowReserved: options?.allowReserved || false,\n }),\n );\n continue;\n }\n if (typeof value === \"object\") {\n search.push(\n serializeObjectParam(name, value, {\n style: \"deepObject\",\n explode: true,\n ...options?.object,\n allowReserved: options?.allowReserved || false,\n }),\n );\n continue;\n }\n search.push(serializePrimitiveParam(name, value, options));\n }\n }\n return search.join(\"&\");\n };\n}\n\n/**\n * Handle different OpenAPI 3.x serialization styles\n * @type {import(\"./index.js\").defaultPathSerializer}\n * @see https://swagger.io/docs/specification/serialization/#path\n */\nexport function defaultPathSerializer(pathname, pathParams) {\n let nextURL = pathname;\n for (const match of pathname.match(PATH_PARAM_RE) ?? []) {\n let name = match.substring(1, match.length - 1);\n let explode = false;\n let style = \"simple\";\n if (name.endsWith(\"*\")) {\n explode = true;\n name = name.substring(0, name.length - 1);\n }\n if (name.startsWith(\".\")) {\n style = \"label\";\n name = name.substring(1);\n } else if (name.startsWith(\";\")) {\n style = \"matrix\";\n name = name.substring(1);\n }\n if (!pathParams || pathParams[name] === undefined || pathParams[name] === null) {\n continue;\n }\n const value = pathParams[name];\n if (Array.isArray(value)) {\n nextURL = nextURL.replace(match, serializeArrayParam(name, value, { style, explode }));\n continue;\n }\n if (typeof value === \"object\") {\n nextURL = nextURL.replace(match, serializeObjectParam(name, value, { style, explode }));\n continue;\n }\n if (style === \"matrix\") {\n nextURL = nextURL.replace(match, `;${serializePrimitiveParam(name, value)}`);\n continue;\n }\n nextURL = nextURL.replace(match, style === \"label\" ? `.${encodeURIComponent(value)}` : encodeURIComponent(value));\n }\n return nextURL;\n}\n\n/**\n * Serialize body object to string\n * @type {import(\"./index.js\").defaultBodySerializer}\n */\nexport function defaultBodySerializer(body, headers) {\n if (body instanceof FormData) {\n return body;\n }\n if (headers) {\n const contentType =\n headers.get instanceof Function\n ? (headers.get(\"Content-Type\") ?? headers.get(\"content-type\"))\n : (headers[\"Content-Type\"] ?? headers[\"content-type\"]);\n if (contentType === \"application/x-www-form-urlencoded\") {\n return new URLSearchParams(body).toString();\n }\n }\n return JSON.stringify(body);\n}\n\n/**\n * Construct URL string from baseUrl and handle path and query params\n * @type {import(\"./index.js\").createFinalURL}\n */\nexport function createFinalURL(pathname, options) {\n let finalURL = `${options.baseUrl}${pathname}`;\n if (options.params?.path) {\n finalURL = options.pathSerializer(finalURL, options.params.path);\n }\n let search = options.querySerializer(options.params.query ?? {});\n if (search.startsWith(\"?\")) {\n search = search.substring(1);\n }\n if (search) {\n finalURL += `?${search}`;\n }\n return finalURL;\n}\n\n/**\n * Merge headers a and b, with b taking priority\n * @type {import(\"./index.js\").mergeHeaders}\n */\nexport function mergeHeaders(...allHeaders) {\n const finalHeaders = new Headers();\n for (const h of allHeaders) {\n if (!h || typeof h !== \"object\") {\n continue;\n }\n const iterator = h instanceof Headers ? h.entries() : Object.entries(h);\n for (const [k, v] of iterator) {\n if (v === null) {\n finalHeaders.delete(k);\n } else if (Array.isArray(v)) {\n for (const v2 of v) {\n finalHeaders.append(k, v2);\n }\n } else if (v !== undefined) {\n finalHeaders.set(k, v);\n }\n }\n }\n return finalHeaders;\n}\n\n/**\n * Remove trailing slash from url\n * @type {import(\"./index.js\").removeTrailingSlash}\n */\nexport function removeTrailingSlash(url) {\n if (url.endsWith(\"/\")) {\n return url.substring(0, url.length - 1);\n }\n return url;\n}\n","import type { components } from \"./generated/schema.js\";\n\nexport type SpacebringErrorBody = components[\"schemas\"][\"responseError\"];\n\n/**\n * Error thrown when the Spacebring API responds with a non-2xx status.\n */\nexport class SpacebringError extends Error {\n /** HTTP status code of the failed response. */\n readonly status: number;\n /** Parsed error body returned by the API, if any. */\n readonly body: SpacebringErrorBody | undefined;\n /** The operation the request targeted, e.g. `GET /billing/invoices/v1/{invoiceId}`. */\n readonly operation: string | undefined;\n /** Full URL of the failed request, if known. */\n readonly url: string | undefined;\n\n constructor(status: number, body?: unknown, request?: { operation?: string; url?: string }) {\n const parsed = isErrorBody(body) ? body : undefined;\n let base = parsed?.message ?? `Spacebring API request failed with status ${status}`;\n // Validation errors carry the actual problems in an (untyped) issues array;\n // surface them so the message is actionable without dumping error.body.\n const issues = parsed ? issueSummary(parsed) : undefined;\n if (issues) base += ` — ${issues}`;\n super(request?.operation ? `${base} (${request.operation})` : base);\n this.name = \"SpacebringError\";\n this.status = status;\n this.body = parsed;\n this.operation = request?.operation;\n this.url = request?.url;\n }\n}\n\nfunction isErrorBody(body: unknown): body is SpacebringErrorBody {\n return typeof body === \"object\" && body !== null;\n}\n\n/** Compact \"path: message\" list from a zod-style `issues` array, if the body has one. */\nfunction issueSummary(body: object): string | undefined {\n const issues = (body as { issues?: unknown }).issues;\n if (!Array.isArray(issues) || issues.length === 0) return undefined;\n const parts = issues.slice(0, 3).map((issue) => {\n if (typeof issue !== \"object\" || issue === null) return String(issue);\n const { path, message } = issue as { path?: unknown; message?: unknown };\n const where = Array.isArray(path) && path.length > 0 ? path.join(\".\") : undefined;\n const what = typeof message === \"string\" ? message : JSON.stringify(issue);\n return where ? `${where}: ${what}` : what;\n });\n const more = issues.length > 3 ? `; +${issues.length - 3} more` : \"\";\n return parts.join(\"; \") + more;\n}\n","import { SpacebringError } from \"./error.js\";\n\n/** Client-level defaults threaded into the generated facade. */\nexport interface SpacebringDefaults {\n /** Sent as the `spacebring-network-id` header where the API requires it. */\n networkId?: string;\n}\n\n/** Per-request options accepted by every generated facade method. */\nexport interface SpacebringRequestOptions {\n /** Aborts the request — including any pending retry wait — when triggered. */\n signal?: AbortSignal;\n}\n\ninterface FetchResult<T> {\n data?: T;\n error?: unknown;\n response: Response;\n}\n\n/**\n * Unwraps an openapi-fetch result: returns `data` on success,\n * throws {@link SpacebringError} on any non-2xx response.\n */\nexport function unwrap<T>(result: FetchResult<T>, operation?: string): T {\n if (result.error !== undefined || !result.response.ok) {\n throw new SpacebringError(result.response.status, result.error, {\n operation,\n url: result.response.url || undefined,\n });\n }\n return result.data as T;\n}\n\n/**\n * Returns the single payload property of a success envelope,\n * throwing {@link SpacebringError} when the response has no usable body.\n */\nexport function unwrapProp<Envelope, Key extends keyof Envelope>(\n result: FetchResult<Envelope>,\n key: Key,\n operation?: string,\n): NonNullable<Envelope[Key]> {\n const value = unwrap(result, operation)?.[key];\n if (value === undefined || value === null) {\n throw new SpacebringError(\n result.response.status,\n { message: `Response is missing the \"${String(key)}\" property` },\n { operation, url: result.response.url || undefined },\n );\n }\n return value as NonNullable<Envelope[Key]>;\n}\n\n/**\n * Iterates every item of a paginated list endpoint, following\n * `nextPageToken` until the last page.\n */\nexport async function* paginate<Page extends { nextPageToken?: string }, Key extends keyof Page>(\n fetchPage: (nextPageToken: string | undefined) => Promise<Page>,\n itemsKey: Key,\n): AsyncGenerator<Page[Key] extends readonly (infer Item)[] | undefined ? Item : never, void, undefined> {\n let token: string | undefined;\n do {\n const page = await fetchPage(token);\n const items = (page[itemsKey] ?? []) as Iterable<never>;\n yield* items;\n const next = page.nextPageToken;\n if (next !== undefined && next === token) {\n throw new Error(\"Pagination did not advance: the API returned the same nextPageToken twice\");\n }\n token = next;\n } while (token);\n}\n","// AUTO-GENERATED by codegen/generate-facade.ts — DO NOT EDIT.\n// Regenerate with `npm run generate:facade`.\nimport type { Client } from \"openapi-fetch\";\nimport { paginate, unwrap, unwrapProp, type SpacebringDefaults, type SpacebringRequestOptions } from \"../../core.js\";\nimport type { components, operations, paths } from \"../schema.js\";\n\n/** A AltCurrency entity as returned by the Spacebring API. */\nexport type AltCurrency = NonNullable<components[\"schemas\"][\"altCurrency\"]>;\n\n/** Query parameters for `sb.altCurrencies.list()`. */\nexport interface GetAltCurrenciesQuery {\n /** The id of the location */\n locationRef: string;\n /** Token to retrieve the next page of results. */\n nextPageToken?: string;\n /** The number of items to return. */\n limit?: number;\n}\n\n/** Request body for `sb.altCurrencies.create()`. */\nexport type CreateAltCurrencyBody = NonNullable<NonNullable<operations[\"createAltCurrency\"][\"requestBody\"]>[\"content\"][\"application/json\"][\"altCurrency\"]>;\n\n/** Request body for `sb.altCurrencies.update()`. */\nexport type UpdateAltCurrencyBody = NonNullable<NonNullable<operations[\"updateAltCurrency\"][\"requestBody\"]>[\"content\"][\"application/json\"][\"altCurrency\"]>;\n\nexport function createAltcurrencies(client: Client<paths>, defaults: SpacebringDefaults) {\n return {\n /**\n * Retrieve alternative currencies\n *\n * Retrieve all alternative currencies in the location.\n */\n async list(query: GetAltCurrenciesQuery, options?: SpacebringRequestOptions): Promise<{ altCurrencies?: AltCurrency[]; nextPageToken?: string; searchQueryNext?: string }> {\n return unwrap(await client.GET(\"/alt_currencies/v1\", { params: { query }, signal: options?.signal }), \"GET /alt_currencies/v1\");\n },\n /**\n * Retrieve alternative currencies — iterates every item across all pages.\n *\n * Retrieve all alternative currencies in the location.\n */\n iterate(query: Omit<GetAltCurrenciesQuery, \"nextPageToken\">, options?: SpacebringRequestOptions): AsyncGenerator<AltCurrency, void, undefined> {\n return paginate(\n async (nextPageToken: string | undefined) =>\n unwrap(await client.GET(\"/alt_currencies/v1\", { params: { query: { ...query, nextPageToken } }, signal: options?.signal }), \"GET /alt_currencies/v1\"),\n \"altCurrencies\",\n );\n },\n /** Create an alternative currency */\n async create(altCurrency: CreateAltCurrencyBody, options?: SpacebringRequestOptions): Promise<AltCurrency> {\n return unwrapProp(await client.POST(\"/alt_currencies/v1\", { body: { altCurrency }, signal: options?.signal }), \"altCurrency\", \"POST /alt_currencies/v1\");\n },\n /**\n * Update an alternative currency\n *\n * @param id The id of the alternative currency\n * @param altCurrency The `altCurrency` payload.\n * @param options Request options (abort signal).\n */\n async update(id: string, altCurrency: UpdateAltCurrencyBody, options?: SpacebringRequestOptions): Promise<undefined> {\n return unwrap(await client.PATCH(\"/alt_currencies/v1/{id}\", { params: { path: { id } }, body: { altCurrency }, signal: options?.signal }), \"PATCH /alt_currencies/v1/{id}\");\n },\n /**\n * Delete an alternative currency\n *\n * @param id The id of the alternative currency\n * @param options Request options (abort signal).\n */\n async delete(id: string, options?: SpacebringRequestOptions): Promise<undefined> {\n return unwrap(await client.DELETE(\"/alt_currencies/v1/{id}\", { params: { path: { id } }, signal: options?.signal }), \"DELETE /alt_currencies/v1/{id}\");\n },\n };\n}\n","// AUTO-GENERATED by codegen/generate-facade.ts — DO NOT EDIT.\n// Regenerate with `npm run generate:facade`.\nimport type { Client } from \"openapi-fetch\";\nimport { paginate, unwrap, unwrapProp, type SpacebringDefaults, type SpacebringRequestOptions } from \"../../core.js\";\nimport type { components, operations, paths } from \"../schema.js\";\n\n/** A Application entity as returned by the Spacebring API. */\nexport type Application = NonNullable<components[\"schemas\"][\"benefitApplication\"]>;\n\n/** A Benefit entity as returned by the Spacebring API. */\nexport type Benefit = NonNullable<components[\"schemas\"][\"benefit\"]>;\n\n/** A BenefitCategory entity as returned by the Spacebring API. */\nexport type BenefitCategory = NonNullable<components[\"schemas\"][\"benefitCategory\"]>;\n\n/** Query parameters for `sb.benefits.applications.list()`. */\nexport interface GetBenefitApplicationsQuery {\n /** UUID of the benefit. */\n benefitRef?: string;\n /** Comma-separated benefit category UUIDs, e.g. `uuid1,uuid2`. */\n categoryRef?: string;\n /** Filter applications submitted on or after this date (ISO 8601). Use with createDate[lte] for a range. */\n \"createDate[gte]\"?: string;\n /** Filter applications submitted on or before this date (ISO 8601). Use with createDate[gte] for a range. */\n \"createDate[lte]\"?: string;\n /** UUID of the customer whose applications to list. */\n customerRef?: string;\n /** Maximum number of applications per page. Defaults to 25 when omitted or invalid; values above 100 are capped at 100. */\n limit?: number;\n /** UUID of the location. */\n locationRef?: string;\n /** Pagination token from nextPageToken in a previous response. Keep the same filters when fetching the next page. */\n nextPageToken?: string;\n /** UUID of the user whose applications to list. */\n userRef?: string;\n}\n\n/** Query parameters for `sb.benefits.categories.list()`. */\nexport interface GetBenefitCategoriesQuery {\n /** UUID of the location whose benefit categories to list. */\n locationRef: string;\n}\n\n/** Query parameters for `sb.benefits.list()`. */\nexport interface GetBenefitsQuery {\n /** UUID of the benefit category. */\n categoryRef?: string;\n /** Filter by featured status. Pass true or false. */\n featured?: boolean;\n /** Maximum number of benefits per page. Defaults to 25 when omitted or invalid; values above 100 are capped at 100. */\n limit?: number;\n /** UUID of the location. */\n locationRef?: string;\n /** Pagination token from nextPageToken in a previous response. Keep the same filters when fetching the next page. */\n nextPageToken?: string;\n}\n\n/** Request body for `sb.benefits.applications.create()`. */\nexport type ApplyBenefitBody = NonNullable<NonNullable<operations[\"applyBenefit\"][\"requestBody\"]>[\"content\"][\"application/json\"][\"application\"]>;\n\n/** Request body for `sb.benefits.create()`. */\nexport type CreateBenefitBody = NonNullable<NonNullable<operations[\"createBenefit\"][\"requestBody\"]>[\"content\"][\"application/json\"][\"benefit\"]>;\n\n/** Request body for `sb.benefits.categories.create()`. */\nexport type CreateBenefitCategoryBody = NonNullable<NonNullable<operations[\"createBenefitCategory\"][\"requestBody\"]>[\"content\"][\"application/json\"][\"category\"]>;\n\n/** Request body for `sb.benefits.update()`. */\nexport type UpdateBenefitBody = NonNullable<NonNullable<operations[\"updateBenefit\"][\"requestBody\"]>[\"content\"][\"application/json\"][\"benefit\"]>;\n\n/** Request body for `sb.benefits.categories.update()`. */\nexport type UpdateBenefitCategoryBody = NonNullable<NonNullable<operations[\"updateBenefitCategory\"][\"requestBody\"]>[\"content\"][\"application/json\"][\"category\"]>;\n\nexport function createBenefits(client: Client<paths>, defaults: SpacebringDefaults) {\n return {\n /**\n * Retrieve benefits\n *\n * Retrieve all benefits in the location.\n */\n async list(query?: GetBenefitsQuery, options?: SpacebringRequestOptions): Promise<{ benefits: Benefit[]; nextPageToken?: string; searchQueryNext?: string }> {\n return unwrap(await client.GET(\"/benefits/v1\", { params: { query }, signal: options?.signal }), \"GET /benefits/v1\");\n },\n /**\n * Retrieve benefits — iterates every item across all pages.\n *\n * Retrieve all benefits in the location.\n */\n iterate(query?: Omit<GetBenefitsQuery, \"nextPageToken\">, options?: SpacebringRequestOptions): AsyncGenerator<Benefit, void, undefined> {\n return paginate(\n async (nextPageToken: string | undefined) =>\n unwrap(await client.GET(\"/benefits/v1\", { params: { query: { ...query, nextPageToken } }, signal: options?.signal }), \"GET /benefits/v1\"),\n \"benefits\",\n );\n },\n /**\n * Retrieve a benefit\n *\n * @param benefitId The id of the benefit.\n * @param options Request options (abort signal).\n */\n async get(benefitId: string, options?: SpacebringRequestOptions): Promise<Benefit> {\n return unwrapProp(await client.GET(\"/benefits/v1/{benefitId}\", { params: { path: { benefitId } }, signal: options?.signal }), \"benefit\", \"GET /benefits/v1/{benefitId}\");\n },\n /** Create a benefit */\n async create(benefit: CreateBenefitBody, options?: SpacebringRequestOptions): Promise<Benefit> {\n return unwrap(await client.POST(\"/benefits/v1\", { body: { benefit }, signal: options?.signal }), \"POST /benefits/v1\");\n },\n /**\n * Update a benefit\n *\n * @param benefitId The id of the benefit\n * @param benefit The `benefit` payload.\n * @param options Request options (abort signal).\n */\n async update(benefitId: string, benefit: UpdateBenefitBody, options?: SpacebringRequestOptions): Promise<Benefit> {\n return unwrapProp(await client.PUT(\"/benefits/v1/{benefitId}\", { params: { path: { benefitId } }, body: { benefit }, signal: options?.signal }), \"benefit\", \"PUT /benefits/v1/{benefitId}\");\n },\n /**\n * Delete a benefit\n *\n * @param benefitId The id of the benefit\n * @param options Request options (abort signal).\n */\n async delete(benefitId: string, options?: SpacebringRequestOptions): Promise<undefined> {\n return unwrap(await client.DELETE(\"/benefits/v1/{benefitId}\", { params: { path: { benefitId } }, signal: options?.signal }), \"DELETE /benefits/v1/{benefitId}\");\n },\n applications: {\n /**\n * Retrieve applications\n *\n * Retrieve all benefit applications in the location or for certain benefit.\n */\n async list(query?: GetBenefitApplicationsQuery, options?: SpacebringRequestOptions): Promise<{ applications: Application[]; nextPageToken?: string; searchQueryNext?: string }> {\n return unwrap(await client.GET(\"/benefits/applications/v1\", { params: { query }, signal: options?.signal }), \"GET /benefits/applications/v1\");\n },\n /**\n * Retrieve applications — iterates every item across all pages.\n *\n * Retrieve all benefit applications in the location or for certain benefit.\n */\n iterate(query?: Omit<GetBenefitApplicationsQuery, \"nextPageToken\">, options?: SpacebringRequestOptions): AsyncGenerator<Application, void, undefined> {\n return paginate(\n async (nextPageToken: string | undefined) =>\n unwrap(await client.GET(\"/benefits/applications/v1\", { params: { query: { ...query, nextPageToken } }, signal: options?.signal }), \"GET /benefits/applications/v1\"),\n \"applications\",\n );\n },\n /**\n * Retrieve an application\n *\n * Retrieve a benefit application by id.\n *\n * @param benefitApplicationId The id of the benefit application.\n * @param options Request options (abort signal).\n */\n async get(benefitApplicationId: string, options?: SpacebringRequestOptions): Promise<Application> {\n return unwrapProp(await client.GET(\"/benefits/applications/v1/{benefitApplicationId}\", { params: { path: { benefitApplicationId } }, signal: options?.signal }), \"application\", \"GET /benefits/applications/v1/{benefitApplicationId}\");\n },\n /** Apply for a benefit */\n async create(application: ApplyBenefitBody, options?: SpacebringRequestOptions): Promise<Application> {\n return unwrapProp(await client.POST(\"/benefits/applications/v1\", { body: { application }, signal: options?.signal }), \"application\", \"POST /benefits/applications/v1\");\n },\n },\n categories: {\n /**\n * Retrieve categories\n *\n * Retrieve all benefit categories in the location.\n */\n async list(query: GetBenefitCategoriesQuery, options?: SpacebringRequestOptions): Promise<BenefitCategory[]> {\n return unwrapProp(await client.GET(\"/benefits/categories/v1\", { params: { query }, signal: options?.signal }), \"categories\", \"GET /benefits/categories/v1\");\n },\n /**\n * Get a category\n *\n * Get a benefit category.\n *\n * @param categoryId The id of the benefit category.\n * @param options Request options (abort signal).\n */\n async get(categoryId: string, options?: SpacebringRequestOptions): Promise<BenefitCategory> {\n return unwrapProp(await client.GET(\"/benefits/categories/v1/{categoryId}\", { params: { path: { categoryId } }, signal: options?.signal }), \"category\", \"GET /benefits/categories/v1/{categoryId}\");\n },\n /**\n * Create a category\n *\n * Create a benefit category.\n */\n async create(category: CreateBenefitCategoryBody, options?: SpacebringRequestOptions): Promise<BenefitCategory> {\n return unwrapProp(await client.POST(\"/benefits/categories/v1\", { body: { category }, signal: options?.signal }), \"category\", \"POST /benefits/categories/v1\");\n },\n /**\n * Update a category\n *\n * Update a benefit category.\n *\n * @param categoryId The id of the benefit category\n * @param category The `category` payload.\n * @param options Request options (abort signal).\n */\n async update(categoryId: string, category: UpdateBenefitCategoryBody, options?: SpacebringRequestOptions): Promise<BenefitCategory> {\n return unwrapProp(await client.PUT(\"/benefits/categories/v1/{categoryId}\", { params: { path: { categoryId } }, body: { category }, signal: options?.signal }), \"category\", \"PUT /benefits/categories/v1/{categoryId}\");\n },\n /**\n * Delete a category\n *\n * Delete a benefit category.\n *\n * @param categoryId The id of the benefit category\n * @param options Request options (abort signal).\n */\n async delete(categoryId: string, options?: SpacebringRequestOptions): Promise<undefined> {\n return unwrap(await client.DELETE(\"/benefits/categories/v1/{categoryId}\", { params: { path: { categoryId } }, signal: options?.signal }), \"DELETE /benefits/categories/v1/{categoryId}\");\n },\n },\n };\n}\n","// AUTO-GENERATED by codegen/generate-facade.ts — DO NOT EDIT.\n// Regenerate with `npm run generate:facade`.\nimport type { Client } from \"openapi-fetch\";\nimport { paginate, unwrap, unwrapProp, type SpacebringDefaults, type SpacebringRequestOptions } from \"../../core.js\";\nimport type { components, operations, paths } from \"../schema.js\";\n\n/** A CreditNote entity as returned by the Spacebring API. */\nexport type CreditNote = NonNullable<components[\"schemas\"][\"creditNote\"]>;\n\n/** A Invoice entity as returned by the Spacebring API. */\nexport type Invoice = NonNullable<components[\"schemas\"][\"invoice\"]>;\n\n/** A InvoiceItem entity as returned by the Spacebring API. */\nexport type InvoiceItem = NonNullable<components[\"schemas\"][\"invoiceItem\"]>;\n\n/** A Payment entity as returned by the Spacebring API. */\nexport type Payment = NonNullable<components[\"schemas\"][\"invoicePayment\"]>;\n\n/** A UpcomingItem entity as returned by the Spacebring API. */\nexport type UpcomingItem = NonNullable<components[\"schemas\"][\"invoiceItem\"]>;\n\n/** Query parameters for `sb.billing.creditNotes.list()`. */\nexport interface GetCreditNotesQuery {\n /** Filter credit notes created on or after this date (ISO 8601). Use with createDate[lte] for a range. */\n \"createDate[gte]\"?: string;\n /** Filter credit notes created on or before this date (ISO 8601). Use with createDate[gte] for a range. */\n \"createDate[lte]\"?: string;\n /** UUID of the invoice whose credit notes to list. */\n invoiceRef?: string;\n /** Maximum number of credit notes per page. Defaults to 25 when omitted or invalid; values above 100 are capped at 100. */\n limit?: number;\n /** UUID of the location whose credit notes to list. */\n locationRef?: string;\n /** Pagination token from nextPageToken in a previous response. Keep the same filters when fetching the next page. */\n nextPageToken?: string;\n /** Filter by credit note status. Comma-separated values, e.g. `issued,voided`.\n\n Supported values:\n - **issued** — active credit note\n - **voided** — cancelled and no longer valid */\n status?: string;\n}\n\n/** Query parameters for `sb.billing.invoices.list()`. */\nexport interface GetInvoicesQuery {\n /** @deprecated Use customerRef instead. UUID of the company whose invoices to list. */\n companyRef?: string;\n /** Filter invoices created on or after this date (ISO 8601). Use with createDate[lte] for a range. */\n \"createDate[gte]\"?: string;\n /** Filter invoices created on or before this date (ISO 8601). Use with createDate[gte] for a range. */\n \"createDate[lte]\"?: string;\n /** UUID of the customer whose invoices to list. */\n customerRef?: string;\n /** Filter invoices issued on or after this date (ISO 8601). Use with issueDate[lte] for a range. */\n \"issueDate[gte]\"?: string;\n /** Filter invoices issued on or before this date (ISO 8601). Use with issueDate[gte] for a range. */\n \"issueDate[lte]\"?: string;\n /** Maximum number of invoices per page. Defaults to 25 when omitted or invalid; values above 100 are capped at 100. */\n limit?: number;\n /** UUID of the location whose invoices to list. */\n locationRef?: string;\n /** @deprecated Use customerRef instead. UUID of the membership whose invoices to list. */\n membershipRef?: string;\n /** Pagination token from nextPageToken in a previous response. Keep the same filters when fetching the next page. */\n nextPageToken?: string;\n /** Case-insensitive search by invoice code or number. Requires customerRef or locationRef. */\n q?: string;\n /** Filter by invoice status. Comma-separated values, e.g. `draft,issued`.\n\n Supported values:\n - **draft** — created but not sent\n - **issued** — sent to the customer but unpaid\n - **paid** — fully paid\n - **voided** — cancelled and no longer valid */\n status?: string;\n}\n\n/** Query parameters for `sb.billing.invoices.items.getUpcoming()`. */\nexport interface GetUpcomingInvoiceItemsQuery {\n /** The id of the company. */\n companyRef?: string;\n /** The id of the membership. */\n membershipRef?: string;\n}\n\n/** Query parameters for `sb.billing.invoices.getUpcoming()`. */\nexport interface GetUpcomingInvoiceQuery {\n /** The id of the subscription. */\n subscriptionRef?: string;\n}\n\n/** Query parameters for `sb.billing.invoices.items.list()`. */\nexport interface ListInvoiceItemsQuery {\n /** Filter invoices created on or after this date (ISO 8601). Use with createDate[lte] for a range. */\n \"createDate[gte]\"?: string;\n /** Filter invoices created on or before this date (ISO 8601). Use with createDate[gte] for a range. */\n \"createDate[lte]\"?: string;\n /** UUID of the customer whose invoices to list. */\n customerRef?: string;\n /** Filter invoices issued on or after this date (ISO 8601). Use with issueDate[lte] for a range. */\n \"issueDate[gte]\"?: string;\n /** Filter invoices issued on or before this date (ISO 8601). Use with issueDate[gte] for a range. */\n \"issueDate[lte]\"?: string;\n /** Maximum number of invoices per page. Defaults to 25 when omitted or invalid; values above 100 are capped at 100. */\n limit?: number;\n /** UUID of the location whose invoices to list. */\n locationRef?: string;\n /** Pagination token from nextPageToken in a previous response. Keep the same filters when fetching the next page. */\n nextPageToken?: string;\n /** Filter by invoice status. Comma-separated values, e.g. `draft,issued`.\n\n Supported values:\n - **draft** — created but not sent\n - **issued** — sent to the customer but unpaid\n - **paid** — fully paid\n - **voided** — cancelled and no longer valid */\n status?: string;\n /** Filter by invoice item type. Comma-separated values, e.g. `custom,order`. */\n type?: string;\n}\n\n/** Request body for `sb.billing.creditNotes.create()`. */\nexport type CreateCreditNoteBody = NonNullable<NonNullable<operations[\"createCreditNote\"][\"requestBody\"]>[\"content\"][\"application/json\"][\"creditNote\"]>;\n\n/** Request body for `sb.billing.invoices.create()`. */\nexport type CreateInvoiceBody = NonNullable<operations[\"createInvoice\"][\"requestBody\"]>[\"content\"][\"application/json\"];\n\n/** Request body for `sb.billing.invoices.items.create()`. */\nexport type CreateInvoiceItemBody = NonNullable<NonNullable<operations[\"createInvoiceItem\"][\"requestBody\"]>[\"content\"][\"application/json\"][\"invoiceItem\"]>;\n\n/** Request body for `sb.billing.invoices.issue()`. */\nexport type IssueInvoiceBody = NonNullable<NonNullable<operations[\"issueInvoice\"][\"requestBody\"]>[\"content\"][\"application/json\"][\"skipAutoCharge\"]>;\n\n/** Request body for `sb.billing.invoices.pay()`. */\nexport type PayInvoiceBody = NonNullable<operations[\"payInvoice\"][\"requestBody\"]>[\"content\"][\"application/json\"];\n\n/** Request body for `sb.billing.creditNotes.preview()`. */\nexport type PreviewCreditNoteBody = NonNullable<NonNullable<operations[\"previewCreditNote\"][\"requestBody\"]>[\"content\"][\"application/json\"][\"creditNote\"]>;\n\n/** Request body for `sb.billing.creditNotes.update()`. */\nexport type UpdateCreditNoteBody = NonNullable<NonNullable<operations[\"updateCreditNote\"][\"requestBody\"]>[\"content\"][\"application/json\"][\"creditNote\"]>;\n\n/** Request body for `sb.billing.invoices.update()`. */\nexport type UpdateInvoiceBody = NonNullable<NonNullable<operations[\"updateInvoice\"][\"requestBody\"]>[\"content\"][\"application/json\"][\"invoice\"]>;\n\n/** Request body for `sb.billing.invoices.items.update()`. */\nexport type UpdateInvoiceItemBody = NonNullable<NonNullable<operations[\"updateInvoiceItem\"][\"requestBody\"]>[\"content\"][\"application/json\"][\"invoiceItem\"]>;\n\nexport function createBilling(client: Client<paths>, defaults: SpacebringDefaults) {\n return {\n creditNotes: {\n /**\n * Retrieve credit notes\n *\n * Retrieve all credit notes for a specific invoice or location. One of invoiceRef or locationRef is required.\n */\n async list(query?: GetCreditNotesQuery, options?: SpacebringRequestOptions): Promise<{ creditNotes: CreditNote[]; nextPageToken?: string; searchQueryNext?: string }> {\n return unwrap(await client.GET(\"/billing/credit_notes/v1\", { params: { query }, signal: options?.signal }), \"GET /billing/credit_notes/v1\");\n },\n /**\n * Retrieve credit notes — iterates every item across all pages.\n *\n * Retrieve all credit notes for a specific invoice or location. One of invoiceRef or locationRef is required.\n */\n iterate(query?: Omit<GetCreditNotesQuery, \"nextPageToken\">, options?: SpacebringRequestOptions): AsyncGenerator<CreditNote, void, undefined> {\n return paginate(\n async (nextPageToken: string | undefined) =>\n unwrap(await client.GET(\"/billing/credit_notes/v1\", { params: { query: { ...query, nextPageToken } }, signal: options?.signal }), \"GET /billing/credit_notes/v1\"),\n \"creditNotes\",\n );\n },\n /**\n * Retrieve a credit note\n *\n * Retrieve a specific credit note.\n *\n * @param id The id of the credit note\n * @param options Request options (abort signal).\n */\n async get(id: string, options?: SpacebringRequestOptions): Promise<CreditNote> {\n return unwrapProp(await client.GET(\"/billing/credit_notes/v1/{id}\", { params: { path: { id } }, signal: options?.signal }), \"creditNote\", \"GET /billing/credit_notes/v1/{id}\");\n },\n /**\n * Create a credit note\n *\n * Create a credit note for an invoice.\n */\n async create(creditNote: CreateCreditNoteBody, options?: SpacebringRequestOptions): Promise<CreditNote> {\n return unwrapProp(await client.POST(\"/billing/credit_notes/v1\", { body: { creditNote }, signal: options?.signal }), \"creditNote\", \"POST /billing/credit_notes/v1\");\n },\n /**\n * Update a credit note\n *\n * @param id The id of the credit note\n * @param creditNote The `creditNote` payload.\n * @param options Request options (abort signal).\n */\n async update(id: string, creditNote: UpdateCreditNoteBody, options?: SpacebringRequestOptions): Promise<undefined> {\n return unwrap(await client.PATCH(\"/billing/credit_notes/v1/{id}\", { params: { path: { id } }, body: { creditNote }, signal: options?.signal }), \"PATCH /billing/credit_notes/v1/{id}\");\n },\n /**\n * Preview a credit note\n *\n * Preview a credit note for an invoice without creating it.\n */\n async preview(creditNote: PreviewCreditNoteBody, options?: SpacebringRequestOptions): Promise<CreditNote> {\n return unwrapProp(await client.POST(\"/billing/credit_notes/v1/preview\", { body: { creditNote }, signal: options?.signal }), \"creditNote\", \"POST /billing/credit_notes/v1/preview\");\n },\n },\n invoices: {\n /**\n * Retrieve invoices\n *\n * Retrieve all invoices based on certain parameters.\n */\n async list(query?: GetInvoicesQuery, options?: SpacebringRequestOptions): Promise<{ invoices: Invoice[]; nextPageToken?: string; searchQueryNext?: string }> {\n return unwrap(await client.GET(\"/billing/invoices/v1\", { params: { query }, signal: options?.signal }), \"GET /billing/invoices/v1\");\n },\n /**\n * Retrieve invoices — iterates every item across all pages.\n *\n * Retrieve all invoices based on certain parameters.\n */\n iterate(query?: Omit<GetInvoicesQuery, \"nextPageToken\">, options?: SpacebringRequestOptions): AsyncGenerator<Invoice, void, undefined> {\n return paginate(\n async (nextPageToken: string | undefined) =>\n unwrap(await client.GET(\"/billing/invoices/v1\", { params: { query: { ...query, nextPageToken } }, signal: options?.signal }), \"GET /billing/invoices/v1\"),\n \"invoices\",\n );\n },\n /**\n * Retrieve an invoice\n *\n * Retrieve a certain invoice.\n *\n * @param invoiceId The id of the invoice.\n * @param options Request options (abort signal).\n */\n async get(invoiceId: string, options?: SpacebringRequestOptions): Promise<Invoice> {\n return unwrapProp(await client.GET(\"/billing/invoices/v1/{invoiceId}\", { params: { path: { invoiceId } }, signal: options?.signal }), \"invoice\", \"GET /billing/invoices/v1/{invoiceId}\");\n },\n /**\n * Create an invoice\n *\n * Create an invoice for a member or a company.\n */\n async create(body: CreateInvoiceBody, options?: SpacebringRequestOptions): Promise<Invoice> {\n return unwrapProp(await client.POST(\"/billing/invoices/v1\", { body, signal: options?.signal }), \"invoice\", \"POST /billing/invoices/v1\");\n },\n /**\n * Update an invoice\n *\n * Update a draft invoice.\n *\n * @param invoiceId The id of an invoice.\n * @param invoice The `invoice` payload.\n * @param options Request options (abort signal).\n */\n async update(invoiceId: string, invoice: UpdateInvoiceBody, options?: SpacebringRequestOptions): Promise<undefined> {\n return unwrap(await client.PATCH(\"/billing/invoices/v1/{invoiceId}\", { params: { path: { invoiceId } }, body: { invoice }, signal: options?.signal }), \"PATCH /billing/invoices/v1/{invoiceId}\");\n },\n /**\n * Delete an invoice\n *\n * Delete a draft invoice.\n *\n * @param invoiceId The id of an invoice.\n * @param options Request options (abort signal).\n */\n async delete(invoiceId: string, options?: SpacebringRequestOptions): Promise<undefined> {\n return unwrap(await client.DELETE(\"/billing/invoices/v1/{invoiceId}\", { params: { path: { invoiceId } }, signal: options?.signal }), \"DELETE /billing/invoices/v1/{invoiceId}\");\n },\n /**\n * Cancel a payment\n *\n * Cancel a payment on an invoice.\n *\n * @param invoiceId The id of an invoice.\n * @param options Request options (abort signal).\n */\n async cancelPayment(invoiceId: string, options?: SpacebringRequestOptions): Promise<undefined> {\n return unwrap(await client.POST(\"/billing/invoices/v1/{invoiceId}/cancel_payment\", { params: { path: { invoiceId } }, signal: options?.signal }), \"POST /billing/invoices/v1/{invoiceId}/cancel_payment\");\n },\n /**\n * Duplicate an invoice\n *\n * Duplicate an invoice, creating a new draft invoice with the same items.\n *\n * @param invoiceId The id of an invoice.\n * @param options Request options (abort signal).\n */\n async duplicate(invoiceId: string, options?: SpacebringRequestOptions): Promise<Invoice> {\n return unwrapProp(await client.POST(\"/billing/invoices/v1/{invoiceId}/duplicate\", { params: { path: { invoiceId } }, signal: options?.signal }), \"invoice\", \"POST /billing/invoices/v1/{invoiceId}/duplicate\");\n },\n /**\n * List invoice items\n *\n * List all items for a specific invoice.\n *\n * @param invoiceId The id of an invoice.\n * @param options Request options (abort signal).\n */\n async getItems(invoiceId: string, options?: SpacebringRequestOptions): Promise<{ invoice?: Invoice; invoiceItems?: InvoiceItem[] }> {\n return unwrap(await client.GET(\"/billing/invoices/v1/{invoiceId}/items\", { params: { path: { invoiceId } }, signal: options?.signal }), \"GET /billing/invoices/v1/{invoiceId}/items\");\n },\n /**\n * Retrieve the upcoming invoice\n *\n * Retrieve the upcoming invoice preview for a membership or subscription.\n */\n async getUpcoming(query?: GetUpcomingInvoiceQuery, options?: SpacebringRequestOptions): Promise<{ invoice?: Invoice; invoiceItems?: InvoiceItem[]; upcomingItems?: UpcomingItem[] }> {\n return unwrap(await client.GET(\"/billing/invoices/v1/upcoming\", { params: { query }, signal: options?.signal }), \"GET /billing/invoices/v1/upcoming\");\n },\n /**\n * Issue an invoice\n *\n * Issue (finalize) a draft invoice, making it ready for payment.\n *\n * @param invoiceId The id of an invoice.\n * @param skipAutoCharge The `skipAutoCharge` payload.\n * @param options Request options (abort signal).\n */\n async issue(invoiceId: string, skipAutoCharge?: IssueInvoiceBody, options?: SpacebringRequestOptions): Promise<{ invoice?: Invoice; invoiceItems?: InvoiceItem[] }> {\n return unwrap(await client.POST(\"/billing/invoices/v1/{invoiceId}/issue\", { params: { path: { invoiceId } }, body: skipAutoCharge === undefined ? undefined : { skipAutoCharge }, signal: options?.signal }), \"POST /billing/invoices/v1/{invoiceId}/issue\");\n },\n /**\n * Pay an invoice\n *\n * Mark an invoice as paid by `External Payment`.\n *\n * @param invoiceId The id of an invoice\n * @param body Request body.\n * @param options Request options (abort signal).\n */\n async pay(invoiceId: string, body: PayInvoiceBody, options?: SpacebringRequestOptions): Promise<{ invoice?: Invoice; payment?: Payment }> {\n return unwrap(await client.POST(\"/billing/invoices/v1/{invoiceId}/pay\", { params: { path: { invoiceId } }, body, signal: options?.signal }), \"POST /billing/invoices/v1/{invoiceId}/pay\");\n },\n /**\n * Resend an invoice\n *\n * Resend an issued invoice notification to the customer.\n *\n * @param invoiceId The id of an invoice.\n * @param options Request options (abort signal).\n */\n async resend(invoiceId: string, options?: SpacebringRequestOptions): Promise<undefined> {\n return unwrap(await client.POST(\"/billing/invoices/v1/{invoiceId}/resend\", { params: { path: { invoiceId } }, signal: options?.signal }), \"POST /billing/invoices/v1/{invoiceId}/resend\");\n },\n /**\n * Void an invoice\n *\n * Void an issued invoice.\n *\n * @param invoiceId The id of an invoice.\n * @param options Request options (abort signal).\n */\n async void(invoiceId: string, options?: SpacebringRequestOptions): Promise<undefined> {\n return unwrap(await client.PATCH(\"/billing/invoices/v1/{invoiceId}/void\", { params: { path: { invoiceId } }, signal: options?.signal }), \"PATCH /billing/invoices/v1/{invoiceId}/void\");\n },\n items: {\n /**\n * List invoice items\n *\n * List invoice items filtered customer, location, type, status, or date range. Status and issue date filters match items connected to an invoice.\n */\n async list(query?: ListInvoiceItemsQuery, options?: SpacebringRequestOptions): Promise<{ invoiceItems: InvoiceItem[]; nextPageToken?: string; searchQueryNext?: string }> {\n return unwrap(await client.GET(\"/billing/invoices/v1/items\", { params: { query }, signal: options?.signal }), \"GET /billing/invoices/v1/items\");\n },\n /**\n * List invoice items — iterates every item across all pages.\n *\n * List invoice items filtered customer, location, type, status, or date range. Status and issue date filters match items connected to an invoice.\n */\n iterate(query?: Omit<ListInvoiceItemsQuery, \"nextPageToken\">, options?: SpacebringRequestOptions): AsyncGenerator<InvoiceItem, void, undefined> {\n return paginate(\n async (nextPageToken: string | undefined) =>\n unwrap(await client.GET(\"/billing/invoices/v1/items\", { params: { query: { ...query, nextPageToken } }, signal: options?.signal }), \"GET /billing/invoices/v1/items\"),\n \"invoiceItems\",\n );\n },\n /**\n * Retrieve an invoice item\n *\n * Retrieve a specific invoice item.\n *\n * @param id The id of an invoice item.\n * @param options Request options (abort signal).\n */\n async get(id: string, options?: SpacebringRequestOptions): Promise<InvoiceItem> {\n return unwrapProp(await client.GET(\"/billing/invoices/v1/items/{id}\", { params: { path: { id } }, signal: options?.signal }), \"invoiceItem\", \"GET /billing/invoices/v1/items/{id}\");\n },\n /**\n * Create an invoice item\n *\n * Create an item in an invoice.\n */\n async create(invoiceItem: CreateInvoiceItemBody, options?: SpacebringRequestOptions): Promise<InvoiceItem> {\n return unwrapProp(await client.POST(\"/billing/invoices/v1/items\", { body: { invoiceItem }, signal: options?.signal }), \"invoiceItem\", \"POST /billing/invoices/v1/items\");\n },\n /**\n * Update an invoice item\n *\n * Update an invoice item on a draft invoice.\n *\n * @param id The id of an invoice item.\n * @param invoiceItem The `invoiceItem` payload.\n * @param options Request options (abort signal).\n */\n async update(id: string, invoiceItem: UpdateInvoiceItemBody, options?: SpacebringRequestOptions): Promise<undefined> {\n return unwrap(await client.PATCH(\"/billing/invoices/v1/items/{id}\", { params: { path: { id } }, body: { invoiceItem }, signal: options?.signal }), \"PATCH /billing/invoices/v1/items/{id}\");\n },\n /**\n * Delete an invoice item\n *\n * Delete an invoice item from a draft invoice.\n *\n * @param id The id of an invoice item.\n * @param options Request options (abort signal).\n */\n async delete(id: string, options?: SpacebringRequestOptions): Promise<undefined> {\n return unwrap(await client.DELETE(\"/billing/invoices/v1/items/{id}\", { params: { path: { id } }, signal: options?.signal }), \"DELETE /billing/invoices/v1/items/{id}\");\n },\n /** List upcoming invoice items */\n async getUpcoming(query?: GetUpcomingInvoiceItemsQuery, options?: SpacebringRequestOptions): Promise<InvoiceItem[]> {\n return unwrapProp(await client.GET(\"/billing/invoices/v1/items/upcoming\", { params: { query }, signal: options?.signal }), \"invoiceItems\", \"GET /billing/invoices/v1/items/upcoming\");\n },\n },\n },\n };\n}\n","// AUTO-GENERATED by codegen/generate-facade.ts — DO NOT EDIT.\n// Regenerate with `npm run generate:facade`.\nimport type { Client } from \"openapi-fetch\";\nimport { paginate, unwrap, unwrapProp, type SpacebringDefaults, type SpacebringRequestOptions } from \"../../core.js\";\nimport type { components, operations, paths } from \"../schema.js\";\n\n/** A Company entity as returned by the Spacebring API. */\nexport type Company = NonNullable<components[\"schemas\"][\"company\"]>;\n\n/** A Membership entity as returned by the Spacebring API. */\nexport type Membership = NonNullable<components[\"schemas\"][\"membership\"]>;\n\n/** Query parameters for `sb.community.companies.list()`. */\nexport interface GetCompaniesQuery {\n /** The id of the location. */\n locationRef: string;\n /** The number of items to return */\n limit?: number;\n /** Token to retrieve the next page of results. */\n nextPageToken?: string;\n /** Filter by company's title */\n title?: string;\n /** Filter by types. Pass them as comma separated values. */\n types?: \"member\" | \"nonmember\";\n}\n\n/** Query parameters for `sb.community.memberships.listDeleted()`. */\nexport interface GetMembershipsDeletedQuery {\n /** The id of the location. */\n locationRef: string;\n /** The number of items to return */\n limit?: number;\n /** Filter by user's email */\n userEmail?: string;\n /** Token to retrieve the next page of results. */\n nextPageToken?: string;\n}\n\n/** Query parameters for `sb.community.memberships.list()`. */\nexport interface GetMembershipsQuery {\n /** Filter by company reference */\n companyRef?: string;\n /** The id of the location. */\n locationRef: string;\n /** The number of items to return */\n limit?: number;\n /** Token to retrieve the next page of results. */\n nextPageToken?: string;\n /** Filter by user's email */\n userEmail?: string;\n /** The id of the user */\n userRef?: string;\n /** use requested to get all membership requests */\n status?: \"requested\";\n /** Filter by types. Pass them as comma separated values. */\n types?: \"member\" | \"nonmember\";\n}\n\n/** Request body for `sb.community.companies.create()`. */\nexport type CreateCompanyBody = NonNullable<NonNullable<operations[\"createCompany\"][\"requestBody\"]>[\"content\"][\"application/json\"][\"company\"]>;\n\n/** Request body for `sb.community.memberships.create()`. */\nexport type CreateMembershipBody = NonNullable<operations[\"createMembership\"][\"requestBody\"]>[\"content\"][\"application/json\"];\n\n/** Request body for `sb.community.companies.update()`. */\nexport type UpdateCompanyBody = NonNullable<NonNullable<operations[\"updateCompany\"][\"requestBody\"]>[\"content\"][\"application/json\"][\"company\"]>;\n\n/** Request body for `sb.community.memberships.update()`. */\nexport type UpdateMembershipBody = NonNullable<NonNullable<operations[\"updateMembership\"][\"requestBody\"]>[\"content\"][\"application/json\"][\"membership\"]>;\n\nexport function createCommunity(client: Client<paths>, defaults: SpacebringDefaults) {\n return {\n companies: {\n /**\n * Retrieve companies\n *\n * Retrieve all companies.\n */\n async list(query: GetCompaniesQuery, options?: SpacebringRequestOptions): Promise<{ companies?: Company[]; nextPageToken?: string }> {\n return unwrap(await client.GET(\"/community/companies/v1\", { params: { query }, signal: options?.signal }), \"GET /community/companies/v1\");\n },\n /**\n * Retrieve companies — iterates every item across all pages.\n *\n * Retrieve all companies.\n */\n iterate(query: Omit<GetCompaniesQuery, \"nextPageToken\">, options?: SpacebringRequestOptions): AsyncGenerator<Company, void, undefined> {\n return paginate(\n async (nextPageToken: string | undefined) =>\n unwrap(await client.GET(\"/community/companies/v1\", { params: { query: { ...query, nextPageToken } }, signal: options?.signal }), \"GET /community/companies/v1\"),\n \"companies\",\n );\n },\n /**\n * Retrieve a company\n *\n * Retrieve a certain company.\n *\n * @param id The id of company.\n * @param options Request options (abort signal).\n */\n async get(id: string, options?: SpacebringRequestOptions): Promise<Company> {\n return unwrapProp(await client.GET(\"/community/companies/v1/{id}\", { params: { path: { id } }, signal: options?.signal }), \"company\", \"GET /community/companies/v1/{id}\");\n },\n /** Create a company */\n async create(company: CreateCompanyBody, options?: SpacebringRequestOptions): Promise<Company> {\n return unwrapProp(await client.POST(\"/community/companies/v1\", { body: { company }, signal: options?.signal }), \"company\", \"POST /community/companies/v1\");\n },\n /**\n * Update a company\n *\n * Update a certain company.\n *\n * @param id The id of the company.\n * @param company The `company` payload.\n * @param options Request options (abort signal).\n */\n async update(id: string, company: UpdateCompanyBody, options?: SpacebringRequestOptions): Promise<Company> {\n return unwrapProp(await client.PUT(\"/community/companies/v1/{id}\", { params: { path: { id } }, body: { company }, signal: options?.signal }), \"company\", \"PUT /community/companies/v1/{id}\");\n },\n },\n memberships: {\n /**\n * Retrieve memberships\n *\n * Retrieve all memberships.\n */\n async list(query: GetMembershipsQuery, options?: SpacebringRequestOptions): Promise<{ memberships?: Membership[]; nextPageToken?: string; searchQueryNext?: string }> {\n return unwrap(await client.GET(\"/community/memberships/v1\", { params: { query }, signal: options?.signal }), \"GET /community/memberships/v1\");\n },\n /**\n * Retrieve memberships — iterates every item across all pages.\n *\n * Retrieve all memberships.\n */\n iterate(query: Omit<GetMembershipsQuery, \"nextPageToken\">, options?: SpacebringRequestOptions): AsyncGenerator<Membership, void, undefined> {\n return paginate(\n async (nextPageToken: string | undefined) =>\n unwrap(await client.GET(\"/community/memberships/v1\", { params: { query: { ...query, nextPageToken } }, signal: options?.signal }), \"GET /community/memberships/v1\"),\n \"memberships\",\n );\n },\n /**\n * Retrieve a membership\n *\n * Retrieve a certain membership.\n *\n * @param id The id of membership.\n * @param options Request options (abort signal).\n */\n async get(id: string, options?: SpacebringRequestOptions): Promise<Membership> {\n return unwrapProp(await client.GET(\"/community/memberships/v1/{id}\", { params: { path: { id } }, signal: options?.signal }), \"membership\", \"GET /community/memberships/v1/{id}\");\n },\n /**\n * Create a membership\n *\n * Create a membership and send an email invitation to join if type is member.\n */\n async create(body: CreateMembershipBody, options?: SpacebringRequestOptions): Promise<Membership> {\n return unwrapProp(await client.POST(\"/community/memberships/v1\", { body, signal: options?.signal }), \"membership\", \"POST /community/memberships/v1\");\n },\n /**\n * Update a membership\n *\n * Update a certain membership.\n *\n * @param id The id of the membership.\n * @param membership The `membership` payload.\n * @param options Request options (abort signal).\n */\n async update(id: number, membership: UpdateMembershipBody, options?: SpacebringRequestOptions): Promise<Membership> {\n return unwrapProp(await client.PUT(\"/community/memberships/v1/{id}\", { params: { path: { id } }, body: { membership }, signal: options?.signal }), \"membership\", \"PUT /community/memberships/v1/{id}\");\n },\n /**\n * Delete a membership\n *\n * Delete a certain membership.\n *\n * @param id The id of the membership.\n * @param options Request options (abort signal).\n */\n async delete(id: string, options?: SpacebringRequestOptions): Promise<undefined> {\n return unwrap(await client.DELETE(\"/community/memberships/v1/{id}\", { params: { path: { id } }, signal: options?.signal }), \"DELETE /community/memberships/v1/{id}\");\n },\n /**\n * Retrieve deleted memberships — iterates every item across all pages.\n *\n * Retrieve all deleted memberships.\n */\n iterateDeleted(query: Omit<GetMembershipsDeletedQuery, \"nextPageToken\">, options?: SpacebringRequestOptions): AsyncGenerator<Membership, void, undefined> {\n return paginate(\n async (nextPageToken: string | undefined) =>\n unwrap(await client.GET(\"/community/memberships/v1/deleted\", { params: { query: { ...query, nextPageToken } }, signal: options?.signal }), \"GET /community/memberships/v1/deleted\"),\n \"memberships\",\n );\n },\n /**\n * Retrieve deleted memberships\n *\n * Retrieve all deleted memberships.\n */\n async listDeleted(query: GetMembershipsDeletedQuery, options?: SpacebringRequestOptions): Promise<{ memberships?: Membership[]; nextPageToken?: string }> {\n return unwrap(await client.GET(\"/community/memberships/v1/deleted\", { params: { query }, signal: options?.signal }), \"GET /community/memberships/v1/deleted\");\n },\n },\n };\n}\n","// AUTO-GENERATED by codegen/generate-facade.ts — DO NOT EDIT.\n// Regenerate with `npm run generate:facade`.\nimport type { Client } from \"openapi-fetch\";\nimport { paginate, unwrap, unwrapProp, type SpacebringDefaults, type SpacebringRequestOptions } from \"../../core.js\";\nimport type { operations, paths } from \"../schema.js\";\n\n/** A Contract entity as returned by the Spacebring API. */\nexport type Contract = NonNullable<operations[\"getContract\"][\"responses\"][200][\"content\"][\"application/json\"][\"contract\"]>;\n\n/** A Template entity as returned by the Spacebring API. */\nexport type Template = NonNullable<operations[\"getTemplate\"][\"responses\"][200][\"content\"][\"application/json\"][\"template\"]>;\n\n/** Query parameters for `sb.contracts.list()`. */\nexport interface GetContractsQuery {\n /** Filter contracts created on or after this date (ISO 8601). Use with createDate[lte] for a range. */\n \"createDate[gte]\"?: string;\n /** Filter contracts created on or before this date (ISO 8601). Use with createDate[gte] for a range. */\n \"createDate[lte]\"?: string;\n /** UUID of the customer (membership or company). Provide customerRef or locationRef; when set, returns only that customer's contracts. */\n customerRef?: string;\n /** Maximum number of contracts per page. Defaults to 25 when omitted or invalid; values above 100 are capped at 100. */\n limit?: number;\n /** UUID of the location. Provide customerRef or locationRef; when set, returns contracts in that location. */\n locationRef?: string;\n /** Pagination token from nextPageToken in a previous response. Keep the same filters when fetching the next page. */\n nextPageToken?: string;\n /** Case-insensitive search by contract title. Requires customerRef or locationRef to scope the search. */\n q?: string;\n /** Filter by contract status. Comma-separated values, e.g. `draft,issued`.\n\n Supported values:\n - **draft** — created but not sent\n - **issued** — sent, awaiting signature\n - **signed** — active\n - **declined** — rejected\n - **terminated** — cancelled after signing */\n status?: string;\n}\n\n/** Query parameters for `sb.contracts.templates.list()`. */\nexport interface GetTemplatesQuery {\n /** Maximum number of templates per page. Defaults to 25 when omitted or invalid; values above 100 are capped at 100. */\n limit?: number;\n /** UUID of the location. */\n locationRef: string;\n /** Pagination token from nextPageToken in a previous response. Keep the same filters when fetching the next page. */\n nextPageToken?: string;\n}\n\n/** Request body for `sb.contracts.create()`. */\nexport type CreateContractBody = NonNullable<NonNullable<operations[\"createContract\"][\"requestBody\"]>[\"content\"][\"application/json\"][\"contract\"]>;\n\n/** Request body for `sb.contracts.templates.create()`. */\nexport type CreateTemplateBody = NonNullable<NonNullable<operations[\"createTemplate\"][\"requestBody\"]>[\"content\"][\"application/json\"][\"template\"]>;\n\n/** Request body for `sb.contracts.issue()`. */\nexport type IssueContractBody = NonNullable<NonNullable<operations[\"issueContract\"][\"requestBody\"]>[\"content\"][\"application/json\"][\"signatureMethod\"]>;\n\n/** Request body for `sb.contracts.terminate()`. */\nexport type TerminateContractBody = NonNullable<NonNullable<operations[\"terminateContract\"][\"requestBody\"]>[\"content\"][\"application/json\"][\"reason\"]>;\n\n/** Request body for `sb.contracts.update()`. */\nexport type UpdateContractBody = NonNullable<NonNullable<operations[\"updateContract\"][\"requestBody\"]>[\"content\"][\"application/json\"][\"contract\"]>;\n\n/** Request body for `sb.contracts.templates.update()`. */\nexport type UpdateTemplateBody = NonNullable<NonNullable<operations[\"updateTemplate\"][\"requestBody\"]>[\"content\"][\"application/json\"][\"template\"]>;\n\nexport function createContracts(client: Client<paths>, defaults: SpacebringDefaults) {\n return {\n /**\n * Retrieve contracts\n *\n * Retrieve all contracts in the location.\n */\n async list(query?: GetContractsQuery, options?: SpacebringRequestOptions): Promise<{ contracts: Contract[]; nextPageToken?: string; searchQueryNext?: string }> {\n return unwrap(await client.GET(\"/contracts/v1\", { params: { query }, signal: options?.signal }), \"GET /contracts/v1\");\n },\n /**\n * Retrieve contracts — iterates every item across all pages.\n *\n * Retrieve all contracts in the location.\n */\n iterate(query?: Omit<GetContractsQuery, \"nextPageToken\">, options?: SpacebringRequestOptions): AsyncGenerator<Contract, void, undefined> {\n return paginate(\n async (nextPageToken: string | undefined) =>\n unwrap(await client.GET(\"/contracts/v1\", { params: { query: { ...query, nextPageToken } }, signal: options?.signal }), \"GET /contracts/v1\"),\n \"contracts\",\n );\n },\n /**\n * Get a contract\n *\n * @param contractId The id of the contract.\n * @param options Request options (abort signal).\n */\n async get(contractId: string, options?: SpacebringRequestOptions): Promise<Contract> {\n return unwrapProp(await client.GET(\"/contracts/v1/{contractId}\", { params: { path: { contractId } }, signal: options?.signal }), \"contract\", \"GET /contracts/v1/{contractId}\");\n },\n /** Create a contract */\n async create(contract: CreateContractBody, options?: SpacebringRequestOptions): Promise<Contract> {\n return unwrapProp(await client.POST(\"/contracts/v1\", { body: { contract }, signal: options?.signal }), \"contract\", \"POST /contracts/v1\");\n },\n /**\n * Update a contract\n *\n * @param contractId The id of the contract.\n * @param contract The `contract` payload.\n * @param options Request options (abort signal).\n */\n async update(contractId: string, contract: UpdateContractBody, options?: SpacebringRequestOptions): Promise<undefined> {\n return unwrap(await client.PATCH(\"/contracts/v1/{contractId}\", { params: { path: { contractId } }, body: { contract }, signal: options?.signal }), \"PATCH /contracts/v1/{contractId}\");\n },\n /**\n * Delete a contract\n *\n * @param contractId The id of the contract.\n * @param options Request options (abort signal).\n */\n async delete(contractId: string, options?: SpacebringRequestOptions): Promise<undefined> {\n return unwrap(await client.DELETE(\"/contracts/v1/{contractId}\", { params: { path: { contractId } }, signal: options?.signal }), \"DELETE /contracts/v1/{contractId}\");\n },\n /**\n * Decline a contract\n *\n * Mark a contract signer as declined. Declining also declines the contract.\n *\n * @param contractId The id of the contract.\n * @param signerId The id of the contract signer.\n * @param options Request options (abort signal).\n */\n async declineContract(contractId: string, signerId: string, options?: SpacebringRequestOptions): Promise<undefined> {\n return unwrap(await client.PUT(\"/contracts/v1/{contractId}/signers/{signerId}/decline\", { params: { path: { contractId, signerId } }, signal: options?.signal }), \"PUT /contracts/v1/{contractId}/signers/{signerId}/decline\");\n },\n /**\n * Issue a contract\n *\n * @param contractId The id of the contract.\n * @param signatureMethod The `signatureMethod` payload.\n * @param options Request options (abort signal).\n */\n async issue(contractId: string, signatureMethod: IssueContractBody, options?: SpacebringRequestOptions): Promise<Contract> {\n return unwrapProp(await client.POST(\"/contracts/v1/{contractId}/issue\", { params: { path: { contractId } }, body: { signatureMethod }, signal: options?.signal }), \"contract\", \"POST /contracts/v1/{contractId}/issue\");\n },\n /**\n * Resend a contract\n *\n * Resend the signature request email to the next pending signer of an issued eSignature contract.\n *\n * @param contractId The id of the contract.\n * @param options Request options (abort signal).\n */\n async resend(contractId: string, options?: SpacebringRequestOptions): Promise<undefined> {\n return unwrap(await client.POST(\"/contracts/v1/{contractId}/resend\", { params: { path: { contractId } }, signal: options?.signal }), \"POST /contracts/v1/{contractId}/resend\");\n },\n /**\n * Sign a contract\n *\n * Mark a contract signer as signed. When all signers have signed, the contract becomes signed.\n *\n * @param contractId The id of the contract.\n * @param signerId The id of the contract signer.\n * @param options Request options (abort signal).\n */\n async signContract(contractId: string, signerId: string, options?: SpacebringRequestOptions): Promise<undefined> {\n return unwrap(await client.PUT(\"/contracts/v1/{contractId}/signers/{signerId}/sign\", { params: { path: { contractId, signerId } }, signal: options?.signal }), \"PUT /contracts/v1/{contractId}/signers/{signerId}/sign\");\n },\n /**\n * Terminate a contract\n *\n * @param contractId The id of the contract.\n * @param reason The `reason` payload.\n * @param options Request options (abort signal).\n */\n async terminate(contractId: string, reason: TerminateContractBody, options?: SpacebringRequestOptions): Promise<undefined> {\n return unwrap(await client.PATCH(\"/contracts/v1/{contractId}/terminate\", { params: { path: { contractId } }, body: { reason }, signal: options?.signal }), \"PATCH /contracts/v1/{contractId}/terminate\");\n },\n templates: {\n /**\n * Retrieve templates\n *\n * Retrieve all contract templates in the location.\n */\n async list(query: GetTemplatesQuery, options?: SpacebringRequestOptions): Promise<{ nextPageToken?: string; searchQueryNext?: string; templates: Template[] }> {\n return unwrap(await client.GET(\"/contracts/templates/v1\", { params: { query }, signal: options?.signal }), \"GET /contracts/templates/v1\");\n },\n /**\n * Retrieve templates — iterates every item across all pages.\n *\n * Retrieve all contract templates in the location.\n */\n iterate(query: Omit<GetTemplatesQuery, \"nextPageToken\">, options?: SpacebringRequestOptions): AsyncGenerator<Template, void, undefined> {\n return paginate(\n async (nextPageToken: string | undefined) =>\n unwrap(await client.GET(\"/contracts/templates/v1\", { params: { query: { ...query, nextPageToken } }, signal: options?.signal }), \"GET /contracts/templates/v1\"),\n \"templates\",\n );\n },\n /**\n * Retrieve a template\n *\n * Retrieve a contract template.\n *\n * @param templateId The id of the template.\n * @param options Request options (abort signal).\n */\n async get(templateId: string, options?: SpacebringRequestOptions): Promise<Template> {\n return unwrapProp(await client.GET(\"/contracts/templates/v1/{templateId}\", { params: { path: { templateId } }, signal: options?.signal }), \"template\", \"GET /contracts/templates/v1/{templateId}\");\n },\n /**\n * Create a template\n *\n * Create a contract template from an uploaded file.\n */\n async create(template: CreateTemplateBody, options?: SpacebringRequestOptions): Promise<Template> {\n return unwrapProp(await client.POST(\"/contracts/templates/v1\", { body: { template }, signal: options?.signal }), \"template\", \"POST /contracts/templates/v1\");\n },\n /**\n * Update a template\n *\n * Update a contract template.\n *\n * @param templateId The id of the template.\n * @param template The `template` payload.\n * @param options Request options (abort signal).\n */\n async update(templateId: string, template: UpdateTemplateBody, options?: SpacebringRequestOptions): Promise<undefined> {\n return unwrap(await client.PATCH(\"/contracts/templates/v1/{templateId}\", { params: { path: { templateId } }, body: { template }, signal: options?.signal }), \"PATCH /contracts/templates/v1/{templateId}\");\n },\n /**\n * Delete a template\n *\n * Delete a contract template.\n *\n * @param templateId The id of the template.\n * @param options Request options (abort signal).\n */\n async delete(templateId: string, options?: SpacebringRequestOptions): Promise<undefined> {\n return unwrap(await client.DELETE(\"/contracts/templates/v1/{templateId}\", { params: { path: { templateId } }, signal: options?.signal }), \"DELETE /contracts/templates/v1/{templateId}\");\n },\n /**\n * Duplicate a template\n *\n * Duplicate a contract template, creating a copy with the same title and file.\n *\n * @param templateId The id of the template.\n * @param options Request options (abort signal).\n */\n async duplicate(templateId: string, options?: SpacebringRequestOptions): Promise<Template> {\n return unwrapProp(await client.POST(\"/contracts/templates/v1/{templateId}/duplicate\", { params: { path: { templateId } }, signal: options?.signal }), \"template\", \"POST /contracts/templates/v1/{templateId}/duplicate\");\n },\n },\n };\n}\n","// AUTO-GENERATED by codegen/generate-facade.ts — DO NOT EDIT.\n// Regenerate with `npm run generate:facade`.\nimport type { Client } from \"openapi-fetch\";\nimport { paginate, unwrap, unwrapProp, type SpacebringDefaults, type SpacebringRequestOptions } from \"../../core.js\";\nimport type { components, operations, paths } from \"../schema.js\";\n\n/** A Coupon entity as returned by the Spacebring API. */\nexport type Coupon = NonNullable<components[\"schemas\"][\"coupon\"]>;\n\n/** A Promocode entity as returned by the Spacebring API. */\nexport type Promocode = NonNullable<components[\"schemas\"][\"promocode\"]>;\n\n/** A Redemption entity as returned by the Spacebring API. */\nexport type Redemption = NonNullable<components[\"schemas\"][\"discountRedemption\"]>;\n\n/** Query parameters for `sb.discounts.coupons.list()`. */\nexport interface GetCouponsQuery {\n /** The id of the location */\n locationRef: string;\n /** Comma-separated list of coupon types to filter by */\n type?: \"creditPackages\" | \"desks\" | \"equipment\" | \"events\" | \"products\" | \"rooms\" | \"subscriptionItems\";\n /** The number of coupons to retrieve. Default: 25 */\n limit?: number;\n /** Token to retrieve the next page of results. */\n nextPageToken?: string;\n}\n\n/** Query parameters for `sb.discounts.listRedemptions()`. */\nexport interface GetDiscountRedemptionsQuery {\n /** The id of the coupon. Either couponRef or promocodeRef is required */\n couponRef?: string;\n /** The id of the promocode. Either couponRef or promocodeRef is required */\n promocodeRef?: string;\n /** The number of items to return */\n limit?: number;\n /** Token to retrieve the next page of results. */\n nextPageToken?: string;\n}\n\n/** Query parameters for `sb.discounts.promocodes.list()`. */\nexport interface GetPromocodesQuery {\n /** The id of the location. At least one of locationRef or couponRef is required */\n locationRef?: string;\n /** The id of the coupon. At least one of locationRef or couponRef is required */\n couponRef?: string;\n}\n\n/** Request body for `sb.discounts.coupons.create()`. */\nexport type CreateCouponBody = NonNullable<NonNullable<operations[\"createCoupon\"][\"requestBody\"]>[\"content\"][\"application/json\"][\"coupon\"]>;\n\n/** Request body for `sb.discounts.promocodes.create()`. */\nexport type CreatePromocodeBody = NonNullable<NonNullable<operations[\"createPromocode\"][\"requestBody\"]>[\"content\"][\"application/json\"][\"promocode\"]>;\n\n/** Request body for `sb.discounts.coupons.update()`. */\nexport type UpdateCouponBody = NonNullable<NonNullable<operations[\"updateCoupon\"][\"requestBody\"]>[\"content\"][\"application/json\"][\"coupon\"]>;\n\nexport function createDiscounts(client: Client<paths>, defaults: SpacebringDefaults) {\n return {\n /**\n * Retrieve redemptions — iterates every item across all pages.\n *\n * Retrieve all discount redemptions. Either couponRef or promocodeRef is required.\n */\n iterateRedemptions(query?: Omit<GetDiscountRedemptionsQuery, \"nextPageToken\">, options?: SpacebringRequestOptions): AsyncGenerator<Redemption, void, undefined> {\n return paginate(\n async (nextPageToken: string | undefined) =>\n unwrap(await client.GET(\"/discounts/v1/redemptions\", { params: { query: { ...query, nextPageToken } }, signal: options?.signal }), \"GET /discounts/v1/redemptions\"),\n \"redemptions\",\n );\n },\n /**\n * Retrieve redemptions\n *\n * Retrieve all discount redemptions. Either couponRef or promocodeRef is required.\n */\n async listRedemptions(query?: GetDiscountRedemptionsQuery, options?: SpacebringRequestOptions): Promise<{ redemptions?: Redemption[]; nextPageToken?: string; searchQueryNext?: string }> {\n return unwrap(await client.GET(\"/discounts/v1/redemptions\", { params: { query }, signal: options?.signal }), \"GET /discounts/v1/redemptions\");\n },\n coupons: {\n /**\n * Retrieve coupons\n *\n * Retrieve all coupons in the location.\n */\n async list(query: GetCouponsQuery, options?: SpacebringRequestOptions): Promise<{ coupons?: Coupon[]; nextPageToken?: string; searchQueryNext?: string }> {\n return unwrap(await client.GET(\"/discounts/v1/coupons\", { params: { query }, signal: options?.signal }), \"GET /discounts/v1/coupons\");\n },\n /**\n * Retrieve coupons — iterates every item across all pages.\n *\n * Retrieve all coupons in the location.\n */\n iterate(query: Omit<GetCouponsQuery, \"nextPageToken\">, options?: SpacebringRequestOptions): AsyncGenerator<Coupon, void, undefined> {\n return paginate(\n async (nextPageToken: string | undefined) =>\n unwrap(await client.GET(\"/discounts/v1/coupons\", { params: { query: { ...query, nextPageToken } }, signal: options?.signal }), \"GET /discounts/v1/coupons\"),\n \"coupons\",\n );\n },\n /**\n * Get a coupon\n *\n * @param id The id of the coupon\n * @param options Request options (abort signal).\n */\n async get(id: string, options?: SpacebringRequestOptions): Promise<Coupon> {\n return unwrapProp(await client.GET(\"/discounts/v1/coupons/{id}\", { params: { path: { id } }, signal: options?.signal }), \"coupon\", \"GET /discounts/v1/coupons/{id}\");\n },\n /** Create a coupon */\n async create(coupon: CreateCouponBody, options?: SpacebringRequestOptions): Promise<Coupon> {\n return unwrapProp(await client.POST(\"/discounts/v1/coupons\", { body: { coupon }, signal: options?.signal }), \"coupon\", \"POST /discounts/v1/coupons\");\n },\n /**\n * Update a coupon\n *\n * @param id The id of the coupon\n * @param coupon The `coupon` payload.\n * @param options Request options (abort signal).\n */\n async update(id: string, coupon: UpdateCouponBody, options?: SpacebringRequestOptions): Promise<undefined> {\n return unwrap(await client.PATCH(\"/discounts/v1/coupons/{id}\", { params: { path: { id } }, body: { coupon }, signal: options?.signal }), \"PATCH /discounts/v1/coupons/{id}\");\n },\n /**\n * Delete a coupon\n *\n * @param id The id of the coupon\n * @param options Request options (abort signal).\n */\n async delete(id: string, options?: SpacebringRequestOptions): Promise<undefined> {\n return unwrap(await client.DELETE(\"/discounts/v1/coupons/{id}\", { params: { path: { id } }, signal: options?.signal }), \"DELETE /discounts/v1/coupons/{id}\");\n },\n },\n promocodes: {\n /**\n * Retrieve promocodes\n *\n * Retrieve all promocodes.\n */\n async list(query?: GetPromocodesQuery, options?: SpacebringRequestOptions): Promise<Promocode[]> {\n return unwrapProp(await client.GET(\"/discounts/v1/promocodes\", { params: { query }, signal: options?.signal }), \"promocodes\", \"GET /discounts/v1/promocodes\");\n },\n /**\n * Get a promocode\n *\n * @param id The id of the promocode\n * @param options Request options (abort signal).\n */\n async get(id: string, options?: SpacebringRequestOptions): Promise<Promocode> {\n return unwrapProp(await client.GET(\"/discounts/v1/promocodes/{id}\", { params: { path: { id } }, signal: options?.signal }), \"promocode\", \"GET /discounts/v1/promocodes/{id}\");\n },\n /** Create a promocode */\n async create(promocode: CreatePromocodeBody, options?: SpacebringRequestOptions): Promise<Promocode> {\n return unwrapProp(await client.POST(\"/discounts/v1/promocodes\", { body: { promocode }, signal: options?.signal }), \"promocode\", \"POST /discounts/v1/promocodes\");\n },\n /**\n * Archive a promocode\n *\n * @param id The id of the promocode\n * @param options Request options (abort signal).\n */\n async archive(id: string, options?: SpacebringRequestOptions): Promise<Promocode> {\n return unwrapProp(await client.PUT(\"/discounts/v1/promocodes/{id}/archive\", { params: { path: { id } }, signal: options?.signal }), \"promocode\", \"PUT /discounts/v1/promocodes/{id}/archive\");\n },\n },\n };\n}\n","// AUTO-GENERATED by codegen/generate-facade.ts — DO NOT EDIT.\n// Regenerate with `npm run generate:facade`.\nimport type { Client } from \"openapi-fetch\";\nimport { paginate, unwrap, unwrapProp, type SpacebringDefaults, type SpacebringRequestOptions } from \"../../core.js\";\nimport type { components, operations, paths } from \"../schema.js\";\n\n/** A Event entity as returned by the Spacebring API. */\nexport type Event = NonNullable<components[\"schemas\"][\"event\"]>;\n\n/** A EventTicket entity as returned by the Spacebring API. */\nexport type EventTicket = NonNullable<components[\"schemas\"][\"eventTicket\"]>;\n\n/** Query parameters for `sb.events.list()`. */\nexport interface GetEventsByOrganizationQuery {\n /** The id of the location. */\n locationRef: string;\n /** The number of events to retrieve. Default: 25 */\n limit?: number;\n /** Token to retrieve the next page of results. */\n nextPageToken?: string;\n /** The order of the events. createDate:asc, createDate:desc, startDate:asc, startDate:desc, endDate:asc, endDate:desc or relevance */\n order?: string;\n}\n\n/** Query parameters for `sb.events.tickets.list()`. */\nexport interface GetEventTicketsQuery {\n /** UUID of the customer whose event tickets to list. */\n customerRef?: string;\n /** UUID of the event whose tickets to list. */\n eventRef?: string;\n /** @deprecated Use status \"canceled\" instead. Set to \"true\" to include deleted event tickets. */\n includeDeleted?: string;\n /** Maximum number of event tickets per page. Defaults to 25 when omitted or invalid; values above 100 are capped at 100. */\n limit?: number;\n /** UUID of the location whose event tickets to list. */\n locationRef?: string;\n /** Pagination token from nextPageToken in a previous response. Keep the same filters when fetching the next page. */\n nextPageToken?: string;\n /** Filter by event ticket status. Comma-separated values, e.g. `active,canceled`. Defaults to `active` when omitted.\n\n Supported values:\n - **active** — the ticket is valid\n - **canceled** — the ticket was deleted */\n status?: string;\n /** UUID of the user whose event tickets to list. */\n userRef?: string;\n}\n\n/** Request body for `sb.events.addEventHosts()`. */\nexport type AddEventHostsBody = NonNullable<NonNullable<operations[\"addEventHosts\"][\"requestBody\"]>[\"content\"][\"application/json\"][\"tickets\"]>;\n\n/** Request body for `sb.events.create()`. */\nexport type CreateEventBody = NonNullable<NonNullable<operations[\"createEvent\"][\"requestBody\"]>[\"content\"][\"application/json\"][\"event\"]>;\n\n/** Request body for `sb.events.update()`. */\nexport type UpdateEventBody = NonNullable<NonNullable<operations[\"updateEvent\"][\"requestBody\"]>[\"content\"][\"application/json\"][\"event\"]>;\n\n/** Request body for `sb.events.tickets.update()`. */\nexport type UpdateEventTicketBody = NonNullable<NonNullable<operations[\"updateEventTicket\"][\"requestBody\"]>[\"content\"][\"application/json\"][\"ticket\"]>;\n\nexport function createEvents(client: Client<paths>, defaults: SpacebringDefaults) {\n return {\n /** Retrieve events */\n async list(query: GetEventsByOrganizationQuery, options?: SpacebringRequestOptions): Promise<operations[\"getEventsByOrganization\"][\"responses\"][200][\"content\"][\"application/json\"]> {\n return unwrap(await client.GET(\"/events/v1\", { params: { query }, signal: options?.signal }), \"GET /events/v1\");\n },\n /** Retrieve an event */\n async get(id: string, options?: SpacebringRequestOptions): Promise<Event> {\n return unwrapProp(await client.GET(\"/events/v1/{id}\", { params: { header: { \"spacebring-network-id\": defaults.networkId as string }, path: { id } }, signal: options?.signal }), \"event\", \"GET /events/v1/{id}\");\n },\n /** Create an event */\n async create(event: CreateEventBody, options?: SpacebringRequestOptions): Promise<Event> {\n return unwrapProp(await client.POST(\"/events/v1\", { body: { event }, signal: options?.signal }), \"event\", \"POST /events/v1\");\n },\n /** Update an event */\n async update(id: string, event: UpdateEventBody, options?: SpacebringRequestOptions): Promise<Event> {\n return unwrapProp(await client.PUT(\"/events/v1/{id}\", { params: { path: { id } }, body: { event }, signal: options?.signal }), \"event\", \"PUT /events/v1/{id}\");\n },\n /** Delete an event */\n async delete(id: string, options?: SpacebringRequestOptions): Promise<undefined> {\n return unwrap(await client.DELETE(\"/events/v1/{id}\", { params: { path: { id } }, signal: options?.signal }), \"DELETE /events/v1/{id}\");\n },\n /**\n * Add event hosts\n *\n * Add hosts to an event. Creates a free host ticket for each membership without one; existing attendee tickets are switched to the host role. Returns all tickets of the event.\n *\n * @param id The id of the event.\n * @param tickets The `tickets` payload.\n * @param options Request options (abort signal).\n */\n async addEventHosts(id: string, tickets: AddEventHostsBody, options?: SpacebringRequestOptions): Promise<EventTicket[]> {\n return unwrapProp(await client.PUT(\"/events/v1/{id}/hosts\", { params: { path: { id } }, body: { tickets }, signal: options?.signal }), \"tickets\", \"PUT /events/v1/{id}/hosts\");\n },\n /** Cancel an event */\n async cancel(id: string, options?: SpacebringRequestOptions): Promise<Event> {\n return unwrapProp(await client.PUT(\"/events/v1/{id}/cancel\", { params: { path: { id } }, signal: options?.signal }), \"event\", \"PUT /events/v1/{id}/cancel\");\n },\n /** Copy an event */\n async copy(id: string, options?: SpacebringRequestOptions): Promise<Event> {\n return unwrapProp(await client.POST(\"/events/v1/{id}/copy\", { params: { path: { id } }, signal: options?.signal }), \"event\", \"POST /events/v1/{id}/copy\");\n },\n tickets: {\n /**\n * Retrieve tickets\n *\n * Retrieve all event tickets.\n */\n async list(query?: GetEventTicketsQuery, options?: SpacebringRequestOptions): Promise<{ tickets?: EventTicket[]; nextPageToken?: string; searchQueryNext?: string }> {\n return unwrap(await client.GET(\"/events/tickets/v1\", { params: { query }, signal: options?.signal }), \"GET /events/tickets/v1\");\n },\n /**\n * Retrieve tickets — iterates every item across all pages.\n *\n * Retrieve all event tickets.\n */\n iterate(query?: Omit<GetEventTicketsQuery, \"nextPageToken\">, options?: SpacebringRequestOptions): AsyncGenerator<EventTicket, void, undefined> {\n return paginate(\n async (nextPageToken: string | undefined) =>\n unwrap(await client.GET(\"/events/tickets/v1\", { params: { query: { ...query, nextPageToken } }, signal: options?.signal }), \"GET /events/tickets/v1\"),\n \"tickets\",\n );\n },\n /**\n * Retrieve a ticket\n *\n * Retrieve an event ticket.\n *\n * @param id The id of the event ticket.\n * @param options Request options (abort signal).\n */\n async get(id: string, options?: SpacebringRequestOptions): Promise<EventTicket> {\n return unwrapProp(await client.GET(\"/events/tickets/v1/{id}\", { params: { path: { id } }, signal: options?.signal }), \"ticket\", \"GET /events/tickets/v1/{id}\");\n },\n /**\n * Update a ticket\n *\n * Update an event ticket. Only the ticket role can be changed.\n *\n * @param id The id of the event ticket.\n * @param ticket The `ticket` payload.\n * @param options Request options (abort signal).\n */\n async update(id: string, ticket: UpdateEventTicketBody, options?: SpacebringRequestOptions): Promise<EventTicket> {\n return unwrapProp(await client.PUT(\"/events/tickets/v1/{id}\", { params: { path: { id } }, body: { ticket }, signal: options?.signal }), \"ticket\", \"PUT /events/tickets/v1/{id}\");\n },\n /**\n * Delete a ticket\n *\n * Delete an event ticket. Returns the deleted ticket.\n *\n * @param id The id of the event ticket.\n * @param options Request options (abort signal).\n */\n async delete(id: string, options?: SpacebringRequestOptions): Promise<EventTicket> {\n return unwrapProp(await client.DELETE(\"/events/tickets/v1/{id}\", { params: { path: { id } }, signal: options?.signal }), \"ticket\", \"DELETE /events/tickets/v1/{id}\");\n },\n /**\n * Check in a ticket\n *\n * Check in an event ticket. Fails if the ticket is already checked in.\n *\n * @param id The id of the event ticket.\n * @param options Request options (abort signal).\n */\n async checkIn(id: string, options?: SpacebringRequestOptions): Promise<EventTicket> {\n return unwrapProp(await client.POST(\"/events/tickets/v1/{id}/checkin\", { params: { path: { id } }, signal: options?.signal }), \"ticket\", \"POST /events/tickets/v1/{id}/checkin\");\n },\n },\n };\n}\n","// AUTO-GENERATED by codegen/generate-facade.ts — DO NOT EDIT.\n// Regenerate with `npm run generate:facade`.\nimport type { Client } from \"openapi-fetch\";\nimport { paginate, unwrap, unwrapProp, type SpacebringDefaults, type SpacebringRequestOptions } from \"../../core.js\";\nimport type { components, operations, paths } from \"../schema.js\";\n\n/** A Comment entity as returned by the Spacebring API. */\nexport type Comment = NonNullable<components[\"schemas\"][\"postComment\"]>;\n\n/** A Like entity as returned by the Spacebring API. */\nexport type Like = NonNullable<components[\"schemas\"][\"postLike\"]>;\n\n/** A Post entity as returned by the Spacebring API. */\nexport type Post = NonNullable<components[\"schemas\"][\"post\"]>;\n\n/** Query parameters for `sb.feed.posts.list()`. */\nexport interface GetFeedPostsQuery {\n /** The id of the location. */\n locationRef: string;\n /** Token to retrieve the next page of results. */\n nextPageToken?: string;\n /** The number of items to return. */\n limit?: number;\n}\n\n/** Request body for `sb.feed.posts.create()`. */\nexport type CreateFeedPostBody = NonNullable<NonNullable<operations[\"createFeedPost\"][\"requestBody\"]>[\"content\"][\"application/json\"][\"post\"]>;\n\n/** Request body for `sb.feed.comments.create()`. */\nexport type CreateFeedPostCommentBody = NonNullable<NonNullable<operations[\"createFeedPostComment\"][\"requestBody\"]>[\"content\"][\"application/json\"][\"comment\"]>;\n\n/** Request body for `sb.feed.posts.update()`. */\nexport type UpdateFeedPostBody = NonNullable<NonNullable<operations[\"updateFeedPost\"][\"requestBody\"]>[\"content\"][\"application/json\"][\"post\"]>;\n\nexport function createFeed(client: Client<paths>, defaults: SpacebringDefaults) {\n return {\n comments: {\n /**\n * Create a post comment\n *\n * Create a feed post comment.\n */\n async create(comment: CreateFeedPostCommentBody, options?: SpacebringRequestOptions): Promise<Comment> {\n return unwrapProp(await client.POST(\"/feed/comments/v1\", { body: { comment }, signal: options?.signal }), \"comment\", \"POST /feed/comments/v1\");\n },\n /**\n * Delete a post comment\n *\n * @param id The id of the post comment.\n * @param options Request options (abort signal).\n */\n async delete(id: string, options?: SpacebringRequestOptions): Promise<undefined> {\n return unwrap(await client.DELETE(\"/feed/comments/v1/{id}\", { params: { path: { id } }, signal: options?.signal }), \"DELETE /feed/comments/v1/{id}\");\n },\n /**\n * Create a like for a post comment\n *\n * @param id The id of the post comment.\n * @param options Request options (abort signal).\n */\n async createLike(id: string, options?: SpacebringRequestOptions): Promise<Like> {\n return unwrapProp(await client.POST(\"/feed/comments/v1/{id}/likes\", { params: { path: { id } }, signal: options?.signal }), \"like\", \"POST /feed/comments/v1/{id}/likes\");\n },\n /**\n * Delete a like for a post comment\n *\n * @param id The id of the post comment.\n * @param options Request options (abort signal).\n */\n async deleteLike(id: string, options?: SpacebringRequestOptions): Promise<undefined> {\n return unwrap(await client.DELETE(\"/feed/comments/v1/{id}/likes\", { params: { path: { id } }, signal: options?.signal }), \"DELETE /feed/comments/v1/{id}/likes\");\n },\n },\n posts: {\n /**\n * Get posts\n *\n * Get feed posts.\n */\n async list(query: GetFeedPostsQuery, options?: SpacebringRequestOptions): Promise<{ nextPageToken?: string; posts?: Post[]; searchQueryNext?: string }> {\n return unwrap(await client.GET(\"/feed/posts/v1\", { params: { query }, signal: options?.signal }), \"GET /feed/posts/v1\");\n },\n /**\n * Get posts — iterates every item across all pages.\n *\n * Get feed posts.\n */\n iterate(query: Omit<GetFeedPostsQuery, \"nextPageToken\">, options?: SpacebringRequestOptions): AsyncGenerator<Post, void, undefined> {\n return paginate(\n async (nextPageToken: string | undefined) =>\n unwrap(await client.GET(\"/feed/posts/v1\", { params: { query: { ...query, nextPageToken } }, signal: options?.signal }), \"GET /feed/posts/v1\"),\n \"posts\",\n );\n },\n /**\n * Get a post\n *\n * Get a feed post.\n *\n * @param id The id of the post.\n * @param options Request options (abort signal).\n */\n async get(id: string, options?: SpacebringRequestOptions): Promise<Post> {\n return unwrapProp(await client.GET(\"/feed/posts/v1/{id}\", { params: { path: { id } }, signal: options?.signal }), \"post\", \"GET /feed/posts/v1/{id}\");\n },\n /**\n * Create a post\n *\n * Create a feed post.\n */\n async create(post: CreateFeedPostBody, options?: SpacebringRequestOptions): Promise<Post> {\n return unwrapProp(await client.POST(\"/feed/posts/v1\", { body: { post }, signal: options?.signal }), \"post\", \"POST /feed/posts/v1\");\n },\n /**\n * Update a post\n *\n * Update a feed post.\n *\n * @param id The id of the post.\n * @param post The `post` payload.\n * @param options Request options (abort signal).\n */\n async update(id: string, post: UpdateFeedPostBody, options?: SpacebringRequestOptions): Promise<Post> {\n return unwrapProp(await client.PUT(\"/feed/posts/v1/{id}\", { params: { path: { id } }, body: { post }, signal: options?.signal }), \"post\", \"PUT /feed/posts/v1/{id}\");\n },\n /**\n * Delete a post\n *\n * Delete a feed post.\n *\n * @param id The id of the post.\n * @param options Request options (abort signal).\n */\n async delete(id: string, options?: SpacebringRequestOptions): Promise<undefined> {\n return unwrap(await client.DELETE(\"/feed/posts/v1/{id}\", { params: { path: { id } }, signal: options?.signal }), \"DELETE /feed/posts/v1/{id}\");\n },\n /**\n * Create a like for a post\n *\n * @param id The id of the post.\n * @param options Request options (abort signal).\n */\n async createLike(id: string, options?: SpacebringRequestOptions): Promise<Like> {\n return unwrapProp(await client.POST(\"/feed/posts/v1/{id}/likes\", { params: { path: { id } }, signal: options?.signal }), \"like\", \"POST /feed/posts/v1/{id}/likes\");\n },\n /**\n * Delete a like for a post\n *\n * @param id The id of the post.\n * @param options Request options (abort signal).\n */\n async deleteLike(id: string, options?: SpacebringRequestOptions): Promise<undefined> {\n return unwrap(await client.DELETE(\"/feed/posts/v1/{id}/likes\", { params: { path: { id } }, signal: options?.signal }), \"DELETE /feed/posts/v1/{id}/likes\");\n },\n /**\n * Get comments for a post\n *\n * @param id The id of the post.\n * @param options Request options (abort signal).\n */\n async getComments(id: string, options?: SpacebringRequestOptions): Promise<Comment[]> {\n return unwrapProp(await client.GET(\"/feed/posts/v1/{id}/comments\", { params: { path: { id } }, signal: options?.signal }), \"comments\", \"GET /feed/posts/v1/{id}/comments\");\n },\n /**\n * Get likes for a post\n *\n * @param id The id of the post.\n * @param options Request options (abort signal).\n */\n async getLikes(id: string, options?: SpacebringRequestOptions): Promise<Like[]> {\n return unwrapProp(await client.GET(\"/feed/posts/v1/{id}/likes\", { params: { path: { id } }, signal: options?.signal }), \"likes\", \"GET /feed/posts/v1/{id}/likes\");\n },\n },\n };\n}\n","// AUTO-GENERATED by codegen/generate-facade.ts — DO NOT EDIT.\n// Regenerate with `npm run generate:facade`.\nimport type { Client } from \"openapi-fetch\";\nimport { unwrap, type SpacebringDefaults, type SpacebringRequestOptions } from \"../../core.js\";\nimport type { operations, paths } from \"../schema.js\";\n\n/** Query parameters for `sb.floors.list()`. */\nexport interface GetFloorsQuery {\n /** The limit of the floors. */\n limit?: number;\n /** The id of the location. */\n locationRef: string;\n /** Token to retrieve the next page of results. */\n nextPageToken?: string;\n}\n\nexport function createFloors(client: Client<paths>, defaults: SpacebringDefaults) {\n return {\n /** Get floors */\n async list(query: GetFloorsQuery, options?: SpacebringRequestOptions): Promise<operations[\"getFloors\"][\"responses\"][200][\"content\"][\"application/json\"]> {\n return unwrap(await client.GET(\"/floors/v1\", { params: { query }, signal: options?.signal }), \"GET /floors/v1\");\n },\n /**\n * Delete a floor\n *\n * @param id The id of the floor.\n * @param options Request options (abort signal).\n */\n async delete(id: string, options?: SpacebringRequestOptions): Promise<undefined> {\n return unwrap(await client.DELETE(\"/floors/v1/{id}\", { params: { path: { id } }, signal: options?.signal }), \"DELETE /floors/v1/{id}\");\n },\n };\n}\n","// AUTO-GENERATED by codegen/generate-facade.ts — DO NOT EDIT.\n// Regenerate with `npm run generate:facade`.\nimport type { Client } from \"openapi-fetch\";\nimport { paginate, unwrap, unwrapProp, type SpacebringDefaults, type SpacebringRequestOptions } from \"../../core.js\";\nimport type { components, operations, paths } from \"../schema.js\";\n\n/** A Guide entity as returned by the Spacebring API. */\nexport type Guide = NonNullable<components[\"schemas\"][\"guide\"]>;\n\n/** Query parameters for `sb.guides.list()`. */\nexport interface GetGuidesQuery {\n /** Maximum number of guides per page. Defaults to 25 when omitted or invalid; values above 100 are capped at 100. */\n limit?: number;\n /** UUID of the location whose guides to list. */\n locationRef: string;\n /** Pagination token from nextPageToken in a previous response. Keep the same filters when fetching the next page. */\n nextPageToken?: string;\n}\n\n/** Request body for `sb.guides.create()`. */\nexport type CreateGuideBody = NonNullable<NonNullable<operations[\"createGuide\"][\"requestBody\"]>[\"content\"][\"application/json\"][\"guide\"]>;\n\n/** Request body for `sb.guides.update()`. */\nexport type PatchGuideBody = NonNullable<NonNullable<operations[\"patchGuide\"][\"requestBody\"]>[\"content\"][\"application/json\"][\"guide\"]>;\n\nexport function createGuides(client: Client<paths>, defaults: SpacebringDefaults) {\n return {\n /**\n * Retrieve guides\n *\n * Retrieve all guides for an organization. Requires locationRef. When using bearer token (non-basic auth), results are filtered by the user's access.\n */\n async list(query: GetGuidesQuery, options?: SpacebringRequestOptions): Promise<{ guides: Guide[]; nextPageToken?: string; searchQueryNext?: string }> {\n return unwrap(await client.GET(\"/guides/v1\", { params: { query }, signal: options?.signal }), \"GET /guides/v1\");\n },\n /**\n * Retrieve guides — iterates every item across all pages.\n *\n * Retrieve all guides for an organization. Requires locationRef. When using bearer token (non-basic auth), results are filtered by the user's access.\n */\n iterate(query: Omit<GetGuidesQuery, \"nextPageToken\">, options?: SpacebringRequestOptions): AsyncGenerator<Guide, void, undefined> {\n return paginate(\n async (nextPageToken: string | undefined) =>\n unwrap(await client.GET(\"/guides/v1\", { params: { query: { ...query, nextPageToken } }, signal: options?.signal }), \"GET /guides/v1\"),\n \"guides\",\n );\n },\n /**\n * Retrieve a guide\n *\n * Retrieve a guide by id.\n *\n * @param guideId The id of the guide.\n * @param options Request options (abort signal).\n */\n async get(guideId: string, options?: SpacebringRequestOptions): Promise<Guide> {\n return unwrapProp(await client.GET(\"/guides/v1/{guideId}\", { params: { path: { guideId } }, signal: options?.signal }), \"guide\", \"GET /guides/v1/{guideId}\");\n },\n /**\n * Create a guide\n *\n * Create a guide in an organization.\n */\n async create(guide: CreateGuideBody, options?: SpacebringRequestOptions): Promise<Guide> {\n return unwrapProp(await client.POST(\"/guides/v1\", { body: { guide }, signal: options?.signal }), \"guide\", \"POST /guides/v1\");\n },\n /**\n * Update a guide\n *\n * Update a guide. At least one guide property must be provided.\n *\n * @param guideId The id of the guide\n * @param guide The `guide` payload.\n * @param options Request options (abort signal).\n */\n async update(guideId: string, guide: PatchGuideBody, options?: SpacebringRequestOptions): Promise<Guide> {\n return unwrapProp(await client.PATCH(\"/guides/v1/{guideId}\", { params: { path: { guideId } }, body: { guide }, signal: options?.signal }), \"guide\", \"PATCH /guides/v1/{guideId}\");\n },\n /**\n * Delete a guide\n *\n * @param guideId The id of the guide\n * @param options Request options (abort signal).\n */\n async delete(guideId: string, options?: SpacebringRequestOptions): Promise<undefined> {\n return unwrap(await client.DELETE(\"/guides/v1/{guideId}\", { params: { path: { guideId } }, signal: options?.signal }), \"DELETE /guides/v1/{guideId}\");\n },\n };\n}\n","// AUTO-GENERATED by codegen/generate-facade.ts — DO NOT EDIT.\n// Regenerate with `npm run generate:facade`.\nimport type { Client } from \"openapi-fetch\";\nimport { unwrap, unwrapProp, type SpacebringDefaults, type SpacebringRequestOptions } from \"../../core.js\";\nimport type { components, paths } from \"../schema.js\";\n\n/** A Location entity as returned by the Spacebring API. */\nexport type Location = NonNullable<components[\"schemas\"][\"location\"]>;\n\nexport function createLocations(client: Client<paths>, defaults: SpacebringDefaults) {\n return {\n /** Retrieve all locations */\n async list(options?: SpacebringRequestOptions): Promise<Location[]> {\n return unwrapProp(await client.GET(\"/locations/v1\", { signal: options?.signal }), \"locations\", \"GET /locations/v1\");\n },\n /**\n * Get a location\n *\n * @param locationId The id of the location.\n * @param options Request options (abort signal).\n */\n async get(locationId: string, options?: SpacebringRequestOptions): Promise<Location> {\n return unwrapProp(await client.GET(\"/locations/v1/{locationId}\", { params: { path: { locationId } }, signal: options?.signal }), \"location\", \"GET /locations/v1/{locationId}\");\n },\n };\n}\n","// AUTO-GENERATED by codegen/generate-facade.ts — DO NOT EDIT.\n// Regenerate with `npm run generate:facade`.\nimport type { Client } from \"openapi-fetch\";\nimport { unwrap, unwrapProp, type SpacebringDefaults, type SpacebringRequestOptions } from \"../../core.js\";\nimport type { components, paths } from \"../schema.js\";\n\n/** A Network entity as returned by the Spacebring API. */\nexport type Network = NonNullable<components[\"schemas\"][\"network\"]>;\n\nexport function createNetworks(client: Client<paths>, defaults: SpacebringDefaults) {\n return {\n /**\n * Retrieve networks\n *\n * Retrieve all networks you are in.\n */\n async list(options?: SpacebringRequestOptions): Promise<Network[]> {\n return unwrapProp(await client.GET(\"/networks/v1\", { signal: options?.signal }), \"networks\", \"GET /networks/v1\");\n },\n };\n}\n","// AUTO-GENERATED by codegen/generate-facade.ts — DO NOT EDIT.\n// Regenerate with `npm run generate:facade`.\nimport type { Client } from \"openapi-fetch\";\nimport { paginate, unwrap, unwrapProp, type SpacebringDefaults, type SpacebringRequestOptions } from \"../../core.js\";\nimport type { operations, paths } from \"../schema.js\";\n\n/** A Package entity as returned by the Spacebring API. */\nexport type Package = NonNullable<operations[\"getPackages\"][\"responses\"][200][\"content\"][\"application/json\"][\"packages\"]>[number];\n\n/** Query parameters for `sb.packages.list()`. */\nexport interface GetPackagesQuery {\n /** Maximum number of packages per page. Defaults to 25 when omitted or invalid; values above 100 are capped at 100. */\n limit?: number;\n /** UUID of the location. */\n locationRef: string;\n /** Pagination token from nextPageToken in a previous response. Keep the same filters when fetching the next page. */\n nextPageToken?: string;\n}\n\n/** Request body for `sb.packages.create()`. */\nexport type CreatePackageBody = NonNullable<NonNullable<operations[\"createPackage\"][\"requestBody\"]>[\"content\"][\"application/json\"][\"package\"]>;\n\n/** Request body for `sb.packages.update()`. */\nexport type PatchPackageBody = NonNullable<NonNullable<operations[\"patchPackage\"][\"requestBody\"]>[\"content\"][\"application/json\"][\"package\"]>;\n\nexport function createPackages(client: Client<paths>, defaults: SpacebringDefaults) {\n return {\n /**\n * Retrieve packages\n *\n * Retrieve all packages in the location.\n */\n async list(query: GetPackagesQuery, options?: SpacebringRequestOptions): Promise<{ nextPageToken?: string; packages: Package[]; searchQueryNext?: string }> {\n return unwrap(await client.GET(\"/packages/v1\", { params: { query }, signal: options?.signal }), \"GET /packages/v1\");\n },\n /**\n * Retrieve packages — iterates every item across all pages.\n *\n * Retrieve all packages in the location.\n */\n iterate(query: Omit<GetPackagesQuery, \"nextPageToken\">, options?: SpacebringRequestOptions): AsyncGenerator<Package, void, undefined> {\n return paginate(\n async (nextPageToken: string | undefined) =>\n unwrap(await client.GET(\"/packages/v1\", { params: { query: { ...query, nextPageToken } }, signal: options?.signal }), \"GET /packages/v1\"),\n \"packages\",\n );\n },\n /** Create a package */\n async create(packageBody: CreatePackageBody, options?: SpacebringRequestOptions): Promise<Package> {\n return unwrapProp(await client.POST(\"/packages/v1\", { body: { package: packageBody }, signal: options?.signal }), \"package\", \"POST /packages/v1\");\n },\n /**\n * Update a package\n *\n * @param packageId The id of the package.\n * @param packageBody The `package` payload.\n * @param options Request options (abort signal).\n */\n async update(packageId: string, packageBody: PatchPackageBody, options?: SpacebringRequestOptions): Promise<undefined> {\n return unwrap(await client.PATCH(\"/packages/v1/{packageId}\", { params: { path: { packageId } }, body: { package: packageBody }, signal: options?.signal }), \"PATCH /packages/v1/{packageId}\");\n },\n /**\n * Delete a package\n *\n * @param packageId The id of the package.\n * @param options Request options (abort signal).\n */\n async delete(packageId: string, options?: SpacebringRequestOptions): Promise<undefined> {\n return unwrap(await client.DELETE(\"/packages/v1/{packageId}\", { params: { path: { packageId } }, signal: options?.signal }), \"DELETE /packages/v1/{packageId}\");\n },\n };\n}\n","// AUTO-GENERATED by codegen/generate-facade.ts — DO NOT EDIT.\n// Regenerate with `npm run generate:facade`.\nimport type { Client } from \"openapi-fetch\";\nimport { paginate, unwrap, unwrapProp, type SpacebringDefaults, type SpacebringRequestOptions } from \"../../core.js\";\nimport type { components, operations, paths } from \"../schema.js\";\n\n/** A Plan entity as returned by the Spacebring API. */\nexport type Plan = NonNullable<components[\"schemas\"][\"plan\"]>;\n\n/** Query parameters for `sb.plans.list()`. */\nexport interface GetPlansQuery {\n /** @deprecated Only applies together with resourceRef. Filter the plans.tiers of `GET /resources/v1/{resourceId}` by their entire field instead. When listing plans for a resource, filter by entire resource vs partial tiers. Pass true or false. */\n entire?: string;\n /** Maximum number of plans per page. Defaults to 25 when omitted or invalid; values above 100 are capped at 100. */\n limit?: number;\n /** UUID of the location whose plans to list. */\n locationRef?: string;\n /** Pagination token from nextPageToken in a previous response. Keep the same filters when fetching the next page. */\n nextPageToken?: string;\n /** @deprecated Read plans.tiers from `GET /resources/v1/{resourceId}` instead. UUID of the resource whose tier plans to list. */\n resourceRef?: string;\n}\n\n/** Request body for `sb.plans.create()`. */\nexport type CreatePlanBody = NonNullable<NonNullable<operations[\"createPlan\"][\"requestBody\"]>[\"content\"][\"application/json\"][\"plan\"]>;\n\n/** Request body for `sb.plans.update()`. */\nexport type UpdatePlanBody = NonNullable<NonNullable<operations[\"updatePlan\"][\"requestBody\"]>[\"content\"][\"application/json\"][\"plan\"]>;\n\nexport function createPlans(client: Client<paths>, defaults: SpacebringDefaults) {\n return {\n /**\n * Retrieve plans\n *\n * Retrieve all plans.\n */\n async list(query?: GetPlansQuery, options?: SpacebringRequestOptions): Promise<{ nextPageToken?: string; plans: Plan[]; searchQueryNext?: string }> {\n return unwrap(await client.GET(\"/plans/v1\", { params: { query }, signal: options?.signal }), \"GET /plans/v1\");\n },\n /**\n * Retrieve plans — iterates every item across all pages.\n *\n * Retrieve all plans.\n */\n iterate(query?: Omit<GetPlansQuery, \"nextPageToken\">, options?: SpacebringRequestOptions): AsyncGenerator<Plan, void, undefined> {\n return paginate(\n async (nextPageToken: string | undefined) =>\n unwrap(await client.GET(\"/plans/v1\", { params: { query: { ...query, nextPageToken } }, signal: options?.signal }), \"GET /plans/v1\"),\n \"plans\",\n );\n },\n /**\n * Retrieve a plan\n *\n * Retrieve a certain plan.\n *\n * @param planId The id of the plan.\n * @param options Request options (abort signal).\n */\n async get(planId: string, options?: SpacebringRequestOptions): Promise<Plan> {\n return unwrapProp(await client.GET(\"/plans/v1/{planId}\", { params: { path: { planId } }, signal: options?.signal }), \"plan\", \"GET /plans/v1/{planId}\");\n },\n /** Create a plan */\n async create(plan: CreatePlanBody, options?: SpacebringRequestOptions): Promise<Plan> {\n return unwrapProp(await client.POST(\"/plans/v1\", { body: { plan }, signal: options?.signal }), \"plan\", \"POST /plans/v1\");\n },\n /**\n * Update a plan\n *\n * Update a certain plan.\n *\n * @param planId The id of the plan.\n * @param plan The `plan` payload.\n * @param options Request options (abort signal).\n */\n async update(planId: string, plan: UpdatePlanBody, options?: SpacebringRequestOptions): Promise<undefined> {\n return unwrap(await client.PATCH(\"/plans/v1/{planId}\", { params: { path: { planId } }, body: { plan }, signal: options?.signal }), \"PATCH /plans/v1/{planId}\");\n },\n /**\n * Delete a plan\n *\n * Delete a certain plan.\n *\n * @param planId The id of the plan.\n * @param options Request options (abort signal).\n */\n async delete(planId: string, options?: SpacebringRequestOptions): Promise<undefined> {\n return unwrap(await client.DELETE(\"/plans/v1/{planId}\", { params: { path: { planId } }, signal: options?.signal }), \"DELETE /plans/v1/{planId}\");\n },\n };\n}\n","// AUTO-GENERATED by codegen/generate-facade.ts — DO NOT EDIT.\n// Regenerate with `npm run generate:facade`.\nimport type { Client } from \"openapi-fetch\";\nimport { paginate, unwrap, type SpacebringDefaults, type SpacebringRequestOptions } from \"../../core.js\";\nimport type { components, paths } from \"../schema.js\";\n\n/** A Registration entity as returned by the Spacebring API. */\nexport type Registration = NonNullable<components[\"schemas\"][\"registration\"]>;\n\n/** Query parameters for `sb.registrations.list()`. */\nexport interface GetRegistrationsQuery {\n /** The number of items to return */\n limit?: number;\n /** Token to retrieve the next page of results. */\n nextPageToken?: string;\n}\n\nexport function createRegistrations(client: Client<paths>, defaults: SpacebringDefaults) {\n return {\n /**\n * Retrieve registrations\n *\n * Retrieve all registrations in network.\n */\n async list(query?: GetRegistrationsQuery, options?: SpacebringRequestOptions): Promise<{ registrations?: Registration[]; nextPageToken?: string; searchQueryNext?: string }> {\n return unwrap(await client.GET(\"/registrations/v1\", { params: { query }, signal: options?.signal }), \"GET /registrations/v1\");\n },\n /**\n * Retrieve registrations — iterates every item across all pages.\n *\n * Retrieve all registrations in network.\n */\n iterate(query?: Omit<GetRegistrationsQuery, \"nextPageToken\">, options?: SpacebringRequestOptions): AsyncGenerator<Registration, void, undefined> {\n return paginate(\n async (nextPageToken: string | undefined) =>\n unwrap(await client.GET(\"/registrations/v1\", { params: { query: { ...query, nextPageToken } }, signal: options?.signal }), \"GET /registrations/v1\"),\n \"registrations\",\n );\n },\n };\n}\n","// AUTO-GENERATED by codegen/generate-facade.ts — DO NOT EDIT.\n// Regenerate with `npm run generate:facade`.\nimport type { Client } from \"openapi-fetch\";\nimport { paginate, unwrap, unwrapProp, type SpacebringDefaults, type SpacebringRequestOptions } from \"../../core.js\";\nimport type { operations, paths } from \"../schema.js\";\n\n/** A Assignment entity as returned by the Spacebring API. */\nexport type Assignment = NonNullable<operations[\"getAssignments\"][\"responses\"][200][\"content\"][\"application/json\"][\"assignments\"]>[number];\n\n/** A Booking entity as returned by the Spacebring API. */\nexport type Booking = NonNullable<operations[\"getBooking\"][\"responses\"][200][\"content\"][\"application/json\"][\"booking\"]>;\n\n/** A Resource entity as returned by the Spacebring API. */\nexport type Resource = NonNullable<operations[\"getResource\"][\"responses\"][200][\"content\"][\"application/json\"][\"resource\"]>;\n\n/** Query parameters for `sb.resources.getAssignments()`. */\nexport interface GetAssignmentsQuery {\n /** UUID of the location whose resource assignments to list. */\n locationRef?: string;\n}\n\n/** Query parameters for `sb.resources.bookings.list()`. */\nexport interface GetBookingsQuery {\n /** Matches bookings with endDate strictly after this date (ISO 8601). */\n \"endDate[gt]\"?: string;\n /** Matches bookings with endDate on or after this date (ISO 8601). */\n \"endDate[gte]\"?: string;\n /** Matches bookings with endDate strictly before this date (ISO 8601). */\n \"endDate[lt]\"?: string;\n /** Matches bookings with endDate on or before this date (ISO 8601). */\n \"endDate[lte]\"?: string;\n /** Matches bookings with startDate strictly after this date (ISO 8601). */\n \"startDate[gt]\"?: string;\n /** Matches bookings with startDate on or after this date (ISO 8601). */\n \"startDate[gte]\"?: string;\n /** Matches bookings with startDate strictly before this date (ISO 8601). */\n \"startDate[lt]\"?: string;\n /** Matches bookings with startDate on or before this date (ISO 8601). */\n \"startDate[lte]\"?: string;\n /** UUID of the customer whose bookings to list. */\n customerRef?: string;\n /** @deprecated Use bracket-notation fields endDate[gt], endDate[gte], endDate[lt], endDate[lte] instead. */\n endDate?: string;\n /** @deprecated Use status \"canceled\" instead. Set to \"true\" to include deleted bookings. */\n includeDeleted?: string;\n /** Maximum number of bookings per page. Defaults to 25 when omitted or invalid; values above 100 are capped at 100. */\n limit?: number;\n /** UUID of the location whose bookings to list. Required when resourceRef is omitted. */\n locationRef?: string;\n /** @deprecated Use customerRef instead. UUID of the customer whose bookings to list. */\n membershipRefOwner?: string;\n /** Pagination token from nextPageToken in a previous response. Keep the same filters when fetching the next page. */\n nextPageToken?: string;\n /** Sort order as `:`, where field is startDate, endDate or createDate and direction is asc or desc. */\n order?: string;\n /** UUID of the resource whose bookings to list. Required when locationRef is omitted. */\n resourceRef?: string;\n /** Set to \"true\" to expand repeating bookings into single occurrences. */\n singleBookings?: string;\n /** @deprecated Use bracket-notation fields startDate[gt], startDate[gte], startDate[lt], startDate[lte] instead. */\n startDate?: string;\n /** Comma-separated list of booking statuses to filter by, e.g. `confirmed,canceled`. Valid values: tentative, confirmed, canceled. Defaults to tentative, confirmed. */\n status?: string;\n /** Comma-separated list of resource types to filter by, e.g. `room,hotDesk`. Valid values: hotDesk, dedicatedDesk, office, parkingLot, room, conferenceRoom, eventSpace, meetingRoom, phoneBooth, studio, equipment, station. Defaults to all bookable types. */\n type?: string;\n /** @deprecated Use type instead. */\n types?: string;\n}\n\n/** Query parameters for `sb.resources.list()`. */\nexport interface GetResourcesQuery {\n /** Maximum number of resources per page. Defaults to 25 when omitted or invalid; values above 100 are capped at 100. */\n limit?: number;\n /** UUID of the location whose resources to list. */\n locationRef: string;\n /** Pagination token from nextPageToken in a previous response. Keep the same filters when fetching the next page. */\n nextPageToken?: string;\n /** Comma-separated list of resource types to filter by, e.g. `room,hotDesk`. Valid values: dedicatedDesk, equipment, hotDesk, office, parkingLot, room, station, conferenceRoom, eventSpace, meetingRoom, phoneBooth, studio. Defaults to all bookable types. */\n types?: string;\n}\n\n/** Request body for `sb.resources.bookings.create()`. */\nexport type CreateBookingBody = NonNullable<NonNullable<operations[\"createBooking\"][\"requestBody\"]>[\"content\"][\"application/json\"][\"booking\"]>;\n\n/** Request body for `sb.resources.create()`. */\nexport type CreateResourceBody = NonNullable<NonNullable<operations[\"createResource\"][\"requestBody\"]>[\"content\"][\"application/json\"][\"resource\"]>;\n\n/** Request body for `sb.resources.bookings.update()`. */\nexport type PatchBookingBody = NonNullable<operations[\"patchBooking\"][\"requestBody\"]>[\"content\"][\"application/json\"];\n\n/** Request body for `sb.resources.update()`. */\nexport type PatchResourceBody = NonNullable<NonNullable<operations[\"patchResource\"][\"requestBody\"]>[\"content\"][\"application/json\"][\"resource\"]>;\n\nexport function createResources(client: Client<paths>, defaults: SpacebringDefaults) {\n return {\n /**\n * Retrieve resources\n *\n * Retrieve resources in the location. Resources represent all kind of bookable items like rooms, hot desks, dedicated desks, parking lots.\n */\n async list(query: GetResourcesQuery, options?: SpacebringRequestOptions): Promise<{ nextPageToken?: string; resources: Resource[]; searchQueryNext?: string }> {\n return unwrap(await client.GET(\"/resources/v1\", { params: { query }, signal: options?.signal }), \"GET /resources/v1\");\n },\n /**\n * Retrieve resources — iterates every item across all pages.\n *\n * Retrieve resources in the location. Resources represent all kind of bookable items like rooms, hot desks, dedicated desks, parking lots.\n */\n iterate(query: Omit<GetResourcesQuery, \"nextPageToken\">, options?: SpacebringRequestOptions): AsyncGenerator<Resource, void, undefined> {\n return paginate(\n async (nextPageToken: string | undefined) =>\n unwrap(await client.GET(\"/resources/v1\", { params: { query: { ...query, nextPageToken } }, signal: options?.signal }), \"GET /resources/v1\"),\n \"resources\",\n );\n },\n /**\n * Get a resource\n *\n * Get a certain resource.\n *\n * @param resourceId The id of the resource.\n * @param options Request options (abort signal).\n */\n async get(resourceId: string, options?: SpacebringRequestOptions): Promise<Resource> {\n return unwrapProp(await client.GET(\"/resources/v1/{resourceId}\", { params: { path: { resourceId } }, signal: options?.signal }), \"resource\", \"GET /resources/v1/{resourceId}\");\n },\n /**\n * Create a resource\n *\n * Create a new resource in a location. The request body must match the schema exactly—unknown properties are rejected.\n */\n async create(resource: CreateResourceBody, options?: SpacebringRequestOptions): Promise<Resource> {\n return unwrapProp(await client.POST(\"/resources/v1\", { body: { resource }, signal: options?.signal }), \"resource\", \"POST /resources/v1\");\n },\n /**\n * Patch a resource\n *\n * Patch a certain resource.\n *\n * @param resourceId The id of the resource.\n * @param resource The `resource` payload.\n * @param options Request options (abort signal).\n */\n async update(resourceId: string, resource: PatchResourceBody, options?: SpacebringRequestOptions): Promise<undefined> {\n return unwrap(await client.PATCH(\"/resources/v1/{resourceId}\", { params: { path: { resourceId } }, body: { resource }, signal: options?.signal }), \"PATCH /resources/v1/{resourceId}\");\n },\n /**\n * Retrieve resource assignments\n *\n * Retrieve resource assignments in the location. An assignment links a resource, or a number of seats in it, to a company or a member for the duration of a subscription.\n */\n async getAssignments(query?: GetAssignmentsQuery, options?: SpacebringRequestOptions): Promise<Assignment[]> {\n return unwrapProp(await client.GET(\"/resources/v1/assignments\", { params: { query }, signal: options?.signal }), \"assignments\", \"GET /resources/v1/assignments\");\n },\n bookings: {\n /**\n * Retrieve bookings\n *\n * Retrieve all bookings of resources.\n */\n async list(query?: GetBookingsQuery, options?: SpacebringRequestOptions): Promise<{ bookings: Booking[]; nextPageToken?: string; searchQueryNext?: string }> {\n return unwrap(await client.GET(\"/resources/bookings/v1\", { params: { query }, signal: options?.signal }), \"GET /resources/bookings/v1\");\n },\n /**\n * Retrieve bookings — iterates every item across all pages.\n *\n * Retrieve all bookings of resources.\n */\n iterate(query?: Omit<GetBookingsQuery, \"nextPageToken\">, options?: SpacebringRequestOptions): AsyncGenerator<Booking, void, undefined> {\n return paginate(\n async (nextPageToken: string | undefined) =>\n unwrap(await client.GET(\"/resources/bookings/v1\", { params: { query: { ...query, nextPageToken } }, signal: options?.signal }), \"GET /resources/bookings/v1\"),\n \"bookings\",\n );\n },\n /**\n * Get a booking\n *\n * @param bookingId ID of the booking. For a single occurrence of a repeating booking, append the occurrence date: `_`.\n * @param options Request options (abort signal).\n */\n async get(bookingId: string, options?: SpacebringRequestOptions): Promise<Booking> {\n return unwrapProp(await client.GET(\"/resources/bookings/v1/{bookingId}\", { params: { path: { bookingId } }, signal: options?.signal }), \"booking\", \"GET /resources/bookings/v1/{bookingId}\");\n },\n /** Create a booking */\n async create(booking: CreateBookingBody, options?: SpacebringRequestOptions): Promise<Booking> {\n return unwrapProp(await client.POST(\"/resources/bookings/v1\", { body: { booking }, signal: options?.signal }), \"booking\", \"POST /resources/bookings/v1\");\n },\n /**\n * Update a booking\n *\n * Update a booking. Fields left out of the request keep their current value.\n *\n * @param bookingId ID of the booking. For a single occurrence of a repeating booking, append the occurrence date: `_`.\n * @param body Request body.\n * @param options Request options (abort signal).\n */\n async update(bookingId: string, body: PatchBookingBody, options?: SpacebringRequestOptions): Promise<Booking> {\n return unwrapProp(await client.PATCH(\"/resources/bookings/v1/{bookingId}\", { params: { path: { bookingId } }, body, signal: options?.signal }), \"booking\", \"PATCH /resources/bookings/v1/{bookingId}\");\n },\n /**\n * Delete a booking\n *\n * @param bookingId ID of the booking. For a single occurrence of a repeating booking, append the occurrence date: `_`.\n * @param options Request options (abort signal).\n */\n async delete(bookingId: string, options?: SpacebringRequestOptions): Promise<undefined> {\n return unwrap(await client.DELETE(\"/resources/bookings/v1/{bookingId}\", { params: { path: { bookingId } }, signal: options?.signal }), \"DELETE /resources/bookings/v1/{bookingId}\");\n },\n },\n };\n}\n","// AUTO-GENERATED by codegen/generate-facade.ts — DO NOT EDIT.\n// Regenerate with `npm run generate:facade`.\nimport type { Client } from \"openapi-fetch\";\nimport { paginate, unwrap, unwrapProp, type SpacebringDefaults, type SpacebringRequestOptions } from \"../../core.js\";\nimport type { components, operations, paths } from \"../schema.js\";\n\n/** A Order entity as returned by the Spacebring API. */\nexport type Order = NonNullable<operations[\"getOrder\"][\"responses\"][200][\"content\"][\"application/json\"][\"order\"]>;\n\n/** A Product entity as returned by the Spacebring API. */\nexport type Product = NonNullable<components[\"schemas\"][\"product\"]>;\n\n/** A ShopCategory entity as returned by the Spacebring API. */\nexport type ShopCategory = NonNullable<components[\"schemas\"][\"shopCategory\"]>;\n\n/** Query parameters for `sb.shop.orders.list()`. */\nexport interface GetOrdersQuery {\n /** Comma-separated shop category UUIDs used to filter orders, e.g. `uuid1,uuid2`. */\n categoryRef?: string;\n /** Filter orders created on or after this date (ISO 8601). Use with createDate[lte] for a range. */\n \"createDate[gte]\"?: string;\n /** Filter orders created on or before this date (ISO 8601). Use with createDate[gte] for a range. */\n \"createDate[lte]\"?: string;\n /** UUID of the customer whose orders to list. */\n customerRef?: string;\n /** Maximum number of orders per page. Defaults to 25 when omitted or invalid; values above 100 are capped at 100. */\n limit?: number;\n /** UUID of the location whose orders to list. */\n locationRef?: string;\n /** Pagination token from nextPageToken in a previous response. Keep the same filters when fetching the next page. */\n nextPageToken?: string;\n /** Comma-separated product UUIDs used to filter orders, e.g. `uuid1,uuid2`. */\n productRef?: string;\n /** Filter by order status. Comma-separated values, e.g. `new,inProgress`. Defaults to `new`, `inProgress`, and `completed` when omitted.\n\n Supported values:\n - **new** — placed, awaiting fulfillment\n - **inProgress** — being fulfilled\n - **completed** — fulfilled\n - **canceled** — canceled */\n status?: string;\n /** UUID of the user whose orders to list. */\n userRef?: string;\n}\n\n/** Query parameters for `sb.shop.products.list()`. */\nexport interface GetProductsQuery {\n /** UUID of the shop category. */\n categoryRef?: string;\n /** Comma-separated product UUIDs, e.g. `uuid1,uuid2`. Up to 25 ids per request. */\n id?: string;\n /** Maximum number of products per page. Defaults to 25 when omitted or invalid; values above 100 are capped at 100. */\n limit?: number;\n /** UUID of the location. */\n locationRef?: string;\n /** Pagination token from nextPageToken in a previous response. Keep the same filters when fetching the next page. */\n nextPageToken?: string;\n}\n\n/** Query parameters for `sb.shop.categories.list()`. */\nexport interface GetShopCategoriesQuery {\n /** UUID of the location whose shop categories to list. */\n locationRef: string;\n}\n\n/** Request body for `sb.shop.products.create()`. */\nexport type CreateProductBody = NonNullable<NonNullable<operations[\"createProduct\"][\"requestBody\"]>[\"content\"][\"application/json\"][\"product\"]>;\n\n/** Request body for `sb.shop.categories.create()`. */\nexport type CreateShopCategoryBody = NonNullable<NonNullable<operations[\"createShopCategory\"][\"requestBody\"]>[\"content\"][\"application/json\"][\"category\"]>;\n\n/** Request body for `sb.shop.products.update()`. */\nexport type UpdateProductBody = NonNullable<NonNullable<operations[\"updateProduct\"][\"requestBody\"]>[\"content\"][\"application/json\"][\"product\"]>;\n\n/** Request body for `sb.shop.categories.update()`. */\nexport type UpdateShopCategoryBody = NonNullable<NonNullable<operations[\"updateShopCategory\"][\"requestBody\"]>[\"content\"][\"application/json\"][\"category\"]>;\n\nexport function createShop(client: Client<paths>, defaults: SpacebringDefaults) {\n return {\n categories: {\n /**\n * Retrieve categories\n *\n * Retrieve all shop categories in the location.\n */\n async list(query: GetShopCategoriesQuery, options?: SpacebringRequestOptions): Promise<ShopCategory[]> {\n return unwrapProp(await client.GET(\"/shop/categories/v1\", { params: { query }, signal: options?.signal }), \"categories\", \"GET /shop/categories/v1\");\n },\n /**\n * Get a category\n *\n * Get a shop category.\n *\n * @param categoryId The id of the shop category.\n * @param options Request options (abort signal).\n */\n async get(categoryId: string, options?: SpacebringRequestOptions): Promise<ShopCategory> {\n return unwrapProp(await client.GET(\"/shop/categories/v1/{categoryId}\", { params: { path: { categoryId } }, signal: options?.signal }), \"category\", \"GET /shop/categories/v1/{categoryId}\");\n },\n /**\n * Create a category\n *\n * Create a shop category.\n */\n async create(category: CreateShopCategoryBody, options?: SpacebringRequestOptions): Promise<ShopCategory> {\n return unwrapProp(await client.POST(\"/shop/categories/v1\", { body: { category }, signal: options?.signal }), \"category\", \"POST /shop/categories/v1\");\n },\n /**\n * Update a category\n *\n * Update a shop category.\n *\n * @param categoryId The id of the shop category\n * @param category The `category` payload.\n * @param options Request options (abort signal).\n */\n async update(categoryId: string, category: UpdateShopCategoryBody, options?: SpacebringRequestOptions): Promise<ShopCategory> {\n return unwrapProp(await client.PUT(\"/shop/categories/v1/{categoryId}\", { params: { path: { categoryId } }, body: { category }, signal: options?.signal }), \"category\", \"PUT /shop/categories/v1/{categoryId}\");\n },\n /**\n * Delete a category\n *\n * Delete a shop category.\n *\n * @param categoryId The id of the shop category\n * @param options Request options (abort signal).\n */\n async delete(categoryId: string, options?: SpacebringRequestOptions): Promise<undefined> {\n return unwrap(await client.DELETE(\"/shop/categories/v1/{categoryId}\", { params: { path: { categoryId } }, signal: options?.signal }), \"DELETE /shop/categories/v1/{categoryId}\");\n },\n },\n orders: {\n /**\n * Retrieve orders\n *\n * Retrieve all orders of products from shop.\n */\n async list(query?: GetOrdersQuery, options?: SpacebringRequestOptions): Promise<{ nextPageToken?: string; orders: Order[]; searchQueryNext?: string }> {\n return unwrap(await client.GET(\"/shop/orders/v1\", { params: { query }, signal: options?.signal }), \"GET /shop/orders/v1\");\n },\n /**\n * Retrieve orders — iterates every item across all pages.\n *\n * Retrieve all orders of products from shop.\n */\n iterate(query?: Omit<GetOrdersQuery, \"nextPageToken\">, options?: SpacebringRequestOptions): AsyncGenerator<Order, void, undefined> {\n return paginate(\n async (nextPageToken: string | undefined) =>\n unwrap(await client.GET(\"/shop/orders/v1\", { params: { query: { ...query, nextPageToken } }, signal: options?.signal }), \"GET /shop/orders/v1\"),\n \"orders\",\n );\n },\n /**\n * Get an order\n *\n * Get a certain order.\n *\n * @param orderId The id of the order.\n * @param options Request options (abort signal).\n */\n async get(orderId: string, options?: SpacebringRequestOptions): Promise<Order> {\n return unwrapProp(await client.GET(\"/shop/orders/v1/{orderId}\", { params: { path: { orderId } }, signal: options?.signal }), \"order\", \"GET /shop/orders/v1/{orderId}\");\n },\n },\n products: {\n /**\n * Retrieve products\n *\n * Retrieve products from shop.\n */\n async list(query?: GetProductsQuery, options?: SpacebringRequestOptions): Promise<{ nextPageToken?: string; products: Product[]; searchQueryNext?: string }> {\n return unwrap(await client.GET(\"/shop/products/v1\", { params: { query }, signal: options?.signal }), \"GET /shop/products/v1\");\n },\n /**\n * Retrieve products — iterates every item across all pages.\n *\n * Retrieve products from shop.\n */\n iterate(query?: Omit<GetProductsQuery, \"nextPageToken\">, options?: SpacebringRequestOptions): AsyncGenerator<Product, void, undefined> {\n return paginate(\n async (nextPageToken: string | undefined) =>\n unwrap(await client.GET(\"/shop/products/v1\", { params: { query: { ...query, nextPageToken } }, signal: options?.signal }), \"GET /shop/products/v1\"),\n \"products\",\n );\n },\n /**\n * Get a product\n *\n * Get a certain product.\n *\n * @param productId The id of the product.\n * @param options Request options (abort signal).\n */\n async get(productId: string, options?: SpacebringRequestOptions): Promise<Product> {\n return unwrapProp(await client.GET(\"/shop/products/v1/{productId}\", { params: { path: { productId } }, signal: options?.signal }), \"product\", \"GET /shop/products/v1/{productId}\");\n },\n /**\n * Create a product\n *\n * Create a product in shop.\n */\n async create(product: CreateProductBody, options?: SpacebringRequestOptions): Promise<Product> {\n return unwrapProp(await client.POST(\"/shop/products/v1\", { body: { product }, signal: options?.signal }), \"product\", \"POST /shop/products/v1\");\n },\n /**\n * Update a product\n *\n * Update a certain product.\n *\n * @param productId The id of the product.\n * @param product The `product` payload.\n * @param options Request options (abort signal).\n */\n async update(productId: string, product: UpdateProductBody, options?: SpacebringRequestOptions): Promise<Product> {\n return unwrapProp(await client.PUT(\"/shop/products/v1/{productId}\", { params: { path: { productId } }, body: { product }, signal: options?.signal }), \"product\", \"PUT /shop/products/v1/{productId}\");\n },\n /**\n * Delete a product\n *\n * Delete a certain product.\n *\n * @param productId The id of the product.\n * @param options Request options (abort signal).\n */\n async delete(productId: string, options?: SpacebringRequestOptions): Promise<undefined> {\n return unwrap(await client.DELETE(\"/shop/products/v1/{productId}\", { params: { path: { productId } }, signal: options?.signal }), \"DELETE /shop/products/v1/{productId}\");\n },\n },\n };\n}\n","// AUTO-GENERATED by codegen/generate-facade.ts — DO NOT EDIT.\n// Regenerate with `npm run generate:facade`.\nimport type { Client } from \"openapi-fetch\";\nimport { paginate, unwrap, unwrapProp, type SpacebringDefaults, type SpacebringRequestOptions } from \"../../core.js\";\nimport type { components, operations, paths } from \"../schema.js\";\n\n/** A Subscription entity as returned by the Spacebring API. */\nexport type Subscription = NonNullable<components[\"schemas\"][\"subscription\"]>;\n\n/** Query parameters for `sb.subscriptions.list()`. */\nexport interface GetSubscriptionsQuery {\n /** Filter subscriptions created on or after this date (ISO 8601). Use with createDate[lte] for a range. */\n \"createDate[gte]\"?: string;\n /** Filter subscriptions created on or before this date (ISO 8601). Use with createDate[gte] for a range. */\n \"createDate[lte]\"?: string;\n /** UUID of the customer whose subscriptions to list. */\n customerRef?: string;\n /** Maximum number of subscriptions per page. Defaults to 25 when omitted or invalid; values above 100 are capped at 100. */\n limit?: number;\n /** UUID of the location whose subscriptions to list. */\n locationRef?: string;\n /** Pagination token from nextPageToken in a previous response. Keep the same filters when fetching the next page. */\n nextPageToken?: string;\n /** Sort order for results. */\n order?: string;\n /** UUID of the plan to filter subscriptions by. */\n planRef?: string;\n /** Filter by subscription status. Comma-separated values, e.g. `active,scheduled`. Defaults to `active`, `scheduled`, and `incomplete` when omitted.\n\n Supported values:\n - **active** — currently active\n - **scheduled** — scheduled to start\n - **incomplete** — pending setup or payment\n - **incompleteExpired** — incomplete and expired\n - **canceled** — canceled */\n status?: string;\n}\n\n/** Request body for `sb.subscriptions.create()`. */\nexport type CreateSubscriptionBody = NonNullable<operations[\"createSubscription\"][\"requestBody\"]>[\"content\"][\"application/json\"];\n\n/** Request body for `sb.subscriptions.createItem()`. */\nexport type CreateSubscriptionItemBody = NonNullable<NonNullable<operations[\"createSubscriptionItem\"][\"requestBody\"]>[\"content\"][\"application/json\"][\"item\"]>;\n\n/** Request body for `sb.subscriptions.update()`. */\nexport type UpdateSubscriptionBody = NonNullable<NonNullable<operations[\"updateSubscription\"][\"requestBody\"]>[\"content\"][\"application/json\"][\"subscription\"]>;\n\n/** Request body for `sb.subscriptions.updateItem()`. */\nexport type UpdateSubscriptionItemBody = NonNullable<NonNullable<operations[\"updateSubscriptionItem\"][\"requestBody\"]>[\"content\"][\"application/json\"][\"item\"]>;\n\nexport function createSubscriptions(client: Client<paths>, defaults: SpacebringDefaults) {\n return {\n /** Retrieve subscriptions */\n async list(query?: GetSubscriptionsQuery, options?: SpacebringRequestOptions): Promise<{ nextPageToken?: string; searchQueryNext?: string; subscriptions: Subscription[] }> {\n return unwrap(await client.GET(\"/subscriptions/v1\", { params: { query }, signal: options?.signal }), \"GET /subscriptions/v1\");\n },\n /** Retrieve subscriptions — iterates every item across all pages. */\n iterate(query?: Omit<GetSubscriptionsQuery, \"nextPageToken\">, options?: SpacebringRequestOptions): AsyncGenerator<Subscription, void, undefined> {\n return paginate(\n async (nextPageToken: string | undefined) =>\n unwrap(await client.GET(\"/subscriptions/v1\", { params: { query: { ...query, nextPageToken } }, signal: options?.signal }), \"GET /subscriptions/v1\"),\n \"subscriptions\",\n );\n },\n /**\n * Retrieve a subscription\n *\n * Retrieve a certain subscription.\n *\n * @param subscriptionId The id of the subscription.\n * @param options Request options (abort signal).\n */\n async get(subscriptionId: string, options?: SpacebringRequestOptions): Promise<Subscription> {\n return unwrapProp(await client.GET(\"/subscriptions/v1/{subscriptionId}\", { params: { path: { subscriptionId } }, signal: options?.signal }), \"subscription\", \"GET /subscriptions/v1/{subscriptionId}\");\n },\n /**\n * Create a subscription\n *\n * Create a subscription for a membership or company.\n */\n async create(body: CreateSubscriptionBody, options?: SpacebringRequestOptions): Promise<Subscription> {\n return unwrapProp(await client.POST(\"/subscriptions/v1\", { body, signal: options?.signal }), \"subscription\", \"POST /subscriptions/v1\");\n },\n /**\n * Update a subscription\n *\n * Update a certain subscription.\n *\n * @param subscriptionId The id of the subscription.\n * @param subscription The `subscription` payload.\n * @param options Request options (abort signal).\n */\n async update(subscriptionId: string, subscription: UpdateSubscriptionBody, options?: SpacebringRequestOptions): Promise<undefined> {\n return unwrap(await client.PATCH(\"/subscriptions/v1/{subscriptionId}\", { params: { path: { subscriptionId } }, body: { subscription }, signal: options?.signal }), \"PATCH /subscriptions/v1/{subscriptionId}\");\n },\n /**\n * Delete a subscription\n *\n * Delete a certain subscription.\n *\n * @param subscriptionId The id of the subscription.\n * @param options Request options (abort signal).\n */\n async delete(subscriptionId: string, options?: SpacebringRequestOptions): Promise<undefined> {\n return unwrap(await client.DELETE(\"/subscriptions/v1/{subscriptionId}\", { params: { path: { subscriptionId } }, signal: options?.signal }), \"DELETE /subscriptions/v1/{subscriptionId}\");\n },\n /**\n * Create a subscription item\n *\n * @param subscriptionId The id of the subscription.\n * @param item The `item` payload.\n * @param options Request options (abort signal).\n */\n async createItem(subscriptionId: string, item: CreateSubscriptionItemBody, options?: SpacebringRequestOptions): Promise<Subscription> {\n return unwrapProp(await client.POST(\"/subscriptions/v1/{subscriptionId}/items\", { params: { path: { subscriptionId } }, body: { item }, signal: options?.signal }), \"subscription\", \"POST /subscriptions/v1/{subscriptionId}/items\");\n },\n /**\n * Delete a subscription item\n *\n * @param subscriptionId The id of the subscription.\n * @param itemId The id of the subscription item.\n * @param options Request options (abort signal).\n */\n async deleteItem(subscriptionId: string, itemId: string, options?: SpacebringRequestOptions): Promise<undefined> {\n return unwrap(await client.DELETE(\"/subscriptions/v1/{subscriptionId}/items/{itemId}\", { params: { path: { subscriptionId, itemId } }, signal: options?.signal }), \"DELETE /subscriptions/v1/{subscriptionId}/items/{itemId}\");\n },\n /**\n * Update a subscription item\n *\n * @param subscriptionId The id of the subscription.\n * @param itemId The id of the subscription item.\n * @param item The `item` payload.\n * @param options Request options (abort signal).\n */\n async updateItem(subscriptionId: string, itemId: string, item: UpdateSubscriptionItemBody, options?: SpacebringRequestOptions): Promise<undefined> {\n return unwrap(await client.PATCH(\"/subscriptions/v1/{subscriptionId}/items/{itemId}\", { params: { path: { subscriptionId, itemId } }, body: { item }, signal: options?.signal }), \"PATCH /subscriptions/v1/{subscriptionId}/items/{itemId}\");\n },\n };\n}\n","// AUTO-GENERATED by codegen/generate-facade.ts — DO NOT EDIT.\n// Regenerate with `npm run generate:facade`.\nimport type { Client } from \"openapi-fetch\";\nimport { paginate, unwrap, unwrapProp, type SpacebringDefaults, type SpacebringRequestOptions } from \"../../core.js\";\nimport type { components, operations, paths } from \"../schema.js\";\n\n/** A Activity entity as returned by the Spacebring API. */\nexport type Activity = NonNullable<components[\"schemas\"][\"ticketActivity\"]>;\n\n/** A SupportTicket entity as returned by the Spacebring API. */\nexport type SupportTicket = NonNullable<components[\"schemas\"][\"ticket\"]>;\n\n/** Query parameters for `sb.support.tickets.list()`. */\nexport interface GetSupportTicketsQuery {\n /** The id of the location. */\n locationRef: string;\n /** The number of items to return */\n limit?: number;\n /** Filter tickets by requester membership ids. Pass one UUID or multiple unique comma-separated UUIDs without spaces, e.g. `id` or `id1,id2,id3`, up to 100. The memberships must exist in the location. Admins can filter by any requester; other users only by their own membership. */\n membershipRefRequester?: string;\n /** Token to retrieve the next page of results. */\n nextPageToken?: string;\n /** The order of the tickets. createDate:asc, createDate:desc, updateDate:asc or updateDate:desc. Default: createDate:desc */\n order?: string;\n /** Filter tickets by assignee user ids. Pass one UUID or multiple unique comma-separated UUIDs without spaces, e.g. `id` or `id1,id2,id3`, up to 100. The users must exist. Only admins can filter by assignee. */\n userRefAssignee?: string;\n}\n\n/** Request body for `sb.support.tickets.create()`. */\nexport type CreateSupportTicketBody = NonNullable<NonNullable<operations[\"createSupportTicket\"][\"requestBody\"]>[\"content\"][\"application/json\"][\"ticket\"]>;\n\n/** Request body for `sb.support.tickets.comment.create()`. */\nexport type CreateSupportTicketCommentBody = NonNullable<NonNullable<operations[\"createSupportTicketComment\"][\"requestBody\"]>[\"content\"][\"application/json\"][\"activity\"]>;\n\n/** Request body for `sb.support.tickets.updateAssignee()`. */\nexport type UpdateSupportTicketAssigneeBody = NonNullable<NonNullable<operations[\"updateSupportTicketAssignee\"][\"requestBody\"]>[\"content\"][\"application/json\"][\"ticket\"]>;\n\n/** Request body for `sb.support.tickets.updateStatus()`. */\nexport type UpdateSupportTicketStatusBody = NonNullable<NonNullable<operations[\"updateSupportTicketStatus\"][\"requestBody\"]>[\"content\"][\"application/json\"][\"ticket\"]>;\n\n/** Request body for `sb.support.tickets.updateType()`. */\nexport type UpdateSupportTicketTypeBody = NonNullable<NonNullable<operations[\"updateSupportTicketType\"][\"requestBody\"]>[\"content\"][\"application/json\"][\"ticket\"]>;\n\nexport function createSupport(client: Client<paths>, defaults: SpacebringDefaults) {\n return {\n tickets: {\n /**\n * Retrieve tickets\n *\n * Retrieve all support tickets.\n */\n async list(query: GetSupportTicketsQuery, options?: SpacebringRequestOptions): Promise<{ nextPageToken?: string; searchQueryNext?: string; tickets?: SupportTicket[] }> {\n return unwrap(await client.GET(\"/support/tickets/v1\", { params: { query }, signal: options?.signal }), \"GET /support/tickets/v1\");\n },\n /**\n * Retrieve tickets — iterates every item across all pages.\n *\n * Retrieve all support tickets.\n */\n iterate(query: Omit<GetSupportTicketsQuery, \"nextPageToken\">, options?: SpacebringRequestOptions): AsyncGenerator<SupportTicket, void, undefined> {\n return paginate(\n async (nextPageToken: string | undefined) =>\n unwrap(await client.GET(\"/support/tickets/v1\", { params: { query: { ...query, nextPageToken } }, signal: options?.signal }), \"GET /support/tickets/v1\"),\n \"tickets\",\n );\n },\n /**\n * Retrieve a ticket\n *\n * Retrieve a support ticket.\n *\n * @param id The id of the ticket.\n * @param options Request options (abort signal).\n */\n async get(id: string, options?: SpacebringRequestOptions): Promise<{ activities?: Activity[]; ticket?: SupportTicket }> {\n return unwrap(await client.GET(\"/support/tickets/v1/{id}\", { params: { path: { id } }, signal: options?.signal }), \"GET /support/tickets/v1/{id}\");\n },\n /**\n * Create a ticket\n *\n * Create a support ticket.\n */\n async create(ticket: CreateSupportTicketBody, options?: SpacebringRequestOptions): Promise<{ activities?: Activity[]; ticket?: SupportTicket }> {\n return unwrap(await client.POST(\"/support/tickets/v1\", { body: { ticket }, signal: options?.signal }), \"POST /support/tickets/v1\");\n },\n /**\n * Update a ticket's assignee\n *\n * Update support ticket assignee.\n *\n * @param id The id of the ticket.\n * @param ticket The `ticket` payload.\n * @param options Request options (abort signal).\n */\n async updateAssignee(id: string, ticket: UpdateSupportTicketAssigneeBody, options?: SpacebringRequestOptions): Promise<{ activity?: Activity; ticket?: SupportTicket }> {\n return unwrap(await client.PUT(\"/support/tickets/v1/{id}/assignee\", { params: { path: { id } }, body: { ticket }, signal: options?.signal }), \"PUT /support/tickets/v1/{id}/assignee\");\n },\n /**\n * Update a ticket's status\n *\n * Update support ticket status.\n *\n * @param id The id of the ticket.\n * @param ticket The `ticket` payload.\n * @param options Request options (abort signal).\n */\n async updateStatus(id: string, ticket: UpdateSupportTicketStatusBody, options?: SpacebringRequestOptions): Promise<{ activity?: Activity; ticket?: SupportTicket }> {\n return unwrap(await client.PUT(\"/support/tickets/v1/{id}/status\", { params: { path: { id } }, body: { ticket }, signal: options?.signal }), \"PUT /support/tickets/v1/{id}/status\");\n },\n /**\n * Update a ticket's type\n *\n * Update a support ticket type.\n *\n * @param id The id of the ticket.\n * @param ticket The `ticket` payload.\n * @param options Request options (abort signal).\n */\n async updateType(id: string, ticket: UpdateSupportTicketTypeBody, options?: SpacebringRequestOptions): Promise<undefined> {\n return unwrap(await client.PATCH(\"/support/tickets/v1/{id}/type\", { params: { path: { id } }, body: { ticket }, signal: options?.signal }), \"PATCH /support/tickets/v1/{id}/type\");\n },\n comment: {\n /**\n * Create a ticket comment\n *\n * Create a support ticket comment.\n */\n async create(activity: CreateSupportTicketCommentBody, options?: SpacebringRequestOptions): Promise<Activity> {\n return unwrapProp(await client.POST(\"/support/tickets/v1/comment\", { body: { activity }, signal: options?.signal }), \"activity\", \"POST /support/tickets/v1/comment\");\n },\n /**\n * Delete a ticket comment\n *\n * Delete a support ticket comment.\n *\n * @param id The id of the ticket activity.\n * @param options Request options (abort signal).\n */\n async delete(id: string, options?: SpacebringRequestOptions): Promise<undefined> {\n return unwrap(await client.DELETE(\"/support/tickets/v1/comment/{id}\", { params: { path: { id } }, signal: options?.signal }), \"DELETE /support/tickets/v1/comment/{id}\");\n },\n },\n },\n };\n}\n","// AUTO-GENERATED by codegen/generate-facade.ts — DO NOT EDIT.\n// Regenerate with `npm run generate:facade`.\nimport type { Client } from \"openapi-fetch\";\nimport { paginate, unwrap, unwrapProp, type SpacebringDefaults, type SpacebringRequestOptions } from \"../../core.js\";\nimport type { components, operations, paths } from \"../schema.js\";\n\n/** A Balance entity as returned by the Spacebring API. */\nexport type Balance = NonNullable<components[\"schemas\"][\"balance\"]>;\n\n/** A CreditScheduledTransaction entity as returned by the Spacebring API. */\nexport type CreditScheduledTransaction = NonNullable<operations[\"getScheduledCreditsTransactions\"][\"responses\"][200][\"content\"][\"application/json\"][\"scheduledTransactions\"]>[number];\n\n/** A CreditTransaction entity as returned by the Spacebring API. */\nexport type CreditTransaction = NonNullable<components[\"schemas\"][\"transactionCredits\"]>;\n\n/** A DayPassScheduledTransaction entity as returned by the Spacebring API. */\nexport type DayPassScheduledTransaction = NonNullable<operations[\"getScheduledDayPassesTransactions\"][\"responses\"][200][\"content\"][\"application/json\"][\"scheduledTransactions\"]>[number];\n\n/** A DayPassTransaction entity as returned by the Spacebring API. */\nexport type DayPassTransaction = NonNullable<components[\"schemas\"][\"transactionDayPasses\"]>;\n\n/** A MoneyTransaction entity as returned by the Spacebring API. */\nexport type MoneyTransaction = NonNullable<components[\"schemas\"][\"transaction\"]>;\n\n/** Query parameters for `sb.transactions.credits.list()`. */\nexport interface GetCreditsTransactionsQuery {\n /** @deprecated Use customerRef instead. The id of the company to get transactions for. */\n companyRef?: string;\n /** Get transactions with greater or equal createDate. Example: createDate[gte]=2021-05-21T10:00:00Z */\n \"createDate[gte]\"?: string;\n /** Get transactions with less or equal createDate. Example: createDate[lte]=2021-05-21T10:00:00Z */\n \"createDate[lte]\"?: string;\n /** UUID of the company or membership whose credits transactions to list. */\n customerRef?: string;\n /** Maximum number of transactions per page. Defaults to 25 when omitted or invalid; values above 100 are capped at 100. */\n limit?: number;\n /** UUID of the location whose credits transactions to list. */\n locationRef?: string;\n /** @deprecated Use customerRef instead. The id of the membership to get transactions for. */\n membershipRef?: string;\n /** Token to retrieve the next page of results. */\n nextPageToken?: string;\n /** Filter by transaction status. Comma-separated status values, e.g. `status=succeeded,pending`. */\n status?: string;\n /** Filter by transaction type. Comma-separated storage type values, e.g. `type=refund,booking`. Matches analytics report type filters. */\n type?: string;\n}\n\n/** Query parameters for `sb.transactions.dayPasses.list()`. */\nexport interface GetDayPassesTransactionsQuery {\n /** @deprecated Use customerRef instead. The id of the company to get transactions for. */\n companyRef?: string;\n /** Get transactions with greater or equal createDate. Example: createDate[gte]=2021-05-21T10:00:00Z */\n \"createDate[gte]\"?: string;\n /** Get transactions with less or equal createDate. Example: createDate[lte]=2021-05-21T10:00:00Z */\n \"createDate[lte]\"?: string;\n /** UUID of the company or membership whose day pass transactions to list. */\n customerRef?: string;\n /** Maximum number of transactions per page. Defaults to 25 when omitted or invalid; values above 100 are capped at 100. */\n limit?: number;\n /** UUID of the location whose day pass transactions to list. */\n locationRef?: string;\n /** @deprecated Use customerRef instead. The id of the membership to get transactions for. */\n membershipRef?: string;\n /** Token to retrieve the next page of results. */\n nextPageToken?: string;\n /** Filter by transaction type. Comma-separated storage type values, e.g. `type=refund,booking`. Matches analytics report type filters. */\n type?: string;\n}\n\n/** Query parameters for `sb.transactions.money.list()`. */\nexport interface GetMoneyTransactionsQuery {\n /** The id of the location */\n locationRef: string;\n /** The number of items to return */\n limit?: number;\n /** The payment status of transactions */\n status?: \"canceled\" | \"failed\" | \"pending\" | \"processing\" | \"succeeded\";\n /** The type of transactions */\n type?: \"booking\" | \"creditPackage\" | \"eventTicket\" | \"invoice\" | \"order\" | \"subscription\";\n /** The date filter of items. */\n createDate?: { lte?: string; gte?: string };\n /** Token to retrieve the next page of results. */\n nextPageToken?: string;\n}\n\n/** Query parameters for `sb.transactions.credits.scheduled.list()`. */\nexport interface GetScheduledCreditsTransactionsQuery {\n /** UUID of the company or membership whose scheduled credits transactions to list. */\n customerRef?: string;\n /** Maximum number of transactions per page. Defaults to 25 when omitted or invalid; values above 100 are capped at 100. */\n limit?: number;\n /** Token to retrieve the next page of results. */\n nextPageToken?: string;\n /** UUID of the subscription whose scheduled credits transactions to list. */\n subscriptionRef?: string;\n}\n\n/** Query parameters for `sb.transactions.dayPasses.scheduled.list()`. */\nexport interface GetScheduledDayPassesTransactionsQuery {\n /** UUID of the company or membership whose scheduled day pass transactions to list. */\n customerRef?: string;\n /** Maximum number of transactions per page. Defaults to 25 when omitted or invalid; values above 100 are capped at 100. */\n limit?: number;\n /** Token to retrieve the next page of results. */\n nextPageToken?: string;\n /** UUID of the subscription whose scheduled day pass transactions to list. */\n subscriptionRef?: string;\n}\n\n/** Request body for `sb.transactions.credits.create()`. */\nexport type CreateCreditsTransactionBody = NonNullable<NonNullable<operations[\"createCreditsTransaction\"][\"requestBody\"]>[\"content\"][\"application/json\"][\"transaction\"]>;\n\n/** Request body for `sb.transactions.dayPasses.create()`. */\nexport type CreateDayPassesTransactionBody = NonNullable<NonNullable<operations[\"createDayPassesTransaction\"][\"requestBody\"]>[\"content\"][\"application/json\"][\"transaction\"]>;\n\nexport function createTransactions(client: Client<paths>, defaults: SpacebringDefaults) {\n return {\n balances: {\n /**\n * Retrieve credit balance\n *\n * Retrieve credits balance.\n *\n * @param id The id of the customer\n * @param options Request options (abort signal).\n */\n async getCredits(id: string, options?: SpacebringRequestOptions): Promise<Balance[]> {\n return unwrapProp(await client.GET(\"/transactions/v1/balances/{id}/credits\", { params: { path: { id } }, signal: options?.signal }), \"balances\", \"GET /transactions/v1/balances/{id}/credits\");\n },\n /**\n * Retrieve day passes balance\n *\n * @param id The id of the customer\n * @param options Request options (abort signal).\n */\n async getDayPasses(id: string, options?: SpacebringRequestOptions): Promise<Balance[]> {\n return unwrapProp(await client.GET(\"/transactions/v1/balances/{id}/day_passes\", { params: { path: { id } }, signal: options?.signal }), \"balances\", \"GET /transactions/v1/balances/{id}/day_passes\");\n },\n },\n credits: {\n /**\n * Retrieve credit transactions\n *\n * Retrieve credits transactions.\n */\n async list(query?: GetCreditsTransactionsQuery, options?: SpacebringRequestOptions): Promise<{ nextPageToken?: string; searchQueryNext?: string; transactions: CreditTransaction[] }> {\n return unwrap(await client.GET(\"/transactions/credits/v1\", { params: { query }, signal: options?.signal }), \"GET /transactions/credits/v1\");\n },\n /**\n * Retrieve credit transactions — iterates every item across all pages.\n *\n * Retrieve credits transactions.\n */\n iterate(query?: Omit<GetCreditsTransactionsQuery, \"nextPageToken\">, options?: SpacebringRequestOptions): AsyncGenerator<CreditTransaction, void, undefined> {\n return paginate(\n async (nextPageToken: string | undefined) =>\n unwrap(await client.GET(\"/transactions/credits/v1\", { params: { query: { ...query, nextPageToken } }, signal: options?.signal }), \"GET /transactions/credits/v1\"),\n \"transactions\",\n );\n },\n /**\n * Retrieve a credit transaction\n *\n * Retrieve a credits transaction.\n *\n * @param id The id of the transaction\n * @param options Request options (abort signal).\n */\n async get(id: string, options?: SpacebringRequestOptions): Promise<CreditTransaction> {\n return unwrapProp(await client.GET(\"/transactions/credits/v1/{id}\", { params: { path: { id } }, signal: options?.signal }), \"transaction\", \"GET /transactions/credits/v1/{id}\");\n },\n /**\n * Create a credit transaction\n *\n * Create a credits transaction.\n */\n async create(transaction: CreateCreditsTransactionBody, options?: SpacebringRequestOptions): Promise<CreditTransaction> {\n return unwrapProp(await client.POST(\"/transactions/credits/v1\", { body: { transaction }, signal: options?.signal }), \"transaction\", \"POST /transactions/credits/v1\");\n },\n scheduled: {\n /**\n * Retrieve scheduled credits transactions\n *\n * Retrieve scheduled credits transactions of a subscription or a customer.\n */\n async list(query?: GetScheduledCreditsTransactionsQuery, options?: SpacebringRequestOptions): Promise<{ nextPageToken?: string; scheduledTransactions: CreditScheduledTransaction[]; searchQueryNext?: string }> {\n return unwrap(await client.GET(\"/transactions/credits/scheduled/v1\", { params: { query }, signal: options?.signal }), \"GET /transactions/credits/scheduled/v1\");\n },\n /**\n * Retrieve scheduled credits transactions — iterates every item across all pages.\n *\n * Retrieve scheduled credits transactions of a subscription or a customer.\n */\n iterate(query?: Omit<GetScheduledCreditsTransactionsQuery, \"nextPageToken\">, options?: SpacebringRequestOptions): AsyncGenerator<CreditScheduledTransaction, void, undefined> {\n return paginate(\n async (nextPageToken: string | undefined) =>\n unwrap(await client.GET(\"/transactions/credits/scheduled/v1\", { params: { query: { ...query, nextPageToken } }, signal: options?.signal }), \"GET /transactions/credits/scheduled/v1\"),\n \"scheduledTransactions\",\n );\n },\n },\n },\n dayPasses: {\n /**\n * Retrieve day pass transactions\n *\n * Retrieve day passes transactions.\n */\n async list(query?: GetDayPassesTransactionsQuery, options?: SpacebringRequestOptions): Promise<{ nextPageToken?: string; searchQueryNext?: string; transactions: DayPassTransaction[] }> {\n return unwrap(await client.GET(\"/transactions/day_passes/v1\", { params: { query }, signal: options?.signal }), \"GET /transactions/day_passes/v1\");\n },\n /**\n * Retrieve day pass transactions — iterates every item across all pages.\n *\n * Retrieve day passes transactions.\n */\n iterate(query?: Omit<GetDayPassesTransactionsQuery, \"nextPageToken\">, options?: SpacebringRequestOptions): AsyncGenerator<DayPassTransaction, void, undefined> {\n return paginate(\n async (nextPageToken: string | undefined) =>\n unwrap(await client.GET(\"/transactions/day_passes/v1\", { params: { query: { ...query, nextPageToken } }, signal: options?.signal }), \"GET /transactions/day_passes/v1\"),\n \"transactions\",\n );\n },\n /**\n * Retrieve a day pass transaction\n *\n * Retrieve a day passes transaction.\n *\n * @param id The id of the transaction\n * @param options Request options (abort signal).\n */\n async get(id: string, options?: SpacebringRequestOptions): Promise<DayPassTransaction> {\n return unwrapProp(await client.GET(\"/transactions/day_passes/v1/{id}\", { params: { path: { id } }, signal: options?.signal }), \"transaction\", \"GET /transactions/day_passes/v1/{id}\");\n },\n /**\n * Create a day pass transaction\n *\n * Create a day passes transaction.\n */\n async create(transaction: CreateDayPassesTransactionBody, options?: SpacebringRequestOptions): Promise<DayPassTransaction> {\n return unwrapProp(await client.POST(\"/transactions/day_passes/v1\", { body: { transaction }, signal: options?.signal }), \"transaction\", \"POST /transactions/day_passes/v1\");\n },\n scheduled: {\n /**\n * Retrieve scheduled day pass transactions\n *\n * Retrieve scheduled day passes transactions of a subscription or a customer.\n */\n async list(query?: GetScheduledDayPassesTransactionsQuery, options?: SpacebringRequestOptions): Promise<{ nextPageToken?: string; scheduledTransactions: DayPassScheduledTransaction[]; searchQueryNext?: string }> {\n return unwrap(await client.GET(\"/transactions/day_passes/scheduled/v1\", { params: { query }, signal: options?.signal }), \"GET /transactions/day_passes/scheduled/v1\");\n },\n /**\n * Retrieve scheduled day pass transactions — iterates every item across all pages.\n *\n * Retrieve scheduled day passes transactions of a subscription or a customer.\n */\n iterate(query?: Omit<GetScheduledDayPassesTransactionsQuery, \"nextPageToken\">, options?: SpacebringRequestOptions): AsyncGenerator<DayPassScheduledTransaction, void, undefined> {\n return paginate(\n async (nextPageToken: string | undefined) =>\n unwrap(await client.GET(\"/transactions/day_passes/scheduled/v1\", { params: { query: { ...query, nextPageToken } }, signal: options?.signal }), \"GET /transactions/day_passes/scheduled/v1\"),\n \"scheduledTransactions\",\n );\n },\n },\n },\n money: {\n /** Retrieve money transactions */\n async list(query: GetMoneyTransactionsQuery, options?: SpacebringRequestOptions): Promise<{ transactions?: MoneyTransaction[]; nextPageToken?: string }> {\n return unwrap(await client.GET(\"/transactions/money/v1\", { params: { query }, signal: options?.signal }), \"GET /transactions/money/v1\");\n },\n /** Retrieve money transactions — iterates every item across all pages. */\n iterate(query: Omit<GetMoneyTransactionsQuery, \"nextPageToken\">, options?: SpacebringRequestOptions): AsyncGenerator<MoneyTransaction, void, undefined> {\n return paginate(\n async (nextPageToken: string | undefined) =>\n unwrap(await client.GET(\"/transactions/money/v1\", { params: { query: { ...query, nextPageToken } }, signal: options?.signal }), \"GET /transactions/money/v1\"),\n \"transactions\",\n );\n },\n /**\n * Retrieve a money transaction\n *\n * @param id The id of the transaction\n * @param options Request options (abort signal).\n */\n async get(id: string, options?: SpacebringRequestOptions): Promise<MoneyTransaction> {\n return unwrapProp(await client.GET(\"/transactions/money/v1/{id}\", { params: { path: { id } }, signal: options?.signal }), \"transaction\", \"GET /transactions/money/v1/{id}\");\n },\n },\n };\n}\n","// AUTO-GENERATED by codegen/generate-facade.ts — DO NOT EDIT.\n// Regenerate with `npm run generate:facade`.\nimport type { Client } from \"openapi-fetch\";\nimport { paginate, unwrap, unwrapProp, type SpacebringDefaults, type SpacebringRequestOptions } from \"../../core.js\";\nimport type { components, operations, paths } from \"../schema.js\";\n\n/** A Contact entity as returned by the Spacebring API. */\nexport type Contact = NonNullable<components[\"schemas\"][\"contact\"]>;\n\n/** A Request entity as returned by the Spacebring API. */\nexport type Request = NonNullable<components[\"schemas\"][\"visitRequest\"]>;\n\n/** A Visit entity as returned by the Spacebring API. */\nexport type Visit = NonNullable<components[\"schemas\"][\"visit\"]>;\n\n/** Query parameters for `sb.visitors.contacts.list()`. */\nexport interface GetContactsQuery {\n /** The maximum number of contacts to return. Default is 25. */\n limit?: number;\n /** Token to retrieve the next page of results. */\n nextPageToken?: string;\n /** The id of the location. */\n locationRef: string;\n /** The create date filter of items. */\n createDate?: { lte?: string; gte?: string };\n}\n\n/** Query parameters for `sb.visitors.requests.list()`. */\nexport interface GetRequestsQuery {\n /** The id of the location. */\n locationRef: string;\n /** Token to retrieve the next page of results. */\n nextPageToken?: string;\n /** The number of items to return. */\n limit?: number;\n /** The create date filter of items. */\n createDate?: { lte?: string; gte?: string };\n}\n\n/** Query parameters for `sb.visitors.visits.list()`. */\nexport interface GetVisitsQuery {\n /** The id of the location. */\n locationRef: string;\n /** The id of the user, host of the visit. */\n userRefHost?: string;\n /** The date filter of items. */\n createDate?: { lte?: string; gte?: string };\n /** The visit date filter of items. */\n date?: { lte?: string; gte?: string };\n /** The number of items to return */\n limit?: number;\n /** Token to retrieve the next page of results. */\n nextPageToken?: string;\n}\n\n/** Request body for `sb.visitors.visits.checkIn()`. */\nexport type CheckInVisitBody = NonNullable<operations[\"checkInVisit\"][\"requestBody\"]>[\"content\"][\"application/json\"];\n\n/** Request body for `sb.visitors.visits.checkOut()`. */\nexport type CheckOutVisitBody = NonNullable<operations[\"checkOutVisit\"][\"requestBody\"]>[\"content\"][\"application/json\"];\n\n/** Request body for `sb.visitors.contacts.create()`. */\nexport type CreateContactBody = NonNullable<NonNullable<operations[\"createContact\"][\"requestBody\"]>[\"content\"][\"application/json\"][\"contact\"]>;\n\n/** Request body for `sb.visitors.requests.create()`. */\nexport type CreateRequestBody = NonNullable<NonNullable<operations[\"createRequest\"][\"requestBody\"]>[\"content\"][\"application/json\"][\"request\"]>;\n\n/** Request body for `sb.visitors.visits.create()`. */\nexport type CreateVisitBody = NonNullable<NonNullable<operations[\"createVisit\"][\"requestBody\"]>[\"content\"][\"application/json\"][\"visit\"]>;\n\n/** Request body for `sb.visitors.visits.update()`. */\nexport type UpdateVisitBody = NonNullable<NonNullable<operations[\"updateVisit\"][\"requestBody\"]>[\"content\"][\"application/json\"][\"visit\"]>;\n\nexport function createVisitors(client: Client<paths>, defaults: SpacebringDefaults) {\n return {\n contacts: {\n /** Get contacts */\n async list(query: GetContactsQuery, options?: SpacebringRequestOptions): Promise<{ contacts?: Contact[]; nextPageToken?: string; searchQueryNext?: string }> {\n return unwrap(await client.GET(\"/visitors/contacts/v1\", { params: { query }, signal: options?.signal }), \"GET /visitors/contacts/v1\");\n },\n /** Get contacts — iterates every item across all pages. */\n iterate(query: Omit<GetContactsQuery, \"nextPageToken\">, options?: SpacebringRequestOptions): AsyncGenerator<Contact, void, undefined> {\n return paginate(\n async (nextPageToken: string | undefined) =>\n unwrap(await client.GET(\"/visitors/contacts/v1\", { params: { query: { ...query, nextPageToken } }, signal: options?.signal }), \"GET /visitors/contacts/v1\"),\n \"contacts\",\n );\n },\n /**\n * Get a contact\n *\n * @param contactId The id of the contact.\n * @param options Request options (abort signal).\n */\n async get(contactId: string, options?: SpacebringRequestOptions): Promise<Contact> {\n return unwrapProp(await client.GET(\"/visitors/contacts/v1/{contactId}\", { params: { path: { contactId } }, signal: options?.signal }), \"contact\", \"GET /visitors/contacts/v1/{contactId}\");\n },\n /** Create a contact */\n async create(contact: CreateContactBody, options?: SpacebringRequestOptions): Promise<Contact> {\n return unwrapProp(await client.POST(\"/visitors/contacts/v1\", { body: { contact }, signal: options?.signal }), \"contact\", \"POST /visitors/contacts/v1\");\n },\n },\n requests: {\n /** Get requests */\n async list(query: GetRequestsQuery, options?: SpacebringRequestOptions): Promise<{ nextPageToken?: string; requests?: Request[]; searchQueryNext?: string }> {\n return unwrap(await client.GET(\"/visitors/requests/v1\", { params: { query }, signal: options?.signal }), \"GET /visitors/requests/v1\");\n },\n /** Get requests — iterates every item across all pages. */\n iterate(query: Omit<GetRequestsQuery, \"nextPageToken\">, options?: SpacebringRequestOptions): AsyncGenerator<Request, void, undefined> {\n return paginate(\n async (nextPageToken: string | undefined) =>\n unwrap(await client.GET(\"/visitors/requests/v1\", { params: { query: { ...query, nextPageToken } }, signal: options?.signal }), \"GET /visitors/requests/v1\"),\n \"requests\",\n );\n },\n /**\n * Retrieve a request\n *\n * @param id The id of the request.\n * @param options Request options (abort signal).\n */\n async get(id: string, options?: SpacebringRequestOptions): Promise<Request> {\n return unwrapProp(await client.GET(\"/visitors/requests/v1/{id}\", { params: { path: { id } }, signal: options?.signal }), \"request\", \"GET /visitors/requests/v1/{id}\");\n },\n /** Create a request */\n async create(request: CreateRequestBody, options?: SpacebringRequestOptions): Promise<Request> {\n return unwrapProp(await client.POST(\"/visitors/requests/v1\", { body: { request }, signal: options?.signal }), \"request\", \"POST /visitors/requests/v1\");\n },\n /**\n * Approve a request\n *\n * @param id The id of the request\n * @param options Request options (abort signal).\n */\n async approve(id: string, options?: SpacebringRequestOptions): Promise<Visit> {\n return unwrapProp(await client.POST(\"/visitors/requests/v1/{id}/approve\", { params: { path: { id } }, signal: options?.signal }), \"visit\", \"POST /visitors/requests/v1/{id}/approve\");\n },\n /**\n * Reject a request\n *\n * @param id The id of the request\n * @param options Request options (abort signal).\n */\n async reject(id: string, options?: SpacebringRequestOptions): Promise<undefined> {\n return unwrap(await client.POST(\"/visitors/requests/v1/{id}/reject\", { params: { path: { id } }, signal: options?.signal }), \"POST /visitors/requests/v1/{id}/reject\");\n },\n },\n visits: {\n /** Retrieve visits */\n async list(query: GetVisitsQuery, options?: SpacebringRequestOptions): Promise<{ nextPageToken?: string; searchQueryNext?: string; visits?: Visit[] }> {\n return unwrap(await client.GET(\"/visitors/visits/v1\", { params: { query }, signal: options?.signal }), \"GET /visitors/visits/v1\");\n },\n /** Retrieve visits — iterates every item across all pages. */\n iterate(query: Omit<GetVisitsQuery, \"nextPageToken\">, options?: SpacebringRequestOptions): AsyncGenerator<Visit, void, undefined> {\n return paginate(\n async (nextPageToken: string | undefined) =>\n unwrap(await client.GET(\"/visitors/visits/v1\", { params: { query: { ...query, nextPageToken } }, signal: options?.signal }), \"GET /visitors/visits/v1\"),\n \"visits\",\n );\n },\n /**\n * Retrieve a visit\n *\n * Retrieve a visit by id.\n *\n * @param id The id of the visit\n * @param options Request options (abort signal).\n */\n async get(id: string, options?: SpacebringRequestOptions): Promise<Visit> {\n return unwrapProp(await client.GET(\"/visitors/visits/v1/{id}\", { params: { path: { id } }, signal: options?.signal }), \"visit\", \"GET /visitors/visits/v1/{id}\");\n },\n /** Create a visit */\n async create(visit: CreateVisitBody, options?: SpacebringRequestOptions): Promise<Visit> {\n return unwrapProp(await client.POST(\"/visitors/visits/v1\", { body: { visit }, signal: options?.signal }), \"visit\", \"POST /visitors/visits/v1\");\n },\n /**\n * Update a visit\n *\n * Update a visit by id.\n *\n * @param id The id of the visit\n * @param visit The `visit` payload.\n * @param options Request options (abort signal).\n */\n async update(id: string, visit: UpdateVisitBody, options?: SpacebringRequestOptions): Promise<Visit> {\n return unwrapProp(await client.PUT(\"/visitors/visits/v1/{id}\", { params: { path: { id } }, body: { visit }, signal: options?.signal }), \"visit\", \"PUT /visitors/visits/v1/{id}\");\n },\n /**\n * Delete a visit\n *\n * Delete a visit by id.\n *\n * @param id The id of the visit\n * @param options Request options (abort signal).\n */\n async delete(id: string, options?: SpacebringRequestOptions): Promise<undefined> {\n return unwrap(await client.DELETE(\"/visitors/visits/v1/{id}\", { params: { path: { id } }, signal: options?.signal }), \"DELETE /visitors/visits/v1/{id}\");\n },\n /** Check in a visit */\n async checkIn(body: CheckInVisitBody, options?: SpacebringRequestOptions): Promise<Visit> {\n return unwrapProp(await client.POST(\"/visitors/visits/v1/checkin\", { body, signal: options?.signal }), \"visit\", \"POST /visitors/visits/v1/checkin\");\n },\n /** Check out a visit */\n async checkOut(body: CheckOutVisitBody, options?: SpacebringRequestOptions): Promise<Visit> {\n return unwrapProp(await client.POST(\"/visitors/visits/v1/checkout\", { body, signal: options?.signal }), \"visit\", \"POST /visitors/visits/v1/checkout\");\n },\n },\n };\n}\n","// AUTO-GENERATED by codegen/generate-facade.ts — DO NOT EDIT.\n// Regenerate with `npm run generate:facade`.\nimport type { Client } from \"openapi-fetch\";\nimport type { SpacebringDefaults } from \"../../core.js\";\nimport type { paths } from \"../schema.js\";\nimport { createAltcurrencies as altCurrenciesGroup } from \"./altCurrencies.js\";\nimport { createBenefits as benefitsGroup } from \"./benefits.js\";\nimport { createBilling as billingGroup } from \"./billing.js\";\nimport { createCommunity as communityGroup } from \"./community.js\";\nimport { createContracts as contractsGroup } from \"./contracts.js\";\nimport { createDiscounts as discountsGroup } from \"./discounts.js\";\nimport { createEvents as eventsGroup } from \"./events.js\";\nimport { createFeed as feedGroup } from \"./feed.js\";\nimport { createFloors as floorsGroup } from \"./floors.js\";\nimport { createGuides as guidesGroup } from \"./guides.js\";\nimport { createLocations as locationsGroup } from \"./locations.js\";\nimport { createNetworks as networksGroup } from \"./networks.js\";\nimport { createPackages as packagesGroup } from \"./packages.js\";\nimport { createPlans as plansGroup } from \"./plans.js\";\nimport { createRegistrations as registrationsGroup } from \"./registrations.js\";\nimport { createResources as resourcesGroup } from \"./resources.js\";\nimport { createShop as shopGroup } from \"./shop.js\";\nimport { createSubscriptions as subscriptionsGroup } from \"./subscriptions.js\";\nimport { createSupport as supportGroup } from \"./support.js\";\nimport { createTransactions as transactionsGroup } from \"./transactions.js\";\nimport { createVisitors as visitorsGroup } from \"./visitors.js\";\n\nexport function createResources(client: Client<paths>, defaults: SpacebringDefaults) {\n return {\n altCurrencies: altCurrenciesGroup(client, defaults),\n benefits: benefitsGroup(client, defaults),\n billing: billingGroup(client, defaults),\n community: communityGroup(client, defaults),\n contracts: contractsGroup(client, defaults),\n discounts: discountsGroup(client, defaults),\n events: eventsGroup(client, defaults),\n feed: feedGroup(client, defaults),\n floors: floorsGroup(client, defaults),\n guides: guidesGroup(client, defaults),\n locations: locationsGroup(client, defaults),\n networks: networksGroup(client, defaults),\n packages: packagesGroup(client, defaults),\n plans: plansGroup(client, defaults),\n registrations: registrationsGroup(client, defaults),\n resources: resourcesGroup(client, defaults),\n shop: shopGroup(client, defaults),\n subscriptions: subscriptionsGroup(client, defaults),\n support: supportGroup(client, defaults),\n transactions: transactionsGroup(client, defaults),\n visitors: visitorsGroup(client, defaults),\n };\n}\n\nexport type SpacebringResources = ReturnType<typeof createResources>;\n","import createClient, { type Client } from \"openapi-fetch\";\nimport { createResources, type SpacebringResources } from \"./generated/resources/index.js\";\nimport type { paths } from \"./generated/schema.js\";\n\nexport interface SpacebringConfig {\n /** Client ID from Spacebring > Network Settings > Developers. */\n clientId: string;\n /** Client secret from Spacebring > Network Settings > Developers. */\n clientSecret: string;\n /** Network ID, sent as the `spacebring-network-id` header on every request. */\n networkId?: string;\n /** API origin. Defaults to `https://api.spacebring.com`. */\n baseUrl?: string;\n /** Custom fetch implementation (testing, non-standard platforms). */\n fetch?: typeof globalThis.fetch;\n /**\n * How many times to retry a failed request. Retried: 429 rate limits\n * (any method — the API allows 10 requests/second and did not process the\n * request), plus 502/503/504 responses, network errors, and timeouts on\n * idempotent methods only (GET/HEAD/PUT/DELETE/OPTIONS — a gateway error\n * may have reached the API, so POSTs are never replayed). Waits per the\n * `Retry-After` header (seconds or HTTP-date), or with exponential backoff\n * when absent. Defaults to 3; 0 disables.\n */\n maxRetries?: number;\n /**\n * Timeout per request attempt in milliseconds (each retry attempt gets a\n * fresh budget). Timed-out attempts reject with a `TimeoutError` and are\n * retried like network errors. Off by default. Uses `AbortSignal.timeout`;\n * combining with a caller-supplied signal needs `AbortSignal.any`\n * (Node >= 20.3, all modern browsers/workers).\n */\n timeoutMs?: number;\n}\n\nexport interface Spacebring extends SpacebringResources {}\n\n// biome-ignore lint/suspicious/noUnsafeDeclarationMerging: the constructor Object.assigns every resource group onto the instance, so the merge is backed at runtime.\nexport class Spacebring {\n /** Typed openapi-fetch client — escape hatch for endpoints or options the facade does not cover. */\n readonly raw: Client<paths>;\n\n constructor(config: SpacebringConfig) {\n const baseUrl = config.baseUrl ?? \"https://api.spacebring.com\";\n // Basic-auth credentials ride on every request; refuse to send them in\n // cleartext. Loopback is allowed for local proxies/mock servers over http.\n assertSecureBaseUrl(baseUrl);\n const headers: Record<string, string> = {\n Authorization: `Basic ${toBase64(`${config.clientId}:${config.clientSecret}`)}`,\n };\n if (config.networkId) {\n headers[\"spacebring-network-id\"] = config.networkId;\n }\n this.raw = createClient<paths>({\n baseUrl,\n headers,\n fetch: withRetry(config.fetch ?? globalThis.fetch, config.maxRetries ?? 3, config.timeoutMs),\n });\n Object.assign(this, createResources(this.raw, { networkId: config.networkId }));\n }\n}\n\n// A gateway error or dropped connection may have reached the API, so only\n// methods that are safe to replay retry on those; 429 means the request was\n// not processed and is retried regardless of method.\nconst IDEMPOTENT_METHODS = new Set([\"GET\", \"HEAD\", \"PUT\", \"DELETE\", \"OPTIONS\"]);\nconst RETRYABLE_STATUSES = new Set([502, 503, 504]);\n\n/**\n * Adds retry (429 always; 502/503/504, network errors, and timeouts for\n * idempotent methods) and an optional per-attempt timeout. The request is\n * cloned per attempt so bodies can be resent.\n */\nfunction withRetry(\n fetchImpl: typeof globalThis.fetch,\n maxRetries: number,\n timeoutMs: number | undefined,\n): typeof globalThis.fetch {\n if (maxRetries <= 0 && timeoutMs === undefined) return fetchImpl;\n return async (input, init) => {\n const request = input instanceof Request && init === undefined ? input : new Request(input, init);\n const idempotent = IDEMPOTENT_METHODS.has(request.method);\n for (let attempt = 0; ; attempt += 1) {\n let response: Response;\n try {\n response = await fetchImpl(request.clone(), attemptInit(request, timeoutMs));\n } catch (error) {\n const retryable = attempt < maxRetries && idempotent && !request.signal.aborted && isTransientError(error);\n if (!retryable) throw error;\n await sleep(backoffMs(attempt), request.signal);\n continue;\n }\n const retryableStatus = response.status === 429 || (idempotent && RETRYABLE_STATUSES.has(response.status));\n if (!retryableStatus || attempt >= maxRetries) return response;\n await sleep(retryDelayMs(response.headers.get(\"retry-after\"), attempt), request.signal);\n }\n };\n}\n\n/** Per-attempt timeout signal, combined with the caller's signal when possible. */\nfunction attemptInit(request: Request, timeoutMs: number | undefined): RequestInit | undefined {\n if (timeoutMs === undefined) return undefined;\n const timeout = AbortSignal.timeout(timeoutMs);\n return {\n signal: typeof AbortSignal.any === \"function\" ? AbortSignal.any([request.signal, timeout]) : timeout,\n };\n}\n\n/** Network failures reject with TypeError, `AbortSignal.timeout` with TimeoutError. */\nfunction isTransientError(error: unknown): boolean {\n return error instanceof TypeError || (error instanceof Error && error.name === \"TimeoutError\");\n}\n\nfunction retryDelayMs(retryAfter: string | null, attempt: number): number {\n if (retryAfter !== null) {\n // Cap server-supplied delays: a misbehaving proxy must not be able to\n // park the client on a multi-hour setTimeout.\n const seconds = Number(retryAfter);\n if (Number.isFinite(seconds) && seconds >= 0) return Math.min(seconds * 1000, 60_000);\n const date = Date.parse(retryAfter); // HTTP-date form, e.g. \"Wed, 21 Oct 2026 07:28:00 GMT\"\n if (!Number.isNaN(date)) return Math.min(Math.max(date - Date.now(), 0), 60_000);\n }\n return backoffMs(attempt);\n}\n\nfunction backoffMs(attempt: number): number {\n return Math.min(250 * 2 ** attempt + Math.random() * 100, 5_000);\n}\n\n/** Waits `ms`, rejecting immediately with the abort reason if `signal` fires. */\nfunction sleep(ms: number, signal: AbortSignal): Promise<void> {\n return new Promise((resolve, reject) => {\n if (signal.aborted) {\n reject(signal.reason);\n return;\n }\n const onAbort = () => {\n clearTimeout(timer);\n reject(signal.reason);\n };\n const timer = setTimeout(() => {\n signal.removeEventListener(\"abort\", onAbort);\n resolve();\n }, ms);\n signal.addEventListener(\"abort\", onAbort, { once: true });\n });\n}\n\n/** Rejects an http:// baseUrl (credentials would go in cleartext); allows loopback. */\nfunction assertSecureBaseUrl(baseUrl: string): void {\n let url: URL;\n try {\n url = new URL(baseUrl);\n } catch {\n throw new Error(`Spacebring baseUrl is not a valid URL: ${baseUrl}`);\n }\n if (url.protocol === \"https:\") return;\n const isLoopback =\n url.hostname === \"localhost\" || url.hostname === \"127.0.0.1\" || url.hostname === \"[::1]\" || url.hostname === \"::1\";\n if (url.protocol === \"http:\" && isLoopback) return;\n throw new Error(\n `Spacebring baseUrl must use https (got \"${url.protocol}//\"): Basic-auth credentials would otherwise be sent in cleartext. Use https, or http only for a loopback host.`,\n );\n}\n\nfunction toBase64(value: string): string {\n if (typeof Buffer !== \"undefined\") {\n return Buffer.from(value, \"utf8\").toString(\"base64\");\n }\n let binary = \"\";\n for (const byte of new TextEncoder().encode(value)) {\n binary += String.fromCharCode(byte);\n }\n return btoa(binary);\n}\n"],"mappings":";AACA,IAAM,gBAAgB;AAEtB,IAAM,yBAAyB,MAAM;AACnC,SACE,OAAO,YAAY,YACnB,OAAO,SAAS,SAAS,UAAU,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,MAC7D,QAAQ,SAAS;AAErB;AAMO,SAAS,WAAW;AACzB,SAAO,KAAK,OAAA,EAAS,SAAS,EAAE,EAAE,MAAM,GAAG,EAAE;AAC/C;AAMA,SAAwB,aAAa,eAAe;AAClD,MAAI;IACF,UAAU;IACV,SAAS,gBAAgB,WAAW;IACpC,OAAO,YAAY,WAAW;IAC9B,iBAAiB;IACjB,gBAAgB;IAChB,gBAAgB;IAChB,SAAS;IACT,iBAAiB;IACjB,GAAG;EAAA,IACD,EAAE,GAAG,cAAA;AACT,mBAAiB,uBAAA,IAA2B,iBAAiB;AAC7D,YAAU,oBAAoB,OAAO;AACrC,QAAM,oBAAoB,CAAA;AAO1B,iBAAe,UAAU,YAAY,cAAc;AACjD,UAAM;MACJ,SAAS;MACT,QAAQ;MACR,SAAAA,WAAU;MACV;MACA,SAAS,CAAA;MACT,UAAU;MACV,iBAAiB;MACjB,iBAAiB,wBAAwB;MACzC,gBAAgB;MAChB;MACA,YAAY,qBAAqB,CAAA;MACjC,GAAG;IAAA,IACD,gBAAgB,CAAA;AACpB,QAAI,eAAe;AACnB,QAAI,cAAc;AAChB,qBAAe,oBAAoB,YAAY,KAAK;IACtD;AAEA,QAAI,kBACF,OAAO,0BAA0B,aAC7B,wBACA,sBAAsB,qBAAqB;AACjD,QAAI,wBAAwB;AAC1B,wBACE,OAAO,2BAA2B,aAC9B,yBACA,sBAAsB;QACpB,GAAI,OAAO,0BAA0B,WAAW,wBAAwB,CAAA;QACxE,GAAG;MAAA,CACJ;IACT;AAEA,UAAM,iBAAiB,yBAAyB,wBAAwB;AAExE,UAAM,iBACJ,SAAS,SACL,SACA;MACE;;;;;;MAMA,aAAa,aAAa,SAAS,OAAO,MAAM;IAAA;AAExD,UAAM,eAAe;;MAEnB,mBAAmB;MAEjB,0BAA0B,WACxB,CAAA,IACA;QACE,gBAAgB;MAAA;MAEtB;MACA;MACA,OAAO;IAAA;AAIT,UAAM,mBAAmB,CAAC,GAAG,mBAAmB,GAAG,kBAAkB;AAErE,UAAM,cAAc;MAClB,UAAU;MACV,GAAG;MACH,GAAG;MACH,MAAM;MACN,SAAS;IAAA;AAGX,QAAI;AACJ,QAAI;AACJ,QAAI,UAAU,IAAIA;MAChB,eAAe,YAAY,EAAE,SAAS,cAAc,QAAQ,iBAAiB,eAAA,CAAgB;MAC7F;IAAA;AAEF,QAAI;AAGJ,eAAW,OAAO,MAAM;AACtB,UAAI,EAAE,OAAO,UAAU;AACrB,gBAAQ,GAAG,IAAI,KAAK,GAAG;MACzB;IACF;AAEA,QAAI,iBAAiB,QAAQ;AAC3B,WAAK,SAAA;AAGL,gBAAU,OAAO,OAAO;QACtB,SAAS;QACT;QACA;QACA;QACA;QACA;MAAA,CACD;AACD,iBAAW,KAAK,kBAAkB;AAChC,YAAI,KAAK,OAAO,MAAM,YAAY,OAAO,EAAE,cAAc,YAAY;AACnE,gBAAM,SAAS,MAAM,EAAE,UAAU;YAC/B;YACA;YACA;YACA;YACA;UAAA,CACD;AACD,cAAI,QAAQ;AACV,gBAAI,kBAAkBA,UAAS;AAC7B,wBAAU;YACZ,WAAW,kBAAkB,UAAU;AACrC,yBAAW;AACX;YACF,OAAO;AACL,oBAAM,IAAI,MAAM,+EAA+E;YACjG;UACF;QACF;MACF;IACF;AAEA,QAAI,CAAC,UAAU;AAEb,UAAI;AACF,mBAAW,MAAM,MAAM,SAAS,cAAc;MAChD,SAASC,QAAO;AACd,YAAI,uBAAuBA;AAG3B,YAAI,iBAAiB,QAAQ;AAC3B,mBAAS,IAAI,iBAAiB,SAAS,GAAG,KAAK,GAAG,KAAK;AACrD,kBAAM,IAAI,iBAAiB,CAAC;AAC5B,gBAAI,KAAK,OAAO,MAAM,YAAY,OAAO,EAAE,YAAY,YAAY;AACjE,oBAAM,SAAS,MAAM,EAAE,QAAQ;gBAC7B;gBACA,OAAO;gBACP;gBACA;gBACA;gBACA;cAAA,CACD;AACD,kBAAI,QAAQ;AAEV,oBAAI,kBAAkB,UAAU;AAC9B,yCAAuB;AACvB,6BAAW;AACX;gBACF;AAEA,oBAAI,kBAAkB,OAAO;AAC3B,yCAAuB;AACvB;gBACF;AAEA,sBAAM,IAAI,MAAM,0DAA0D;cAC5E;YACF;UACF;QACF;AAGA,YAAI,sBAAsB;AACxB,gBAAM;QACR;MACF;AAIA,UAAI,iBAAiB,QAAQ;AAC3B,iBAAS,IAAI,iBAAiB,SAAS,GAAG,KAAK,GAAG,KAAK;AACrD,gBAAM,IAAI,iBAAiB,CAAC;AAC5B,cAAI,KAAK,OAAO,MAAM,YAAY,OAAO,EAAE,eAAe,YAAY;AACpE,kBAAM,SAAS,MAAM,EAAE,WAAW;cAChC;cACA;cACA;cACA;cACA;cACA;YAAA,CACD;AACD,gBAAI,QAAQ;AACV,kBAAI,EAAE,kBAAkB,WAAW;AACjC,sBAAM,IAAI,MAAM,oEAAoE;cACtF;AACA,yBAAW;YACb;UACF;QACF;MACF;IACF;AAEA,UAAM,gBAAgB,SAAS,QAAQ,IAAI,gBAAgB;AAE3D,QACE,SAAS,WAAW,OACpB,QAAQ,WAAW,UAClB,kBAAkB,OAAO,CAAC,SAAS,QAAQ,IAAI,mBAAmB,GAAG,SAAS,SAAS,GACxF;AACA,aAAO,SAAS,KAAK,EAAE,MAAM,QAAW,SAAA,IAAa,EAAE,OAAO,QAAW,SAAA;IAC3E;AAGA,QAAI,SAAS,IAAI;AACf,YAAM,kBAAkB,YAAY;AAElC,YAAI,YAAY,UAAU;AACxB,iBAAO,SAAS;QAClB;AAEA,YAAI,YAAY,UAAU,CAAC,eAAe;AAExC,gBAAM,MAAM,MAAM,SAAS,KAAA;AAC3B,iBAAO,MAAM,KAAK,MAAM,GAAG,IAAI;QACjC;AAEA,eAAO,MAAM,SAAS,OAAO,EAAA;MAC/B;AACA,aAAO,EAAE,MAAM,MAAM,gBAAA,GAAmB,SAAA;IAC1C;AAGA,QAAI,QAAQ,MAAM,SAAS,KAAA;AAC3B,QAAI;AACF,cAAQ,KAAK,MAAM,KAAK;IAC1B,QAAQ;IAER;AACA,WAAO,EAAE,OAAO,SAAA;EAClB;AAEA,SAAO;IACL,QAAQ,QAAQ,KAAK,MAAM;AACzB,aAAO,UAAU,KAAK,EAAE,GAAG,MAAM,QAAQ,OAAO,YAAA,EAAY,CAAG;IACjE;;IAEA,IAAI,KAAK,MAAM;AACb,aAAO,UAAU,KAAK,EAAE,GAAG,MAAM,QAAQ,MAAA,CAAO;IAClD;;IAEA,IAAI,KAAK,MAAM;AACb,aAAO,UAAU,KAAK,EAAE,GAAG,MAAM,QAAQ,MAAA,CAAO;IAClD;;IAEA,KAAK,KAAK,MAAM;AACd,aAAO,UAAU,KAAK,EAAE,GAAG,MAAM,QAAQ,OAAA,CAAQ;IACnD;;IAEA,OAAO,KAAK,MAAM;AAChB,aAAO,UAAU,KAAK,EAAE,GAAG,MAAM,QAAQ,SAAA,CAAU;IACrD;;IAEA,QAAQ,KAAK,MAAM;AACjB,aAAO,UAAU,KAAK,EAAE,GAAG,MAAM,QAAQ,UAAA,CAAW;IACtD;;IAEA,KAAK,KAAK,MAAM;AACd,aAAO,UAAU,KAAK,EAAE,GAAG,MAAM,QAAQ,OAAA,CAAQ;IACnD;;IAEA,MAAM,KAAK,MAAM;AACf,aAAO,UAAU,KAAK,EAAE,GAAG,MAAM,QAAQ,QAAA,CAAS;IACpD;;IAEA,MAAM,KAAK,MAAM;AACf,aAAO,UAAU,KAAK,EAAE,GAAG,MAAM,QAAQ,QAAA,CAAS;IACpD;;IAEA,OAAO,YAAY;AACjB,iBAAW,KAAK,YAAY;AAC1B,YAAI,CAAC,GAAG;AACN;QACF;AACA,YAAI,OAAO,MAAM,YAAY,EAAE,eAAe,KAAK,gBAAgB,KAAK,aAAa,IAAI;AACvF,gBAAM,IAAI,MAAM,sFAAsF;QACxG;AACA,0BAAkB,KAAK,CAAC;MAC1B;IACF;;IAEA,SAAS,YAAY;AACnB,iBAAW,KAAK,YAAY;AAC1B,cAAM,IAAI,kBAAkB,QAAQ,CAAC;AACrC,YAAI,MAAM,IAAI;AACZ,4BAAkB,OAAO,GAAG,CAAC;QAC/B;MACF;IACF;EAAA;AAEJ;AAuFO,SAAS,wBAAwB,MAAM,OAAO,SAAS;AAC5D,MAAI,UAAU,UAAa,UAAU,MAAM;AACzC,WAAO;EACT;AACA,MAAI,OAAO,UAAU,UAAU;AAC7B,UAAM,IAAI;MACR;IAAA;EAEJ;AACA,SAAO,GAAG,IAAI,IAAI,SAAS,kBAAkB,OAAO,QAAQ,mBAAmB,KAAK,CAAC;AACvF;AAMO,SAAS,qBAAqB,MAAM,OAAO,SAAS;AACzD,MAAI,CAAC,SAAS,OAAO,UAAU,UAAU;AACvC,WAAO;EACT;AACA,QAAM,SAAS,CAAA;AACf,QAAM,SACJ;IACE,QAAQ;IACR,OAAO;IACP,QAAQ;EAAA,EACR,QAAQ,KAAK,KAAK;AAGtB,MAAI,QAAQ,UAAU,gBAAgB,QAAQ,YAAY,OAAO;AAC/D,eAAW,KAAK,OAAO;AACrB,aAAO,KAAK,GAAG,QAAQ,kBAAkB,OAAO,MAAM,CAAC,IAAI,mBAAmB,MAAM,CAAC,CAAC,CAAC;IACzF;AACA,UAAMC,SAAQ,OAAO,KAAK,GAAG;AAC7B,YAAQ,QAAQ,OAAA;MACd,KAAK,QAAQ;AACX,eAAO,GAAG,IAAI,IAAIA,MAAK;MACzB;MACA,KAAK,SAAS;AACZ,eAAO,IAAIA,MAAK;MAClB;MACA,KAAK,UAAU;AACb,eAAO,IAAI,IAAI,IAAIA,MAAK;MAC1B;MACA,SAAS;AACP,eAAOA;MACT;IAAA;EAEJ;AAGA,aAAW,KAAK,OAAO;AACrB,UAAM,YAAY,QAAQ,UAAU,eAAe,GAAG,IAAI,IAAI,CAAC,MAAM;AACrE,WAAO,KAAK,wBAAwB,WAAW,MAAM,CAAC,GAAG,OAAO,CAAC;EACnE;AACA,QAAM,QAAQ,OAAO,KAAK,MAAM;AAChC,SAAO,QAAQ,UAAU,WAAW,QAAQ,UAAU,WAAW,GAAG,MAAM,GAAG,KAAK,KAAK;AACzF;AAMO,SAAS,oBAAoB,MAAM,OAAO,SAAS;AACxD,MAAI,CAAC,MAAM,QAAQ,KAAK,GAAG;AACzB,WAAO;EACT;AAGA,MAAI,QAAQ,YAAY,OAAO;AAC7B,UAAMC,UAAS,EAAE,MAAM,KAAK,gBAAgB,OAAO,eAAe,IAAA,EAAM,QAAQ,KAAK,KAAK;AAC1F,UAAM,SAAS,QAAQ,kBAAkB,OAAO,QAAQ,MAAM,IAAI,CAAC,MAAM,mBAAmB,CAAC,CAAC,GAAG,KAAKA,OAAM;AAC5G,YAAQ,QAAQ,OAAA;MACd,KAAK,UAAU;AACb,eAAO;MACT;MACA,KAAK,SAAS;AACZ,eAAO,IAAI,KAAK;MAClB;MACA,KAAK,UAAU;AACb,eAAO,IAAI,IAAI,IAAI,KAAK;MAC1B;;;MAGA,SAAS;AACP,eAAO,GAAG,IAAI,IAAI,KAAK;MACzB;IAAA;EAEJ;AAGA,QAAM,SAAS,EAAE,QAAQ,KAAK,OAAO,KAAK,QAAQ,IAAA,EAAM,QAAQ,KAAK,KAAK;AAC1E,QAAM,SAAS,CAAA;AACf,aAAW,KAAK,OAAO;AACrB,QAAI,QAAQ,UAAU,YAAY,QAAQ,UAAU,SAAS;AAC3D,aAAO,KAAK,QAAQ,kBAAkB,OAAO,IAAI,mBAAmB,CAAC,CAAC;IACxE,OAAO;AACL,aAAO,KAAK,wBAAwB,MAAM,GAAG,OAAO,CAAC;IACvD;EACF;AACA,SAAO,QAAQ,UAAU,WAAW,QAAQ,UAAU,WAClD,GAAG,MAAM,GAAG,OAAO,KAAK,MAAM,CAAC,KAC/B,OAAO,KAAK,MAAM;AACxB;AAMO,SAAS,sBAAsB,SAAS;AAC7C,SAAO,SAAS,gBAAgB,aAAa;AAC3C,UAAM,SAAS,CAAA;AACf,QAAI,eAAe,OAAO,gBAAgB,UAAU;AAClD,iBAAW,QAAQ,aAAa;AAC9B,cAAM,QAAQ,YAAY,IAAI;AAC9B,YAAI,UAAU,UAAa,UAAU,MAAM;AACzC;QACF;AACA,YAAI,MAAM,QAAQ,KAAK,GAAG;AACxB,cAAI,MAAM,WAAW,GAAG;AACtB;UACF;AACA,iBAAO;YACL,oBAAoB,MAAM,OAAO;cAC/B,OAAO;cACP,SAAS;cACT,GAAG,SAAS;cACZ,eAAe,SAAS,iBAAiB;YAAA,CAC1C;UAAA;AAEH;QACF;AACA,YAAI,OAAO,UAAU,UAAU;AAC7B,iBAAO;YACL,qBAAqB,MAAM,OAAO;cAChC,OAAO;cACP,SAAS;cACT,GAAG,SAAS;cACZ,eAAe,SAAS,iBAAiB;YAAA,CAC1C;UAAA;AAEH;QACF;AACA,eAAO,KAAK,wBAAwB,MAAM,OAAO,OAAO,CAAC;MAC3D;IACF;AACA,WAAO,OAAO,KAAK,GAAG;EACxB;AACF;AAOO,SAAS,sBAAsB,UAAU,YAAY;AAC1D,MAAI,UAAU;AACd,aAAW,SAAS,SAAS,MAAM,aAAa,KAAK,CAAA,GAAI;AACvD,QAAI,OAAO,MAAM,UAAU,GAAG,MAAM,SAAS,CAAC;AAC9C,QAAI,UAAU;AACd,QAAI,QAAQ;AACZ,QAAI,KAAK,SAAS,GAAG,GAAG;AACtB,gBAAU;AACV,aAAO,KAAK,UAAU,GAAG,KAAK,SAAS,CAAC;IAC1C;AACA,QAAI,KAAK,WAAW,GAAG,GAAG;AACxB,cAAQ;AACR,aAAO,KAAK,UAAU,CAAC;IACzB,WAAW,KAAK,WAAW,GAAG,GAAG;AAC/B,cAAQ;AACR,aAAO,KAAK,UAAU,CAAC;IACzB;AACA,QAAI,CAAC,cAAc,WAAW,IAAI,MAAM,UAAa,WAAW,IAAI,MAAM,MAAM;AAC9E;IACF;AACA,UAAM,QAAQ,WAAW,IAAI;AAC7B,QAAI,MAAM,QAAQ,KAAK,GAAG;AACxB,gBAAU,QAAQ,QAAQ,OAAO,oBAAoB,MAAM,OAAO,EAAE,OAAO,QAAA,CAAS,CAAC;AACrF;IACF;AACA,QAAI,OAAO,UAAU,UAAU;AAC7B,gBAAU,QAAQ,QAAQ,OAAO,qBAAqB,MAAM,OAAO,EAAE,OAAO,QAAA,CAAS,CAAC;AACtF;IACF;AACA,QAAI,UAAU,UAAU;AACtB,gBAAU,QAAQ,QAAQ,OAAO,IAAI,wBAAwB,MAAM,KAAK,CAAC,EAAE;AAC3E;IACF;AACA,cAAU,QAAQ,QAAQ,OAAO,UAAU,UAAU,IAAI,mBAAmB,KAAK,CAAC,KAAK,mBAAmB,KAAK,CAAC;EAClH;AACA,SAAO;AACT;AAMO,SAAS,sBAAsB,MAAM,SAAS;AACnD,MAAI,gBAAgB,UAAU;AAC5B,WAAO;EACT;AACA,MAAI,SAAS;AACX,UAAM,cACJ,QAAQ,eAAe,WAClB,QAAQ,IAAI,cAAc,KAAK,QAAQ,IAAI,cAAc,IACzD,QAAQ,cAAc,KAAK,QAAQ,cAAc;AACxD,QAAI,gBAAgB,qCAAqC;AACvD,aAAO,IAAI,gBAAgB,IAAI,EAAE,SAAA;IACnC;EACF;AACA,SAAO,KAAK,UAAU,IAAI;AAC5B;AAMO,SAAS,eAAe,UAAU,SAAS;AAChD,MAAI,WAAW,GAAG,QAAQ,OAAO,GAAG,QAAQ;AAC5C,MAAI,QAAQ,QAAQ,MAAM;AACxB,eAAW,QAAQ,eAAe,UAAU,QAAQ,OAAO,IAAI;EACjE;AACA,MAAI,SAAS,QAAQ,gBAAgB,QAAQ,OAAO,SAAS,CAAA,CAAE;AAC/D,MAAI,OAAO,WAAW,GAAG,GAAG;AAC1B,aAAS,OAAO,UAAU,CAAC;EAC7B;AACA,MAAI,QAAQ;AACV,gBAAY,IAAI,MAAM;EACxB;AACA,SAAO;AACT;AAMO,SAAS,gBAAgB,YAAY;AAC1C,QAAM,eAAe,IAAI,QAAA;AACzB,aAAW,KAAK,YAAY;AAC1B,QAAI,CAAC,KAAK,OAAO,MAAM,UAAU;AAC/B;IACF;AACA,UAAM,WAAW,aAAa,UAAU,EAAE,QAAA,IAAY,OAAO,QAAQ,CAAC;AACtE,eAAW,CAAC,GAAG,CAAC,KAAK,UAAU;AAC7B,UAAI,MAAM,MAAM;AACd,qBAAa,OAAO,CAAC;MACvB,WAAW,MAAM,QAAQ,CAAC,GAAG;AAC3B,mBAAW,MAAM,GAAG;AAClB,uBAAa,OAAO,GAAG,EAAE;QAC3B;MACF,WAAW,MAAM,QAAW;AAC1B,qBAAa,IAAI,GAAG,CAAC;MACvB;IACF;EACF;AACA,SAAO;AACT;AAMO,SAAS,oBAAoB,KAAK;AACvC,MAAI,IAAI,SAAS,GAAG,GAAG;AACrB,WAAO,IAAI,UAAU,GAAG,IAAI,SAAS,CAAC;EACxC;AACA,SAAO;AACT;;;ACzqBO,IAAM,kBAAN,cAA8B,MAAM;AAAA;AAAA,EAEhC;AAAA;AAAA,EAEA;AAAA;AAAA,EAEA;AAAA;AAAA,EAEA;AAAA,EAET,YAAY,QAAgB,MAAgB,SAAgD;AAC1F,UAAM,SAAS,YAAY,IAAI,IAAI,OAAO;AAC1C,QAAI,OAAO,QAAQ,WAAW,6CAA6C,MAAM;AAGjF,UAAM,SAAS,SAAS,aAAa,MAAM,IAAI;AAC/C,QAAI,OAAQ,SAAQ,WAAM,MAAM;AAChC,UAAM,SAAS,YAAY,GAAG,IAAI,KAAK,QAAQ,SAAS,MAAM,IAAI;AAClE,SAAK,OAAO;AACZ,SAAK,SAAS;AACd,SAAK,OAAO;AACZ,SAAK,YAAY,SAAS;AAC1B,SAAK,MAAM,SAAS;AAAA,EACtB;AACF;AAEA,SAAS,YAAY,MAA4C;AAC/D,SAAO,OAAO,SAAS,YAAY,SAAS;AAC9C;AAGA,SAAS,aAAa,MAAkC;AACtD,QAAM,SAAU,KAA8B;AAC9C,MAAI,CAAC,MAAM,QAAQ,MAAM,KAAK,OAAO,WAAW,EAAG,QAAO;AAC1D,QAAM,QAAQ,OAAO,MAAM,GAAG,CAAC,EAAE,IAAI,CAAC,UAAU;AAC9C,QAAI,OAAO,UAAU,YAAY,UAAU,KAAM,QAAO,OAAO,KAAK;AACpE,UAAM,EAAE,MAAM,QAAQ,IAAI;AAC1B,UAAM,QAAQ,MAAM,QAAQ,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,GAAG,IAAI;AACxE,UAAM,OAAO,OAAO,YAAY,WAAW,UAAU,KAAK,UAAU,KAAK;AACzE,WAAO,QAAQ,GAAG,KAAK,KAAK,IAAI,KAAK;AAAA,EACvC,CAAC;AACD,QAAM,OAAO,OAAO,SAAS,IAAI,MAAM,OAAO,SAAS,CAAC,UAAU;AAClE,SAAO,MAAM,KAAK,IAAI,IAAI;AAC5B;;;AC1BO,SAAS,OAAU,QAAwB,WAAuB;AACvE,MAAI,OAAO,UAAU,UAAa,CAAC,OAAO,SAAS,IAAI;AACrD,UAAM,IAAI,gBAAgB,OAAO,SAAS,QAAQ,OAAO,OAAO;AAAA,MAC9D;AAAA,MACA,KAAK,OAAO,SAAS,OAAO;AAAA,IAC9B,CAAC;AAAA,EACH;AACA,SAAO,OAAO;AAChB;AAMO,SAAS,WACd,QACA,KACA,WAC4B;AAC5B,QAAM,QAAQ,OAAO,QAAQ,SAAS,IAAI,GAAG;AAC7C,MAAI,UAAU,UAAa,UAAU,MAAM;AACzC,UAAM,IAAI;AAAA,MACR,OAAO,SAAS;AAAA,MAChB,EAAE,SAAS,4BAA4B,OAAO,GAAG,CAAC,aAAa;AAAA,MAC/D,EAAE,WAAW,KAAK,OAAO,SAAS,OAAO,OAAU;AAAA,IACrD;AAAA,EACF;AACA,SAAO;AACT;AAMA,gBAAuB,SACrB,WACA,UACuG;AACvG,MAAI;AACJ,KAAG;AACD,UAAM,OAAO,MAAM,UAAU,KAAK;AAClC,UAAM,QAAS,KAAK,QAAQ,KAAK,CAAC;AAClC,WAAO;AACP,UAAM,OAAO,KAAK;AAClB,QAAI,SAAS,UAAa,SAAS,OAAO;AACxC,YAAM,IAAI,MAAM,2EAA2E;AAAA,IAC7F;AACA,YAAQ;AAAA,EACV,SAAS;AACX;;;AChDO,SAAS,oBAAoB,QAAuB,UAA8B;AACvF,SAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAML,MAAM,KAAK,OAA8B,SAAkI;AACzK,aAAO,OAAO,MAAM,OAAO,IAAI,sBAAsB,EAAE,QAAQ,EAAE,MAAM,GAAG,QAAQ,SAAS,OAAO,CAAC,GAAG,wBAAwB;AAAA,IAChI;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAMA,QAAQ,OAAqD,SAAkF;AAC7I,aAAO;AAAA,QACL,OAAO,kBACL,OAAO,MAAM,OAAO,IAAI,sBAAsB,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,OAAO,cAAc,EAAE,GAAG,QAAQ,SAAS,OAAO,CAAC,GAAG,wBAAwB;AAAA,QACtJ;AAAA,MACF;AAAA,IACF;AAAA;AAAA,IAEA,MAAM,OAAO,aAAoC,SAA0D;AACzG,aAAO,WAAW,MAAM,OAAO,KAAK,sBAAsB,EAAE,MAAM,EAAE,YAAY,GAAG,QAAQ,SAAS,OAAO,CAAC,GAAG,eAAe,yBAAyB;AAAA,IACzJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAQA,MAAM,OAAO,IAAY,aAAoC,SAAwD;AACnH,aAAO,OAAO,MAAM,OAAO,MAAM,2BAA2B,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,MAAM,EAAE,YAAY,GAAG,QAAQ,SAAS,OAAO,CAAC,GAAG,+BAA+B;AAAA,IAC5K;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAOA,MAAM,OAAO,IAAY,SAAwD;AAC/E,aAAO,OAAO,MAAM,OAAO,OAAO,2BAA2B,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,QAAQ,SAAS,OAAO,CAAC,GAAG,gCAAgC;AAAA,IACvJ;AAAA,EACF;AACF;;;ACCO,SAAS,eAAe,QAAuB,UAA8B;AAClF,SAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAML,MAAM,KAAK,OAA0B,SAAwH;AAC3J,aAAO,OAAO,MAAM,OAAO,IAAI,gBAAgB,EAAE,QAAQ,EAAE,MAAM,GAAG,QAAQ,SAAS,OAAO,CAAC,GAAG,kBAAkB;AAAA,IACpH;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAMA,QAAQ,OAAiD,SAA8E;AACrI,aAAO;AAAA,QACL,OAAO,kBACL,OAAO,MAAM,OAAO,IAAI,gBAAgB,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,OAAO,cAAc,EAAE,GAAG,QAAQ,SAAS,OAAO,CAAC,GAAG,kBAAkB;AAAA,QAC1I;AAAA,MACF;AAAA,IACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAOA,MAAM,IAAI,WAAmB,SAAsD;AACjF,aAAO,WAAW,MAAM,OAAO,IAAI,4BAA4B,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,QAAQ,SAAS,OAAO,CAAC,GAAG,WAAW,8BAA8B;AAAA,IACzK;AAAA;AAAA,IAEA,MAAM,OAAO,SAA4B,SAAsD;AAC7F,aAAO,OAAO,MAAM,OAAO,KAAK,gBAAgB,EAAE,MAAM,EAAE,QAAQ,GAAG,QAAQ,SAAS,OAAO,CAAC,GAAG,mBAAmB;AAAA,IACtH;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAQA,MAAM,OAAO,WAAmB,SAA4B,SAAsD;AAChH,aAAO,WAAW,MAAM,OAAO,IAAI,4BAA4B,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,EAAE,QAAQ,GAAG,QAAQ,SAAS,OAAO,CAAC,GAAG,WAAW,8BAA8B;AAAA,IAC5L;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAOA,MAAM,OAAO,WAAmB,SAAwD;AACtF,aAAO,OAAO,MAAM,OAAO,OAAO,4BAA4B,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,QAAQ,SAAS,OAAO,CAAC,GAAG,iCAAiC;AAAA,IAChK;AAAA,IACA,cAAc;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAMZ,MAAM,KAAK,OAAqC,SAAgI;AAC9K,eAAO,OAAO,MAAM,OAAO,IAAI,6BAA6B,EAAE,QAAQ,EAAE,MAAM,GAAG,QAAQ,SAAS,OAAO,CAAC,GAAG,+BAA+B;AAAA,MAC9I;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAMA,QAAQ,OAA4D,SAAkF;AACpJ,eAAO;AAAA,UACL,OAAO,kBACL,OAAO,MAAM,OAAO,IAAI,6BAA6B,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,OAAO,cAAc,EAAE,GAAG,QAAQ,SAAS,OAAO,CAAC,GAAG,+BAA+B;AAAA,UACpK;AAAA,QACF;AAAA,MACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MASA,MAAM,IAAI,sBAA8B,SAA0D;AAChG,eAAO,WAAW,MAAM,OAAO,IAAI,oDAAoD,EAAE,QAAQ,EAAE,MAAM,EAAE,qBAAqB,EAAE,GAAG,QAAQ,SAAS,OAAO,CAAC,GAAG,eAAe,sDAAsD;AAAA,MACxO;AAAA;AAAA,MAEA,MAAM,OAAO,aAA+B,SAA0D;AACpG,eAAO,WAAW,MAAM,OAAO,KAAK,6BAA6B,EAAE,MAAM,EAAE,YAAY,GAAG,QAAQ,SAAS,OAAO,CAAC,GAAG,eAAe,gCAAgC;AAAA,MACvK;AAAA,IACF;AAAA,IACA,YAAY;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAMV,MAAM,KAAK,OAAkC,SAAgE;AAC3G,eAAO,WAAW,MAAM,OAAO,IAAI,2BAA2B,EAAE,QAAQ,EAAE,MAAM,GAAG,QAAQ,SAAS,OAAO,CAAC,GAAG,cAAc,6BAA6B;AAAA,MAC5J;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MASA,MAAM,IAAI,YAAoB,SAA8D;AAC1F,eAAO,WAAW,MAAM,OAAO,IAAI,wCAAwC,EAAE,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,QAAQ,SAAS,OAAO,CAAC,GAAG,YAAY,0CAA0C;AAAA,MACnM;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAMA,MAAM,OAAO,UAAqC,SAA8D;AAC9G,eAAO,WAAW,MAAM,OAAO,KAAK,2BAA2B,EAAE,MAAM,EAAE,SAAS,GAAG,QAAQ,SAAS,OAAO,CAAC,GAAG,YAAY,8BAA8B;AAAA,MAC7J;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAUA,MAAM,OAAO,YAAoB,UAAqC,SAA8D;AAClI,eAAO,WAAW,MAAM,OAAO,IAAI,wCAAwC,EAAE,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,EAAE,SAAS,GAAG,QAAQ,SAAS,OAAO,CAAC,GAAG,YAAY,0CAA0C;AAAA,MACvN;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MASA,MAAM,OAAO,YAAoB,SAAwD;AACvF,eAAO,OAAO,MAAM,OAAO,OAAO,wCAAwC,EAAE,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,QAAQ,SAAS,OAAO,CAAC,GAAG,6CAA6C;AAAA,MACzL;AAAA,IACF;AAAA,EACF;AACF;;;ACpEO,SAAS,cAAc,QAAuB,UAA8B;AACjF,SAAO;AAAA,IACL,aAAa;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAMX,MAAM,KAAK,OAA6B,SAA8H;AACpK,eAAO,OAAO,MAAM,OAAO,IAAI,4BAA4B,EAAE,QAAQ,EAAE,MAAM,GAAG,QAAQ,SAAS,OAAO,CAAC,GAAG,8BAA8B;AAAA,MAC5I;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAMA,QAAQ,OAAoD,SAAiF;AAC3I,eAAO;AAAA,UACL,OAAO,kBACL,OAAO,MAAM,OAAO,IAAI,4BAA4B,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,OAAO,cAAc,EAAE,GAAG,QAAQ,SAAS,OAAO,CAAC,GAAG,8BAA8B;AAAA,UAClK;AAAA,QACF;AAAA,MACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MASA,MAAM,IAAI,IAAY,SAAyD;AAC7E,eAAO,WAAW,MAAM,OAAO,IAAI,iCAAiC,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,QAAQ,SAAS,OAAO,CAAC,GAAG,cAAc,mCAAmC;AAAA,MAC/K;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAMA,MAAM,OAAO,YAAkC,SAAyD;AACtG,eAAO,WAAW,MAAM,OAAO,KAAK,4BAA4B,EAAE,MAAM,EAAE,WAAW,GAAG,QAAQ,SAAS,OAAO,CAAC,GAAG,cAAc,+BAA+B;AAAA,MACnK;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAQA,MAAM,OAAO,IAAY,YAAkC,SAAwD;AACjH,eAAO,OAAO,MAAM,OAAO,MAAM,iCAAiC,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,MAAM,EAAE,WAAW,GAAG,QAAQ,SAAS,OAAO,CAAC,GAAG,qCAAqC;AAAA,MACvL;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAMA,MAAM,QAAQ,YAAmC,SAAyD;AACxG,eAAO,WAAW,MAAM,OAAO,KAAK,oCAAoC,EAAE,MAAM,EAAE,WAAW,GAAG,QAAQ,SAAS,OAAO,CAAC,GAAG,cAAc,uCAAuC;AAAA,MACnL;AAAA,IACF;AAAA,IACA,UAAU;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAMR,MAAM,KAAK,OAA0B,SAAwH;AAC3J,eAAO,OAAO,MAAM,OAAO,IAAI,wBAAwB,EAAE,QAAQ,EAAE,MAAM,GAAG,QAAQ,SAAS,OAAO,CAAC,GAAG,0BAA0B;AAAA,MACpI;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAMA,QAAQ,OAAiD,SAA8E;AACrI,eAAO;AAAA,UACL,OAAO,kBACL,OAAO,MAAM,OAAO,IAAI,wBAAwB,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,OAAO,cAAc,EAAE,GAAG,QAAQ,SAAS,OAAO,CAAC,GAAG,0BAA0B;AAAA,UAC1J;AAAA,QACF;AAAA,MACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MASA,MAAM,IAAI,WAAmB,SAAsD;AACjF,eAAO,WAAW,MAAM,OAAO,IAAI,oCAAoC,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,QAAQ,SAAS,OAAO,CAAC,GAAG,WAAW,sCAAsC;AAAA,MACzL;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAMA,MAAM,OAAO,MAAyB,SAAsD;AAC1F,eAAO,WAAW,MAAM,OAAO,KAAK,wBAAwB,EAAE,MAAM,QAAQ,SAAS,OAAO,CAAC,GAAG,WAAW,2BAA2B;AAAA,MACxI;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAUA,MAAM,OAAO,WAAmB,SAA4B,SAAwD;AAClH,eAAO,OAAO,MAAM,OAAO,MAAM,oCAAoC,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,EAAE,QAAQ,GAAG,QAAQ,SAAS,OAAO,CAAC,GAAG,wCAAwC;AAAA,MACjM;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MASA,MAAM,OAAO,WAAmB,SAAwD;AACtF,eAAO,OAAO,MAAM,OAAO,OAAO,oCAAoC,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,QAAQ,SAAS,OAAO,CAAC,GAAG,yCAAyC;AAAA,MAChL;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MASA,MAAM,cAAc,WAAmB,SAAwD;AAC7F,eAAO,OAAO,MAAM,OAAO,KAAK,mDAAmD,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,QAAQ,SAAS,OAAO,CAAC,GAAG,sDAAsD;AAAA,MAC1M;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MASA,MAAM,UAAU,WAAmB,SAAsD;AACvF,eAAO,WAAW,MAAM,OAAO,KAAK,8CAA8C,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,QAAQ,SAAS,OAAO,CAAC,GAAG,WAAW,iDAAiD;AAAA,MAC/M;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MASA,MAAM,SAAS,WAAmB,SAAkG;AAClI,eAAO,OAAO,MAAM,OAAO,IAAI,0CAA0C,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,QAAQ,SAAS,OAAO,CAAC,GAAG,4CAA4C;AAAA,MACtL;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAMA,MAAM,YAAY,OAAiC,SAAkI;AACnL,eAAO,OAAO,MAAM,OAAO,IAAI,iCAAiC,EAAE,QAAQ,EAAE,MAAM,GAAG,QAAQ,SAAS,OAAO,CAAC,GAAG,mCAAmC;AAAA,MACtJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAUA,MAAM,MAAM,WAAmB,gBAAmC,SAAkG;AAClK,eAAO,OAAO,MAAM,OAAO,KAAK,0CAA0C,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,mBAAmB,SAAY,SAAY,EAAE,eAAe,GAAG,QAAQ,SAAS,OAAO,CAAC,GAAG,6CAA6C;AAAA,MAC7P;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAUA,MAAM,IAAI,WAAmB,MAAsB,SAAuF;AACxI,eAAO,OAAO,MAAM,OAAO,KAAK,wCAAwC,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,QAAQ,SAAS,OAAO,CAAC,GAAG,2CAA2C;AAAA,MAC1L;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MASA,MAAM,OAAO,WAAmB,SAAwD;AACtF,eAAO,OAAO,MAAM,OAAO,KAAK,2CAA2C,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,QAAQ,SAAS,OAAO,CAAC,GAAG,8CAA8C;AAAA,MAC1L;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MASA,MAAM,KAAK,WAAmB,SAAwD;AACpF,eAAO,OAAO,MAAM,OAAO,MAAM,yCAAyC,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,QAAQ,SAAS,OAAO,CAAC,GAAG,6CAA6C;AAAA,MACxL;AAAA,MACA,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QAML,MAAM,KAAK,OAA+B,SAAgI;AACxK,iBAAO,OAAO,MAAM,OAAO,IAAI,8BAA8B,EAAE,QAAQ,EAAE,MAAM,GAAG,QAAQ,SAAS,OAAO,CAAC,GAAG,gCAAgC;AAAA,QAChJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QAMA,QAAQ,OAAsD,SAAkF;AAC9I,iBAAO;AAAA,YACL,OAAO,kBACL,OAAO,MAAM,OAAO,IAAI,8BAA8B,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,OAAO,cAAc,EAAE,GAAG,QAAQ,SAAS,OAAO,CAAC,GAAG,gCAAgC;AAAA,YACtK;AAAA,UACF;AAAA,QACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QASA,MAAM,IAAI,IAAY,SAA0D;AAC9E,iBAAO,WAAW,MAAM,OAAO,IAAI,mCAAmC,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,QAAQ,SAAS,OAAO,CAAC,GAAG,eAAe,qCAAqC;AAAA,QACpL;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QAMA,MAAM,OAAO,aAAoC,SAA0D;AACzG,iBAAO,WAAW,MAAM,OAAO,KAAK,8BAA8B,EAAE,MAAM,EAAE,YAAY,GAAG,QAAQ,SAAS,OAAO,CAAC,GAAG,eAAe,iCAAiC;AAAA,QACzK;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QAUA,MAAM,OAAO,IAAY,aAAoC,SAAwD;AACnH,iBAAO,OAAO,MAAM,OAAO,MAAM,mCAAmC,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,MAAM,EAAE,YAAY,GAAG,QAAQ,SAAS,OAAO,CAAC,GAAG,uCAAuC;AAAA,QAC5L;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QASA,MAAM,OAAO,IAAY,SAAwD;AAC/E,iBAAO,OAAO,MAAM,OAAO,OAAO,mCAAmC,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,QAAQ,SAAS,OAAO,CAAC,GAAG,wCAAwC;AAAA,QACvK;AAAA;AAAA,QAEA,MAAM,YAAY,OAAsC,SAA4D;AAClH,iBAAO,WAAW,MAAM,OAAO,IAAI,uCAAuC,EAAE,QAAQ,EAAE,MAAM,GAAG,QAAQ,SAAS,OAAO,CAAC,GAAG,gBAAgB,yCAAyC;AAAA,QACtL;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;;;ACvWO,SAAS,gBAAgB,QAAuB,UAA8B;AACnF,SAAO;AAAA,IACL,WAAW;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAMT,MAAM,KAAK,OAA0B,SAAgG;AACnI,eAAO,OAAO,MAAM,OAAO,IAAI,2BAA2B,EAAE,QAAQ,EAAE,MAAM,GAAG,QAAQ,SAAS,OAAO,CAAC,GAAG,6BAA6B;AAAA,MAC1I;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAMA,QAAQ,OAAiD,SAA8E;AACrI,eAAO;AAAA,UACL,OAAO,kBACL,OAAO,MAAM,OAAO,IAAI,2BAA2B,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,OAAO,cAAc,EAAE,GAAG,QAAQ,SAAS,OAAO,CAAC,GAAG,6BAA6B;AAAA,UAChK;AAAA,QACF;AAAA,MACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MASA,MAAM,IAAI,IAAY,SAAsD;AAC1E,eAAO,WAAW,MAAM,OAAO,IAAI,gCAAgC,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,QAAQ,SAAS,OAAO,CAAC,GAAG,WAAW,kCAAkC;AAAA,MAC1K;AAAA;AAAA,MAEA,MAAM,OAAO,SAA4B,SAAsD;AAC7F,eAAO,WAAW,MAAM,OAAO,KAAK,2BAA2B,EAAE,MAAM,EAAE,QAAQ,GAAG,QAAQ,SAAS,OAAO,CAAC,GAAG,WAAW,8BAA8B;AAAA,MAC3J;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAUA,MAAM,OAAO,IAAY,SAA4B,SAAsD;AACzG,eAAO,WAAW,MAAM,OAAO,IAAI,gCAAgC,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,MAAM,EAAE,QAAQ,GAAG,QAAQ,SAAS,OAAO,CAAC,GAAG,WAAW,kCAAkC;AAAA,MAC7L;AAAA,IACF;AAAA,IACA,aAAa;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAMX,MAAM,KAAK,OAA4B,SAA+H;AACpK,eAAO,OAAO,MAAM,OAAO,IAAI,6BAA6B,EAAE,QAAQ,EAAE,MAAM,GAAG,QAAQ,SAAS,OAAO,CAAC,GAAG,+BAA+B;AAAA,MAC9I;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAMA,QAAQ,OAAmD,SAAiF;AAC1I,eAAO;AAAA,UACL,OAAO,kBACL,OAAO,MAAM,OAAO,IAAI,6BAA6B,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,OAAO,cAAc,EAAE,GAAG,QAAQ,SAAS,OAAO,CAAC,GAAG,+BAA+B;AAAA,UACpK;AAAA,QACF;AAAA,MACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MASA,MAAM,IAAI,IAAY,SAAyD;AAC7E,eAAO,WAAW,MAAM,OAAO,IAAI,kCAAkC,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,QAAQ,SAAS,OAAO,CAAC,GAAG,cAAc,oCAAoC;AAAA,MACjL;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAMA,MAAM,OAAO,MAA4B,SAAyD;AAChG,eAAO,WAAW,MAAM,OAAO,KAAK,6BAA6B,EAAE,MAAM,QAAQ,SAAS,OAAO,CAAC,GAAG,cAAc,gCAAgC;AAAA,MACrJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAUA,MAAM,OAAO,IAAY,YAAkC,SAAyD;AAClH,eAAO,WAAW,MAAM,OAAO,IAAI,kCAAkC,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,MAAM,EAAE,WAAW,GAAG,QAAQ,SAAS,OAAO,CAAC,GAAG,cAAc,oCAAoC;AAAA,MACvM;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MASA,MAAM,OAAO,IAAY,SAAwD;AAC/E,eAAO,OAAO,MAAM,OAAO,OAAO,kCAAkC,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,QAAQ,SAAS,OAAO,CAAC,GAAG,uCAAuC;AAAA,MACrK;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAMA,eAAe,OAA0D,SAAiF;AACxJ,eAAO;AAAA,UACL,OAAO,kBACL,OAAO,MAAM,OAAO,IAAI,qCAAqC,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,OAAO,cAAc,EAAE,GAAG,QAAQ,SAAS,OAAO,CAAC,GAAG,uCAAuC;AAAA,UACpL;AAAA,QACF;AAAA,MACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAMA,MAAM,YAAY,OAAmC,SAAqG;AACxJ,eAAO,OAAO,MAAM,OAAO,IAAI,qCAAqC,EAAE,QAAQ,EAAE,MAAM,GAAG,QAAQ,SAAS,OAAO,CAAC,GAAG,uCAAuC;AAAA,MAC9J;AAAA,IACF;AAAA,EACF;AACF;;;AC3IO,SAAS,gBAAgB,QAAuB,UAA8B;AACnF,SAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAML,MAAM,KAAK,OAA2B,SAA0H;AAC9J,aAAO,OAAO,MAAM,OAAO,IAAI,iBAAiB,EAAE,QAAQ,EAAE,MAAM,GAAG,QAAQ,SAAS,OAAO,CAAC,GAAG,mBAAmB;AAAA,IACtH;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAMA,QAAQ,OAAkD,SAA+E;AACvI,aAAO;AAAA,QACL,OAAO,kBACL,OAAO,MAAM,OAAO,IAAI,iBAAiB,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,OAAO,cAAc,EAAE,GAAG,QAAQ,SAAS,OAAO,CAAC,GAAG,mBAAmB;AAAA,QAC5I;AAAA,MACF;AAAA,IACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAOA,MAAM,IAAI,YAAoB,SAAuD;AACnF,aAAO,WAAW,MAAM,OAAO,IAAI,8BAA8B,EAAE,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,QAAQ,SAAS,OAAO,CAAC,GAAG,YAAY,gCAAgC;AAAA,IAC/K;AAAA;AAAA,IAEA,MAAM,OAAO,UAA8B,SAAuD;AAChG,aAAO,WAAW,MAAM,OAAO,KAAK,iBAAiB,EAAE,MAAM,EAAE,SAAS,GAAG,QAAQ,SAAS,OAAO,CAAC,GAAG,YAAY,oBAAoB;AAAA,IACzI;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAQA,MAAM,OAAO,YAAoB,UAA8B,SAAwD;AACrH,aAAO,OAAO,MAAM,OAAO,MAAM,8BAA8B,EAAE,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,EAAE,SAAS,GAAG,QAAQ,SAAS,OAAO,CAAC,GAAG,kCAAkC;AAAA,IACvL;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAOA,MAAM,OAAO,YAAoB,SAAwD;AACvF,aAAO,OAAO,MAAM,OAAO,OAAO,8BAA8B,EAAE,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,QAAQ,SAAS,OAAO,CAAC,GAAG,mCAAmC;AAAA,IACrK;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAUA,MAAM,gBAAgB,YAAoB,UAAkB,SAAwD;AAClH,aAAO,OAAO,MAAM,OAAO,IAAI,yDAAyD,EAAE,QAAQ,EAAE,MAAM,EAAE,YAAY,SAAS,EAAE,GAAG,QAAQ,SAAS,OAAO,CAAC,GAAG,2DAA2D;AAAA,IAC/N;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAQA,MAAM,MAAM,YAAoB,iBAAoC,SAAuD;AACzH,aAAO,WAAW,MAAM,OAAO,KAAK,oCAAoC,EAAE,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,EAAE,gBAAgB,GAAG,QAAQ,SAAS,OAAO,CAAC,GAAG,YAAY,uCAAuC;AAAA,IACxN;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IASA,MAAM,OAAO,YAAoB,SAAwD;AACvF,aAAO,OAAO,MAAM,OAAO,KAAK,qCAAqC,EAAE,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,QAAQ,SAAS,OAAO,CAAC,GAAG,wCAAwC;AAAA,IAC/K;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAUA,MAAM,aAAa,YAAoB,UAAkB,SAAwD;AAC/G,aAAO,OAAO,MAAM,OAAO,IAAI,sDAAsD,EAAE,QAAQ,EAAE,MAAM,EAAE,YAAY,SAAS,EAAE,GAAG,QAAQ,SAAS,OAAO,CAAC,GAAG,wDAAwD;AAAA,IACzN;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAQA,MAAM,UAAU,YAAoB,QAA+B,SAAwD;AACzH,aAAO,OAAO,MAAM,OAAO,MAAM,wCAAwC,EAAE,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,EAAE,OAAO,GAAG,QAAQ,SAAS,OAAO,CAAC,GAAG,4CAA4C;AAAA,IACzM;AAAA,IACA,WAAW;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAMT,MAAM,KAAK,OAA0B,SAA0H;AAC7J,eAAO,OAAO,MAAM,OAAO,IAAI,2BAA2B,EAAE,QAAQ,EAAE,MAAM,GAAG,QAAQ,SAAS,OAAO,CAAC,GAAG,6BAA6B;AAAA,MAC1I;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAMA,QAAQ,OAAiD,SAA+E;AACtI,eAAO;AAAA,UACL,OAAO,kBACL,OAAO,MAAM,OAAO,IAAI,2BAA2B,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,OAAO,cAAc,EAAE,GAAG,QAAQ,SAAS,OAAO,CAAC,GAAG,6BAA6B;AAAA,UAChK;AAAA,QACF;AAAA,MACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MASA,MAAM,IAAI,YAAoB,SAAuD;AACnF,eAAO,WAAW,MAAM,OAAO,IAAI,wCAAwC,EAAE,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,QAAQ,SAAS,OAAO,CAAC,GAAG,YAAY,0CAA0C;AAAA,MACnM;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAMA,MAAM,OAAO,UAA8B,SAAuD;AAChG,eAAO,WAAW,MAAM,OAAO,KAAK,2BAA2B,EAAE,MAAM,EAAE,SAAS,GAAG,QAAQ,SAAS,OAAO,CAAC,GAAG,YAAY,8BAA8B;AAAA,MAC7J;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAUA,MAAM,OAAO,YAAoB,UAA8B,SAAwD;AACrH,eAAO,OAAO,MAAM,OAAO,MAAM,wCAAwC,EAAE,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,EAAE,SAAS,GAAG,QAAQ,SAAS,OAAO,CAAC,GAAG,4CAA4C;AAAA,MAC3M;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MASA,MAAM,OAAO,YAAoB,SAAwD;AACvF,eAAO,OAAO,MAAM,OAAO,OAAO,wCAAwC,EAAE,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,QAAQ,SAAS,OAAO,CAAC,GAAG,6CAA6C;AAAA,MACzL;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MASA,MAAM,UAAU,YAAoB,SAAuD;AACzF,eAAO,WAAW,MAAM,OAAO,KAAK,kDAAkD,EAAE,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,QAAQ,SAAS,OAAO,CAAC,GAAG,YAAY,qDAAqD;AAAA,MACzN;AAAA,IACF;AAAA,EACF;AACF;;;ACpMO,SAAS,gBAAgB,QAAuB,UAA8B;AACnF,SAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAML,mBAAmB,OAA4D,SAAiF;AAC9J,aAAO;AAAA,QACL,OAAO,kBACL,OAAO,MAAM,OAAO,IAAI,6BAA6B,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,OAAO,cAAc,EAAE,GAAG,QAAQ,SAAS,OAAO,CAAC,GAAG,+BAA+B;AAAA,QACpK;AAAA,MACF;AAAA,IACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAMA,MAAM,gBAAgB,OAAqC,SAA+H;AACxL,aAAO,OAAO,MAAM,OAAO,IAAI,6BAA6B,EAAE,QAAQ,EAAE,MAAM,GAAG,QAAQ,SAAS,OAAO,CAAC,GAAG,+BAA+B;AAAA,IAC9I;AAAA,IACA,SAAS;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAMP,MAAM,KAAK,OAAwB,SAAuH;AACxJ,eAAO,OAAO,MAAM,OAAO,IAAI,yBAAyB,EAAE,QAAQ,EAAE,MAAM,GAAG,QAAQ,SAAS,OAAO,CAAC,GAAG,2BAA2B;AAAA,MACtI;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAMA,QAAQ,OAA+C,SAA6E;AAClI,eAAO;AAAA,UACL,OAAO,kBACL,OAAO,MAAM,OAAO,IAAI,yBAAyB,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,OAAO,cAAc,EAAE,GAAG,QAAQ,SAAS,OAAO,CAAC,GAAG,2BAA2B;AAAA,UAC5J;AAAA,QACF;AAAA,MACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAOA,MAAM,IAAI,IAAY,SAAqD;AACzE,eAAO,WAAW,MAAM,OAAO,IAAI,8BAA8B,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,QAAQ,SAAS,OAAO,CAAC,GAAG,UAAU,gCAAgC;AAAA,MACrK;AAAA;AAAA,MAEA,MAAM,OAAO,QAA0B,SAAqD;AAC1F,eAAO,WAAW,MAAM,OAAO,KAAK,yBAAyB,EAAE,MAAM,EAAE,OAAO,GAAG,QAAQ,SAAS,OAAO,CAAC,GAAG,UAAU,4BAA4B;AAAA,MACrJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAQA,MAAM,OAAO,IAAY,QAA0B,SAAwD;AACzG,eAAO,OAAO,MAAM,OAAO,MAAM,8BAA8B,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,MAAM,EAAE,OAAO,GAAG,QAAQ,SAAS,OAAO,CAAC,GAAG,kCAAkC;AAAA,MAC7K;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAOA,MAAM,OAAO,IAAY,SAAwD;AAC/E,eAAO,OAAO,MAAM,OAAO,OAAO,8BAA8B,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,QAAQ,SAAS,OAAO,CAAC,GAAG,mCAAmC;AAAA,MAC7J;AAAA,IACF;AAAA,IACA,YAAY;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAMV,MAAM,KAAK,OAA4B,SAA0D;AAC/F,eAAO,WAAW,MAAM,OAAO,IAAI,4BAA4B,EAAE,QAAQ,EAAE,MAAM,GAAG,QAAQ,SAAS,OAAO,CAAC,GAAG,cAAc,8BAA8B;AAAA,MAC9J;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAOA,MAAM,IAAI,IAAY,SAAwD;AAC5E,eAAO,WAAW,MAAM,OAAO,IAAI,iCAAiC,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,QAAQ,SAAS,OAAO,CAAC,GAAG,aAAa,mCAAmC;AAAA,MAC9K;AAAA;AAAA,MAEA,MAAM,OAAO,WAAgC,SAAwD;AACnG,eAAO,WAAW,MAAM,OAAO,KAAK,4BAA4B,EAAE,MAAM,EAAE,UAAU,GAAG,QAAQ,SAAS,OAAO,CAAC,GAAG,aAAa,+BAA+B;AAAA,MACjK;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAOA,MAAM,QAAQ,IAAY,SAAwD;AAChF,eAAO,WAAW,MAAM,OAAO,IAAI,yCAAyC,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,QAAQ,SAAS,OAAO,CAAC,GAAG,aAAa,2CAA2C;AAAA,MAC9L;AAAA,IACF;AAAA,EACF;AACF;;;ACzGO,SAAS,aAAa,QAAuB,UAA8B;AAChF,SAAO;AAAA;AAAA,IAEL,MAAM,KAAK,OAAqC,SAAqI;AACnL,aAAO,OAAO,MAAM,OAAO,IAAI,cAAc,EAAE,QAAQ,EAAE,MAAM,GAAG,QAAQ,SAAS,OAAO,CAAC,GAAG,gBAAgB;AAAA,IAChH;AAAA;AAAA,IAEA,MAAM,IAAI,IAAY,SAAoD;AACxE,aAAO,WAAW,MAAM,OAAO,IAAI,mBAAmB,EAAE,QAAQ,EAAE,QAAQ,EAAE,yBAAyB,SAAS,UAAoB,GAAG,MAAM,EAAE,GAAG,EAAE,GAAG,QAAQ,SAAS,OAAO,CAAC,GAAG,SAAS,qBAAqB;AAAA,IACjN;AAAA;AAAA,IAEA,MAAM,OAAO,OAAwB,SAAoD;AACvF,aAAO,WAAW,MAAM,OAAO,KAAK,cAAc,EAAE,MAAM,EAAE,MAAM,GAAG,QAAQ,SAAS,OAAO,CAAC,GAAG,SAAS,iBAAiB;AAAA,IAC7H;AAAA;AAAA,IAEA,MAAM,OAAO,IAAY,OAAwB,SAAoD;AACnG,aAAO,WAAW,MAAM,OAAO,IAAI,mBAAmB,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,MAAM,EAAE,MAAM,GAAG,QAAQ,SAAS,OAAO,CAAC,GAAG,SAAS,qBAAqB;AAAA,IAC/J;AAAA;AAAA,IAEA,MAAM,OAAO,IAAY,SAAwD;AAC/E,aAAO,OAAO,MAAM,OAAO,OAAO,mBAAmB,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,QAAQ,SAAS,OAAO,CAAC,GAAG,wBAAwB;AAAA,IACvI;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAUA,MAAM,cAAc,IAAY,SAA4B,SAA4D;AACtH,aAAO,WAAW,MAAM,OAAO,IAAI,yBAAyB,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,MAAM,EAAE,QAAQ,GAAG,QAAQ,SAAS,OAAO,CAAC,GAAG,WAAW,2BAA2B;AAAA,IAC/K;AAAA;AAAA,IAEA,MAAM,OAAO,IAAY,SAAoD;AAC3E,aAAO,WAAW,MAAM,OAAO,IAAI,0BAA0B,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,QAAQ,SAAS,OAAO,CAAC,GAAG,SAAS,4BAA4B;AAAA,IAC5J;AAAA;AAAA,IAEA,MAAM,KAAK,IAAY,SAAoD;AACzE,aAAO,WAAW,MAAM,OAAO,KAAK,wBAAwB,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,QAAQ,SAAS,OAAO,CAAC,GAAG,SAAS,2BAA2B;AAAA,IAC1J;AAAA,IACA,SAAS;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAMP,MAAM,KAAK,OAA8B,SAA4H;AACnK,eAAO,OAAO,MAAM,OAAO,IAAI,sBAAsB,EAAE,QAAQ,EAAE,MAAM,GAAG,QAAQ,SAAS,OAAO,CAAC,GAAG,wBAAwB;AAAA,MAChI;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAMA,QAAQ,OAAqD,SAAkF;AAC7I,eAAO;AAAA,UACL,OAAO,kBACL,OAAO,MAAM,OAAO,IAAI,sBAAsB,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,OAAO,cAAc,EAAE,GAAG,QAAQ,SAAS,OAAO,CAAC,GAAG,wBAAwB;AAAA,UACtJ;AAAA,QACF;AAAA,MACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MASA,MAAM,IAAI,IAAY,SAA0D;AAC9E,eAAO,WAAW,MAAM,OAAO,IAAI,2BAA2B,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,QAAQ,SAAS,OAAO,CAAC,GAAG,UAAU,6BAA6B;AAAA,MAC/J;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAUA,MAAM,OAAO,IAAY,QAA+B,SAA0D;AAChH,eAAO,WAAW,MAAM,OAAO,IAAI,2BAA2B,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,MAAM,EAAE,OAAO,GAAG,QAAQ,SAAS,OAAO,CAAC,GAAG,UAAU,6BAA6B;AAAA,MACjL;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MASA,MAAM,OAAO,IAAY,SAA0D;AACjF,eAAO,WAAW,MAAM,OAAO,OAAO,2BAA2B,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,QAAQ,SAAS,OAAO,CAAC,GAAG,UAAU,gCAAgC;AAAA,MACrK;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MASA,MAAM,QAAQ,IAAY,SAA0D;AAClF,eAAO,WAAW,MAAM,OAAO,KAAK,mCAAmC,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,QAAQ,SAAS,OAAO,CAAC,GAAG,UAAU,sCAAsC;AAAA,MACjL;AAAA,IACF;AAAA,EACF;AACF;;;ACxIO,SAAS,WAAW,QAAuB,UAA8B;AAC9E,SAAO;AAAA,IACL,UAAU;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAMR,MAAM,OAAO,SAAoC,SAAsD;AACrG,eAAO,WAAW,MAAM,OAAO,KAAK,qBAAqB,EAAE,MAAM,EAAE,QAAQ,GAAG,QAAQ,SAAS,OAAO,CAAC,GAAG,WAAW,wBAAwB;AAAA,MAC/I;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAOA,MAAM,OAAO,IAAY,SAAwD;AAC/E,eAAO,OAAO,MAAM,OAAO,OAAO,0BAA0B,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,QAAQ,SAAS,OAAO,CAAC,GAAG,+BAA+B;AAAA,MACrJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAOA,MAAM,WAAW,IAAY,SAAmD;AAC9E,eAAO,WAAW,MAAM,OAAO,KAAK,gCAAgC,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,QAAQ,SAAS,OAAO,CAAC,GAAG,QAAQ,mCAAmC;AAAA,MACzK;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAOA,MAAM,WAAW,IAAY,SAAwD;AACnF,eAAO,OAAO,MAAM,OAAO,OAAO,gCAAgC,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,QAAQ,SAAS,OAAO,CAAC,GAAG,qCAAqC;AAAA,MACjK;AAAA,IACF;AAAA,IACA,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAML,MAAM,KAAK,OAA0B,SAAmH;AACtJ,eAAO,OAAO,MAAM,OAAO,IAAI,kBAAkB,EAAE,QAAQ,EAAE,MAAM,GAAG,QAAQ,SAAS,OAAO,CAAC,GAAG,oBAAoB;AAAA,MACxH;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAMA,QAAQ,OAAiD,SAA2E;AAClI,eAAO;AAAA,UACL,OAAO,kBACL,OAAO,MAAM,OAAO,IAAI,kBAAkB,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,OAAO,cAAc,EAAE,GAAG,QAAQ,SAAS,OAAO,CAAC,GAAG,oBAAoB;AAAA,UAC9I;AAAA,QACF;AAAA,MACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MASA,MAAM,IAAI,IAAY,SAAmD;AACvE,eAAO,WAAW,MAAM,OAAO,IAAI,uBAAuB,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,QAAQ,SAAS,OAAO,CAAC,GAAG,QAAQ,yBAAyB;AAAA,MACrJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAMA,MAAM,OAAO,MAA0B,SAAmD;AACxF,eAAO,WAAW,MAAM,OAAO,KAAK,kBAAkB,EAAE,MAAM,EAAE,KAAK,GAAG,QAAQ,SAAS,OAAO,CAAC,GAAG,QAAQ,qBAAqB;AAAA,MACnI;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAUA,MAAM,OAAO,IAAY,MAA0B,SAAmD;AACpG,eAAO,WAAW,MAAM,OAAO,IAAI,uBAAuB,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,MAAM,EAAE,KAAK,GAAG,QAAQ,SAAS,OAAO,CAAC,GAAG,QAAQ,yBAAyB;AAAA,MACrK;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MASA,MAAM,OAAO,IAAY,SAAwD;AAC/E,eAAO,OAAO,MAAM,OAAO,OAAO,uBAAuB,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,QAAQ,SAAS,OAAO,CAAC,GAAG,4BAA4B;AAAA,MAC/I;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAOA,MAAM,WAAW,IAAY,SAAmD;AAC9E,eAAO,WAAW,MAAM,OAAO,KAAK,6BAA6B,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,QAAQ,SAAS,OAAO,CAAC,GAAG,QAAQ,gCAAgC;AAAA,MACnK;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAOA,MAAM,WAAW,IAAY,SAAwD;AACnF,eAAO,OAAO,MAAM,OAAO,OAAO,6BAA6B,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,QAAQ,SAAS,OAAO,CAAC,GAAG,kCAAkC;AAAA,MAC3J;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAOA,MAAM,YAAY,IAAY,SAAwD;AACpF,eAAO,WAAW,MAAM,OAAO,IAAI,gCAAgC,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,QAAQ,SAAS,OAAO,CAAC,GAAG,YAAY,kCAAkC;AAAA,MAC3K;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAOA,MAAM,SAAS,IAAY,SAAqD;AAC9E,eAAO,WAAW,MAAM,OAAO,IAAI,6BAA6B,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,QAAQ,SAAS,OAAO,CAAC,GAAG,SAAS,+BAA+B;AAAA,MAClK;AAAA,IACF;AAAA,EACF;AACF;;;AC9JO,SAAS,aAAa,QAAuB,UAA8B;AAChF,SAAO;AAAA;AAAA,IAEL,MAAM,KAAK,OAAuB,SAAuH;AACvJ,aAAO,OAAO,MAAM,OAAO,IAAI,cAAc,EAAE,QAAQ,EAAE,MAAM,GAAG,QAAQ,SAAS,OAAO,CAAC,GAAG,gBAAgB;AAAA,IAChH;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAOA,MAAM,OAAO,IAAY,SAAwD;AAC/E,aAAO,OAAO,MAAM,OAAO,OAAO,mBAAmB,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,QAAQ,SAAS,OAAO,CAAC,GAAG,wBAAwB;AAAA,IACvI;AAAA,EACF;AACF;;;ACPO,SAAS,aAAa,QAAuB,UAA8B;AAChF,SAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAML,MAAM,KAAK,OAAuB,SAAoH;AACpJ,aAAO,OAAO,MAAM,OAAO,IAAI,cAAc,EAAE,QAAQ,EAAE,MAAM,GAAG,QAAQ,SAAS,OAAO,CAAC,GAAG,gBAAgB;AAAA,IAChH;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAMA,QAAQ,OAA8C,SAA4E;AAChI,aAAO;AAAA,QACL,OAAO,kBACL,OAAO,MAAM,OAAO,IAAI,cAAc,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,OAAO,cAAc,EAAE,GAAG,QAAQ,SAAS,OAAO,CAAC,GAAG,gBAAgB;AAAA,QACtI;AAAA,MACF;AAAA,IACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IASA,MAAM,IAAI,SAAiB,SAAoD;AAC7E,aAAO,WAAW,MAAM,OAAO,IAAI,wBAAwB,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,QAAQ,SAAS,OAAO,CAAC,GAAG,SAAS,0BAA0B;AAAA,IAC7J;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAMA,MAAM,OAAO,OAAwB,SAAoD;AACvF,aAAO,WAAW,MAAM,OAAO,KAAK,cAAc,EAAE,MAAM,EAAE,MAAM,GAAG,QAAQ,SAAS,OAAO,CAAC,GAAG,SAAS,iBAAiB;AAAA,IAC7H;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAUA,MAAM,OAAO,SAAiB,OAAuB,SAAoD;AACvG,aAAO,WAAW,MAAM,OAAO,MAAM,wBAAwB,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,EAAE,MAAM,GAAG,QAAQ,SAAS,OAAO,CAAC,GAAG,SAAS,4BAA4B;AAAA,IAClL;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAOA,MAAM,OAAO,SAAiB,SAAwD;AACpF,aAAO,OAAO,MAAM,OAAO,OAAO,wBAAwB,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,QAAQ,SAAS,OAAO,CAAC,GAAG,6BAA6B;AAAA,IACtJ;AAAA,EACF;AACF;;;AC/EO,SAAS,gBAAgB,QAAuB,UAA8B;AACnF,SAAO;AAAA;AAAA,IAEL,MAAM,KAAK,SAAyD;AAClE,aAAO,WAAW,MAAM,OAAO,IAAI,iBAAiB,EAAE,QAAQ,SAAS,OAAO,CAAC,GAAG,aAAa,mBAAmB;AAAA,IACpH;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAOA,MAAM,IAAI,YAAoB,SAAuD;AACnF,aAAO,WAAW,MAAM,OAAO,IAAI,8BAA8B,EAAE,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,QAAQ,SAAS,OAAO,CAAC,GAAG,YAAY,gCAAgC;AAAA,IAC/K;AAAA,EACF;AACF;;;AChBO,SAAS,eAAe,QAAuB,UAA8B;AAClF,SAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAML,MAAM,KAAK,SAAwD;AACjE,aAAO,WAAW,MAAM,OAAO,IAAI,gBAAgB,EAAE,QAAQ,SAAS,OAAO,CAAC,GAAG,YAAY,kBAAkB;AAAA,IACjH;AAAA,EACF;AACF;;;ACKO,SAAS,eAAe,QAAuB,UAA8B;AAClF,SAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAML,MAAM,KAAK,OAAyB,SAAwH;AAC1J,aAAO,OAAO,MAAM,OAAO,IAAI,gBAAgB,EAAE,QAAQ,EAAE,MAAM,GAAG,QAAQ,SAAS,OAAO,CAAC,GAAG,kBAAkB;AAAA,IACpH;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAMA,QAAQ,OAAgD,SAA8E;AACpI,aAAO;AAAA,QACL,OAAO,kBACL,OAAO,MAAM,OAAO,IAAI,gBAAgB,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,OAAO,cAAc,EAAE,GAAG,QAAQ,SAAS,OAAO,CAAC,GAAG,kBAAkB;AAAA,QAC1I;AAAA,MACF;AAAA,IACF;AAAA;AAAA,IAEA,MAAM,OAAO,aAAgC,SAAsD;AACjG,aAAO,WAAW,MAAM,OAAO,KAAK,gBAAgB,EAAE,MAAM,EAAE,SAAS,YAAY,GAAG,QAAQ,SAAS,OAAO,CAAC,GAAG,WAAW,mBAAmB;AAAA,IAClJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAQA,MAAM,OAAO,WAAmB,aAA+B,SAAwD;AACrH,aAAO,OAAO,MAAM,OAAO,MAAM,4BAA4B,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,EAAE,SAAS,YAAY,GAAG,QAAQ,SAAS,OAAO,CAAC,GAAG,gCAAgC;AAAA,IAC9L;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAOA,MAAM,OAAO,WAAmB,SAAwD;AACtF,aAAO,OAAO,MAAM,OAAO,OAAO,4BAA4B,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,QAAQ,SAAS,OAAO,CAAC,GAAG,iCAAiC;AAAA,IAChK;AAAA,EACF;AACF;;;AC1CO,SAAS,YAAY,QAAuB,UAA8B;AAC/E,SAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAML,MAAM,KAAK,OAAuB,SAAkH;AAClJ,aAAO,OAAO,MAAM,OAAO,IAAI,aAAa,EAAE,QAAQ,EAAE,MAAM,GAAG,QAAQ,SAAS,OAAO,CAAC,GAAG,eAAe;AAAA,IAC9G;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAMA,QAAQ,OAA8C,SAA2E;AAC/H,aAAO;AAAA,QACL,OAAO,kBACL,OAAO,MAAM,OAAO,IAAI,aAAa,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,OAAO,cAAc,EAAE,GAAG,QAAQ,SAAS,OAAO,CAAC,GAAG,eAAe;AAAA,QACpI;AAAA,MACF;AAAA,IACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IASA,MAAM,IAAI,QAAgB,SAAmD;AAC3E,aAAO,WAAW,MAAM,OAAO,IAAI,sBAAsB,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,QAAQ,SAAS,OAAO,CAAC,GAAG,QAAQ,wBAAwB;AAAA,IACvJ;AAAA;AAAA,IAEA,MAAM,OAAO,MAAsB,SAAmD;AACpF,aAAO,WAAW,MAAM,OAAO,KAAK,aAAa,EAAE,MAAM,EAAE,KAAK,GAAG,QAAQ,SAAS,OAAO,CAAC,GAAG,QAAQ,gBAAgB;AAAA,IACzH;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAUA,MAAM,OAAO,QAAgB,MAAsB,SAAwD;AACzG,aAAO,OAAO,MAAM,OAAO,MAAM,sBAAsB,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,EAAE,KAAK,GAAG,QAAQ,SAAS,OAAO,CAAC,GAAG,0BAA0B;AAAA,IAC/J;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IASA,MAAM,OAAO,QAAgB,SAAwD;AACnF,aAAO,OAAO,MAAM,OAAO,OAAO,sBAAsB,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,QAAQ,SAAS,OAAO,CAAC,GAAG,2BAA2B;AAAA,IACjJ;AAAA,EACF;AACF;;;ACzEO,SAAS,oBAAoB,QAAuB,UAA8B;AACvF,SAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAML,MAAM,KAAK,OAA+B,SAAmI;AAC3K,aAAO,OAAO,MAAM,OAAO,IAAI,qBAAqB,EAAE,QAAQ,EAAE,MAAM,GAAG,QAAQ,SAAS,OAAO,CAAC,GAAG,uBAAuB;AAAA,IAC9H;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAMA,QAAQ,OAAsD,SAAmF;AAC/I,aAAO;AAAA,QACL,OAAO,kBACL,OAAO,MAAM,OAAO,IAAI,qBAAqB,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,OAAO,cAAc,EAAE,GAAG,QAAQ,SAAS,OAAO,CAAC,GAAG,uBAAuB;AAAA,QACpJ;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;;;ACqDO,SAAS,gBAAgB,QAAuB,UAA8B;AACnF,SAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAML,MAAM,KAAK,OAA0B,SAA0H;AAC7J,aAAO,OAAO,MAAM,OAAO,IAAI,iBAAiB,EAAE,QAAQ,EAAE,MAAM,GAAG,QAAQ,SAAS,OAAO,CAAC,GAAG,mBAAmB;AAAA,IACtH;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAMA,QAAQ,OAAiD,SAA+E;AACtI,aAAO;AAAA,QACL,OAAO,kBACL,OAAO,MAAM,OAAO,IAAI,iBAAiB,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,OAAO,cAAc,EAAE,GAAG,QAAQ,SAAS,OAAO,CAAC,GAAG,mBAAmB;AAAA,QAC5I;AAAA,MACF;AAAA,IACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IASA,MAAM,IAAI,YAAoB,SAAuD;AACnF,aAAO,WAAW,MAAM,OAAO,IAAI,8BAA8B,EAAE,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,QAAQ,SAAS,OAAO,CAAC,GAAG,YAAY,gCAAgC;AAAA,IAC/K;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAMA,MAAM,OAAO,UAA8B,SAAuD;AAChG,aAAO,WAAW,MAAM,OAAO,KAAK,iBAAiB,EAAE,MAAM,EAAE,SAAS,GAAG,QAAQ,SAAS,OAAO,CAAC,GAAG,YAAY,oBAAoB;AAAA,IACzI;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAUA,MAAM,OAAO,YAAoB,UAA6B,SAAwD;AACpH,aAAO,OAAO,MAAM,OAAO,MAAM,8BAA8B,EAAE,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,EAAE,SAAS,GAAG,QAAQ,SAAS,OAAO,CAAC,GAAG,kCAAkC;AAAA,IACvL;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAMA,MAAM,eAAe,OAA6B,SAA2D;AAC3G,aAAO,WAAW,MAAM,OAAO,IAAI,6BAA6B,EAAE,QAAQ,EAAE,MAAM,GAAG,QAAQ,SAAS,OAAO,CAAC,GAAG,eAAe,+BAA+B;AAAA,IACjK;AAAA,IACA,UAAU;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAMR,MAAM,KAAK,OAA0B,SAAwH;AAC3J,eAAO,OAAO,MAAM,OAAO,IAAI,0BAA0B,EAAE,QAAQ,EAAE,MAAM,GAAG,QAAQ,SAAS,OAAO,CAAC,GAAG,4BAA4B;AAAA,MACxI;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAMA,QAAQ,OAAiD,SAA8E;AACrI,eAAO;AAAA,UACL,OAAO,kBACL,OAAO,MAAM,OAAO,IAAI,0BAA0B,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,OAAO,cAAc,EAAE,GAAG,QAAQ,SAAS,OAAO,CAAC,GAAG,4BAA4B;AAAA,UAC9J;AAAA,QACF;AAAA,MACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAOA,MAAM,IAAI,WAAmB,SAAsD;AACjF,eAAO,WAAW,MAAM,OAAO,IAAI,sCAAsC,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,QAAQ,SAAS,OAAO,CAAC,GAAG,WAAW,wCAAwC;AAAA,MAC7L;AAAA;AAAA,MAEA,MAAM,OAAO,SAA4B,SAAsD;AAC7F,eAAO,WAAW,MAAM,OAAO,KAAK,0BAA0B,EAAE,MAAM,EAAE,QAAQ,GAAG,QAAQ,SAAS,OAAO,CAAC,GAAG,WAAW,6BAA6B;AAAA,MACzJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAUA,MAAM,OAAO,WAAmB,MAAwB,SAAsD;AAC5G,eAAO,WAAW,MAAM,OAAO,MAAM,sCAAsC,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,QAAQ,SAAS,OAAO,CAAC,GAAG,WAAW,0CAA0C;AAAA,MACvM;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAOA,MAAM,OAAO,WAAmB,SAAwD;AACtF,eAAO,OAAO,MAAM,OAAO,OAAO,sCAAsC,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,QAAQ,SAAS,OAAO,CAAC,GAAG,2CAA2C;AAAA,MACpL;AAAA,IACF;AAAA,EACF;AACF;;;ACtIO,SAAS,WAAW,QAAuB,UAA8B;AAC9E,SAAO;AAAA,IACL,YAAY;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAMV,MAAM,KAAK,OAA+B,SAA6D;AACrG,eAAO,WAAW,MAAM,OAAO,IAAI,uBAAuB,EAAE,QAAQ,EAAE,MAAM,GAAG,QAAQ,SAAS,OAAO,CAAC,GAAG,cAAc,yBAAyB;AAAA,MACpJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MASA,MAAM,IAAI,YAAoB,SAA2D;AACvF,eAAO,WAAW,MAAM,OAAO,IAAI,oCAAoC,EAAE,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,QAAQ,SAAS,OAAO,CAAC,GAAG,YAAY,sCAAsC;AAAA,MAC3L;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAMA,MAAM,OAAO,UAAkC,SAA2D;AACxG,eAAO,WAAW,MAAM,OAAO,KAAK,uBAAuB,EAAE,MAAM,EAAE,SAAS,GAAG,QAAQ,SAAS,OAAO,CAAC,GAAG,YAAY,0BAA0B;AAAA,MACrJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAUA,MAAM,OAAO,YAAoB,UAAkC,SAA2D;AAC5H,eAAO,WAAW,MAAM,OAAO,IAAI,oCAAoC,EAAE,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,EAAE,SAAS,GAAG,QAAQ,SAAS,OAAO,CAAC,GAAG,YAAY,sCAAsC;AAAA,MAC/M;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MASA,MAAM,OAAO,YAAoB,SAAwD;AACvF,eAAO,OAAO,MAAM,OAAO,OAAO,oCAAoC,EAAE,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,QAAQ,SAAS,OAAO,CAAC,GAAG,yCAAyC;AAAA,MACjL;AAAA,IACF;AAAA,IACA,QAAQ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAMN,MAAM,KAAK,OAAwB,SAAoH;AACrJ,eAAO,OAAO,MAAM,OAAO,IAAI,mBAAmB,EAAE,QAAQ,EAAE,MAAM,GAAG,QAAQ,SAAS,OAAO,CAAC,GAAG,qBAAqB;AAAA,MAC1H;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAMA,QAAQ,OAA+C,SAA4E;AACjI,eAAO;AAAA,UACL,OAAO,kBACL,OAAO,MAAM,OAAO,IAAI,mBAAmB,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,OAAO,cAAc,EAAE,GAAG,QAAQ,SAAS,OAAO,CAAC,GAAG,qBAAqB;AAAA,UAChJ;AAAA,QACF;AAAA,MACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MASA,MAAM,IAAI,SAAiB,SAAoD;AAC7E,eAAO,WAAW,MAAM,OAAO,IAAI,6BAA6B,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,QAAQ,SAAS,OAAO,CAAC,GAAG,SAAS,+BAA+B;AAAA,MACvK;AAAA,IACF;AAAA,IACA,UAAU;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAMR,MAAM,KAAK,OAA0B,SAAwH;AAC3J,eAAO,OAAO,MAAM,OAAO,IAAI,qBAAqB,EAAE,QAAQ,EAAE,MAAM,GAAG,QAAQ,SAAS,OAAO,CAAC,GAAG,uBAAuB;AAAA,MAC9H;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAMA,QAAQ,OAAiD,SAA8E;AACrI,eAAO;AAAA,UACL,OAAO,kBACL,OAAO,MAAM,OAAO,IAAI,qBAAqB,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,OAAO,cAAc,EAAE,GAAG,QAAQ,SAAS,OAAO,CAAC,GAAG,uBAAuB;AAAA,UACpJ;AAAA,QACF;AAAA,MACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MASA,MAAM,IAAI,WAAmB,SAAsD;AACjF,eAAO,WAAW,MAAM,OAAO,IAAI,iCAAiC,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,QAAQ,SAAS,OAAO,CAAC,GAAG,WAAW,mCAAmC;AAAA,MACnL;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAMA,MAAM,OAAO,SAA4B,SAAsD;AAC7F,eAAO,WAAW,MAAM,OAAO,KAAK,qBAAqB,EAAE,MAAM,EAAE,QAAQ,GAAG,QAAQ,SAAS,OAAO,CAAC,GAAG,WAAW,wBAAwB;AAAA,MAC/I;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAUA,MAAM,OAAO,WAAmB,SAA4B,SAAsD;AAChH,eAAO,WAAW,MAAM,OAAO,IAAI,iCAAiC,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,EAAE,QAAQ,GAAG,QAAQ,SAAS,OAAO,CAAC,GAAG,WAAW,mCAAmC;AAAA,MACtM;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MASA,MAAM,OAAO,WAAmB,SAAwD;AACtF,eAAO,OAAO,MAAM,OAAO,OAAO,iCAAiC,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,QAAQ,SAAS,OAAO,CAAC,GAAG,sCAAsC;AAAA,MAC1K;AAAA,IACF;AAAA,EACF;AACF;;;ACnLO,SAAS,oBAAoB,QAAuB,UAA8B;AACvF,SAAO;AAAA;AAAA,IAEL,MAAM,KAAK,OAA+B,SAAkI;AAC1K,aAAO,OAAO,MAAM,OAAO,IAAI,qBAAqB,EAAE,QAAQ,EAAE,MAAM,GAAG,QAAQ,SAAS,OAAO,CAAC,GAAG,uBAAuB;AAAA,IAC9H;AAAA;AAAA,IAEA,QAAQ,OAAsD,SAAmF;AAC/I,aAAO;AAAA,QACL,OAAO,kBACL,OAAO,MAAM,OAAO,IAAI,qBAAqB,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,OAAO,cAAc,EAAE,GAAG,QAAQ,SAAS,OAAO,CAAC,GAAG,uBAAuB;AAAA,QACpJ;AAAA,MACF;AAAA,IACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IASA,MAAM,IAAI,gBAAwB,SAA2D;AAC3F,aAAO,WAAW,MAAM,OAAO,IAAI,sCAAsC,EAAE,QAAQ,EAAE,MAAM,EAAE,eAAe,EAAE,GAAG,QAAQ,SAAS,OAAO,CAAC,GAAG,gBAAgB,wCAAwC;AAAA,IACvM;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAMA,MAAM,OAAO,MAA8B,SAA2D;AACpG,aAAO,WAAW,MAAM,OAAO,KAAK,qBAAqB,EAAE,MAAM,QAAQ,SAAS,OAAO,CAAC,GAAG,gBAAgB,wBAAwB;AAAA,IACvI;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAUA,MAAM,OAAO,gBAAwB,cAAsC,SAAwD;AACjI,aAAO,OAAO,MAAM,OAAO,MAAM,sCAAsC,EAAE,QAAQ,EAAE,MAAM,EAAE,eAAe,EAAE,GAAG,MAAM,EAAE,aAAa,GAAG,QAAQ,SAAS,OAAO,CAAC,GAAG,0CAA0C;AAAA,IAC/M;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IASA,MAAM,OAAO,gBAAwB,SAAwD;AAC3F,aAAO,OAAO,MAAM,OAAO,OAAO,sCAAsC,EAAE,QAAQ,EAAE,MAAM,EAAE,eAAe,EAAE,GAAG,QAAQ,SAAS,OAAO,CAAC,GAAG,2CAA2C;AAAA,IACzL;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAQA,MAAM,WAAW,gBAAwB,MAAkC,SAA2D;AACpI,aAAO,WAAW,MAAM,OAAO,KAAK,4CAA4C,EAAE,QAAQ,EAAE,MAAM,EAAE,eAAe,EAAE,GAAG,MAAM,EAAE,KAAK,GAAG,QAAQ,SAAS,OAAO,CAAC,GAAG,gBAAgB,+CAA+C;AAAA,IACrO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAQA,MAAM,WAAW,gBAAwB,QAAgB,SAAwD;AAC/G,aAAO,OAAO,MAAM,OAAO,OAAO,qDAAqD,EAAE,QAAQ,EAAE,MAAM,EAAE,gBAAgB,OAAO,EAAE,GAAG,QAAQ,SAAS,OAAO,CAAC,GAAG,0DAA0D;AAAA,IAC/N;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IASA,MAAM,WAAW,gBAAwB,QAAgB,MAAkC,SAAwD;AACjJ,aAAO,OAAO,MAAM,OAAO,MAAM,qDAAqD,EAAE,QAAQ,EAAE,MAAM,EAAE,gBAAgB,OAAO,EAAE,GAAG,MAAM,EAAE,KAAK,GAAG,QAAQ,SAAS,OAAO,CAAC,GAAG,yDAAyD;AAAA,IAC7O;AAAA,EACF;AACF;;;AC/FO,SAAS,cAAc,QAAuB,UAA8B;AACjF,SAAO;AAAA,IACL,SAAS;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAMP,MAAM,KAAK,OAA+B,SAA8H;AACtK,eAAO,OAAO,MAAM,OAAO,IAAI,uBAAuB,EAAE,QAAQ,EAAE,MAAM,GAAG,QAAQ,SAAS,OAAO,CAAC,GAAG,yBAAyB;AAAA,MAClI;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAMA,QAAQ,OAAsD,SAAoF;AAChJ,eAAO;AAAA,UACL,OAAO,kBACL,OAAO,MAAM,OAAO,IAAI,uBAAuB,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,OAAO,cAAc,EAAE,GAAG,QAAQ,SAAS,OAAO,CAAC,GAAG,yBAAyB;AAAA,UACxJ;AAAA,QACF;AAAA,MACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MASA,MAAM,IAAI,IAAY,SAAkG;AACtH,eAAO,OAAO,MAAM,OAAO,IAAI,4BAA4B,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,QAAQ,SAAS,OAAO,CAAC,GAAG,8BAA8B;AAAA,MACnJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAMA,MAAM,OAAO,QAAiC,SAAkG;AAC9I,eAAO,OAAO,MAAM,OAAO,KAAK,uBAAuB,EAAE,MAAM,EAAE,OAAO,GAAG,QAAQ,SAAS,OAAO,CAAC,GAAG,0BAA0B;AAAA,MACnI;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAUA,MAAM,eAAe,IAAY,QAAyC,SAA8F;AACtK,eAAO,OAAO,MAAM,OAAO,IAAI,qCAAqC,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,MAAM,EAAE,OAAO,GAAG,QAAQ,SAAS,OAAO,CAAC,GAAG,uCAAuC;AAAA,MACvL;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAUA,MAAM,aAAa,IAAY,QAAuC,SAA8F;AAClK,eAAO,OAAO,MAAM,OAAO,IAAI,mCAAmC,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,MAAM,EAAE,OAAO,GAAG,QAAQ,SAAS,OAAO,CAAC,GAAG,qCAAqC;AAAA,MACnL;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAUA,MAAM,WAAW,IAAY,QAAqC,SAAwD;AACxH,eAAO,OAAO,MAAM,OAAO,MAAM,iCAAiC,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,MAAM,EAAE,OAAO,GAAG,QAAQ,SAAS,OAAO,CAAC,GAAG,qCAAqC;AAAA,MACnL;AAAA,MACA,SAAS;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QAMP,MAAM,OAAO,UAA0C,SAAuD;AAC5G,iBAAO,WAAW,MAAM,OAAO,KAAK,+BAA+B,EAAE,MAAM,EAAE,SAAS,GAAG,QAAQ,SAAS,OAAO,CAAC,GAAG,YAAY,kCAAkC;AAAA,QACrK;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QASA,MAAM,OAAO,IAAY,SAAwD;AAC/E,iBAAO,OAAO,MAAM,OAAO,OAAO,oCAAoC,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,QAAQ,SAAS,OAAO,CAAC,GAAG,yCAAyC;AAAA,QACzK;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;;;AC5BO,SAAS,mBAAmB,QAAuB,UAA8B;AACtF,SAAO;AAAA,IACL,UAAU;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MASR,MAAM,WAAW,IAAY,SAAwD;AACnF,eAAO,WAAW,MAAM,OAAO,IAAI,0CAA0C,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,QAAQ,SAAS,OAAO,CAAC,GAAG,YAAY,4CAA4C;AAAA,MAC/L;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAOA,MAAM,aAAa,IAAY,SAAwD;AACrF,eAAO,WAAW,MAAM,OAAO,IAAI,6CAA6C,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,QAAQ,SAAS,OAAO,CAAC,GAAG,YAAY,+CAA+C;AAAA,MACrM;AAAA,IACF;AAAA,IACA,SAAS;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAMP,MAAM,KAAK,OAAqC,SAAsI;AACpL,eAAO,OAAO,MAAM,OAAO,IAAI,4BAA4B,EAAE,QAAQ,EAAE,MAAM,GAAG,QAAQ,SAAS,OAAO,CAAC,GAAG,8BAA8B;AAAA,MAC5I;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAMA,QAAQ,OAA4D,SAAwF;AAC1J,eAAO;AAAA,UACL,OAAO,kBACL,OAAO,MAAM,OAAO,IAAI,4BAA4B,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,OAAO,cAAc,EAAE,GAAG,QAAQ,SAAS,OAAO,CAAC,GAAG,8BAA8B;AAAA,UAClK;AAAA,QACF;AAAA,MACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MASA,MAAM,IAAI,IAAY,SAAgE;AACpF,eAAO,WAAW,MAAM,OAAO,IAAI,iCAAiC,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,QAAQ,SAAS,OAAO,CAAC,GAAG,eAAe,mCAAmC;AAAA,MAChL;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAMA,MAAM,OAAO,aAA2C,SAAgE;AACtH,eAAO,WAAW,MAAM,OAAO,KAAK,4BAA4B,EAAE,MAAM,EAAE,YAAY,GAAG,QAAQ,SAAS,OAAO,CAAC,GAAG,eAAe,+BAA+B;AAAA,MACrK;AAAA,MACA,WAAW;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QAMT,MAAM,KAAK,OAA8C,SAAwJ;AAC/M,iBAAO,OAAO,MAAM,OAAO,IAAI,sCAAsC,EAAE,QAAQ,EAAE,MAAM,GAAG,QAAQ,SAAS,OAAO,CAAC,GAAG,wCAAwC;AAAA,QAChK;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QAMA,QAAQ,OAAqE,SAAiG;AAC5K,iBAAO;AAAA,YACL,OAAO,kBACL,OAAO,MAAM,OAAO,IAAI,sCAAsC,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,OAAO,cAAc,EAAE,GAAG,QAAQ,SAAS,OAAO,CAAC,GAAG,wCAAwC;AAAA,YACtL;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,IACA,WAAW;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAMT,MAAM,KAAK,OAAuC,SAAuI;AACvL,eAAO,OAAO,MAAM,OAAO,IAAI,+BAA+B,EAAE,QAAQ,EAAE,MAAM,GAAG,QAAQ,SAAS,OAAO,CAAC,GAAG,iCAAiC;AAAA,MAClJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAMA,QAAQ,OAA8D,SAAyF;AAC7J,eAAO;AAAA,UACL,OAAO,kBACL,OAAO,MAAM,OAAO,IAAI,+BAA+B,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,OAAO,cAAc,EAAE,GAAG,QAAQ,SAAS,OAAO,CAAC,GAAG,iCAAiC;AAAA,UACxK;AAAA,QACF;AAAA,MACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MASA,MAAM,IAAI,IAAY,SAAiE;AACrF,eAAO,WAAW,MAAM,OAAO,IAAI,oCAAoC,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,QAAQ,SAAS,OAAO,CAAC,GAAG,eAAe,sCAAsC;AAAA,MACtL;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAMA,MAAM,OAAO,aAA6C,SAAiE;AACzH,eAAO,WAAW,MAAM,OAAO,KAAK,+BAA+B,EAAE,MAAM,EAAE,YAAY,GAAG,QAAQ,SAAS,OAAO,CAAC,GAAG,eAAe,kCAAkC;AAAA,MAC3K;AAAA,MACA,WAAW;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QAMT,MAAM,KAAK,OAAgD,SAAyJ;AAClN,iBAAO,OAAO,MAAM,OAAO,IAAI,yCAAyC,EAAE,QAAQ,EAAE,MAAM,GAAG,QAAQ,SAAS,OAAO,CAAC,GAAG,2CAA2C;AAAA,QACtK;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QAMA,QAAQ,OAAuE,SAAkG;AAC/K,iBAAO;AAAA,YACL,OAAO,kBACL,OAAO,MAAM,OAAO,IAAI,yCAAyC,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,OAAO,cAAc,EAAE,GAAG,QAAQ,SAAS,OAAO,CAAC,GAAG,2CAA2C;AAAA,YAC5L;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,IACA,OAAO;AAAA;AAAA,MAEL,MAAM,KAAK,OAAkC,SAA4G;AACvJ,eAAO,OAAO,MAAM,OAAO,IAAI,0BAA0B,EAAE,QAAQ,EAAE,MAAM,GAAG,QAAQ,SAAS,OAAO,CAAC,GAAG,4BAA4B;AAAA,MACxI;AAAA;AAAA,MAEA,QAAQ,OAAyD,SAAuF;AACtJ,eAAO;AAAA,UACL,OAAO,kBACL,OAAO,MAAM,OAAO,IAAI,0BAA0B,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,OAAO,cAAc,EAAE,GAAG,QAAQ,SAAS,OAAO,CAAC,GAAG,4BAA4B;AAAA,UAC9J;AAAA,QACF;AAAA,MACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAOA,MAAM,IAAI,IAAY,SAA+D;AACnF,eAAO,WAAW,MAAM,OAAO,IAAI,+BAA+B,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,QAAQ,SAAS,OAAO,CAAC,GAAG,eAAe,iCAAiC;AAAA,MAC5K;AAAA,IACF;AAAA,EACF;AACF;;;ACzNO,SAAS,eAAe,QAAuB,UAA8B;AAClF,SAAO;AAAA,IACL,UAAU;AAAA;AAAA,MAER,MAAM,KAAK,OAAyB,SAAyH;AAC3J,eAAO,OAAO,MAAM,OAAO,IAAI,yBAAyB,EAAE,QAAQ,EAAE,MAAM,GAAG,QAAQ,SAAS,OAAO,CAAC,GAAG,2BAA2B;AAAA,MACtI;AAAA;AAAA,MAEA,QAAQ,OAAgD,SAA8E;AACpI,eAAO;AAAA,UACL,OAAO,kBACL,OAAO,MAAM,OAAO,IAAI,yBAAyB,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,OAAO,cAAc,EAAE,GAAG,QAAQ,SAAS,OAAO,CAAC,GAAG,2BAA2B;AAAA,UAC5J;AAAA,QACF;AAAA,MACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAOA,MAAM,IAAI,WAAmB,SAAsD;AACjF,eAAO,WAAW,MAAM,OAAO,IAAI,qCAAqC,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,QAAQ,SAAS,OAAO,CAAC,GAAG,WAAW,uCAAuC;AAAA,MAC3L;AAAA;AAAA,MAEA,MAAM,OAAO,SAA4B,SAAsD;AAC7F,eAAO,WAAW,MAAM,OAAO,KAAK,yBAAyB,EAAE,MAAM,EAAE,QAAQ,GAAG,QAAQ,SAAS,OAAO,CAAC,GAAG,WAAW,4BAA4B;AAAA,MACvJ;AAAA,IACF;AAAA,IACA,UAAU;AAAA;AAAA,MAER,MAAM,KAAK,OAAyB,SAAyH;AAC3J,eAAO,OAAO,MAAM,OAAO,IAAI,yBAAyB,EAAE,QAAQ,EAAE,MAAM,GAAG,QAAQ,SAAS,OAAO,CAAC,GAAG,2BAA2B;AAAA,MACtI;AAAA;AAAA,MAEA,QAAQ,OAAgD,SAA8E;AACpI,eAAO;AAAA,UACL,OAAO,kBACL,OAAO,MAAM,OAAO,IAAI,yBAAyB,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,OAAO,cAAc,EAAE,GAAG,QAAQ,SAAS,OAAO,CAAC,GAAG,2BAA2B;AAAA,UAC5J;AAAA,QACF;AAAA,MACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAOA,MAAM,IAAI,IAAY,SAAsD;AAC1E,eAAO,WAAW,MAAM,OAAO,IAAI,8BAA8B,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,QAAQ,SAAS,OAAO,CAAC,GAAG,WAAW,gCAAgC;AAAA,MACtK;AAAA;AAAA,MAEA,MAAM,OAAO,SAA4B,SAAsD;AAC7F,eAAO,WAAW,MAAM,OAAO,KAAK,yBAAyB,EAAE,MAAM,EAAE,QAAQ,GAAG,QAAQ,SAAS,OAAO,CAAC,GAAG,WAAW,4BAA4B;AAAA,MACvJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAOA,MAAM,QAAQ,IAAY,SAAoD;AAC5E,eAAO,WAAW,MAAM,OAAO,KAAK,sCAAsC,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,QAAQ,SAAS,OAAO,CAAC,GAAG,SAAS,yCAAyC;AAAA,MACtL;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAOA,MAAM,OAAO,IAAY,SAAwD;AAC/E,eAAO,OAAO,MAAM,OAAO,KAAK,qCAAqC,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,QAAQ,SAAS,OAAO,CAAC,GAAG,wCAAwC;AAAA,MACvK;AAAA,IACF;AAAA,IACA,QAAQ;AAAA;AAAA,MAEN,MAAM,KAAK,OAAuB,SAAqH;AACrJ,eAAO,OAAO,MAAM,OAAO,IAAI,uBAAuB,EAAE,QAAQ,EAAE,MAAM,GAAG,QAAQ,SAAS,OAAO,CAAC,GAAG,yBAAyB;AAAA,MAClI;AAAA;AAAA,MAEA,QAAQ,OAA8C,SAA4E;AAChI,eAAO;AAAA,UACL,OAAO,kBACL,OAAO,MAAM,OAAO,IAAI,uBAAuB,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,OAAO,cAAc,EAAE,GAAG,QAAQ,SAAS,OAAO,CAAC,GAAG,yBAAyB;AAAA,UACxJ;AAAA,QACF;AAAA,MACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MASA,MAAM,IAAI,IAAY,SAAoD;AACxE,eAAO,WAAW,MAAM,OAAO,IAAI,4BAA4B,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,QAAQ,SAAS,OAAO,CAAC,GAAG,SAAS,8BAA8B;AAAA,MAChK;AAAA;AAAA,MAEA,MAAM,OAAO,OAAwB,SAAoD;AACvF,eAAO,WAAW,MAAM,OAAO,KAAK,uBAAuB,EAAE,MAAM,EAAE,MAAM,GAAG,QAAQ,SAAS,OAAO,CAAC,GAAG,SAAS,0BAA0B;AAAA,MAC/I;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAUA,MAAM,OAAO,IAAY,OAAwB,SAAoD;AACnG,eAAO,WAAW,MAAM,OAAO,IAAI,4BAA4B,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,MAAM,EAAE,MAAM,GAAG,QAAQ,SAAS,OAAO,CAAC,GAAG,SAAS,8BAA8B;AAAA,MACjL;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MASA,MAAM,OAAO,IAAY,SAAwD;AAC/E,eAAO,OAAO,MAAM,OAAO,OAAO,4BAA4B,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,QAAQ,SAAS,OAAO,CAAC,GAAG,iCAAiC;AAAA,MACzJ;AAAA;AAAA,MAEA,MAAM,QAAQ,MAAwB,SAAoD;AACxF,eAAO,WAAW,MAAM,OAAO,KAAK,+BAA+B,EAAE,MAAM,QAAQ,SAAS,OAAO,CAAC,GAAG,SAAS,kCAAkC;AAAA,MACpJ;AAAA;AAAA,MAEA,MAAM,SAAS,MAAyB,SAAoD;AAC1F,eAAO,WAAW,MAAM,OAAO,KAAK,gCAAgC,EAAE,MAAM,QAAQ,SAAS,OAAO,CAAC,GAAG,SAAS,mCAAmC;AAAA,MACtJ;AAAA,IACF;AAAA,EACF;AACF;;;ACrLO,SAASC,iBAAgB,QAAuB,UAA8B;AACnF,SAAO;AAAA,IACL,eAAe,oBAAmB,QAAQ,QAAQ;AAAA,IAClD,UAAU,eAAc,QAAQ,QAAQ;AAAA,IACxC,SAAS,cAAa,QAAQ,QAAQ;AAAA,IACtC,WAAW,gBAAe,QAAQ,QAAQ;AAAA,IAC1C,WAAW,gBAAe,QAAQ,QAAQ;AAAA,IAC1C,WAAW,gBAAe,QAAQ,QAAQ;AAAA,IAC1C,QAAQ,aAAY,QAAQ,QAAQ;AAAA,IACpC,MAAM,WAAU,QAAQ,QAAQ;AAAA,IAChC,QAAQ,aAAY,QAAQ,QAAQ;AAAA,IACpC,QAAQ,aAAY,QAAQ,QAAQ;AAAA,IACpC,WAAW,gBAAe,QAAQ,QAAQ;AAAA,IAC1C,UAAU,eAAc,QAAQ,QAAQ;AAAA,IACxC,UAAU,eAAc,QAAQ,QAAQ;AAAA,IACxC,OAAO,YAAW,QAAQ,QAAQ;AAAA,IAClC,eAAe,oBAAmB,QAAQ,QAAQ;AAAA,IAClD,WAAW,gBAAe,QAAQ,QAAQ;AAAA,IAC1C,MAAM,WAAU,QAAQ,QAAQ;AAAA,IAChC,eAAe,oBAAmB,QAAQ,QAAQ;AAAA,IAClD,SAAS,cAAa,QAAQ,QAAQ;AAAA,IACtC,cAAc,mBAAkB,QAAQ,QAAQ;AAAA,IAChD,UAAU,eAAc,QAAQ,QAAQ;AAAA,EAC1C;AACF;;;ACbO,IAAM,aAAN,MAAiB;AAAA;AAAA,EAEb;AAAA,EAET,YAAY,QAA0B;AACpC,UAAM,UAAU,OAAO,WAAW;AAGlC,wBAAoB,OAAO;AAC3B,UAAM,UAAkC;AAAA,MACtC,eAAe,SAAS,SAAS,GAAG,OAAO,QAAQ,IAAI,OAAO,YAAY,EAAE,CAAC;AAAA,IAC/E;AACA,QAAI,OAAO,WAAW;AACpB,cAAQ,uBAAuB,IAAI,OAAO;AAAA,IAC5C;AACA,SAAK,MAAM,aAAoB;AAAA,MAC7B;AAAA,MACA;AAAA,MACA,OAAO,UAAU,OAAO,SAAS,WAAW,OAAO,OAAO,cAAc,GAAG,OAAO,SAAS;AAAA,IAC7F,CAAC;AACD,WAAO,OAAO,MAAMC,iBAAgB,KAAK,KAAK,EAAE,WAAW,OAAO,UAAU,CAAC,CAAC;AAAA,EAChF;AACF;AAKA,IAAM,qBAAqB,oBAAI,IAAI,CAAC,OAAO,QAAQ,OAAO,UAAU,SAAS,CAAC;AAC9E,IAAM,qBAAqB,oBAAI,IAAI,CAAC,KAAK,KAAK,GAAG,CAAC;AAOlD,SAAS,UACP,WACA,YACA,WACyB;AACzB,MAAI,cAAc,KAAK,cAAc,OAAW,QAAO;AACvD,SAAO,OAAO,OAAO,SAAS;AAC5B,UAAM,UAAU,iBAAiB,WAAW,SAAS,SAAY,QAAQ,IAAI,QAAQ,OAAO,IAAI;AAChG,UAAM,aAAa,mBAAmB,IAAI,QAAQ,MAAM;AACxD,aAAS,UAAU,KAAK,WAAW,GAAG;AACpC,UAAI;AACJ,UAAI;AACF,mBAAW,MAAM,UAAU,QAAQ,MAAM,GAAG,YAAY,SAAS,SAAS,CAAC;AAAA,MAC7E,SAAS,OAAO;AACd,cAAM,YAAY,UAAU,cAAc,cAAc,CAAC,QAAQ,OAAO,WAAW,iBAAiB,KAAK;AACzG,YAAI,CAAC,UAAW,OAAM;AACtB,cAAM,MAAM,UAAU,OAAO,GAAG,QAAQ,MAAM;AAC9C;AAAA,MACF;AACA,YAAM,kBAAkB,SAAS,WAAW,OAAQ,cAAc,mBAAmB,IAAI,SAAS,MAAM;AACxG,UAAI,CAAC,mBAAmB,WAAW,WAAY,QAAO;AACtD,YAAM,MAAM,aAAa,SAAS,QAAQ,IAAI,aAAa,GAAG,OAAO,GAAG,QAAQ,MAAM;AAAA,IACxF;AAAA,EACF;AACF;AAGA,SAAS,YAAY,SAAkB,WAAwD;AAC7F,MAAI,cAAc,OAAW,QAAO;AACpC,QAAM,UAAU,YAAY,QAAQ,SAAS;AAC7C,SAAO;AAAA,IACL,QAAQ,OAAO,YAAY,QAAQ,aAAa,YAAY,IAAI,CAAC,QAAQ,QAAQ,OAAO,CAAC,IAAI;AAAA,EAC/F;AACF;AAGA,SAAS,iBAAiB,OAAyB;AACjD,SAAO,iBAAiB,aAAc,iBAAiB,SAAS,MAAM,SAAS;AACjF;AAEA,SAAS,aAAa,YAA2B,SAAyB;AACxE,MAAI,eAAe,MAAM;AAGvB,UAAM,UAAU,OAAO,UAAU;AACjC,QAAI,OAAO,SAAS,OAAO,KAAK,WAAW,EAAG,QAAO,KAAK,IAAI,UAAU,KAAM,GAAM;AACpF,UAAM,OAAO,KAAK,MAAM,UAAU;AAClC,QAAI,CAAC,OAAO,MAAM,IAAI,EAAG,QAAO,KAAK,IAAI,KAAK,IAAI,OAAO,KAAK,IAAI,GAAG,CAAC,GAAG,GAAM;AAAA,EACjF;AACA,SAAO,UAAU,OAAO;AAC1B;AAEA,SAAS,UAAU,SAAyB;AAC1C,SAAO,KAAK,IAAI,MAAM,KAAK,UAAU,KAAK,OAAO,IAAI,KAAK,GAAK;AACjE;AAGA,SAAS,MAAM,IAAY,QAAoC;AAC7D,SAAO,IAAI,QAAQ,CAAC,SAAS,WAAW;AACtC,QAAI,OAAO,SAAS;AAClB,aAAO,OAAO,MAAM;AACpB;AAAA,IACF;AACA,UAAM,UAAU,MAAM;AACpB,mBAAa,KAAK;AAClB,aAAO,OAAO,MAAM;AAAA,IACtB;AACA,UAAM,QAAQ,WAAW,MAAM;AAC7B,aAAO,oBAAoB,SAAS,OAAO;AAC3C,cAAQ;AAAA,IACV,GAAG,EAAE;AACL,WAAO,iBAAiB,SAAS,SAAS,EAAE,MAAM,KAAK,CAAC;AAAA,EAC1D,CAAC;AACH;AAGA,SAAS,oBAAoB,SAAuB;AAClD,MAAI;AACJ,MAAI;AACF,UAAM,IAAI,IAAI,OAAO;AAAA,EACvB,QAAQ;AACN,UAAM,IAAI,MAAM,0CAA0C,OAAO,EAAE;AAAA,EACrE;AACA,MAAI,IAAI,aAAa,SAAU;AAC/B,QAAM,aACJ,IAAI,aAAa,eAAe,IAAI,aAAa,eAAe,IAAI,aAAa,WAAW,IAAI,aAAa;AAC/G,MAAI,IAAI,aAAa,WAAW,WAAY;AAC5C,QAAM,IAAI;AAAA,IACR,2CAA2C,IAAI,QAAQ;AAAA,EACzD;AACF;AAEA,SAAS,SAAS,OAAuB;AACvC,MAAI,OAAO,WAAW,aAAa;AACjC,WAAO,OAAO,KAAK,OAAO,MAAM,EAAE,SAAS,QAAQ;AAAA,EACrD;AACA,MAAI,SAAS;AACb,aAAW,QAAQ,IAAI,YAAY,EAAE,OAAO,KAAK,GAAG;AAClD,cAAU,OAAO,aAAa,IAAI;AAAA,EACpC;AACA,SAAO,KAAK,MAAM;AACpB;","names":["Request","error","final","joiner","createResources","createResources"]}
1
+ {"version":3,"sources":["../node_modules/openapi-fetch/src/index.js","../src/error.ts","../src/core.ts","../src/generated/resources/altCurrencies.ts","../src/generated/resources/benefits.ts","../src/generated/resources/billing.ts","../src/generated/resources/community.ts","../src/generated/resources/contracts.ts","../src/generated/resources/discounts.ts","../src/generated/resources/events.ts","../src/generated/resources/feed.ts","../src/generated/resources/floors.ts","../src/generated/resources/guides.ts","../src/generated/resources/locations.ts","../src/generated/resources/networks.ts","../src/generated/resources/packages.ts","../src/generated/resources/plans.ts","../src/generated/resources/registrations.ts","../src/generated/resources/resources.ts","../src/generated/resources/shop.ts","../src/generated/resources/subscriptions.ts","../src/generated/resources/support.ts","../src/generated/resources/transactions.ts","../src/generated/resources/visitors.ts","../src/generated/resources/index.ts","../src/client.ts"],"sourcesContent":["// settings & const\nconst PATH_PARAM_RE = /\\{[^{}]+\\}/g;\n\nconst supportsRequestInitExt = () => {\n return (\n typeof process === \"object\" &&\n Number.parseInt(process?.versions?.node?.substring(0, 2)) >= 18 &&\n process.versions.undici\n );\n};\n\n/**\n * Returns a cheap, non-cryptographically-secure random ID\n * Courtesy of @imranbarbhuiya (https://github.com/imranbarbhuiya)\n */\nexport function randomID() {\n return Math.random().toString(36).slice(2, 11);\n}\n\n/**\n * Create an openapi-fetch client.\n * @type {import(\"./index.js\").default}\n */\nexport default function createClient(clientOptions) {\n let {\n baseUrl = \"\",\n Request: CustomRequest = globalThis.Request,\n fetch: baseFetch = globalThis.fetch,\n querySerializer: globalQuerySerializer,\n bodySerializer: globalBodySerializer,\n pathSerializer: globalPathSerializer,\n headers: baseHeaders,\n requestInitExt = undefined,\n ...baseOptions\n } = { ...clientOptions };\n requestInitExt = supportsRequestInitExt() ? requestInitExt : undefined;\n baseUrl = removeTrailingSlash(baseUrl);\n const globalMiddlewares = [];\n\n /**\n * Per-request fetch (keeps settings created in createClient()\n * @param {T} url\n * @param {import('./index.js').FetchOptions<T>} fetchOptions\n */\n async function coreFetch(schemaPath, fetchOptions) {\n const {\n baseUrl: localBaseUrl,\n fetch = baseFetch,\n Request = CustomRequest,\n headers,\n params = {},\n parseAs = \"json\",\n querySerializer: requestQuerySerializer,\n bodySerializer = globalBodySerializer ?? defaultBodySerializer,\n pathSerializer: requestPathSerializer,\n body,\n middleware: requestMiddlewares = [],\n ...init\n } = fetchOptions || {};\n let finalBaseUrl = baseUrl;\n if (localBaseUrl) {\n finalBaseUrl = removeTrailingSlash(localBaseUrl) ?? baseUrl;\n }\n\n let querySerializer =\n typeof globalQuerySerializer === \"function\"\n ? globalQuerySerializer\n : createQuerySerializer(globalQuerySerializer);\n if (requestQuerySerializer) {\n querySerializer =\n typeof requestQuerySerializer === \"function\"\n ? requestQuerySerializer\n : createQuerySerializer({\n ...(typeof globalQuerySerializer === \"object\" ? globalQuerySerializer : {}),\n ...requestQuerySerializer,\n });\n }\n\n const pathSerializer = requestPathSerializer || globalPathSerializer || defaultPathSerializer;\n\n const serializedBody =\n body === undefined\n ? undefined\n : bodySerializer(\n body,\n // Note: we declare mergeHeaders() both here and below because it’s a bit of a chicken-or-egg situation:\n // bodySerializer() needs all headers so we aren’t dropping ones set by the user, however,\n // the result of this ALSO sets the lowest-priority content-type header. So we re-merge below,\n // setting the content-type at the very beginning to be overwritten.\n // Lastly, based on the way headers work, it’s not a simple “present-or-not” check becauase null intentionally un-sets headers.\n mergeHeaders(baseHeaders, headers, params.header),\n );\n const finalHeaders = mergeHeaders(\n // with no body, we should not to set Content-Type\n serializedBody === undefined ||\n // if serialized body is FormData; browser will correctly set Content-Type & boundary expression\n serializedBody instanceof FormData\n ? {}\n : {\n \"Content-Type\": \"application/json\",\n },\n baseHeaders,\n headers,\n params.header,\n );\n\n // Client level middleware take priority over request-level middleware\n const finalMiddlewares = [...globalMiddlewares, ...requestMiddlewares];\n\n const requestInit = {\n redirect: \"follow\",\n ...baseOptions,\n ...init,\n body: serializedBody,\n headers: finalHeaders,\n };\n\n let id;\n let options;\n let request = new Request(\n createFinalURL(schemaPath, { baseUrl: finalBaseUrl, params, querySerializer, pathSerializer }),\n requestInit,\n );\n let response;\n\n /** Add custom parameters to Request object */\n for (const key in init) {\n if (!(key in request)) {\n request[key] = init[key];\n }\n }\n\n if (finalMiddlewares.length) {\n id = randomID();\n\n // middleware (request)\n options = Object.freeze({\n baseUrl: finalBaseUrl,\n fetch,\n parseAs,\n querySerializer,\n bodySerializer,\n pathSerializer,\n });\n for (const m of finalMiddlewares) {\n if (m && typeof m === \"object\" && typeof m.onRequest === \"function\") {\n const result = await m.onRequest({\n request,\n schemaPath,\n params,\n options,\n id,\n });\n if (result) {\n if (result instanceof Request) {\n request = result;\n } else if (result instanceof Response) {\n response = result;\n break;\n } else {\n throw new Error(\"onRequest: must return new Request() or Response() when modifying the request\");\n }\n }\n }\n }\n }\n\n if (!response) {\n // fetch!\n try {\n response = await fetch(request, requestInitExt);\n } catch (error) {\n let errorAfterMiddleware = error;\n // middleware (error)\n // execute in reverse-array order (first priority gets last transform)\n if (finalMiddlewares.length) {\n for (let i = finalMiddlewares.length - 1; i >= 0; i--) {\n const m = finalMiddlewares[i];\n if (m && typeof m === \"object\" && typeof m.onError === \"function\") {\n const result = await m.onError({\n request,\n error: errorAfterMiddleware,\n schemaPath,\n params,\n options,\n id,\n });\n if (result) {\n // if error is handled by returning a response, skip remaining middleware\n if (result instanceof Response) {\n errorAfterMiddleware = undefined;\n response = result;\n break;\n }\n\n if (result instanceof Error) {\n errorAfterMiddleware = result;\n continue;\n }\n\n throw new Error(\"onError: must return new Response() or instance of Error\");\n }\n }\n }\n }\n\n // rethrow error if not handled by middleware\n if (errorAfterMiddleware) {\n throw errorAfterMiddleware;\n }\n }\n\n // middleware (response)\n // execute in reverse-array order (first priority gets last transform)\n if (finalMiddlewares.length) {\n for (let i = finalMiddlewares.length - 1; i >= 0; i--) {\n const m = finalMiddlewares[i];\n if (m && typeof m === \"object\" && typeof m.onResponse === \"function\") {\n const result = await m.onResponse({\n request,\n response,\n schemaPath,\n params,\n options,\n id,\n });\n if (result) {\n if (!(result instanceof Response)) {\n throw new Error(\"onResponse: must return new Response() when modifying the response\");\n }\n response = result;\n }\n }\n }\n }\n }\n\n const contentLength = response.headers.get(\"Content-Length\");\n // handle empty content\n if (\n response.status === 204 ||\n request.method === \"HEAD\" ||\n (contentLength === \"0\" && !response.headers.get(\"Transfer-Encoding\")?.includes(\"chunked\"))\n ) {\n return response.ok ? { data: undefined, response } : { error: undefined, response };\n }\n\n // parse response (falling back to .text() when necessary)\n if (response.ok) {\n const getResponseData = async () => {\n // if \"stream\", skip parsing entirely\n if (parseAs === \"stream\") {\n return response.body;\n }\n\n if (parseAs === \"json\" && !contentLength) {\n // use text() when no content-length is provided to avoid errors parsing empty bodies (200 with no content)\n const raw = await response.text();\n return raw ? JSON.parse(raw) : undefined;\n }\n\n return await response[parseAs]();\n };\n return { data: await getResponseData(), response };\n }\n\n // handle errors\n let error = await response.text();\n try {\n error = JSON.parse(error); // attempt to parse as JSON\n } catch {\n // noop\n }\n return { error, response };\n }\n\n return {\n request(method, url, init) {\n return coreFetch(url, { ...init, method: method.toUpperCase() });\n },\n /** Call a GET endpoint */\n GET(url, init) {\n return coreFetch(url, { ...init, method: \"GET\" });\n },\n /** Call a PUT endpoint */\n PUT(url, init) {\n return coreFetch(url, { ...init, method: \"PUT\" });\n },\n /** Call a POST endpoint */\n POST(url, init) {\n return coreFetch(url, { ...init, method: \"POST\" });\n },\n /** Call a DELETE endpoint */\n DELETE(url, init) {\n return coreFetch(url, { ...init, method: \"DELETE\" });\n },\n /** Call a OPTIONS endpoint */\n OPTIONS(url, init) {\n return coreFetch(url, { ...init, method: \"OPTIONS\" });\n },\n /** Call a HEAD endpoint */\n HEAD(url, init) {\n return coreFetch(url, { ...init, method: \"HEAD\" });\n },\n /** Call a PATCH endpoint */\n PATCH(url, init) {\n return coreFetch(url, { ...init, method: \"PATCH\" });\n },\n /** Call a TRACE endpoint */\n TRACE(url, init) {\n return coreFetch(url, { ...init, method: \"TRACE\" });\n },\n /** Register middleware */\n use(...middleware) {\n for (const m of middleware) {\n if (!m) {\n continue;\n }\n if (typeof m !== \"object\" || !(\"onRequest\" in m || \"onResponse\" in m || \"onError\" in m)) {\n throw new Error(\"Middleware must be an object with one of `onRequest()`, `onResponse() or `onError()`\");\n }\n globalMiddlewares.push(m);\n }\n },\n /** Unregister middleware */\n eject(...middleware) {\n for (const m of middleware) {\n const i = globalMiddlewares.indexOf(m);\n if (i !== -1) {\n globalMiddlewares.splice(i, 1);\n }\n }\n },\n };\n}\n\nclass PathCallForwarder {\n constructor(client, url) {\n this.client = client;\n this.url = url;\n }\n\n GET = (init) => {\n return this.client.GET(this.url, init);\n };\n PUT = (init) => {\n return this.client.PUT(this.url, init);\n };\n POST = (init) => {\n return this.client.POST(this.url, init);\n };\n DELETE = (init) => {\n return this.client.DELETE(this.url, init);\n };\n OPTIONS = (init) => {\n return this.client.OPTIONS(this.url, init);\n };\n HEAD = (init) => {\n return this.client.HEAD(this.url, init);\n };\n PATCH = (init) => {\n return this.client.PATCH(this.url, init);\n };\n TRACE = (init) => {\n return this.client.TRACE(this.url, init);\n };\n}\n\nclass PathClientProxyHandler {\n constructor() {\n this.client = null;\n }\n\n // Assume the property is an URL.\n get(coreClient, url) {\n const forwarder = new PathCallForwarder(coreClient, url);\n this.client[url] = forwarder;\n return forwarder;\n }\n}\n\n/**\n * Wrap openapi-fetch client to support a path based API.\n * @type {import(\"./index.js\").wrapAsPathBasedClient}\n */\nexport function wrapAsPathBasedClient(coreClient) {\n const handler = new PathClientProxyHandler();\n const proxy = new Proxy(coreClient, handler);\n\n // Put the proxy on the prototype chain of the actual client.\n // This means if we do not have a memoized PathCallForwarder,\n // we fall back to the proxy to synthesize it.\n // However, the proxy itself is not on the hot-path (if we fetch the same\n // endpoint multiple times, only the first call will hit the proxy).\n function Client() {}\n Client.prototype = proxy;\n\n const client = new Client();\n\n // Feed the client back to the proxy handler so it can store the generated\n // PathCallForwarder.\n handler.client = client;\n\n return client;\n}\n\n/**\n * Convenience method to an openapi-fetch path based client.\n * Strictly equivalent to `wrapAsPathBasedClient(createClient(...))`.\n * @type {import(\"./index.js\").createPathBasedClient}\n */\nexport function createPathBasedClient(clientOptions) {\n return wrapAsPathBasedClient(createClient(clientOptions));\n}\n\n// utils\n\n/**\n * Serialize primitive param values\n * @type {import(\"./index.js\").serializePrimitiveParam}\n */\nexport function serializePrimitiveParam(name, value, options) {\n if (value === undefined || value === null) {\n return \"\";\n }\n if (typeof value === \"object\") {\n throw new Error(\n \"Deeply-nested arrays/objects aren’t supported. Provide your own `querySerializer()` to handle these.\",\n );\n }\n return `${name}=${options?.allowReserved === true ? value : encodeURIComponent(value)}`;\n}\n\n/**\n * Serialize object param (shallow only)\n * @type {import(\"./index.js\").serializeObjectParam}\n */\nexport function serializeObjectParam(name, value, options) {\n if (!value || typeof value !== \"object\") {\n return \"\";\n }\n const values = [];\n const joiner =\n {\n simple: \",\",\n label: \".\",\n matrix: \";\",\n }[options.style] || \"&\";\n\n // explode: false\n if (options.style !== \"deepObject\" && options.explode === false) {\n for (const k in value) {\n values.push(k, options.allowReserved === true ? value[k] : encodeURIComponent(value[k]));\n }\n const final = values.join(\",\"); // note: values are always joined by comma in explode: false (but joiner can prefix)\n switch (options.style) {\n case \"form\": {\n return `${name}=${final}`;\n }\n case \"label\": {\n return `.${final}`;\n }\n case \"matrix\": {\n return `;${name}=${final}`;\n }\n default: {\n return final;\n }\n }\n }\n\n // explode: true\n for (const k in value) {\n const finalName = options.style === \"deepObject\" ? `${name}[${k}]` : k;\n values.push(serializePrimitiveParam(finalName, value[k], options));\n }\n const final = values.join(joiner);\n return options.style === \"label\" || options.style === \"matrix\" ? `${joiner}${final}` : final;\n}\n\n/**\n * Serialize array param (shallow only)\n * @type {import(\"./index.js\").serializeArrayParam}\n */\nexport function serializeArrayParam(name, value, options) {\n if (!Array.isArray(value)) {\n return \"\";\n }\n\n // explode: false\n if (options.explode === false) {\n const joiner = { form: \",\", spaceDelimited: \"%20\", pipeDelimited: \"|\" }[options.style] || \",\"; // note: for arrays, joiners vary wildly based on style + explode behavior\n const final = (options.allowReserved === true ? value : value.map((v) => encodeURIComponent(v))).join(joiner);\n switch (options.style) {\n case \"simple\": {\n return final;\n }\n case \"label\": {\n return `.${final}`;\n }\n case \"matrix\": {\n return `;${name}=${final}`;\n }\n // case \"spaceDelimited\":\n // case \"pipeDelimited\":\n default: {\n return `${name}=${final}`;\n }\n }\n }\n\n // explode: true\n const joiner = { simple: \",\", label: \".\", matrix: \";\" }[options.style] || \"&\";\n const values = [];\n for (const v of value) {\n if (options.style === \"simple\" || options.style === \"label\") {\n values.push(options.allowReserved === true ? v : encodeURIComponent(v));\n } else {\n values.push(serializePrimitiveParam(name, v, options));\n }\n }\n return options.style === \"label\" || options.style === \"matrix\"\n ? `${joiner}${values.join(joiner)}`\n : values.join(joiner);\n}\n\n/**\n * Serialize query params to string\n * @type {import(\"./index.js\").createQuerySerializer}\n */\nexport function createQuerySerializer(options) {\n return function querySerializer(queryParams) {\n const search = [];\n if (queryParams && typeof queryParams === \"object\") {\n for (const name in queryParams) {\n const value = queryParams[name];\n if (value === undefined || value === null) {\n continue;\n }\n if (Array.isArray(value)) {\n if (value.length === 0) {\n continue;\n }\n search.push(\n serializeArrayParam(name, value, {\n style: \"form\",\n explode: true,\n ...options?.array,\n allowReserved: options?.allowReserved || false,\n }),\n );\n continue;\n }\n if (typeof value === \"object\") {\n search.push(\n serializeObjectParam(name, value, {\n style: \"deepObject\",\n explode: true,\n ...options?.object,\n allowReserved: options?.allowReserved || false,\n }),\n );\n continue;\n }\n search.push(serializePrimitiveParam(name, value, options));\n }\n }\n return search.join(\"&\");\n };\n}\n\n/**\n * Handle different OpenAPI 3.x serialization styles\n * @type {import(\"./index.js\").defaultPathSerializer}\n * @see https://swagger.io/docs/specification/serialization/#path\n */\nexport function defaultPathSerializer(pathname, pathParams) {\n let nextURL = pathname;\n for (const match of pathname.match(PATH_PARAM_RE) ?? []) {\n let name = match.substring(1, match.length - 1);\n let explode = false;\n let style = \"simple\";\n if (name.endsWith(\"*\")) {\n explode = true;\n name = name.substring(0, name.length - 1);\n }\n if (name.startsWith(\".\")) {\n style = \"label\";\n name = name.substring(1);\n } else if (name.startsWith(\";\")) {\n style = \"matrix\";\n name = name.substring(1);\n }\n if (!pathParams || pathParams[name] === undefined || pathParams[name] === null) {\n continue;\n }\n const value = pathParams[name];\n if (Array.isArray(value)) {\n nextURL = nextURL.replace(match, serializeArrayParam(name, value, { style, explode }));\n continue;\n }\n if (typeof value === \"object\") {\n nextURL = nextURL.replace(match, serializeObjectParam(name, value, { style, explode }));\n continue;\n }\n if (style === \"matrix\") {\n nextURL = nextURL.replace(match, `;${serializePrimitiveParam(name, value)}`);\n continue;\n }\n nextURL = nextURL.replace(match, style === \"label\" ? `.${encodeURIComponent(value)}` : encodeURIComponent(value));\n }\n return nextURL;\n}\n\n/**\n * Serialize body object to string\n * @type {import(\"./index.js\").defaultBodySerializer}\n */\nexport function defaultBodySerializer(body, headers) {\n if (body instanceof FormData) {\n return body;\n }\n if (headers) {\n const contentType =\n headers.get instanceof Function\n ? (headers.get(\"Content-Type\") ?? headers.get(\"content-type\"))\n : (headers[\"Content-Type\"] ?? headers[\"content-type\"]);\n if (contentType === \"application/x-www-form-urlencoded\") {\n return new URLSearchParams(body).toString();\n }\n }\n return JSON.stringify(body);\n}\n\n/**\n * Construct URL string from baseUrl and handle path and query params\n * @type {import(\"./index.js\").createFinalURL}\n */\nexport function createFinalURL(pathname, options) {\n let finalURL = `${options.baseUrl}${pathname}`;\n if (options.params?.path) {\n finalURL = options.pathSerializer(finalURL, options.params.path);\n }\n let search = options.querySerializer(options.params.query ?? {});\n if (search.startsWith(\"?\")) {\n search = search.substring(1);\n }\n if (search) {\n finalURL += `?${search}`;\n }\n return finalURL;\n}\n\n/**\n * Merge headers a and b, with b taking priority\n * @type {import(\"./index.js\").mergeHeaders}\n */\nexport function mergeHeaders(...allHeaders) {\n const finalHeaders = new Headers();\n for (const h of allHeaders) {\n if (!h || typeof h !== \"object\") {\n continue;\n }\n const iterator = h instanceof Headers ? h.entries() : Object.entries(h);\n for (const [k, v] of iterator) {\n if (v === null) {\n finalHeaders.delete(k);\n } else if (Array.isArray(v)) {\n for (const v2 of v) {\n finalHeaders.append(k, v2);\n }\n } else if (v !== undefined) {\n finalHeaders.set(k, v);\n }\n }\n }\n return finalHeaders;\n}\n\n/**\n * Remove trailing slash from url\n * @type {import(\"./index.js\").removeTrailingSlash}\n */\nexport function removeTrailingSlash(url) {\n if (url.endsWith(\"/\")) {\n return url.substring(0, url.length - 1);\n }\n return url;\n}\n","import type { components } from \"./generated/schema.js\";\n\nexport type SpacebringErrorBody = components[\"schemas\"][\"responseError\"];\n\n/**\n * Error thrown when the Spacebring API responds with a non-2xx status.\n */\nexport class SpacebringError extends Error {\n /** HTTP status code of the failed response. */\n readonly status: number;\n /** Parsed error body returned by the API, if any. */\n readonly body: SpacebringErrorBody | undefined;\n /** The operation the request targeted, e.g. `GET /billing/invoices/v1/{invoiceId}`. */\n readonly operation: string | undefined;\n /** Full URL of the failed request, if known. */\n readonly url: string | undefined;\n\n constructor(status: number, body?: unknown, request?: { operation?: string; url?: string }) {\n const parsed = isErrorBody(body) ? body : undefined;\n let base = parsed?.message ?? `Spacebring API request failed with status ${status}`;\n // Validation errors carry the actual problems in an (untyped) issues array;\n // surface them so the message is actionable without dumping error.body.\n const issues = parsed ? issueSummary(parsed) : undefined;\n if (issues) base += ` — ${issues}`;\n super(request?.operation ? `${base} (${request.operation})` : base);\n this.name = \"SpacebringError\";\n this.status = status;\n this.body = parsed;\n this.operation = request?.operation;\n this.url = request?.url;\n }\n}\n\nfunction isErrorBody(body: unknown): body is SpacebringErrorBody {\n return typeof body === \"object\" && body !== null;\n}\n\n/** Compact \"path: message\" list from a zod-style `issues` array, if the body has one. */\nfunction issueSummary(body: object): string | undefined {\n const issues = (body as { issues?: unknown }).issues;\n if (!Array.isArray(issues) || issues.length === 0) return undefined;\n const parts = issues.slice(0, 3).map((issue) => {\n if (typeof issue !== \"object\" || issue === null) return String(issue);\n const { path, message } = issue as { path?: unknown; message?: unknown };\n const where = Array.isArray(path) && path.length > 0 ? path.join(\".\") : undefined;\n const what = typeof message === \"string\" ? message : JSON.stringify(issue);\n return where ? `${where}: ${what}` : what;\n });\n const more = issues.length > 3 ? `; +${issues.length - 3} more` : \"\";\n return parts.join(\"; \") + more;\n}\n","import { SpacebringError } from \"./error.js\";\n\n/** Client-level defaults threaded into the generated facade. */\nexport interface SpacebringDefaults {\n /** Sent as the `spacebring-network-id` header where the API requires it. */\n networkId?: string;\n}\n\n/** Per-request options accepted by every generated facade method. */\nexport interface SpacebringRequestOptions {\n /** Aborts the request — including any pending retry wait — when triggered. */\n signal?: AbortSignal;\n}\n\ninterface FetchResult<T> {\n data?: T;\n error?: unknown;\n response: Response;\n}\n\n/**\n * Unwraps an openapi-fetch result: returns `data` on success,\n * throws {@link SpacebringError} on any non-2xx response.\n */\nexport function unwrap<T>(result: FetchResult<T>, operation?: string): T {\n if (result.error !== undefined || !result.response.ok) {\n throw new SpacebringError(result.response.status, result.error, {\n operation,\n url: result.response.url || undefined,\n });\n }\n return result.data as T;\n}\n\n/**\n * Returns the single payload property of a success envelope,\n * throwing {@link SpacebringError} when the response has no usable body.\n */\nexport function unwrapProp<Envelope, Key extends keyof Envelope>(\n result: FetchResult<Envelope>,\n key: Key,\n operation?: string,\n): NonNullable<Envelope[Key]> {\n const value = unwrap(result, operation)?.[key];\n if (value === undefined || value === null) {\n throw new SpacebringError(\n result.response.status,\n { message: `Response is missing the \"${String(key)}\" property` },\n { operation, url: result.response.url || undefined },\n );\n }\n return value as NonNullable<Envelope[Key]>;\n}\n\n/**\n * Iterates every item of a paginated list endpoint, following\n * `nextPageToken` until the last page.\n */\nexport async function* paginate<Page extends { nextPageToken?: string }, Key extends keyof Page>(\n fetchPage: (nextPageToken: string | undefined) => Promise<Page>,\n itemsKey: Key,\n): AsyncGenerator<Page[Key] extends readonly (infer Item)[] | undefined ? Item : never, void, undefined> {\n let token: string | undefined;\n do {\n const page = await fetchPage(token);\n const items = (page[itemsKey] ?? []) as Iterable<never>;\n yield* items;\n const next = page.nextPageToken;\n if (next !== undefined && next === token) {\n throw new Error(\"Pagination did not advance: the API returned the same nextPageToken twice\");\n }\n token = next;\n } while (token);\n}\n","// AUTO-GENERATED by codegen/generate-facade.ts — DO NOT EDIT.\n// Regenerate with `npm run generate:facade`.\nimport type { Client } from \"openapi-fetch\";\nimport { paginate, unwrap, unwrapProp, type SpacebringDefaults, type SpacebringRequestOptions } from \"../../core.js\";\nimport type { components, operations, paths } from \"../schema.js\";\n\n/** A AltCurrency entity as returned by the Spacebring API. */\nexport type AltCurrency = NonNullable<components[\"schemas\"][\"altCurrency\"]>;\n\n/** Query parameters for `sb.altCurrencies.list()`. */\nexport interface GetAltCurrenciesQuery {\n /** The id of the location */\n locationRef: string;\n /** Token to retrieve the next page of results. */\n nextPageToken?: string;\n /** The number of items to return. */\n limit?: number;\n}\n\n/** Request body for `sb.altCurrencies.create()`. */\nexport type CreateAltCurrencyBody = NonNullable<NonNullable<operations[\"createAltCurrency\"][\"requestBody\"]>[\"content\"][\"application/json\"][\"altCurrency\"]>;\n\n/** Request body for `sb.altCurrencies.update()`. */\nexport type UpdateAltCurrencyBody = NonNullable<NonNullable<operations[\"updateAltCurrency\"][\"requestBody\"]>[\"content\"][\"application/json\"][\"altCurrency\"]>;\n\nexport function createAltcurrencies(client: Client<paths>, defaults: SpacebringDefaults) {\n return {\n /**\n * Retrieve alternative currencies\n *\n * Retrieve all alternative currencies in the location.\n */\n async list(query: GetAltCurrenciesQuery, options?: SpacebringRequestOptions): Promise<{ altCurrencies?: AltCurrency[]; nextPageToken?: string; searchQueryNext?: string }> {\n return unwrap(await client.GET(\"/alt_currencies/v1\", { params: { query }, signal: options?.signal }), \"GET /alt_currencies/v1\");\n },\n /**\n * Retrieve alternative currencies — iterates every item across all pages.\n *\n * Retrieve all alternative currencies in the location.\n */\n iterate(query: Omit<GetAltCurrenciesQuery, \"nextPageToken\">, options?: SpacebringRequestOptions): AsyncGenerator<AltCurrency, void, undefined> {\n return paginate(\n async (nextPageToken: string | undefined) =>\n unwrap(await client.GET(\"/alt_currencies/v1\", { params: { query: { ...query, nextPageToken } }, signal: options?.signal }), \"GET /alt_currencies/v1\"),\n \"altCurrencies\",\n );\n },\n /** Create an alternative currency */\n async create(altCurrency: CreateAltCurrencyBody, options?: SpacebringRequestOptions): Promise<AltCurrency> {\n return unwrapProp(await client.POST(\"/alt_currencies/v1\", { body: { altCurrency }, signal: options?.signal }), \"altCurrency\", \"POST /alt_currencies/v1\");\n },\n /**\n * Update an alternative currency\n *\n * @param id The id of the alternative currency\n * @param altCurrency The `altCurrency` payload.\n * @param options Request options (abort signal).\n */\n async update(id: string, altCurrency: UpdateAltCurrencyBody, options?: SpacebringRequestOptions): Promise<undefined> {\n return unwrap(await client.PATCH(\"/alt_currencies/v1/{id}\", { params: { path: { id } }, body: { altCurrency }, signal: options?.signal }), \"PATCH /alt_currencies/v1/{id}\");\n },\n /**\n * Delete an alternative currency\n *\n * @param id The id of the alternative currency\n * @param options Request options (abort signal).\n */\n async delete(id: string, options?: SpacebringRequestOptions): Promise<undefined> {\n return unwrap(await client.DELETE(\"/alt_currencies/v1/{id}\", { params: { path: { id } }, signal: options?.signal }), \"DELETE /alt_currencies/v1/{id}\");\n },\n };\n}\n","// AUTO-GENERATED by codegen/generate-facade.ts — DO NOT EDIT.\n// Regenerate with `npm run generate:facade`.\nimport type { Client } from \"openapi-fetch\";\nimport { paginate, unwrap, unwrapProp, type SpacebringDefaults, type SpacebringRequestOptions } from \"../../core.js\";\nimport type { components, operations, paths } from \"../schema.js\";\n\n/** A Application entity as returned by the Spacebring API. */\nexport type Application = NonNullable<components[\"schemas\"][\"benefitApplication\"]>;\n\n/** A Benefit entity as returned by the Spacebring API. */\nexport type Benefit = NonNullable<components[\"schemas\"][\"benefit\"]>;\n\n/** A BenefitCategory entity as returned by the Spacebring API. */\nexport type BenefitCategory = NonNullable<components[\"schemas\"][\"benefitCategory\"]>;\n\n/** Query parameters for `sb.benefits.applications.list()`. */\nexport interface GetBenefitApplicationsQuery {\n /** UUID of the benefit. */\n benefitRef?: string;\n /** Comma-separated benefit category UUIDs, e.g. `uuid1,uuid2`. */\n categoryRef?: string;\n /** Filter applications submitted on or after this date (ISO 8601). Use with createDate[lte] for a range. */\n \"createDate[gte]\"?: string;\n /** Filter applications submitted on or before this date (ISO 8601). Use with createDate[gte] for a range. */\n \"createDate[lte]\"?: string;\n /** UUID of the customer whose applications to list. */\n customerRef?: string;\n /** Maximum number of applications per page. Defaults to 25 when omitted or invalid; values above 100 are capped at 100. */\n limit?: number;\n /** UUID of the location. */\n locationRef?: string;\n /** Pagination token from nextPageToken in a previous response. Keep the same filters when fetching the next page. */\n nextPageToken?: string;\n /** UUID of the user whose applications to list. */\n userRef?: string;\n}\n\n/** Query parameters for `sb.benefits.categories.list()`. */\nexport interface GetBenefitCategoriesQuery {\n /** UUID of the location whose benefit categories to list. */\n locationRef: string;\n}\n\n/** Query parameters for `sb.benefits.list()`. */\nexport interface GetBenefitsQuery {\n /** UUID of the benefit category. */\n categoryRef?: string;\n /** Filter by featured status. Pass true or false. */\n featured?: boolean;\n /** Maximum number of benefits per page. Defaults to 25 when omitted or invalid; values above 100 are capped at 100. */\n limit?: number;\n /** UUID of the location. */\n locationRef?: string;\n /** Pagination token from nextPageToken in a previous response. Keep the same filters when fetching the next page. */\n nextPageToken?: string;\n}\n\n/** Request body for `sb.benefits.applications.create()`. */\nexport type ApplyBenefitBody = NonNullable<NonNullable<operations[\"applyBenefit\"][\"requestBody\"]>[\"content\"][\"application/json\"][\"application\"]>;\n\n/** Request body for `sb.benefits.create()`. */\nexport type CreateBenefitBody = NonNullable<NonNullable<operations[\"createBenefit\"][\"requestBody\"]>[\"content\"][\"application/json\"][\"benefit\"]>;\n\n/** Request body for `sb.benefits.categories.create()`. */\nexport type CreateBenefitCategoryBody = NonNullable<NonNullable<operations[\"createBenefitCategory\"][\"requestBody\"]>[\"content\"][\"application/json\"][\"category\"]>;\n\n/** Request body for `sb.benefits.update()`. */\nexport type UpdateBenefitBody = NonNullable<NonNullable<operations[\"updateBenefit\"][\"requestBody\"]>[\"content\"][\"application/json\"][\"benefit\"]>;\n\n/** Request body for `sb.benefits.categories.update()`. */\nexport type UpdateBenefitCategoryBody = NonNullable<NonNullable<operations[\"updateBenefitCategory\"][\"requestBody\"]>[\"content\"][\"application/json\"][\"category\"]>;\n\nexport function createBenefits(client: Client<paths>, defaults: SpacebringDefaults) {\n return {\n /**\n * Retrieve benefits\n *\n * Retrieve all benefits in the location.\n */\n async list(query?: GetBenefitsQuery, options?: SpacebringRequestOptions): Promise<{ benefits: Benefit[]; nextPageToken?: string; searchQueryNext?: string }> {\n return unwrap(await client.GET(\"/benefits/v1\", { params: { query }, signal: options?.signal }), \"GET /benefits/v1\");\n },\n /**\n * Retrieve benefits — iterates every item across all pages.\n *\n * Retrieve all benefits in the location.\n */\n iterate(query?: Omit<GetBenefitsQuery, \"nextPageToken\">, options?: SpacebringRequestOptions): AsyncGenerator<Benefit, void, undefined> {\n return paginate(\n async (nextPageToken: string | undefined) =>\n unwrap(await client.GET(\"/benefits/v1\", { params: { query: { ...query, nextPageToken } }, signal: options?.signal }), \"GET /benefits/v1\"),\n \"benefits\",\n );\n },\n /**\n * Retrieve a benefit\n *\n * @param benefitId The id of the benefit.\n * @param options Request options (abort signal).\n */\n async get(benefitId: string, options?: SpacebringRequestOptions): Promise<Benefit> {\n return unwrapProp(await client.GET(\"/benefits/v1/{benefitId}\", { params: { path: { benefitId } }, signal: options?.signal }), \"benefit\", \"GET /benefits/v1/{benefitId}\");\n },\n /** Create a benefit */\n async create(benefit: CreateBenefitBody, options?: SpacebringRequestOptions): Promise<Benefit> {\n return unwrap(await client.POST(\"/benefits/v1\", { body: { benefit }, signal: options?.signal }), \"POST /benefits/v1\");\n },\n /**\n * Update a benefit\n *\n * @param benefitId The id of the benefit\n * @param benefit The `benefit` payload.\n * @param options Request options (abort signal).\n */\n async update(benefitId: string, benefit: UpdateBenefitBody, options?: SpacebringRequestOptions): Promise<Benefit> {\n return unwrapProp(await client.PUT(\"/benefits/v1/{benefitId}\", { params: { path: { benefitId } }, body: { benefit }, signal: options?.signal }), \"benefit\", \"PUT /benefits/v1/{benefitId}\");\n },\n /**\n * Delete a benefit\n *\n * @param benefitId The id of the benefit\n * @param options Request options (abort signal).\n */\n async delete(benefitId: string, options?: SpacebringRequestOptions): Promise<undefined> {\n return unwrap(await client.DELETE(\"/benefits/v1/{benefitId}\", { params: { path: { benefitId } }, signal: options?.signal }), \"DELETE /benefits/v1/{benefitId}\");\n },\n applications: {\n /**\n * Retrieve applications\n *\n * Retrieve all benefit applications in the location or for certain benefit.\n */\n async list(query?: GetBenefitApplicationsQuery, options?: SpacebringRequestOptions): Promise<{ applications: Application[]; nextPageToken?: string; searchQueryNext?: string }> {\n return unwrap(await client.GET(\"/benefits/applications/v1\", { params: { query }, signal: options?.signal }), \"GET /benefits/applications/v1\");\n },\n /**\n * Retrieve applications — iterates every item across all pages.\n *\n * Retrieve all benefit applications in the location or for certain benefit.\n */\n iterate(query?: Omit<GetBenefitApplicationsQuery, \"nextPageToken\">, options?: SpacebringRequestOptions): AsyncGenerator<Application, void, undefined> {\n return paginate(\n async (nextPageToken: string | undefined) =>\n unwrap(await client.GET(\"/benefits/applications/v1\", { params: { query: { ...query, nextPageToken } }, signal: options?.signal }), \"GET /benefits/applications/v1\"),\n \"applications\",\n );\n },\n /**\n * Retrieve an application\n *\n * Retrieve a benefit application by id.\n *\n * @param benefitApplicationId The id of the benefit application.\n * @param options Request options (abort signal).\n */\n async get(benefitApplicationId: string, options?: SpacebringRequestOptions): Promise<Application> {\n return unwrapProp(await client.GET(\"/benefits/applications/v1/{benefitApplicationId}\", { params: { path: { benefitApplicationId } }, signal: options?.signal }), \"application\", \"GET /benefits/applications/v1/{benefitApplicationId}\");\n },\n /** Apply for a benefit */\n async create(application: ApplyBenefitBody, options?: SpacebringRequestOptions): Promise<Application> {\n return unwrapProp(await client.POST(\"/benefits/applications/v1\", { body: { application }, signal: options?.signal }), \"application\", \"POST /benefits/applications/v1\");\n },\n },\n categories: {\n /**\n * Retrieve categories\n *\n * Retrieve all benefit categories in the location.\n */\n async list(query: GetBenefitCategoriesQuery, options?: SpacebringRequestOptions): Promise<BenefitCategory[]> {\n return unwrapProp(await client.GET(\"/benefits/categories/v1\", { params: { query }, signal: options?.signal }), \"categories\", \"GET /benefits/categories/v1\");\n },\n /**\n * Get a category\n *\n * Get a benefit category.\n *\n * @param categoryId The id of the benefit category.\n * @param options Request options (abort signal).\n */\n async get(categoryId: string, options?: SpacebringRequestOptions): Promise<BenefitCategory> {\n return unwrapProp(await client.GET(\"/benefits/categories/v1/{categoryId}\", { params: { path: { categoryId } }, signal: options?.signal }), \"category\", \"GET /benefits/categories/v1/{categoryId}\");\n },\n /**\n * Create a category\n *\n * Create a benefit category.\n */\n async create(category: CreateBenefitCategoryBody, options?: SpacebringRequestOptions): Promise<BenefitCategory> {\n return unwrapProp(await client.POST(\"/benefits/categories/v1\", { body: { category }, signal: options?.signal }), \"category\", \"POST /benefits/categories/v1\");\n },\n /**\n * Update a category\n *\n * Update a benefit category.\n *\n * @param categoryId The id of the benefit category\n * @param category The `category` payload.\n * @param options Request options (abort signal).\n */\n async update(categoryId: string, category: UpdateBenefitCategoryBody, options?: SpacebringRequestOptions): Promise<BenefitCategory> {\n return unwrapProp(await client.PUT(\"/benefits/categories/v1/{categoryId}\", { params: { path: { categoryId } }, body: { category }, signal: options?.signal }), \"category\", \"PUT /benefits/categories/v1/{categoryId}\");\n },\n /**\n * Delete a category\n *\n * Delete a benefit category.\n *\n * @param categoryId The id of the benefit category\n * @param options Request options (abort signal).\n */\n async delete(categoryId: string, options?: SpacebringRequestOptions): Promise<undefined> {\n return unwrap(await client.DELETE(\"/benefits/categories/v1/{categoryId}\", { params: { path: { categoryId } }, signal: options?.signal }), \"DELETE /benefits/categories/v1/{categoryId}\");\n },\n },\n };\n}\n","// AUTO-GENERATED by codegen/generate-facade.ts — DO NOT EDIT.\n// Regenerate with `npm run generate:facade`.\nimport type { Client } from \"openapi-fetch\";\nimport { paginate, unwrap, unwrapProp, type SpacebringDefaults, type SpacebringRequestOptions } from \"../../core.js\";\nimport type { components, operations, paths } from \"../schema.js\";\n\n/** A CreditNote entity as returned by the Spacebring API. */\nexport type CreditNote = NonNullable<components[\"schemas\"][\"creditNote\"]>;\n\n/** A Invoice entity as returned by the Spacebring API. */\nexport type Invoice = NonNullable<components[\"schemas\"][\"invoice\"]>;\n\n/** A InvoiceItem entity as returned by the Spacebring API. */\nexport type InvoiceItem = NonNullable<components[\"schemas\"][\"invoiceItem\"]>;\n\n/** A Payment entity as returned by the Spacebring API. */\nexport type Payment = NonNullable<components[\"schemas\"][\"invoicePayment\"]>;\n\n/** A UpcomingItem entity as returned by the Spacebring API. */\nexport type UpcomingItem = NonNullable<components[\"schemas\"][\"invoiceItem\"]>;\n\n/** Query parameters for `sb.billing.creditNotes.list()`. */\nexport interface GetCreditNotesQuery {\n /** Filter credit notes created on or after this date (ISO 8601). Use with createDate[lte] for a range. */\n \"createDate[gte]\"?: string;\n /** Filter credit notes created on or before this date (ISO 8601). Use with createDate[gte] for a range. */\n \"createDate[lte]\"?: string;\n /** UUID of the invoice whose credit notes to list. */\n invoiceRef?: string;\n /** Maximum number of credit notes per page. Defaults to 25 when omitted or invalid; values above 100 are capped at 100. */\n limit?: number;\n /** UUID of the location whose credit notes to list. */\n locationRef?: string;\n /** Pagination token from nextPageToken in a previous response. Keep the same filters when fetching the next page. */\n nextPageToken?: string;\n /** Filter by credit note status. Comma-separated values, e.g. `issued,voided`.\n\n Supported values:\n - **issued** — active credit note\n - **voided** — cancelled and no longer valid */\n status?: string;\n}\n\n/** Query parameters for `sb.billing.invoices.list()`. */\nexport interface GetInvoicesQuery {\n /** @deprecated Use customerRef instead. UUID of the company whose invoices to list. */\n companyRef?: string;\n /** Filter invoices created on or after this date (ISO 8601). Use with createDate[lte] for a range. */\n \"createDate[gte]\"?: string;\n /** Filter invoices created on or before this date (ISO 8601). Use with createDate[gte] for a range. */\n \"createDate[lte]\"?: string;\n /** UUID of the customer whose invoices to list. */\n customerRef?: string;\n /** Filter invoices issued on or after this date (ISO 8601). Use with issueDate[lte] for a range. */\n \"issueDate[gte]\"?: string;\n /** Filter invoices issued on or before this date (ISO 8601). Use with issueDate[gte] for a range. */\n \"issueDate[lte]\"?: string;\n /** Maximum number of invoices per page. Defaults to 25 when omitted or invalid; values above 100 are capped at 100. */\n limit?: number;\n /** UUID of the location whose invoices to list. */\n locationRef?: string;\n /** @deprecated Use customerRef instead. UUID of the membership whose invoices to list. */\n membershipRef?: string;\n /** Pagination token from nextPageToken in a previous response. Keep the same filters when fetching the next page. */\n nextPageToken?: string;\n /** Case-insensitive search by invoice code or number. Requires customerRef or locationRef. */\n q?: string;\n /** Filter by invoice status. Comma-separated values, e.g. `draft,issued`.\n\n Supported values:\n - **draft** — created but not sent\n - **issued** — sent to the customer but unpaid\n - **paid** — fully paid\n - **voided** — cancelled and no longer valid */\n status?: string;\n}\n\n/** Query parameters for `sb.billing.invoices.items.getUpcoming()`. */\nexport interface GetUpcomingInvoiceItemsQuery {\n /** The id of the company. */\n companyRef?: string;\n /** The id of the membership. */\n membershipRef?: string;\n}\n\n/** Query parameters for `sb.billing.invoices.getUpcoming()`. */\nexport interface GetUpcomingInvoiceQuery {\n /** The id of the subscription. */\n subscriptionRef?: string;\n}\n\n/** Query parameters for `sb.billing.invoices.items.list()`. */\nexport interface ListInvoiceItemsQuery {\n /** Filter invoices created on or after this date (ISO 8601). Use with createDate[lte] for a range. */\n \"createDate[gte]\"?: string;\n /** Filter invoices created on or before this date (ISO 8601). Use with createDate[gte] for a range. */\n \"createDate[lte]\"?: string;\n /** UUID of the customer whose invoices to list. */\n customerRef?: string;\n /** Filter invoices issued on or after this date (ISO 8601). Use with issueDate[lte] for a range. */\n \"issueDate[gte]\"?: string;\n /** Filter invoices issued on or before this date (ISO 8601). Use with issueDate[gte] for a range. */\n \"issueDate[lte]\"?: string;\n /** Maximum number of invoices per page. Defaults to 25 when omitted or invalid; values above 100 are capped at 100. */\n limit?: number;\n /** UUID of the location whose invoices to list. */\n locationRef?: string;\n /** Pagination token from nextPageToken in a previous response. Keep the same filters when fetching the next page. */\n nextPageToken?: string;\n /** Filter by invoice status. Comma-separated values, e.g. `draft,issued`.\n\n Supported values:\n - **draft** — created but not sent\n - **issued** — sent to the customer but unpaid\n - **paid** — fully paid\n - **voided** — cancelled and no longer valid */\n status?: string;\n /** Filter by invoice item type. Comma-separated values, e.g. `custom,order`. */\n type?: string;\n}\n\n/** Request body for `sb.billing.creditNotes.create()`. */\nexport type CreateCreditNoteBody = NonNullable<NonNullable<operations[\"createCreditNote\"][\"requestBody\"]>[\"content\"][\"application/json\"][\"creditNote\"]>;\n\n/** Request body for `sb.billing.invoices.create()`. */\nexport type CreateInvoiceBody = NonNullable<operations[\"createInvoice\"][\"requestBody\"]>[\"content\"][\"application/json\"];\n\n/** Request body for `sb.billing.invoices.items.create()`. */\nexport type CreateInvoiceItemBody = NonNullable<NonNullable<operations[\"createInvoiceItem\"][\"requestBody\"]>[\"content\"][\"application/json\"][\"invoiceItem\"]>;\n\n/** Request body for `sb.billing.invoices.issue()`. */\nexport type IssueInvoiceBody = NonNullable<NonNullable<operations[\"issueInvoice\"][\"requestBody\"]>[\"content\"][\"application/json\"][\"skipAutoCharge\"]>;\n\n/** Request body for `sb.billing.invoices.pay()`. */\nexport type PayInvoiceBody = NonNullable<operations[\"payInvoice\"][\"requestBody\"]>[\"content\"][\"application/json\"];\n\n/** Request body for `sb.billing.creditNotes.preview()`. */\nexport type PreviewCreditNoteBody = NonNullable<NonNullable<operations[\"previewCreditNote\"][\"requestBody\"]>[\"content\"][\"application/json\"][\"creditNote\"]>;\n\n/** Request body for `sb.billing.creditNotes.update()`. */\nexport type UpdateCreditNoteBody = NonNullable<NonNullable<operations[\"updateCreditNote\"][\"requestBody\"]>[\"content\"][\"application/json\"][\"creditNote\"]>;\n\n/** Request body for `sb.billing.invoices.update()`. */\nexport type UpdateInvoiceBody = NonNullable<NonNullable<operations[\"updateInvoice\"][\"requestBody\"]>[\"content\"][\"application/json\"][\"invoice\"]>;\n\n/** Request body for `sb.billing.invoices.items.update()`. */\nexport type UpdateInvoiceItemBody = NonNullable<NonNullable<operations[\"updateInvoiceItem\"][\"requestBody\"]>[\"content\"][\"application/json\"][\"invoiceItem\"]>;\n\nexport function createBilling(client: Client<paths>, defaults: SpacebringDefaults) {\n return {\n creditNotes: {\n /**\n * Retrieve credit notes\n *\n * Retrieve all credit notes for a specific invoice or location. One of invoiceRef or locationRef is required.\n */\n async list(query?: GetCreditNotesQuery, options?: SpacebringRequestOptions): Promise<{ creditNotes: CreditNote[]; nextPageToken?: string; searchQueryNext?: string }> {\n return unwrap(await client.GET(\"/billing/credit_notes/v1\", { params: { query }, signal: options?.signal }), \"GET /billing/credit_notes/v1\");\n },\n /**\n * Retrieve credit notes — iterates every item across all pages.\n *\n * Retrieve all credit notes for a specific invoice or location. One of invoiceRef or locationRef is required.\n */\n iterate(query?: Omit<GetCreditNotesQuery, \"nextPageToken\">, options?: SpacebringRequestOptions): AsyncGenerator<CreditNote, void, undefined> {\n return paginate(\n async (nextPageToken: string | undefined) =>\n unwrap(await client.GET(\"/billing/credit_notes/v1\", { params: { query: { ...query, nextPageToken } }, signal: options?.signal }), \"GET /billing/credit_notes/v1\"),\n \"creditNotes\",\n );\n },\n /**\n * Retrieve a credit note\n *\n * Retrieve a specific credit note.\n *\n * @param id The id of the credit note\n * @param options Request options (abort signal).\n */\n async get(id: string, options?: SpacebringRequestOptions): Promise<CreditNote> {\n return unwrapProp(await client.GET(\"/billing/credit_notes/v1/{id}\", { params: { path: { id } }, signal: options?.signal }), \"creditNote\", \"GET /billing/credit_notes/v1/{id}\");\n },\n /**\n * Create a credit note\n *\n * Create a credit note for an invoice.\n */\n async create(creditNote: CreateCreditNoteBody, options?: SpacebringRequestOptions): Promise<CreditNote> {\n return unwrapProp(await client.POST(\"/billing/credit_notes/v1\", { body: { creditNote }, signal: options?.signal }), \"creditNote\", \"POST /billing/credit_notes/v1\");\n },\n /**\n * Update a credit note\n *\n * @param id The id of the credit note\n * @param creditNote The `creditNote` payload.\n * @param options Request options (abort signal).\n */\n async update(id: string, creditNote: UpdateCreditNoteBody, options?: SpacebringRequestOptions): Promise<undefined> {\n return unwrap(await client.PATCH(\"/billing/credit_notes/v1/{id}\", { params: { path: { id } }, body: { creditNote }, signal: options?.signal }), \"PATCH /billing/credit_notes/v1/{id}\");\n },\n /**\n * Preview a credit note\n *\n * Preview a credit note for an invoice without creating it.\n */\n async preview(creditNote: PreviewCreditNoteBody, options?: SpacebringRequestOptions): Promise<CreditNote> {\n return unwrapProp(await client.POST(\"/billing/credit_notes/v1/preview\", { body: { creditNote }, signal: options?.signal }), \"creditNote\", \"POST /billing/credit_notes/v1/preview\");\n },\n },\n invoices: {\n /**\n * Retrieve invoices\n *\n * Retrieve all invoices based on certain parameters.\n */\n async list(query?: GetInvoicesQuery, options?: SpacebringRequestOptions): Promise<{ invoices: Invoice[]; nextPageToken?: string; searchQueryNext?: string }> {\n return unwrap(await client.GET(\"/billing/invoices/v1\", { params: { query }, signal: options?.signal }), \"GET /billing/invoices/v1\");\n },\n /**\n * Retrieve invoices — iterates every item across all pages.\n *\n * Retrieve all invoices based on certain parameters.\n */\n iterate(query?: Omit<GetInvoicesQuery, \"nextPageToken\">, options?: SpacebringRequestOptions): AsyncGenerator<Invoice, void, undefined> {\n return paginate(\n async (nextPageToken: string | undefined) =>\n unwrap(await client.GET(\"/billing/invoices/v1\", { params: { query: { ...query, nextPageToken } }, signal: options?.signal }), \"GET /billing/invoices/v1\"),\n \"invoices\",\n );\n },\n /**\n * Retrieve an invoice\n *\n * Retrieve a certain invoice.\n *\n * @param invoiceId The id of the invoice.\n * @param options Request options (abort signal).\n */\n async get(invoiceId: string, options?: SpacebringRequestOptions): Promise<Invoice> {\n return unwrapProp(await client.GET(\"/billing/invoices/v1/{invoiceId}\", { params: { path: { invoiceId } }, signal: options?.signal }), \"invoice\", \"GET /billing/invoices/v1/{invoiceId}\");\n },\n /**\n * Create an invoice\n *\n * Create an invoice for a member or a company.\n */\n async create(body: CreateInvoiceBody, options?: SpacebringRequestOptions): Promise<Invoice> {\n return unwrapProp(await client.POST(\"/billing/invoices/v1\", { body, signal: options?.signal }), \"invoice\", \"POST /billing/invoices/v1\");\n },\n /**\n * Update an invoice\n *\n * Update a draft invoice.\n *\n * @param invoiceId The id of an invoice.\n * @param invoice The `invoice` payload.\n * @param options Request options (abort signal).\n */\n async update(invoiceId: string, invoice: UpdateInvoiceBody, options?: SpacebringRequestOptions): Promise<undefined> {\n return unwrap(await client.PATCH(\"/billing/invoices/v1/{invoiceId}\", { params: { path: { invoiceId } }, body: { invoice }, signal: options?.signal }), \"PATCH /billing/invoices/v1/{invoiceId}\");\n },\n /**\n * Delete an invoice\n *\n * Delete a draft invoice.\n *\n * @param invoiceId The id of an invoice.\n * @param options Request options (abort signal).\n */\n async delete(invoiceId: string, options?: SpacebringRequestOptions): Promise<undefined> {\n return unwrap(await client.DELETE(\"/billing/invoices/v1/{invoiceId}\", { params: { path: { invoiceId } }, signal: options?.signal }), \"DELETE /billing/invoices/v1/{invoiceId}\");\n },\n /**\n * Cancel a payment\n *\n * Cancel a payment on an invoice.\n *\n * @param invoiceId The id of an invoice.\n * @param options Request options (abort signal).\n */\n async cancelPayment(invoiceId: string, options?: SpacebringRequestOptions): Promise<undefined> {\n return unwrap(await client.POST(\"/billing/invoices/v1/{invoiceId}/cancel_payment\", { params: { path: { invoiceId } }, signal: options?.signal }), \"POST /billing/invoices/v1/{invoiceId}/cancel_payment\");\n },\n /**\n * Duplicate an invoice\n *\n * Duplicate an invoice, creating a new draft invoice with the same items.\n *\n * @param invoiceId The id of an invoice.\n * @param options Request options (abort signal).\n */\n async duplicate(invoiceId: string, options?: SpacebringRequestOptions): Promise<Invoice> {\n return unwrapProp(await client.POST(\"/billing/invoices/v1/{invoiceId}/duplicate\", { params: { path: { invoiceId } }, signal: options?.signal }), \"invoice\", \"POST /billing/invoices/v1/{invoiceId}/duplicate\");\n },\n /**\n * List invoice items\n *\n * List all items for a specific invoice.\n *\n * @param invoiceId The id of an invoice.\n * @param options Request options (abort signal).\n */\n async getItems(invoiceId: string, options?: SpacebringRequestOptions): Promise<{ invoice?: Invoice; invoiceItems?: InvoiceItem[] }> {\n return unwrap(await client.GET(\"/billing/invoices/v1/{invoiceId}/items\", { params: { path: { invoiceId } }, signal: options?.signal }), \"GET /billing/invoices/v1/{invoiceId}/items\");\n },\n /**\n * Retrieve the upcoming invoice\n *\n * Retrieve the upcoming invoice preview for a membership or subscription.\n */\n async getUpcoming(query?: GetUpcomingInvoiceQuery, options?: SpacebringRequestOptions): Promise<{ invoice?: Invoice; invoiceItems?: InvoiceItem[]; upcomingItems?: UpcomingItem[] }> {\n return unwrap(await client.GET(\"/billing/invoices/v1/upcoming\", { params: { query }, signal: options?.signal }), \"GET /billing/invoices/v1/upcoming\");\n },\n /**\n * Issue an invoice\n *\n * Issue (finalize) a draft invoice, making it ready for payment.\n *\n * @param invoiceId The id of an invoice.\n * @param skipAutoCharge The `skipAutoCharge` payload.\n * @param options Request options (abort signal).\n */\n async issue(invoiceId: string, skipAutoCharge?: IssueInvoiceBody, options?: SpacebringRequestOptions): Promise<{ invoice?: Invoice; invoiceItems?: InvoiceItem[] }> {\n return unwrap(await client.POST(\"/billing/invoices/v1/{invoiceId}/issue\", { params: { path: { invoiceId } }, body: skipAutoCharge === undefined ? undefined : { skipAutoCharge }, signal: options?.signal }), \"POST /billing/invoices/v1/{invoiceId}/issue\");\n },\n /**\n * Pay an invoice\n *\n * Mark an invoice as paid by `External Payment`.\n *\n * @param invoiceId The id of an invoice\n * @param body Request body.\n * @param options Request options (abort signal).\n */\n async pay(invoiceId: string, body: PayInvoiceBody, options?: SpacebringRequestOptions): Promise<{ invoice?: Invoice; payment?: Payment }> {\n return unwrap(await client.POST(\"/billing/invoices/v1/{invoiceId}/pay\", { params: { path: { invoiceId } }, body, signal: options?.signal }), \"POST /billing/invoices/v1/{invoiceId}/pay\");\n },\n /**\n * Resend an invoice\n *\n * Resend an issued invoice notification to the customer.\n *\n * @param invoiceId The id of an invoice.\n * @param options Request options (abort signal).\n */\n async resend(invoiceId: string, options?: SpacebringRequestOptions): Promise<undefined> {\n return unwrap(await client.POST(\"/billing/invoices/v1/{invoiceId}/resend\", { params: { path: { invoiceId } }, signal: options?.signal }), \"POST /billing/invoices/v1/{invoiceId}/resend\");\n },\n /**\n * Void an invoice\n *\n * Void an issued invoice.\n *\n * @param invoiceId The id of an invoice.\n * @param options Request options (abort signal).\n */\n async void(invoiceId: string, options?: SpacebringRequestOptions): Promise<undefined> {\n return unwrap(await client.PATCH(\"/billing/invoices/v1/{invoiceId}/void\", { params: { path: { invoiceId } }, signal: options?.signal }), \"PATCH /billing/invoices/v1/{invoiceId}/void\");\n },\n items: {\n /**\n * List invoice items\n *\n * List invoice items filtered customer, location, type, status, or date range. Status and issue date filters match items connected to an invoice.\n */\n async list(query?: ListInvoiceItemsQuery, options?: SpacebringRequestOptions): Promise<{ invoiceItems: InvoiceItem[]; nextPageToken?: string; searchQueryNext?: string }> {\n return unwrap(await client.GET(\"/billing/invoices/v1/items\", { params: { query }, signal: options?.signal }), \"GET /billing/invoices/v1/items\");\n },\n /**\n * List invoice items — iterates every item across all pages.\n *\n * List invoice items filtered customer, location, type, status, or date range. Status and issue date filters match items connected to an invoice.\n */\n iterate(query?: Omit<ListInvoiceItemsQuery, \"nextPageToken\">, options?: SpacebringRequestOptions): AsyncGenerator<InvoiceItem, void, undefined> {\n return paginate(\n async (nextPageToken: string | undefined) =>\n unwrap(await client.GET(\"/billing/invoices/v1/items\", { params: { query: { ...query, nextPageToken } }, signal: options?.signal }), \"GET /billing/invoices/v1/items\"),\n \"invoiceItems\",\n );\n },\n /**\n * Retrieve an invoice item\n *\n * Retrieve a specific invoice item.\n *\n * @param id The id of an invoice item.\n * @param options Request options (abort signal).\n */\n async get(id: string, options?: SpacebringRequestOptions): Promise<InvoiceItem> {\n return unwrapProp(await client.GET(\"/billing/invoices/v1/items/{id}\", { params: { path: { id } }, signal: options?.signal }), \"invoiceItem\", \"GET /billing/invoices/v1/items/{id}\");\n },\n /**\n * Create an invoice item\n *\n * Create an item in an invoice.\n */\n async create(invoiceItem: CreateInvoiceItemBody, options?: SpacebringRequestOptions): Promise<InvoiceItem> {\n return unwrapProp(await client.POST(\"/billing/invoices/v1/items\", { body: { invoiceItem }, signal: options?.signal }), \"invoiceItem\", \"POST /billing/invoices/v1/items\");\n },\n /**\n * Update an invoice item\n *\n * Update an invoice item on a draft invoice.\n *\n * @param id The id of an invoice item.\n * @param invoiceItem The `invoiceItem` payload.\n * @param options Request options (abort signal).\n */\n async update(id: string, invoiceItem: UpdateInvoiceItemBody, options?: SpacebringRequestOptions): Promise<undefined> {\n return unwrap(await client.PATCH(\"/billing/invoices/v1/items/{id}\", { params: { path: { id } }, body: { invoiceItem }, signal: options?.signal }), \"PATCH /billing/invoices/v1/items/{id}\");\n },\n /**\n * Delete an invoice item\n *\n * Delete an invoice item from a draft invoice.\n *\n * @param id The id of an invoice item.\n * @param options Request options (abort signal).\n */\n async delete(id: string, options?: SpacebringRequestOptions): Promise<undefined> {\n return unwrap(await client.DELETE(\"/billing/invoices/v1/items/{id}\", { params: { path: { id } }, signal: options?.signal }), \"DELETE /billing/invoices/v1/items/{id}\");\n },\n /** List upcoming invoice items */\n async getUpcoming(query?: GetUpcomingInvoiceItemsQuery, options?: SpacebringRequestOptions): Promise<InvoiceItem[]> {\n return unwrapProp(await client.GET(\"/billing/invoices/v1/items/upcoming\", { params: { query }, signal: options?.signal }), \"invoiceItems\", \"GET /billing/invoices/v1/items/upcoming\");\n },\n },\n },\n };\n}\n","// AUTO-GENERATED by codegen/generate-facade.ts — DO NOT EDIT.\n// Regenerate with `npm run generate:facade`.\nimport type { Client } from \"openapi-fetch\";\nimport { paginate, unwrap, unwrapProp, type SpacebringDefaults, type SpacebringRequestOptions } from \"../../core.js\";\nimport type { components, operations, paths } from \"../schema.js\";\n\n/** A Company entity as returned by the Spacebring API. */\nexport type Company = NonNullable<components[\"schemas\"][\"company\"]>;\n\n/** A Membership entity as returned by the Spacebring API. */\nexport type Membership = NonNullable<components[\"schemas\"][\"membership\"]>;\n\n/** Query parameters for `sb.community.companies.list()`. */\nexport interface GetCompaniesQuery {\n /** The id of the location. */\n locationRef: string;\n /** The number of items to return */\n limit?: number;\n /** Token to retrieve the next page of results. */\n nextPageToken?: string;\n /** Filter by company's title */\n title?: string;\n /** Filter by types. Pass them as comma separated values. */\n types?: \"member\" | \"nonmember\";\n}\n\n/** Query parameters for `sb.community.memberships.listDeleted()`. */\nexport interface GetMembershipsDeletedQuery {\n /** The id of the location. */\n locationRef: string;\n /** The number of items to return */\n limit?: number;\n /** Filter by user's email */\n userEmail?: string;\n /** Token to retrieve the next page of results. */\n nextPageToken?: string;\n}\n\n/** Query parameters for `sb.community.memberships.list()`. */\nexport interface GetMembershipsQuery {\n /** Filter by company reference */\n companyRef?: string;\n /** The id of the location. */\n locationRef: string;\n /** The number of items to return */\n limit?: number;\n /** Token to retrieve the next page of results. */\n nextPageToken?: string;\n /** Filter by user's email */\n userEmail?: string;\n /** The id of the user */\n userRef?: string;\n /** use requested to get all membership requests */\n status?: \"requested\";\n /** Filter by types. Pass them as comma separated values. */\n types?: \"member\" | \"nonmember\";\n}\n\n/** Request body for `sb.community.companies.create()`. */\nexport type CreateCompanyBody = NonNullable<NonNullable<operations[\"createCompany\"][\"requestBody\"]>[\"content\"][\"application/json\"][\"company\"]>;\n\n/** Request body for `sb.community.memberships.create()`. */\nexport type CreateMembershipBody = NonNullable<operations[\"createMembership\"][\"requestBody\"]>[\"content\"][\"application/json\"];\n\n/** Request body for `sb.community.companies.update()`. */\nexport type UpdateCompanyBody = NonNullable<NonNullable<operations[\"updateCompany\"][\"requestBody\"]>[\"content\"][\"application/json\"][\"company\"]>;\n\n/** Request body for `sb.community.memberships.update()`. */\nexport type UpdateMembershipBody = NonNullable<NonNullable<operations[\"updateMembership\"][\"requestBody\"]>[\"content\"][\"application/json\"][\"membership\"]>;\n\nexport function createCommunity(client: Client<paths>, defaults: SpacebringDefaults) {\n return {\n companies: {\n /**\n * Retrieve companies\n *\n * Retrieve all companies.\n */\n async list(query: GetCompaniesQuery, options?: SpacebringRequestOptions): Promise<{ companies?: Company[]; nextPageToken?: string }> {\n return unwrap(await client.GET(\"/community/companies/v1\", { params: { query }, signal: options?.signal }), \"GET /community/companies/v1\");\n },\n /**\n * Retrieve companies — iterates every item across all pages.\n *\n * Retrieve all companies.\n */\n iterate(query: Omit<GetCompaniesQuery, \"nextPageToken\">, options?: SpacebringRequestOptions): AsyncGenerator<Company, void, undefined> {\n return paginate(\n async (nextPageToken: string | undefined) =>\n unwrap(await client.GET(\"/community/companies/v1\", { params: { query: { ...query, nextPageToken } }, signal: options?.signal }), \"GET /community/companies/v1\"),\n \"companies\",\n );\n },\n /**\n * Retrieve a company\n *\n * Retrieve a certain company.\n *\n * @param id The id of company.\n * @param options Request options (abort signal).\n */\n async get(id: string, options?: SpacebringRequestOptions): Promise<Company> {\n return unwrapProp(await client.GET(\"/community/companies/v1/{id}\", { params: { path: { id } }, signal: options?.signal }), \"company\", \"GET /community/companies/v1/{id}\");\n },\n /** Create a company */\n async create(company: CreateCompanyBody, options?: SpacebringRequestOptions): Promise<Company> {\n return unwrapProp(await client.POST(\"/community/companies/v1\", { body: { company }, signal: options?.signal }), \"company\", \"POST /community/companies/v1\");\n },\n /**\n * Update a company\n *\n * Update a certain company.\n *\n * @param id The id of the company.\n * @param company The `company` payload.\n * @param options Request options (abort signal).\n */\n async update(id: string, company: UpdateCompanyBody, options?: SpacebringRequestOptions): Promise<Company> {\n return unwrapProp(await client.PUT(\"/community/companies/v1/{id}\", { params: { path: { id } }, body: { company }, signal: options?.signal }), \"company\", \"PUT /community/companies/v1/{id}\");\n },\n },\n memberships: {\n /**\n * Retrieve memberships\n *\n * Retrieve all memberships.\n */\n async list(query: GetMembershipsQuery, options?: SpacebringRequestOptions): Promise<{ memberships?: Membership[]; nextPageToken?: string; searchQueryNext?: string }> {\n return unwrap(await client.GET(\"/community/memberships/v1\", { params: { query }, signal: options?.signal }), \"GET /community/memberships/v1\");\n },\n /**\n * Retrieve memberships — iterates every item across all pages.\n *\n * Retrieve all memberships.\n */\n iterate(query: Omit<GetMembershipsQuery, \"nextPageToken\">, options?: SpacebringRequestOptions): AsyncGenerator<Membership, void, undefined> {\n return paginate(\n async (nextPageToken: string | undefined) =>\n unwrap(await client.GET(\"/community/memberships/v1\", { params: { query: { ...query, nextPageToken } }, signal: options?.signal }), \"GET /community/memberships/v1\"),\n \"memberships\",\n );\n },\n /**\n * Retrieve a membership\n *\n * Retrieve a certain membership.\n *\n * @param id The id of membership.\n * @param options Request options (abort signal).\n */\n async get(id: string, options?: SpacebringRequestOptions): Promise<Membership> {\n return unwrapProp(await client.GET(\"/community/memberships/v1/{id}\", { params: { path: { id } }, signal: options?.signal }), \"membership\", \"GET /community/memberships/v1/{id}\");\n },\n /**\n * Create a membership\n *\n * Create a membership and send an email invitation to join if type is member.\n */\n async create(body: CreateMembershipBody, options?: SpacebringRequestOptions): Promise<Membership> {\n return unwrapProp(await client.POST(\"/community/memberships/v1\", { body, signal: options?.signal }), \"membership\", \"POST /community/memberships/v1\");\n },\n /**\n * Update a membership\n *\n * Update a certain membership.\n *\n * @param id The id of the membership.\n * @param membership The `membership` payload.\n * @param options Request options (abort signal).\n */\n async update(id: number, membership: UpdateMembershipBody, options?: SpacebringRequestOptions): Promise<Membership> {\n return unwrapProp(await client.PUT(\"/community/memberships/v1/{id}\", { params: { path: { id } }, body: { membership }, signal: options?.signal }), \"membership\", \"PUT /community/memberships/v1/{id}\");\n },\n /**\n * Delete a membership\n *\n * Delete a certain membership.\n *\n * @param id The id of the membership.\n * @param options Request options (abort signal).\n */\n async delete(id: string, options?: SpacebringRequestOptions): Promise<undefined> {\n return unwrap(await client.DELETE(\"/community/memberships/v1/{id}\", { params: { path: { id } }, signal: options?.signal }), \"DELETE /community/memberships/v1/{id}\");\n },\n /**\n * Retrieve deleted memberships — iterates every item across all pages.\n *\n * Retrieve all deleted memberships.\n */\n iterateDeleted(query: Omit<GetMembershipsDeletedQuery, \"nextPageToken\">, options?: SpacebringRequestOptions): AsyncGenerator<Membership, void, undefined> {\n return paginate(\n async (nextPageToken: string | undefined) =>\n unwrap(await client.GET(\"/community/memberships/v1/deleted\", { params: { query: { ...query, nextPageToken } }, signal: options?.signal }), \"GET /community/memberships/v1/deleted\"),\n \"memberships\",\n );\n },\n /**\n * Retrieve deleted memberships\n *\n * Retrieve all deleted memberships.\n */\n async listDeleted(query: GetMembershipsDeletedQuery, options?: SpacebringRequestOptions): Promise<{ memberships?: Membership[]; nextPageToken?: string }> {\n return unwrap(await client.GET(\"/community/memberships/v1/deleted\", { params: { query }, signal: options?.signal }), \"GET /community/memberships/v1/deleted\");\n },\n },\n };\n}\n","// AUTO-GENERATED by codegen/generate-facade.ts — DO NOT EDIT.\n// Regenerate with `npm run generate:facade`.\nimport type { Client } from \"openapi-fetch\";\nimport { paginate, unwrap, unwrapProp, type SpacebringDefaults, type SpacebringRequestOptions } from \"../../core.js\";\nimport type { operations, paths } from \"../schema.js\";\n\n/** A Contract entity as returned by the Spacebring API. */\nexport type Contract = NonNullable<operations[\"getContract\"][\"responses\"][200][\"content\"][\"application/json\"][\"contract\"]>;\n\n/** A Template entity as returned by the Spacebring API. */\nexport type Template = NonNullable<operations[\"getTemplate\"][\"responses\"][200][\"content\"][\"application/json\"][\"template\"]>;\n\n/** Query parameters for `sb.contracts.list()`. */\nexport interface GetContractsQuery {\n /** Filter contracts created on or after this date (ISO 8601). Use with createDate[lte] for a range. */\n \"createDate[gte]\"?: string;\n /** Filter contracts created on or before this date (ISO 8601). Use with createDate[gte] for a range. */\n \"createDate[lte]\"?: string;\n /** UUID of the customer (membership or company). Provide customerRef or locationRef; when set, returns only that customer's contracts. */\n customerRef?: string;\n /** Maximum number of contracts per page. Defaults to 25 when omitted or invalid; values above 100 are capped at 100. */\n limit?: number;\n /** UUID of the location. Provide customerRef or locationRef; when set, returns contracts in that location. */\n locationRef?: string;\n /** Pagination token from nextPageToken in a previous response. Keep the same filters when fetching the next page. */\n nextPageToken?: string;\n /** Case-insensitive search by contract title. Requires customerRef or locationRef to scope the search. */\n q?: string;\n /** Filter by contract status. Comma-separated values, e.g. `draft,issued`.\n\n Supported values:\n - **draft** — created but not sent\n - **issued** — sent, awaiting signature\n - **signed** — active\n - **declined** — rejected\n - **terminated** — cancelled after signing */\n status?: string;\n}\n\n/** Query parameters for `sb.contracts.templates.list()`. */\nexport interface GetTemplatesQuery {\n /** Maximum number of templates per page. Defaults to 25 when omitted or invalid; values above 100 are capped at 100. */\n limit?: number;\n /** UUID of the location. */\n locationRef: string;\n /** Pagination token from nextPageToken in a previous response. Keep the same filters when fetching the next page. */\n nextPageToken?: string;\n}\n\n/** Request body for `sb.contracts.create()`. */\nexport type CreateContractBody = NonNullable<NonNullable<operations[\"createContract\"][\"requestBody\"]>[\"content\"][\"application/json\"][\"contract\"]>;\n\n/** Request body for `sb.contracts.templates.create()`. */\nexport type CreateTemplateBody = NonNullable<NonNullable<operations[\"createTemplate\"][\"requestBody\"]>[\"content\"][\"application/json\"][\"template\"]>;\n\n/** Request body for `sb.contracts.issue()`. */\nexport type IssueContractBody = NonNullable<NonNullable<operations[\"issueContract\"][\"requestBody\"]>[\"content\"][\"application/json\"][\"signatureMethod\"]>;\n\n/** Request body for `sb.contracts.terminate()`. */\nexport type TerminateContractBody = NonNullable<NonNullable<operations[\"terminateContract\"][\"requestBody\"]>[\"content\"][\"application/json\"][\"reason\"]>;\n\n/** Request body for `sb.contracts.update()`. */\nexport type UpdateContractBody = NonNullable<NonNullable<operations[\"updateContract\"][\"requestBody\"]>[\"content\"][\"application/json\"][\"contract\"]>;\n\n/** Request body for `sb.contracts.templates.update()`. */\nexport type UpdateTemplateBody = NonNullable<NonNullable<operations[\"updateTemplate\"][\"requestBody\"]>[\"content\"][\"application/json\"][\"template\"]>;\n\nexport function createContracts(client: Client<paths>, defaults: SpacebringDefaults) {\n return {\n /**\n * Retrieve contracts\n *\n * Retrieve all contracts in the location.\n */\n async list(query?: GetContractsQuery, options?: SpacebringRequestOptions): Promise<{ contracts: Contract[]; nextPageToken?: string; searchQueryNext?: string }> {\n return unwrap(await client.GET(\"/contracts/v1\", { params: { query }, signal: options?.signal }), \"GET /contracts/v1\");\n },\n /**\n * Retrieve contracts — iterates every item across all pages.\n *\n * Retrieve all contracts in the location.\n */\n iterate(query?: Omit<GetContractsQuery, \"nextPageToken\">, options?: SpacebringRequestOptions): AsyncGenerator<Contract, void, undefined> {\n return paginate(\n async (nextPageToken: string | undefined) =>\n unwrap(await client.GET(\"/contracts/v1\", { params: { query: { ...query, nextPageToken } }, signal: options?.signal }), \"GET /contracts/v1\"),\n \"contracts\",\n );\n },\n /**\n * Get a contract\n *\n * @param contractId The id of the contract.\n * @param options Request options (abort signal).\n */\n async get(contractId: string, options?: SpacebringRequestOptions): Promise<Contract> {\n return unwrapProp(await client.GET(\"/contracts/v1/{contractId}\", { params: { path: { contractId } }, signal: options?.signal }), \"contract\", \"GET /contracts/v1/{contractId}\");\n },\n /** Create a contract */\n async create(contract: CreateContractBody, options?: SpacebringRequestOptions): Promise<Contract> {\n return unwrapProp(await client.POST(\"/contracts/v1\", { body: { contract }, signal: options?.signal }), \"contract\", \"POST /contracts/v1\");\n },\n /**\n * Update a contract\n *\n * @param contractId The id of the contract.\n * @param contract The `contract` payload.\n * @param options Request options (abort signal).\n */\n async update(contractId: string, contract: UpdateContractBody, options?: SpacebringRequestOptions): Promise<undefined> {\n return unwrap(await client.PATCH(\"/contracts/v1/{contractId}\", { params: { path: { contractId } }, body: { contract }, signal: options?.signal }), \"PATCH /contracts/v1/{contractId}\");\n },\n /**\n * Delete a contract\n *\n * @param contractId The id of the contract.\n * @param options Request options (abort signal).\n */\n async delete(contractId: string, options?: SpacebringRequestOptions): Promise<undefined> {\n return unwrap(await client.DELETE(\"/contracts/v1/{contractId}\", { params: { path: { contractId } }, signal: options?.signal }), \"DELETE /contracts/v1/{contractId}\");\n },\n /**\n * Decline a contract\n *\n * Mark a contract signer as declined. Declining also declines the contract.\n *\n * @param contractId The id of the contract.\n * @param signerId The id of the contract signer.\n * @param options Request options (abort signal).\n */\n async declineContract(contractId: string, signerId: string, options?: SpacebringRequestOptions): Promise<undefined> {\n return unwrap(await client.PUT(\"/contracts/v1/{contractId}/signers/{signerId}/decline\", { params: { path: { contractId, signerId } }, signal: options?.signal }), \"PUT /contracts/v1/{contractId}/signers/{signerId}/decline\");\n },\n /**\n * Issue a contract\n *\n * @param contractId The id of the contract.\n * @param signatureMethod The `signatureMethod` payload.\n * @param options Request options (abort signal).\n */\n async issue(contractId: string, signatureMethod: IssueContractBody, options?: SpacebringRequestOptions): Promise<Contract> {\n return unwrapProp(await client.POST(\"/contracts/v1/{contractId}/issue\", { params: { path: { contractId } }, body: { signatureMethod }, signal: options?.signal }), \"contract\", \"POST /contracts/v1/{contractId}/issue\");\n },\n /**\n * Resend a contract\n *\n * Resend the signature request email to the next pending signer of an issued eSignature contract.\n *\n * @param contractId The id of the contract.\n * @param options Request options (abort signal).\n */\n async resend(contractId: string, options?: SpacebringRequestOptions): Promise<undefined> {\n return unwrap(await client.POST(\"/contracts/v1/{contractId}/resend\", { params: { path: { contractId } }, signal: options?.signal }), \"POST /contracts/v1/{contractId}/resend\");\n },\n /**\n * Sign a contract\n *\n * Mark a contract signer as signed. When all signers have signed, the contract becomes signed.\n *\n * @param contractId The id of the contract.\n * @param signerId The id of the contract signer.\n * @param options Request options (abort signal).\n */\n async signContract(contractId: string, signerId: string, options?: SpacebringRequestOptions): Promise<undefined> {\n return unwrap(await client.PUT(\"/contracts/v1/{contractId}/signers/{signerId}/sign\", { params: { path: { contractId, signerId } }, signal: options?.signal }), \"PUT /contracts/v1/{contractId}/signers/{signerId}/sign\");\n },\n /**\n * Terminate a contract\n *\n * @param contractId The id of the contract.\n * @param reason The `reason` payload.\n * @param options Request options (abort signal).\n */\n async terminate(contractId: string, reason: TerminateContractBody, options?: SpacebringRequestOptions): Promise<undefined> {\n return unwrap(await client.PATCH(\"/contracts/v1/{contractId}/terminate\", { params: { path: { contractId } }, body: { reason }, signal: options?.signal }), \"PATCH /contracts/v1/{contractId}/terminate\");\n },\n templates: {\n /**\n * Retrieve templates\n *\n * Retrieve all contract templates in the location.\n */\n async list(query: GetTemplatesQuery, options?: SpacebringRequestOptions): Promise<{ nextPageToken?: string; searchQueryNext?: string; templates: Template[] }> {\n return unwrap(await client.GET(\"/contracts/templates/v1\", { params: { query }, signal: options?.signal }), \"GET /contracts/templates/v1\");\n },\n /**\n * Retrieve templates — iterates every item across all pages.\n *\n * Retrieve all contract templates in the location.\n */\n iterate(query: Omit<GetTemplatesQuery, \"nextPageToken\">, options?: SpacebringRequestOptions): AsyncGenerator<Template, void, undefined> {\n return paginate(\n async (nextPageToken: string | undefined) =>\n unwrap(await client.GET(\"/contracts/templates/v1\", { params: { query: { ...query, nextPageToken } }, signal: options?.signal }), \"GET /contracts/templates/v1\"),\n \"templates\",\n );\n },\n /**\n * Retrieve a template\n *\n * Retrieve a contract template.\n *\n * @param templateId The id of the template.\n * @param options Request options (abort signal).\n */\n async get(templateId: string, options?: SpacebringRequestOptions): Promise<Template> {\n return unwrapProp(await client.GET(\"/contracts/templates/v1/{templateId}\", { params: { path: { templateId } }, signal: options?.signal }), \"template\", \"GET /contracts/templates/v1/{templateId}\");\n },\n /**\n * Create a template\n *\n * Create a contract template from an uploaded file.\n */\n async create(template: CreateTemplateBody, options?: SpacebringRequestOptions): Promise<Template> {\n return unwrapProp(await client.POST(\"/contracts/templates/v1\", { body: { template }, signal: options?.signal }), \"template\", \"POST /contracts/templates/v1\");\n },\n /**\n * Update a template\n *\n * Update a contract template.\n *\n * @param templateId The id of the template.\n * @param template The `template` payload.\n * @param options Request options (abort signal).\n */\n async update(templateId: string, template: UpdateTemplateBody, options?: SpacebringRequestOptions): Promise<undefined> {\n return unwrap(await client.PATCH(\"/contracts/templates/v1/{templateId}\", { params: { path: { templateId } }, body: { template }, signal: options?.signal }), \"PATCH /contracts/templates/v1/{templateId}\");\n },\n /**\n * Delete a template\n *\n * Delete a contract template.\n *\n * @param templateId The id of the template.\n * @param options Request options (abort signal).\n */\n async delete(templateId: string, options?: SpacebringRequestOptions): Promise<undefined> {\n return unwrap(await client.DELETE(\"/contracts/templates/v1/{templateId}\", { params: { path: { templateId } }, signal: options?.signal }), \"DELETE /contracts/templates/v1/{templateId}\");\n },\n /**\n * Duplicate a template\n *\n * Duplicate a contract template, creating a copy with the same title and file.\n *\n * @param templateId The id of the template.\n * @param options Request options (abort signal).\n */\n async duplicate(templateId: string, options?: SpacebringRequestOptions): Promise<Template> {\n return unwrapProp(await client.POST(\"/contracts/templates/v1/{templateId}/duplicate\", { params: { path: { templateId } }, signal: options?.signal }), \"template\", \"POST /contracts/templates/v1/{templateId}/duplicate\");\n },\n },\n };\n}\n","// AUTO-GENERATED by codegen/generate-facade.ts — DO NOT EDIT.\n// Regenerate with `npm run generate:facade`.\nimport type { Client } from \"openapi-fetch\";\nimport { paginate, unwrap, unwrapProp, type SpacebringDefaults, type SpacebringRequestOptions } from \"../../core.js\";\nimport type { components, operations, paths } from \"../schema.js\";\n\n/** A Coupon entity as returned by the Spacebring API. */\nexport type Coupon = NonNullable<components[\"schemas\"][\"coupon\"]>;\n\n/** A Promocode entity as returned by the Spacebring API. */\nexport type Promocode = NonNullable<components[\"schemas\"][\"promocode\"]>;\n\n/** A Redemption entity as returned by the Spacebring API. */\nexport type Redemption = NonNullable<components[\"schemas\"][\"discountRedemption\"]>;\n\n/** Query parameters for `sb.discounts.coupons.list()`. */\nexport interface GetCouponsQuery {\n /** The id of the location */\n locationRef: string;\n /** Comma-separated list of coupon types to filter by */\n type?: \"creditPackages\" | \"desks\" | \"equipment\" | \"events\" | \"products\" | \"rooms\" | \"subscriptionItems\";\n /** The number of coupons to retrieve. Default: 25 */\n limit?: number;\n /** Token to retrieve the next page of results. */\n nextPageToken?: string;\n}\n\n/** Query parameters for `sb.discounts.listRedemptions()`. */\nexport interface GetDiscountRedemptionsQuery {\n /** The id of the coupon. Either couponRef or promocodeRef is required */\n couponRef?: string;\n /** The id of the promocode. Either couponRef or promocodeRef is required */\n promocodeRef?: string;\n /** The number of items to return */\n limit?: number;\n /** Token to retrieve the next page of results. */\n nextPageToken?: string;\n}\n\n/** Query parameters for `sb.discounts.promocodes.list()`. */\nexport interface GetPromocodesQuery {\n /** The id of the location. At least one of locationRef or couponRef is required */\n locationRef?: string;\n /** The id of the coupon. At least one of locationRef or couponRef is required */\n couponRef?: string;\n}\n\n/** Request body for `sb.discounts.coupons.create()`. */\nexport type CreateCouponBody = NonNullable<NonNullable<operations[\"createCoupon\"][\"requestBody\"]>[\"content\"][\"application/json\"][\"coupon\"]>;\n\n/** Request body for `sb.discounts.promocodes.create()`. */\nexport type CreatePromocodeBody = NonNullable<NonNullable<operations[\"createPromocode\"][\"requestBody\"]>[\"content\"][\"application/json\"][\"promocode\"]>;\n\n/** Request body for `sb.discounts.coupons.update()`. */\nexport type UpdateCouponBody = NonNullable<NonNullable<operations[\"updateCoupon\"][\"requestBody\"]>[\"content\"][\"application/json\"][\"coupon\"]>;\n\nexport function createDiscounts(client: Client<paths>, defaults: SpacebringDefaults) {\n return {\n /**\n * Retrieve redemptions — iterates every item across all pages.\n *\n * Retrieve all discount redemptions. Either couponRef or promocodeRef is required.\n */\n iterateRedemptions(query?: Omit<GetDiscountRedemptionsQuery, \"nextPageToken\">, options?: SpacebringRequestOptions): AsyncGenerator<Redemption, void, undefined> {\n return paginate(\n async (nextPageToken: string | undefined) =>\n unwrap(await client.GET(\"/discounts/v1/redemptions\", { params: { query: { ...query, nextPageToken } }, signal: options?.signal }), \"GET /discounts/v1/redemptions\"),\n \"redemptions\",\n );\n },\n /**\n * Retrieve redemptions\n *\n * Retrieve all discount redemptions. Either couponRef or promocodeRef is required.\n */\n async listRedemptions(query?: GetDiscountRedemptionsQuery, options?: SpacebringRequestOptions): Promise<{ redemptions?: Redemption[]; nextPageToken?: string; searchQueryNext?: string }> {\n return unwrap(await client.GET(\"/discounts/v1/redemptions\", { params: { query }, signal: options?.signal }), \"GET /discounts/v1/redemptions\");\n },\n coupons: {\n /**\n * Retrieve coupons\n *\n * Retrieve all coupons in the location.\n */\n async list(query: GetCouponsQuery, options?: SpacebringRequestOptions): Promise<{ coupons?: Coupon[]; nextPageToken?: string; searchQueryNext?: string }> {\n return unwrap(await client.GET(\"/discounts/v1/coupons\", { params: { query }, signal: options?.signal }), \"GET /discounts/v1/coupons\");\n },\n /**\n * Retrieve coupons — iterates every item across all pages.\n *\n * Retrieve all coupons in the location.\n */\n iterate(query: Omit<GetCouponsQuery, \"nextPageToken\">, options?: SpacebringRequestOptions): AsyncGenerator<Coupon, void, undefined> {\n return paginate(\n async (nextPageToken: string | undefined) =>\n unwrap(await client.GET(\"/discounts/v1/coupons\", { params: { query: { ...query, nextPageToken } }, signal: options?.signal }), \"GET /discounts/v1/coupons\"),\n \"coupons\",\n );\n },\n /**\n * Get a coupon\n *\n * @param id The id of the coupon\n * @param options Request options (abort signal).\n */\n async get(id: string, options?: SpacebringRequestOptions): Promise<Coupon> {\n return unwrapProp(await client.GET(\"/discounts/v1/coupons/{id}\", { params: { path: { id } }, signal: options?.signal }), \"coupon\", \"GET /discounts/v1/coupons/{id}\");\n },\n /** Create a coupon */\n async create(coupon: CreateCouponBody, options?: SpacebringRequestOptions): Promise<Coupon> {\n return unwrapProp(await client.POST(\"/discounts/v1/coupons\", { body: { coupon }, signal: options?.signal }), \"coupon\", \"POST /discounts/v1/coupons\");\n },\n /**\n * Update a coupon\n *\n * @param id The id of the coupon\n * @param coupon The `coupon` payload.\n * @param options Request options (abort signal).\n */\n async update(id: string, coupon: UpdateCouponBody, options?: SpacebringRequestOptions): Promise<undefined> {\n return unwrap(await client.PATCH(\"/discounts/v1/coupons/{id}\", { params: { path: { id } }, body: { coupon }, signal: options?.signal }), \"PATCH /discounts/v1/coupons/{id}\");\n },\n /**\n * Delete a coupon\n *\n * @param id The id of the coupon\n * @param options Request options (abort signal).\n */\n async delete(id: string, options?: SpacebringRequestOptions): Promise<undefined> {\n return unwrap(await client.DELETE(\"/discounts/v1/coupons/{id}\", { params: { path: { id } }, signal: options?.signal }), \"DELETE /discounts/v1/coupons/{id}\");\n },\n },\n promocodes: {\n /**\n * Retrieve promocodes\n *\n * Retrieve all promocodes.\n */\n async list(query?: GetPromocodesQuery, options?: SpacebringRequestOptions): Promise<Promocode[]> {\n return unwrapProp(await client.GET(\"/discounts/v1/promocodes\", { params: { query }, signal: options?.signal }), \"promocodes\", \"GET /discounts/v1/promocodes\");\n },\n /**\n * Get a promocode\n *\n * @param id The id of the promocode\n * @param options Request options (abort signal).\n */\n async get(id: string, options?: SpacebringRequestOptions): Promise<Promocode> {\n return unwrapProp(await client.GET(\"/discounts/v1/promocodes/{id}\", { params: { path: { id } }, signal: options?.signal }), \"promocode\", \"GET /discounts/v1/promocodes/{id}\");\n },\n /** Create a promocode */\n async create(promocode: CreatePromocodeBody, options?: SpacebringRequestOptions): Promise<Promocode> {\n return unwrapProp(await client.POST(\"/discounts/v1/promocodes\", { body: { promocode }, signal: options?.signal }), \"promocode\", \"POST /discounts/v1/promocodes\");\n },\n /**\n * Archive a promocode\n *\n * @param id The id of the promocode\n * @param options Request options (abort signal).\n */\n async archive(id: string, options?: SpacebringRequestOptions): Promise<Promocode> {\n return unwrapProp(await client.PUT(\"/discounts/v1/promocodes/{id}/archive\", { params: { path: { id } }, signal: options?.signal }), \"promocode\", \"PUT /discounts/v1/promocodes/{id}/archive\");\n },\n },\n };\n}\n","// AUTO-GENERATED by codegen/generate-facade.ts — DO NOT EDIT.\n// Regenerate with `npm run generate:facade`.\nimport type { Client } from \"openapi-fetch\";\nimport { paginate, unwrap, unwrapProp, type SpacebringDefaults, type SpacebringRequestOptions } from \"../../core.js\";\nimport type { components, operations, paths } from \"../schema.js\";\n\n/** A Event entity as returned by the Spacebring API. */\nexport type Event = NonNullable<components[\"schemas\"][\"event\"]>;\n\n/** A EventTicket entity as returned by the Spacebring API. */\nexport type EventTicket = NonNullable<components[\"schemas\"][\"eventTicket\"]>;\n\n/** Query parameters for `sb.events.list()`. */\nexport interface GetEventsByOrganizationQuery {\n /** The id of the location. */\n locationRef: string;\n /** The number of events to retrieve. Default: 25 */\n limit?: number;\n /** Token to retrieve the next page of results. */\n nextPageToken?: string;\n /** The order of the events. createDate:asc, createDate:desc, startDate:asc, startDate:desc, endDate:asc, endDate:desc or relevance */\n order?: string;\n}\n\n/** Query parameters for `sb.events.tickets.list()`. */\nexport interface GetEventTicketsQuery {\n /** UUID of the customer whose event tickets to list. */\n customerRef?: string;\n /** UUID of the event whose tickets to list. */\n eventRef?: string;\n /** @deprecated Use status \"canceled\" instead. Set to \"true\" to include deleted event tickets. */\n includeDeleted?: string;\n /** Maximum number of event tickets per page. Defaults to 25 when omitted or invalid; values above 100 are capped at 100. */\n limit?: number;\n /** UUID of the location whose event tickets to list. */\n locationRef?: string;\n /** Pagination token from nextPageToken in a previous response. Keep the same filters when fetching the next page. */\n nextPageToken?: string;\n /** Filter by event ticket status. Comma-separated values, e.g. `active,canceled`. Defaults to `active` when omitted.\n\n Supported values:\n - **active** — the ticket is valid\n - **canceled** — the ticket was deleted */\n status?: string;\n /** UUID of the user whose event tickets to list. */\n userRef?: string;\n}\n\n/** Request body for `sb.events.addEventHosts()`. */\nexport type AddEventHostsBody = NonNullable<NonNullable<operations[\"addEventHosts\"][\"requestBody\"]>[\"content\"][\"application/json\"][\"tickets\"]>;\n\n/** Request body for `sb.events.create()`. */\nexport type CreateEventBody = NonNullable<NonNullable<operations[\"createEvent\"][\"requestBody\"]>[\"content\"][\"application/json\"][\"event\"]>;\n\n/** Request body for `sb.events.update()`. */\nexport type UpdateEventBody = NonNullable<NonNullable<operations[\"updateEvent\"][\"requestBody\"]>[\"content\"][\"application/json\"][\"event\"]>;\n\n/** Request body for `sb.events.tickets.update()`. */\nexport type UpdateEventTicketBody = NonNullable<NonNullable<operations[\"updateEventTicket\"][\"requestBody\"]>[\"content\"][\"application/json\"][\"ticket\"]>;\n\nexport function createEvents(client: Client<paths>, defaults: SpacebringDefaults) {\n return {\n /** Retrieve events */\n async list(query: GetEventsByOrganizationQuery, options?: SpacebringRequestOptions): Promise<operations[\"getEventsByOrganization\"][\"responses\"][200][\"content\"][\"application/json\"]> {\n return unwrap(await client.GET(\"/events/v1\", { params: { query }, signal: options?.signal }), \"GET /events/v1\");\n },\n /** Retrieve an event */\n async get(id: string, options?: SpacebringRequestOptions): Promise<Event> {\n return unwrapProp(await client.GET(\"/events/v1/{id}\", { params: { header: { \"spacebring-network-id\": defaults.networkId as string }, path: { id } }, signal: options?.signal }), \"event\", \"GET /events/v1/{id}\");\n },\n /** Create an event */\n async create(event: CreateEventBody, options?: SpacebringRequestOptions): Promise<Event> {\n return unwrapProp(await client.POST(\"/events/v1\", { body: { event }, signal: options?.signal }), \"event\", \"POST /events/v1\");\n },\n /** Update an event */\n async update(id: string, event: UpdateEventBody, options?: SpacebringRequestOptions): Promise<Event> {\n return unwrapProp(await client.PUT(\"/events/v1/{id}\", { params: { path: { id } }, body: { event }, signal: options?.signal }), \"event\", \"PUT /events/v1/{id}\");\n },\n /** Delete an event */\n async delete(id: string, options?: SpacebringRequestOptions): Promise<undefined> {\n return unwrap(await client.DELETE(\"/events/v1/{id}\", { params: { path: { id } }, signal: options?.signal }), \"DELETE /events/v1/{id}\");\n },\n /**\n * Add event hosts\n *\n * Add hosts to an event. Creates a free host ticket for each membership without one; existing attendee tickets are switched to the host role. Returns all tickets of the event.\n *\n * @param id The id of the event.\n * @param tickets The `tickets` payload.\n * @param options Request options (abort signal).\n */\n async addEventHosts(id: string, tickets: AddEventHostsBody, options?: SpacebringRequestOptions): Promise<EventTicket[]> {\n return unwrapProp(await client.PUT(\"/events/v1/{id}/hosts\", { params: { path: { id } }, body: { tickets }, signal: options?.signal }), \"tickets\", \"PUT /events/v1/{id}/hosts\");\n },\n /** Cancel an event */\n async cancel(id: string, options?: SpacebringRequestOptions): Promise<Event> {\n return unwrapProp(await client.PUT(\"/events/v1/{id}/cancel\", { params: { path: { id } }, signal: options?.signal }), \"event\", \"PUT /events/v1/{id}/cancel\");\n },\n /** Copy an event */\n async copy(id: string, options?: SpacebringRequestOptions): Promise<Event> {\n return unwrapProp(await client.POST(\"/events/v1/{id}/copy\", { params: { path: { id } }, signal: options?.signal }), \"event\", \"POST /events/v1/{id}/copy\");\n },\n tickets: {\n /**\n * Retrieve tickets\n *\n * Retrieve all event tickets.\n */\n async list(query?: GetEventTicketsQuery, options?: SpacebringRequestOptions): Promise<{ tickets?: EventTicket[]; nextPageToken?: string; searchQueryNext?: string }> {\n return unwrap(await client.GET(\"/events/tickets/v1\", { params: { query }, signal: options?.signal }), \"GET /events/tickets/v1\");\n },\n /**\n * Retrieve tickets — iterates every item across all pages.\n *\n * Retrieve all event tickets.\n */\n iterate(query?: Omit<GetEventTicketsQuery, \"nextPageToken\">, options?: SpacebringRequestOptions): AsyncGenerator<EventTicket, void, undefined> {\n return paginate(\n async (nextPageToken: string | undefined) =>\n unwrap(await client.GET(\"/events/tickets/v1\", { params: { query: { ...query, nextPageToken } }, signal: options?.signal }), \"GET /events/tickets/v1\"),\n \"tickets\",\n );\n },\n /**\n * Retrieve a ticket\n *\n * Retrieve an event ticket.\n *\n * @param id The id of the event ticket.\n * @param options Request options (abort signal).\n */\n async get(id: string, options?: SpacebringRequestOptions): Promise<EventTicket> {\n return unwrapProp(await client.GET(\"/events/tickets/v1/{id}\", { params: { path: { id } }, signal: options?.signal }), \"ticket\", \"GET /events/tickets/v1/{id}\");\n },\n /**\n * Update a ticket\n *\n * Update an event ticket. Only the ticket role can be changed.\n *\n * @param id The id of the event ticket.\n * @param ticket The `ticket` payload.\n * @param options Request options (abort signal).\n */\n async update(id: string, ticket: UpdateEventTicketBody, options?: SpacebringRequestOptions): Promise<EventTicket> {\n return unwrapProp(await client.PUT(\"/events/tickets/v1/{id}\", { params: { path: { id } }, body: { ticket }, signal: options?.signal }), \"ticket\", \"PUT /events/tickets/v1/{id}\");\n },\n /**\n * Delete a ticket\n *\n * Delete an event ticket. Returns the deleted ticket.\n *\n * @param id The id of the event ticket.\n * @param options Request options (abort signal).\n */\n async delete(id: string, options?: SpacebringRequestOptions): Promise<EventTicket> {\n return unwrapProp(await client.DELETE(\"/events/tickets/v1/{id}\", { params: { path: { id } }, signal: options?.signal }), \"ticket\", \"DELETE /events/tickets/v1/{id}\");\n },\n /**\n * Check in a ticket\n *\n * Check in an event ticket. Fails if the ticket is already checked in.\n *\n * @param id The id of the event ticket.\n * @param options Request options (abort signal).\n */\n async checkIn(id: string, options?: SpacebringRequestOptions): Promise<EventTicket> {\n return unwrapProp(await client.POST(\"/events/tickets/v1/{id}/checkin\", { params: { path: { id } }, signal: options?.signal }), \"ticket\", \"POST /events/tickets/v1/{id}/checkin\");\n },\n },\n };\n}\n","// AUTO-GENERATED by codegen/generate-facade.ts — DO NOT EDIT.\n// Regenerate with `npm run generate:facade`.\nimport type { Client } from \"openapi-fetch\";\nimport { paginate, unwrap, unwrapProp, type SpacebringDefaults, type SpacebringRequestOptions } from \"../../core.js\";\nimport type { components, operations, paths } from \"../schema.js\";\n\n/** A Comment entity as returned by the Spacebring API. */\nexport type Comment = NonNullable<components[\"schemas\"][\"postComment\"]>;\n\n/** A Like entity as returned by the Spacebring API. */\nexport type Like = NonNullable<components[\"schemas\"][\"postLike\"]>;\n\n/** A Post entity as returned by the Spacebring API. */\nexport type Post = NonNullable<components[\"schemas\"][\"post\"]>;\n\n/** Query parameters for `sb.feed.posts.list()`. */\nexport interface GetFeedPostsQuery {\n /** The id of the location. */\n locationRef: string;\n /** Token to retrieve the next page of results. */\n nextPageToken?: string;\n /** The number of items to return. */\n limit?: number;\n}\n\n/** Request body for `sb.feed.posts.create()`. */\nexport type CreateFeedPostBody = NonNullable<NonNullable<operations[\"createFeedPost\"][\"requestBody\"]>[\"content\"][\"application/json\"][\"post\"]>;\n\n/** Request body for `sb.feed.comments.create()`. */\nexport type CreateFeedPostCommentBody = NonNullable<NonNullable<operations[\"createFeedPostComment\"][\"requestBody\"]>[\"content\"][\"application/json\"][\"comment\"]>;\n\n/** Request body for `sb.feed.posts.update()`. */\nexport type UpdateFeedPostBody = NonNullable<NonNullable<operations[\"updateFeedPost\"][\"requestBody\"]>[\"content\"][\"application/json\"][\"post\"]>;\n\nexport function createFeed(client: Client<paths>, defaults: SpacebringDefaults) {\n return {\n comments: {\n /**\n * Create a post comment\n *\n * Create a feed post comment.\n */\n async create(comment: CreateFeedPostCommentBody, options?: SpacebringRequestOptions): Promise<Comment> {\n return unwrapProp(await client.POST(\"/feed/comments/v1\", { body: { comment }, signal: options?.signal }), \"comment\", \"POST /feed/comments/v1\");\n },\n /**\n * Delete a post comment\n *\n * @param id The id of the post comment.\n * @param options Request options (abort signal).\n */\n async delete(id: string, options?: SpacebringRequestOptions): Promise<undefined> {\n return unwrap(await client.DELETE(\"/feed/comments/v1/{id}\", { params: { path: { id } }, signal: options?.signal }), \"DELETE /feed/comments/v1/{id}\");\n },\n /**\n * Create a like for a post comment\n *\n * @param id The id of the post comment.\n * @param options Request options (abort signal).\n */\n async createLike(id: string, options?: SpacebringRequestOptions): Promise<Like> {\n return unwrapProp(await client.POST(\"/feed/comments/v1/{id}/likes\", { params: { path: { id } }, signal: options?.signal }), \"like\", \"POST /feed/comments/v1/{id}/likes\");\n },\n /**\n * Delete a like for a post comment\n *\n * @param id The id of the post comment.\n * @param options Request options (abort signal).\n */\n async deleteLike(id: string, options?: SpacebringRequestOptions): Promise<undefined> {\n return unwrap(await client.DELETE(\"/feed/comments/v1/{id}/likes\", { params: { path: { id } }, signal: options?.signal }), \"DELETE /feed/comments/v1/{id}/likes\");\n },\n },\n posts: {\n /**\n * Get posts\n *\n * Get feed posts.\n */\n async list(query: GetFeedPostsQuery, options?: SpacebringRequestOptions): Promise<{ nextPageToken?: string; posts?: Post[]; searchQueryNext?: string }> {\n return unwrap(await client.GET(\"/feed/posts/v1\", { params: { query }, signal: options?.signal }), \"GET /feed/posts/v1\");\n },\n /**\n * Get posts — iterates every item across all pages.\n *\n * Get feed posts.\n */\n iterate(query: Omit<GetFeedPostsQuery, \"nextPageToken\">, options?: SpacebringRequestOptions): AsyncGenerator<Post, void, undefined> {\n return paginate(\n async (nextPageToken: string | undefined) =>\n unwrap(await client.GET(\"/feed/posts/v1\", { params: { query: { ...query, nextPageToken } }, signal: options?.signal }), \"GET /feed/posts/v1\"),\n \"posts\",\n );\n },\n /**\n * Get a post\n *\n * Get a feed post.\n *\n * @param id The id of the post.\n * @param options Request options (abort signal).\n */\n async get(id: string, options?: SpacebringRequestOptions): Promise<Post> {\n return unwrapProp(await client.GET(\"/feed/posts/v1/{id}\", { params: { path: { id } }, signal: options?.signal }), \"post\", \"GET /feed/posts/v1/{id}\");\n },\n /**\n * Create a post\n *\n * Create a feed post.\n */\n async create(post: CreateFeedPostBody, options?: SpacebringRequestOptions): Promise<Post> {\n return unwrapProp(await client.POST(\"/feed/posts/v1\", { body: { post }, signal: options?.signal }), \"post\", \"POST /feed/posts/v1\");\n },\n /**\n * Update a post\n *\n * Update a feed post.\n *\n * @param id The id of the post.\n * @param post The `post` payload.\n * @param options Request options (abort signal).\n */\n async update(id: string, post: UpdateFeedPostBody, options?: SpacebringRequestOptions): Promise<Post> {\n return unwrapProp(await client.PUT(\"/feed/posts/v1/{id}\", { params: { path: { id } }, body: { post }, signal: options?.signal }), \"post\", \"PUT /feed/posts/v1/{id}\");\n },\n /**\n * Delete a post\n *\n * Delete a feed post.\n *\n * @param id The id of the post.\n * @param options Request options (abort signal).\n */\n async delete(id: string, options?: SpacebringRequestOptions): Promise<undefined> {\n return unwrap(await client.DELETE(\"/feed/posts/v1/{id}\", { params: { path: { id } }, signal: options?.signal }), \"DELETE /feed/posts/v1/{id}\");\n },\n /**\n * Create a like for a post\n *\n * @param id The id of the post.\n * @param options Request options (abort signal).\n */\n async createLike(id: string, options?: SpacebringRequestOptions): Promise<Like> {\n return unwrapProp(await client.POST(\"/feed/posts/v1/{id}/likes\", { params: { path: { id } }, signal: options?.signal }), \"like\", \"POST /feed/posts/v1/{id}/likes\");\n },\n /**\n * Delete a like for a post\n *\n * @param id The id of the post.\n * @param options Request options (abort signal).\n */\n async deleteLike(id: string, options?: SpacebringRequestOptions): Promise<undefined> {\n return unwrap(await client.DELETE(\"/feed/posts/v1/{id}/likes\", { params: { path: { id } }, signal: options?.signal }), \"DELETE /feed/posts/v1/{id}/likes\");\n },\n /**\n * Get comments for a post\n *\n * @param id The id of the post.\n * @param options Request options (abort signal).\n */\n async getComments(id: string, options?: SpacebringRequestOptions): Promise<Comment[]> {\n return unwrapProp(await client.GET(\"/feed/posts/v1/{id}/comments\", { params: { path: { id } }, signal: options?.signal }), \"comments\", \"GET /feed/posts/v1/{id}/comments\");\n },\n /**\n * Get likes for a post\n *\n * @param id The id of the post.\n * @param options Request options (abort signal).\n */\n async getLikes(id: string, options?: SpacebringRequestOptions): Promise<Like[]> {\n return unwrapProp(await client.GET(\"/feed/posts/v1/{id}/likes\", { params: { path: { id } }, signal: options?.signal }), \"likes\", \"GET /feed/posts/v1/{id}/likes\");\n },\n },\n };\n}\n","// AUTO-GENERATED by codegen/generate-facade.ts — DO NOT EDIT.\n// Regenerate with `npm run generate:facade`.\nimport type { Client } from \"openapi-fetch\";\nimport { unwrap, type SpacebringDefaults, type SpacebringRequestOptions } from \"../../core.js\";\nimport type { operations, paths } from \"../schema.js\";\n\n/** Query parameters for `sb.floors.list()`. */\nexport interface GetFloorsQuery {\n /** The limit of the floors. */\n limit?: number;\n /** The id of the location. */\n locationRef: string;\n /** Token to retrieve the next page of results. */\n nextPageToken?: string;\n}\n\nexport function createFloors(client: Client<paths>, defaults: SpacebringDefaults) {\n return {\n /** Get floors */\n async list(query: GetFloorsQuery, options?: SpacebringRequestOptions): Promise<operations[\"getFloors\"][\"responses\"][200][\"content\"][\"application/json\"]> {\n return unwrap(await client.GET(\"/floors/v1\", { params: { query }, signal: options?.signal }), \"GET /floors/v1\");\n },\n /**\n * Delete a floor\n *\n * @param id The id of the floor.\n * @param options Request options (abort signal).\n */\n async delete(id: string, options?: SpacebringRequestOptions): Promise<undefined> {\n return unwrap(await client.DELETE(\"/floors/v1/{id}\", { params: { path: { id } }, signal: options?.signal }), \"DELETE /floors/v1/{id}\");\n },\n };\n}\n","// AUTO-GENERATED by codegen/generate-facade.ts — DO NOT EDIT.\n// Regenerate with `npm run generate:facade`.\nimport type { Client } from \"openapi-fetch\";\nimport { paginate, unwrap, unwrapProp, type SpacebringDefaults, type SpacebringRequestOptions } from \"../../core.js\";\nimport type { components, operations, paths } from \"../schema.js\";\n\n/** A Guide entity as returned by the Spacebring API. */\nexport type Guide = NonNullable<components[\"schemas\"][\"guide\"]>;\n\n/** Query parameters for `sb.guides.list()`. */\nexport interface GetGuidesQuery {\n /** Maximum number of guides per page. Defaults to 25 when omitted or invalid; values above 100 are capped at 100. */\n limit?: number;\n /** UUID of the location whose guides to list. */\n locationRef: string;\n /** Pagination token from nextPageToken in a previous response. Keep the same filters when fetching the next page. */\n nextPageToken?: string;\n}\n\n/** Request body for `sb.guides.create()`. */\nexport type CreateGuideBody = NonNullable<NonNullable<operations[\"createGuide\"][\"requestBody\"]>[\"content\"][\"application/json\"][\"guide\"]>;\n\n/** Request body for `sb.guides.update()`. */\nexport type PatchGuideBody = NonNullable<NonNullable<operations[\"patchGuide\"][\"requestBody\"]>[\"content\"][\"application/json\"][\"guide\"]>;\n\nexport function createGuides(client: Client<paths>, defaults: SpacebringDefaults) {\n return {\n /**\n * Retrieve guides\n *\n * Retrieve all guides for an organization. Requires locationRef. When using bearer token (non-basic auth), results are filtered by the user's access.\n */\n async list(query: GetGuidesQuery, options?: SpacebringRequestOptions): Promise<{ guides: Guide[]; nextPageToken?: string; searchQueryNext?: string }> {\n return unwrap(await client.GET(\"/guides/v1\", { params: { query }, signal: options?.signal }), \"GET /guides/v1\");\n },\n /**\n * Retrieve guides — iterates every item across all pages.\n *\n * Retrieve all guides for an organization. Requires locationRef. When using bearer token (non-basic auth), results are filtered by the user's access.\n */\n iterate(query: Omit<GetGuidesQuery, \"nextPageToken\">, options?: SpacebringRequestOptions): AsyncGenerator<Guide, void, undefined> {\n return paginate(\n async (nextPageToken: string | undefined) =>\n unwrap(await client.GET(\"/guides/v1\", { params: { query: { ...query, nextPageToken } }, signal: options?.signal }), \"GET /guides/v1\"),\n \"guides\",\n );\n },\n /**\n * Retrieve a guide\n *\n * Retrieve a guide by id.\n *\n * @param guideId The id of the guide.\n * @param options Request options (abort signal).\n */\n async get(guideId: string, options?: SpacebringRequestOptions): Promise<Guide> {\n return unwrapProp(await client.GET(\"/guides/v1/{guideId}\", { params: { path: { guideId } }, signal: options?.signal }), \"guide\", \"GET /guides/v1/{guideId}\");\n },\n /**\n * Create a guide\n *\n * Create a guide in an organization.\n */\n async create(guide: CreateGuideBody, options?: SpacebringRequestOptions): Promise<Guide> {\n return unwrapProp(await client.POST(\"/guides/v1\", { body: { guide }, signal: options?.signal }), \"guide\", \"POST /guides/v1\");\n },\n /**\n * Update a guide\n *\n * Update a guide. At least one guide property must be provided.\n *\n * @param guideId The id of the guide\n * @param guide The `guide` payload.\n * @param options Request options (abort signal).\n */\n async update(guideId: string, guide: PatchGuideBody, options?: SpacebringRequestOptions): Promise<Guide> {\n return unwrapProp(await client.PATCH(\"/guides/v1/{guideId}\", { params: { path: { guideId } }, body: { guide }, signal: options?.signal }), \"guide\", \"PATCH /guides/v1/{guideId}\");\n },\n /**\n * Delete a guide\n *\n * @param guideId The id of the guide\n * @param options Request options (abort signal).\n */\n async delete(guideId: string, options?: SpacebringRequestOptions): Promise<undefined> {\n return unwrap(await client.DELETE(\"/guides/v1/{guideId}\", { params: { path: { guideId } }, signal: options?.signal }), \"DELETE /guides/v1/{guideId}\");\n },\n };\n}\n","// AUTO-GENERATED by codegen/generate-facade.ts — DO NOT EDIT.\n// Regenerate with `npm run generate:facade`.\nimport type { Client } from \"openapi-fetch\";\nimport { unwrap, unwrapProp, type SpacebringDefaults, type SpacebringRequestOptions } from \"../../core.js\";\nimport type { components, paths } from \"../schema.js\";\n\n/** A Location entity as returned by the Spacebring API. */\nexport type Location = NonNullable<components[\"schemas\"][\"location\"]>;\n\nexport function createLocations(client: Client<paths>, defaults: SpacebringDefaults) {\n return {\n /** Retrieve all locations */\n async list(options?: SpacebringRequestOptions): Promise<Location[]> {\n return unwrapProp(await client.GET(\"/locations/v1\", { signal: options?.signal }), \"locations\", \"GET /locations/v1\");\n },\n /**\n * Get a location\n *\n * @param locationId The id of the location.\n * @param options Request options (abort signal).\n */\n async get(locationId: string, options?: SpacebringRequestOptions): Promise<Location> {\n return unwrapProp(await client.GET(\"/locations/v1/{locationId}\", { params: { path: { locationId } }, signal: options?.signal }), \"location\", \"GET /locations/v1/{locationId}\");\n },\n };\n}\n","// AUTO-GENERATED by codegen/generate-facade.ts — DO NOT EDIT.\n// Regenerate with `npm run generate:facade`.\nimport type { Client } from \"openapi-fetch\";\nimport { unwrap, unwrapProp, type SpacebringDefaults, type SpacebringRequestOptions } from \"../../core.js\";\nimport type { components, paths } from \"../schema.js\";\n\n/** A Network entity as returned by the Spacebring API. */\nexport type Network = NonNullable<components[\"schemas\"][\"network\"]>;\n\nexport function createNetworks(client: Client<paths>, defaults: SpacebringDefaults) {\n return {\n /**\n * Retrieve networks\n *\n * Retrieve all networks you are in.\n */\n async list(options?: SpacebringRequestOptions): Promise<Network[]> {\n return unwrapProp(await client.GET(\"/networks/v1\", { signal: options?.signal }), \"networks\", \"GET /networks/v1\");\n },\n };\n}\n","// AUTO-GENERATED by codegen/generate-facade.ts — DO NOT EDIT.\n// Regenerate with `npm run generate:facade`.\nimport type { Client } from \"openapi-fetch\";\nimport { paginate, unwrap, unwrapProp, type SpacebringDefaults, type SpacebringRequestOptions } from \"../../core.js\";\nimport type { operations, paths } from \"../schema.js\";\n\n/** A Package entity as returned by the Spacebring API. */\nexport type Package = NonNullable<operations[\"getPackages\"][\"responses\"][200][\"content\"][\"application/json\"][\"packages\"]>[number];\n\n/** Query parameters for `sb.packages.list()`. */\nexport interface GetPackagesQuery {\n /** Maximum number of packages per page. Defaults to 25 when omitted or invalid; values above 100 are capped at 100. */\n limit?: number;\n /** UUID of the location. */\n locationRef: string;\n /** Pagination token from nextPageToken in a previous response. Keep the same filters when fetching the next page. */\n nextPageToken?: string;\n}\n\n/** Request body for `sb.packages.create()`. */\nexport type CreatePackageBody = NonNullable<NonNullable<operations[\"createPackage\"][\"requestBody\"]>[\"content\"][\"application/json\"][\"package\"]>;\n\n/** Request body for `sb.packages.update()`. */\nexport type PatchPackageBody = NonNullable<NonNullable<operations[\"patchPackage\"][\"requestBody\"]>[\"content\"][\"application/json\"][\"package\"]>;\n\nexport function createPackages(client: Client<paths>, defaults: SpacebringDefaults) {\n return {\n /**\n * Retrieve packages\n *\n * Retrieve all packages in the location.\n */\n async list(query: GetPackagesQuery, options?: SpacebringRequestOptions): Promise<{ nextPageToken?: string; packages: Package[]; searchQueryNext?: string }> {\n return unwrap(await client.GET(\"/packages/v1\", { params: { query }, signal: options?.signal }), \"GET /packages/v1\");\n },\n /**\n * Retrieve packages — iterates every item across all pages.\n *\n * Retrieve all packages in the location.\n */\n iterate(query: Omit<GetPackagesQuery, \"nextPageToken\">, options?: SpacebringRequestOptions): AsyncGenerator<Package, void, undefined> {\n return paginate(\n async (nextPageToken: string | undefined) =>\n unwrap(await client.GET(\"/packages/v1\", { params: { query: { ...query, nextPageToken } }, signal: options?.signal }), \"GET /packages/v1\"),\n \"packages\",\n );\n },\n /** Create a package */\n async create(packageBody: CreatePackageBody, options?: SpacebringRequestOptions): Promise<Package> {\n return unwrapProp(await client.POST(\"/packages/v1\", { body: { package: packageBody }, signal: options?.signal }), \"package\", \"POST /packages/v1\");\n },\n /**\n * Update a package\n *\n * @param packageId The id of the package.\n * @param packageBody The `package` payload.\n * @param options Request options (abort signal).\n */\n async update(packageId: string, packageBody: PatchPackageBody, options?: SpacebringRequestOptions): Promise<undefined> {\n return unwrap(await client.PATCH(\"/packages/v1/{packageId}\", { params: { path: { packageId } }, body: { package: packageBody }, signal: options?.signal }), \"PATCH /packages/v1/{packageId}\");\n },\n /**\n * Delete a package\n *\n * @param packageId The id of the package.\n * @param options Request options (abort signal).\n */\n async delete(packageId: string, options?: SpacebringRequestOptions): Promise<undefined> {\n return unwrap(await client.DELETE(\"/packages/v1/{packageId}\", { params: { path: { packageId } }, signal: options?.signal }), \"DELETE /packages/v1/{packageId}\");\n },\n };\n}\n","// AUTO-GENERATED by codegen/generate-facade.ts — DO NOT EDIT.\n// Regenerate with `npm run generate:facade`.\nimport type { Client } from \"openapi-fetch\";\nimport { paginate, unwrap, unwrapProp, type SpacebringDefaults, type SpacebringRequestOptions } from \"../../core.js\";\nimport type { components, operations, paths } from \"../schema.js\";\n\n/** A Plan entity as returned by the Spacebring API. */\nexport type Plan = NonNullable<components[\"schemas\"][\"plan\"]>;\n\n/** Query parameters for `sb.plans.list()`. */\nexport interface GetPlansQuery {\n /** @deprecated Only applies together with resourceRef. Filter the plans.tiers of `GET /resources/v1/{resourceId}` by their entire field instead. When listing plans for a resource, filter by entire resource vs partial tiers. Pass true or false. */\n entire?: string;\n /** Maximum number of plans per page. Defaults to 25 when omitted or invalid; values above 100 are capped at 100. */\n limit?: number;\n /** UUID of the location whose plans to list. */\n locationRef?: string;\n /** Pagination token from nextPageToken in a previous response. Keep the same filters when fetching the next page. */\n nextPageToken?: string;\n /** @deprecated Read plans.tiers from `GET /resources/v1/{resourceId}` instead. UUID of the resource whose tier plans to list. */\n resourceRef?: string;\n}\n\n/** Request body for `sb.plans.create()`. */\nexport type CreatePlanBody = NonNullable<NonNullable<operations[\"createPlan\"][\"requestBody\"]>[\"content\"][\"application/json\"][\"plan\"]>;\n\n/** Request body for `sb.plans.update()`. */\nexport type UpdatePlanBody = NonNullable<NonNullable<operations[\"updatePlan\"][\"requestBody\"]>[\"content\"][\"application/json\"][\"plan\"]>;\n\nexport function createPlans(client: Client<paths>, defaults: SpacebringDefaults) {\n return {\n /**\n * Retrieve plans\n *\n * Retrieve all plans.\n */\n async list(query?: GetPlansQuery, options?: SpacebringRequestOptions): Promise<{ nextPageToken?: string; plans: Plan[]; searchQueryNext?: string }> {\n return unwrap(await client.GET(\"/plans/v1\", { params: { query }, signal: options?.signal }), \"GET /plans/v1\");\n },\n /**\n * Retrieve plans — iterates every item across all pages.\n *\n * Retrieve all plans.\n */\n iterate(query?: Omit<GetPlansQuery, \"nextPageToken\">, options?: SpacebringRequestOptions): AsyncGenerator<Plan, void, undefined> {\n return paginate(\n async (nextPageToken: string | undefined) =>\n unwrap(await client.GET(\"/plans/v1\", { params: { query: { ...query, nextPageToken } }, signal: options?.signal }), \"GET /plans/v1\"),\n \"plans\",\n );\n },\n /**\n * Retrieve a plan\n *\n * Retrieve a certain plan.\n *\n * @param planId The id of the plan.\n * @param options Request options (abort signal).\n */\n async get(planId: string, options?: SpacebringRequestOptions): Promise<Plan> {\n return unwrapProp(await client.GET(\"/plans/v1/{planId}\", { params: { path: { planId } }, signal: options?.signal }), \"plan\", \"GET /plans/v1/{planId}\");\n },\n /** Create a plan */\n async create(plan: CreatePlanBody, options?: SpacebringRequestOptions): Promise<Plan> {\n return unwrapProp(await client.POST(\"/plans/v1\", { body: { plan }, signal: options?.signal }), \"plan\", \"POST /plans/v1\");\n },\n /**\n * Update a plan\n *\n * Update a certain plan.\n *\n * @param planId The id of the plan.\n * @param plan The `plan` payload.\n * @param options Request options (abort signal).\n */\n async update(planId: string, plan: UpdatePlanBody, options?: SpacebringRequestOptions): Promise<undefined> {\n return unwrap(await client.PATCH(\"/plans/v1/{planId}\", { params: { path: { planId } }, body: { plan }, signal: options?.signal }), \"PATCH /plans/v1/{planId}\");\n },\n /**\n * Delete a plan\n *\n * Delete a certain plan.\n *\n * @param planId The id of the plan.\n * @param options Request options (abort signal).\n */\n async delete(planId: string, options?: SpacebringRequestOptions): Promise<undefined> {\n return unwrap(await client.DELETE(\"/plans/v1/{planId}\", { params: { path: { planId } }, signal: options?.signal }), \"DELETE /plans/v1/{planId}\");\n },\n };\n}\n","// AUTO-GENERATED by codegen/generate-facade.ts — DO NOT EDIT.\n// Regenerate with `npm run generate:facade`.\nimport type { Client } from \"openapi-fetch\";\nimport { paginate, unwrap, type SpacebringDefaults, type SpacebringRequestOptions } from \"../../core.js\";\nimport type { components, paths } from \"../schema.js\";\n\n/** A Registration entity as returned by the Spacebring API. */\nexport type Registration = NonNullable<components[\"schemas\"][\"registration\"]>;\n\n/** Query parameters for `sb.registrations.list()`. */\nexport interface GetRegistrationsQuery {\n /** The number of items to return */\n limit?: number;\n /** Token to retrieve the next page of results. */\n nextPageToken?: string;\n}\n\nexport function createRegistrations(client: Client<paths>, defaults: SpacebringDefaults) {\n return {\n /**\n * Retrieve registrations\n *\n * Retrieve all registrations in network.\n */\n async list(query?: GetRegistrationsQuery, options?: SpacebringRequestOptions): Promise<{ registrations?: Registration[]; nextPageToken?: string; searchQueryNext?: string }> {\n return unwrap(await client.GET(\"/registrations/v1\", { params: { query }, signal: options?.signal }), \"GET /registrations/v1\");\n },\n /**\n * Retrieve registrations — iterates every item across all pages.\n *\n * Retrieve all registrations in network.\n */\n iterate(query?: Omit<GetRegistrationsQuery, \"nextPageToken\">, options?: SpacebringRequestOptions): AsyncGenerator<Registration, void, undefined> {\n return paginate(\n async (nextPageToken: string | undefined) =>\n unwrap(await client.GET(\"/registrations/v1\", { params: { query: { ...query, nextPageToken } }, signal: options?.signal }), \"GET /registrations/v1\"),\n \"registrations\",\n );\n },\n };\n}\n","// AUTO-GENERATED by codegen/generate-facade.ts — DO NOT EDIT.\n// Regenerate with `npm run generate:facade`.\nimport type { Client } from \"openapi-fetch\";\nimport { paginate, unwrap, unwrapProp, type SpacebringDefaults, type SpacebringRequestOptions } from \"../../core.js\";\nimport type { operations, paths } from \"../schema.js\";\n\n/** A Assignment entity as returned by the Spacebring API. */\nexport type Assignment = NonNullable<operations[\"getAssignments\"][\"responses\"][200][\"content\"][\"application/json\"][\"assignments\"]>[number];\n\n/** A Booking entity as returned by the Spacebring API. */\nexport type Booking = NonNullable<operations[\"getBooking\"][\"responses\"][200][\"content\"][\"application/json\"][\"booking\"]>;\n\n/** A Resource entity as returned by the Spacebring API. */\nexport type Resource = NonNullable<operations[\"getResource\"][\"responses\"][200][\"content\"][\"application/json\"][\"resource\"]>;\n\n/** Query parameters for `sb.resources.assignments.list()`. */\nexport interface GetAssignmentsQuery {\n /** UUID of the location whose resource assignments to list. */\n locationRef?: string;\n}\n\n/** Query parameters for `sb.resources.bookings.list()`. */\nexport interface GetBookingsQuery {\n /** Matches bookings with endDate strictly after this date (ISO 8601). */\n \"endDate[gt]\"?: string;\n /** Matches bookings with endDate on or after this date (ISO 8601). */\n \"endDate[gte]\"?: string;\n /** Matches bookings with endDate strictly before this date (ISO 8601). */\n \"endDate[lt]\"?: string;\n /** Matches bookings with endDate on or before this date (ISO 8601). */\n \"endDate[lte]\"?: string;\n /** Matches bookings with startDate strictly after this date (ISO 8601). */\n \"startDate[gt]\"?: string;\n /** Matches bookings with startDate on or after this date (ISO 8601). */\n \"startDate[gte]\"?: string;\n /** Matches bookings with startDate strictly before this date (ISO 8601). */\n \"startDate[lt]\"?: string;\n /** Matches bookings with startDate on or before this date (ISO 8601). */\n \"startDate[lte]\"?: string;\n /** UUID of the customer whose bookings to list. */\n customerRef?: string;\n /** @deprecated Use bracket-notation fields endDate[gt], endDate[gte], endDate[lt], endDate[lte] instead. */\n endDate?: string;\n /** @deprecated Use status \"canceled\" instead. Set to \"true\" to include deleted bookings. */\n includeDeleted?: string;\n /** Maximum number of bookings per page. Defaults to 25 when omitted or invalid; values above 100 are capped at 100. */\n limit?: number;\n /** UUID of the location whose bookings to list. Required when resourceRef is omitted. */\n locationRef?: string;\n /** @deprecated Use customerRef instead. UUID of the customer whose bookings to list. */\n membershipRefOwner?: string;\n /** Pagination token from nextPageToken in a previous response. Keep the same filters when fetching the next page. */\n nextPageToken?: string;\n /** Sort order as `:`, where field is startDate, endDate or createDate and direction is asc or desc. */\n order?: string;\n /** UUID of the resource whose bookings to list. Required when locationRef is omitted. */\n resourceRef?: string;\n /** Set to \"true\" to expand repeating bookings into single occurrences. */\n singleBookings?: string;\n /** @deprecated Use bracket-notation fields startDate[gt], startDate[gte], startDate[lt], startDate[lte] instead. */\n startDate?: string;\n /** Comma-separated list of booking statuses to filter by, e.g. `confirmed,canceled`. Valid values: tentative, confirmed, canceled. Defaults to tentative, confirmed. */\n status?: string;\n /** Comma-separated list of resource types to filter by, e.g. `room,hotDesk`. Valid values: hotDesk, dedicatedDesk, office, parkingLot, room, conferenceRoom, eventSpace, meetingRoom, phoneBooth, studio, equipment, station. Defaults to all bookable types. */\n type?: string;\n /** @deprecated Use type instead. */\n types?: string;\n}\n\n/** Query parameters for `sb.resources.list()`. */\nexport interface GetResourcesQuery {\n /** Maximum number of resources per page. Defaults to 25 when omitted or invalid; values above 100 are capped at 100. */\n limit?: number;\n /** UUID of the location whose resources to list. */\n locationRef: string;\n /** Pagination token from nextPageToken in a previous response. Keep the same filters when fetching the next page. */\n nextPageToken?: string;\n /** Comma-separated list of resource types to filter by, e.g. `room,hotDesk`. Valid values: dedicatedDesk, equipment, hotDesk, office, parkingLot, room, station, conferenceRoom, eventSpace, meetingRoom, phoneBooth, studio. Defaults to all bookable types. */\n types?: string;\n}\n\n/** Request body for `sb.resources.assignments.create()`. */\nexport type CreateAssignmentBody = NonNullable<NonNullable<operations[\"createAssignment\"][\"requestBody\"]>[\"content\"][\"application/json\"][\"assignment\"]>;\n\n/** Request body for `sb.resources.bookings.create()`. */\nexport type CreateBookingBody = NonNullable<NonNullable<operations[\"createBooking\"][\"requestBody\"]>[\"content\"][\"application/json\"][\"booking\"]>;\n\n/** Request body for `sb.resources.create()`. */\nexport type CreateResourceBody = NonNullable<NonNullable<operations[\"createResource\"][\"requestBody\"]>[\"content\"][\"application/json\"][\"resource\"]>;\n\n/** Request body for `sb.resources.assignments.update()`. */\nexport type PatchAssignmentBody = NonNullable<NonNullable<operations[\"patchAssignment\"][\"requestBody\"]>[\"content\"][\"application/json\"][\"assignment\"]>;\n\n/** Request body for `sb.resources.bookings.update()`. */\nexport type PatchBookingBody = NonNullable<operations[\"patchBooking\"][\"requestBody\"]>[\"content\"][\"application/json\"];\n\n/** Request body for `sb.resources.update()`. */\nexport type PatchResourceBody = NonNullable<NonNullable<operations[\"patchResource\"][\"requestBody\"]>[\"content\"][\"application/json\"][\"resource\"]>;\n\nexport function createResources(client: Client<paths>, defaults: SpacebringDefaults) {\n return {\n /**\n * Retrieve resources\n *\n * Retrieve resources in the location. Resources represent all kind of bookable items like rooms, hot desks, dedicated desks, parking lots.\n */\n async list(query: GetResourcesQuery, options?: SpacebringRequestOptions): Promise<{ nextPageToken?: string; resources: Resource[]; searchQueryNext?: string }> {\n return unwrap(await client.GET(\"/resources/v1\", { params: { query }, signal: options?.signal }), \"GET /resources/v1\");\n },\n /**\n * Retrieve resources — iterates every item across all pages.\n *\n * Retrieve resources in the location. Resources represent all kind of bookable items like rooms, hot desks, dedicated desks, parking lots.\n */\n iterate(query: Omit<GetResourcesQuery, \"nextPageToken\">, options?: SpacebringRequestOptions): AsyncGenerator<Resource, void, undefined> {\n return paginate(\n async (nextPageToken: string | undefined) =>\n unwrap(await client.GET(\"/resources/v1\", { params: { query: { ...query, nextPageToken } }, signal: options?.signal }), \"GET /resources/v1\"),\n \"resources\",\n );\n },\n /**\n * Get a resource\n *\n * Get a certain resource.\n *\n * @param resourceId The id of the resource.\n * @param options Request options (abort signal).\n */\n async get(resourceId: string, options?: SpacebringRequestOptions): Promise<Resource> {\n return unwrapProp(await client.GET(\"/resources/v1/{resourceId}\", { params: { path: { resourceId } }, signal: options?.signal }), \"resource\", \"GET /resources/v1/{resourceId}\");\n },\n /**\n * Create a resource\n *\n * Create a new resource in a location. The request body must match the schema exactly—unknown properties are rejected.\n */\n async create(resource: CreateResourceBody, options?: SpacebringRequestOptions): Promise<Resource> {\n return unwrapProp(await client.POST(\"/resources/v1\", { body: { resource }, signal: options?.signal }), \"resource\", \"POST /resources/v1\");\n },\n /**\n * Patch a resource\n *\n * Patch a certain resource.\n *\n * @param resourceId The id of the resource.\n * @param resource The `resource` payload.\n * @param options Request options (abort signal).\n */\n async update(resourceId: string, resource: PatchResourceBody, options?: SpacebringRequestOptions): Promise<undefined> {\n return unwrap(await client.PATCH(\"/resources/v1/{resourceId}\", { params: { path: { resourceId } }, body: { resource }, signal: options?.signal }), \"PATCH /resources/v1/{resourceId}\");\n },\n assignments: {\n /**\n * Retrieve resource assignments\n *\n * Retrieve resource assignments in the location. An assignment links a resource, or a number of seats in it, to a company or a member for the duration of a subscription.\n */\n async list(query?: GetAssignmentsQuery, options?: SpacebringRequestOptions): Promise<Assignment[]> {\n return unwrapProp(await client.GET(\"/resources/v1/assignments\", { params: { query }, signal: options?.signal }), \"assignments\", \"GET /resources/v1/assignments\");\n },\n /**\n * Create a resource assignment\n *\n * Create a resource assignment. An assignment links a resource, or a number of seats in it, to a company or a member.\n */\n async create(assignment: CreateAssignmentBody, options?: SpacebringRequestOptions): Promise<Assignment> {\n return unwrapProp(await client.POST(\"/resources/v1/assignments\", { body: { assignment }, signal: options?.signal }), \"assignment\", \"POST /resources/v1/assignments\");\n },\n /**\n * Update a resource assignment\n *\n * Update a resource assignment. Fields left out of the request keep their current value.\n *\n * @param assignmentId The id of the assignment.\n * @param assignment The `assignment` payload.\n * @param options Request options (abort signal).\n */\n async update(assignmentId: string, assignment: PatchAssignmentBody, options?: SpacebringRequestOptions): Promise<undefined> {\n return unwrap(await client.PATCH(\"/resources/v1/assignments/{assignmentId}\", { params: { path: { assignmentId } }, body: { assignment }, signal: options?.signal }), \"PATCH /resources/v1/assignments/{assignmentId}\");\n },\n },\n bookings: {\n /**\n * Retrieve bookings\n *\n * Retrieve all bookings of resources.\n */\n async list(query?: GetBookingsQuery, options?: SpacebringRequestOptions): Promise<{ bookings: Booking[]; nextPageToken?: string; searchQueryNext?: string }> {\n return unwrap(await client.GET(\"/resources/bookings/v1\", { params: { query }, signal: options?.signal }), \"GET /resources/bookings/v1\");\n },\n /**\n * Retrieve bookings — iterates every item across all pages.\n *\n * Retrieve all bookings of resources.\n */\n iterate(query?: Omit<GetBookingsQuery, \"nextPageToken\">, options?: SpacebringRequestOptions): AsyncGenerator<Booking, void, undefined> {\n return paginate(\n async (nextPageToken: string | undefined) =>\n unwrap(await client.GET(\"/resources/bookings/v1\", { params: { query: { ...query, nextPageToken } }, signal: options?.signal }), \"GET /resources/bookings/v1\"),\n \"bookings\",\n );\n },\n /**\n * Get a booking\n *\n * @param bookingId ID of the booking. For a single occurrence of a repeating booking, append the occurrence date: `_`.\n * @param options Request options (abort signal).\n */\n async get(bookingId: string, options?: SpacebringRequestOptions): Promise<Booking> {\n return unwrapProp(await client.GET(\"/resources/bookings/v1/{bookingId}\", { params: { path: { bookingId } }, signal: options?.signal }), \"booking\", \"GET /resources/bookings/v1/{bookingId}\");\n },\n /** Create a booking */\n async create(booking: CreateBookingBody, options?: SpacebringRequestOptions): Promise<Booking> {\n return unwrapProp(await client.POST(\"/resources/bookings/v1\", { body: { booking }, signal: options?.signal }), \"booking\", \"POST /resources/bookings/v1\");\n },\n /**\n * Update a booking\n *\n * Update a booking. Fields left out of the request keep their current value.\n *\n * @param bookingId ID of the booking. For a single occurrence of a repeating booking, append the occurrence date: `_`.\n * @param body Request body.\n * @param options Request options (abort signal).\n */\n async update(bookingId: string, body: PatchBookingBody, options?: SpacebringRequestOptions): Promise<Booking> {\n return unwrapProp(await client.PATCH(\"/resources/bookings/v1/{bookingId}\", { params: { path: { bookingId } }, body, signal: options?.signal }), \"booking\", \"PATCH /resources/bookings/v1/{bookingId}\");\n },\n /**\n * Delete a booking\n *\n * @param bookingId ID of the booking. For a single occurrence of a repeating booking, append the occurrence date: `_`.\n * @param options Request options (abort signal).\n */\n async delete(bookingId: string, options?: SpacebringRequestOptions): Promise<undefined> {\n return unwrap(await client.DELETE(\"/resources/bookings/v1/{bookingId}\", { params: { path: { bookingId } }, signal: options?.signal }), \"DELETE /resources/bookings/v1/{bookingId}\");\n },\n },\n };\n}\n","// AUTO-GENERATED by codegen/generate-facade.ts — DO NOT EDIT.\n// Regenerate with `npm run generate:facade`.\nimport type { Client } from \"openapi-fetch\";\nimport { paginate, unwrap, unwrapProp, type SpacebringDefaults, type SpacebringRequestOptions } from \"../../core.js\";\nimport type { components, operations, paths } from \"../schema.js\";\n\n/** A Order entity as returned by the Spacebring API. */\nexport type Order = NonNullable<operations[\"getOrder\"][\"responses\"][200][\"content\"][\"application/json\"][\"order\"]>;\n\n/** A Product entity as returned by the Spacebring API. */\nexport type Product = NonNullable<components[\"schemas\"][\"product\"]>;\n\n/** A ShopCategory entity as returned by the Spacebring API. */\nexport type ShopCategory = NonNullable<components[\"schemas\"][\"shopCategory\"]>;\n\n/** Query parameters for `sb.shop.orders.list()`. */\nexport interface GetOrdersQuery {\n /** Comma-separated shop category UUIDs used to filter orders, e.g. `uuid1,uuid2`. */\n categoryRef?: string;\n /** Filter orders created on or after this date (ISO 8601). Use with createDate[lte] for a range. */\n \"createDate[gte]\"?: string;\n /** Filter orders created on or before this date (ISO 8601). Use with createDate[gte] for a range. */\n \"createDate[lte]\"?: string;\n /** UUID of the customer whose orders to list. */\n customerRef?: string;\n /** Maximum number of orders per page. Defaults to 25 when omitted or invalid; values above 100 are capped at 100. */\n limit?: number;\n /** UUID of the location whose orders to list. */\n locationRef?: string;\n /** Pagination token from nextPageToken in a previous response. Keep the same filters when fetching the next page. */\n nextPageToken?: string;\n /** Comma-separated product UUIDs used to filter orders, e.g. `uuid1,uuid2`. */\n productRef?: string;\n /** Filter by order status. Comma-separated values, e.g. `new,inProgress`. Defaults to `new`, `inProgress`, and `completed` when omitted.\n\n Supported values:\n - **new** — placed, awaiting fulfillment\n - **inProgress** — being fulfilled\n - **completed** — fulfilled\n - **canceled** — canceled */\n status?: string;\n /** UUID of the user whose orders to list. */\n userRef?: string;\n}\n\n/** Query parameters for `sb.shop.products.list()`. */\nexport interface GetProductsQuery {\n /** UUID of the shop category. */\n categoryRef?: string;\n /** Comma-separated product UUIDs, e.g. `uuid1,uuid2`. Up to 25 ids per request. */\n id?: string;\n /** Maximum number of products per page. Defaults to 25 when omitted or invalid; values above 100 are capped at 100. */\n limit?: number;\n /** UUID of the location. */\n locationRef?: string;\n /** Pagination token from nextPageToken in a previous response. Keep the same filters when fetching the next page. */\n nextPageToken?: string;\n}\n\n/** Query parameters for `sb.shop.categories.list()`. */\nexport interface GetShopCategoriesQuery {\n /** UUID of the location whose shop categories to list. */\n locationRef: string;\n}\n\n/** Request body for `sb.shop.products.create()`. */\nexport type CreateProductBody = NonNullable<NonNullable<operations[\"createProduct\"][\"requestBody\"]>[\"content\"][\"application/json\"][\"product\"]>;\n\n/** Request body for `sb.shop.categories.create()`. */\nexport type CreateShopCategoryBody = NonNullable<NonNullable<operations[\"createShopCategory\"][\"requestBody\"]>[\"content\"][\"application/json\"][\"category\"]>;\n\n/** Request body for `sb.shop.products.update()`. */\nexport type UpdateProductBody = NonNullable<NonNullable<operations[\"updateProduct\"][\"requestBody\"]>[\"content\"][\"application/json\"][\"product\"]>;\n\n/** Request body for `sb.shop.categories.update()`. */\nexport type UpdateShopCategoryBody = NonNullable<NonNullable<operations[\"updateShopCategory\"][\"requestBody\"]>[\"content\"][\"application/json\"][\"category\"]>;\n\nexport function createShop(client: Client<paths>, defaults: SpacebringDefaults) {\n return {\n categories: {\n /**\n * Retrieve categories\n *\n * Retrieve all shop categories in the location.\n */\n async list(query: GetShopCategoriesQuery, options?: SpacebringRequestOptions): Promise<ShopCategory[]> {\n return unwrapProp(await client.GET(\"/shop/categories/v1\", { params: { query }, signal: options?.signal }), \"categories\", \"GET /shop/categories/v1\");\n },\n /**\n * Get a category\n *\n * Get a shop category.\n *\n * @param categoryId The id of the shop category.\n * @param options Request options (abort signal).\n */\n async get(categoryId: string, options?: SpacebringRequestOptions): Promise<ShopCategory> {\n return unwrapProp(await client.GET(\"/shop/categories/v1/{categoryId}\", { params: { path: { categoryId } }, signal: options?.signal }), \"category\", \"GET /shop/categories/v1/{categoryId}\");\n },\n /**\n * Create a category\n *\n * Create a shop category.\n */\n async create(category: CreateShopCategoryBody, options?: SpacebringRequestOptions): Promise<ShopCategory> {\n return unwrapProp(await client.POST(\"/shop/categories/v1\", { body: { category }, signal: options?.signal }), \"category\", \"POST /shop/categories/v1\");\n },\n /**\n * Update a category\n *\n * Update a shop category.\n *\n * @param categoryId The id of the shop category\n * @param category The `category` payload.\n * @param options Request options (abort signal).\n */\n async update(categoryId: string, category: UpdateShopCategoryBody, options?: SpacebringRequestOptions): Promise<ShopCategory> {\n return unwrapProp(await client.PUT(\"/shop/categories/v1/{categoryId}\", { params: { path: { categoryId } }, body: { category }, signal: options?.signal }), \"category\", \"PUT /shop/categories/v1/{categoryId}\");\n },\n /**\n * Delete a category\n *\n * Delete a shop category.\n *\n * @param categoryId The id of the shop category\n * @param options Request options (abort signal).\n */\n async delete(categoryId: string, options?: SpacebringRequestOptions): Promise<undefined> {\n return unwrap(await client.DELETE(\"/shop/categories/v1/{categoryId}\", { params: { path: { categoryId } }, signal: options?.signal }), \"DELETE /shop/categories/v1/{categoryId}\");\n },\n },\n orders: {\n /**\n * Retrieve orders\n *\n * Retrieve all orders of products from shop.\n */\n async list(query?: GetOrdersQuery, options?: SpacebringRequestOptions): Promise<{ nextPageToken?: string; orders: Order[]; searchQueryNext?: string }> {\n return unwrap(await client.GET(\"/shop/orders/v1\", { params: { query }, signal: options?.signal }), \"GET /shop/orders/v1\");\n },\n /**\n * Retrieve orders — iterates every item across all pages.\n *\n * Retrieve all orders of products from shop.\n */\n iterate(query?: Omit<GetOrdersQuery, \"nextPageToken\">, options?: SpacebringRequestOptions): AsyncGenerator<Order, void, undefined> {\n return paginate(\n async (nextPageToken: string | undefined) =>\n unwrap(await client.GET(\"/shop/orders/v1\", { params: { query: { ...query, nextPageToken } }, signal: options?.signal }), \"GET /shop/orders/v1\"),\n \"orders\",\n );\n },\n /**\n * Get an order\n *\n * Get a certain order.\n *\n * @param orderId The id of the order.\n * @param options Request options (abort signal).\n */\n async get(orderId: string, options?: SpacebringRequestOptions): Promise<Order> {\n return unwrapProp(await client.GET(\"/shop/orders/v1/{orderId}\", { params: { path: { orderId } }, signal: options?.signal }), \"order\", \"GET /shop/orders/v1/{orderId}\");\n },\n },\n products: {\n /**\n * Retrieve products\n *\n * Retrieve products from shop.\n */\n async list(query?: GetProductsQuery, options?: SpacebringRequestOptions): Promise<{ nextPageToken?: string; products: Product[]; searchQueryNext?: string }> {\n return unwrap(await client.GET(\"/shop/products/v1\", { params: { query }, signal: options?.signal }), \"GET /shop/products/v1\");\n },\n /**\n * Retrieve products — iterates every item across all pages.\n *\n * Retrieve products from shop.\n */\n iterate(query?: Omit<GetProductsQuery, \"nextPageToken\">, options?: SpacebringRequestOptions): AsyncGenerator<Product, void, undefined> {\n return paginate(\n async (nextPageToken: string | undefined) =>\n unwrap(await client.GET(\"/shop/products/v1\", { params: { query: { ...query, nextPageToken } }, signal: options?.signal }), \"GET /shop/products/v1\"),\n \"products\",\n );\n },\n /**\n * Get a product\n *\n * Get a certain product.\n *\n * @param productId The id of the product.\n * @param options Request options (abort signal).\n */\n async get(productId: string, options?: SpacebringRequestOptions): Promise<Product> {\n return unwrapProp(await client.GET(\"/shop/products/v1/{productId}\", { params: { path: { productId } }, signal: options?.signal }), \"product\", \"GET /shop/products/v1/{productId}\");\n },\n /**\n * Create a product\n *\n * Create a product in shop.\n */\n async create(product: CreateProductBody, options?: SpacebringRequestOptions): Promise<Product> {\n return unwrapProp(await client.POST(\"/shop/products/v1\", { body: { product }, signal: options?.signal }), \"product\", \"POST /shop/products/v1\");\n },\n /**\n * Update a product\n *\n * Update a certain product.\n *\n * @param productId The id of the product.\n * @param product The `product` payload.\n * @param options Request options (abort signal).\n */\n async update(productId: string, product: UpdateProductBody, options?: SpacebringRequestOptions): Promise<Product> {\n return unwrapProp(await client.PUT(\"/shop/products/v1/{productId}\", { params: { path: { productId } }, body: { product }, signal: options?.signal }), \"product\", \"PUT /shop/products/v1/{productId}\");\n },\n /**\n * Delete a product\n *\n * Delete a certain product.\n *\n * @param productId The id of the product.\n * @param options Request options (abort signal).\n */\n async delete(productId: string, options?: SpacebringRequestOptions): Promise<undefined> {\n return unwrap(await client.DELETE(\"/shop/products/v1/{productId}\", { params: { path: { productId } }, signal: options?.signal }), \"DELETE /shop/products/v1/{productId}\");\n },\n },\n };\n}\n","// AUTO-GENERATED by codegen/generate-facade.ts — DO NOT EDIT.\n// Regenerate with `npm run generate:facade`.\nimport type { Client } from \"openapi-fetch\";\nimport { paginate, unwrap, unwrapProp, type SpacebringDefaults, type SpacebringRequestOptions } from \"../../core.js\";\nimport type { components, operations, paths } from \"../schema.js\";\n\n/** A Subscription entity as returned by the Spacebring API. */\nexport type Subscription = NonNullable<components[\"schemas\"][\"subscription\"]>;\n\n/** Query parameters for `sb.subscriptions.list()`. */\nexport interface GetSubscriptionsQuery {\n /** Filter subscriptions created on or after this date (ISO 8601). Use with createDate[lte] for a range. */\n \"createDate[gte]\"?: string;\n /** Filter subscriptions created on or before this date (ISO 8601). Use with createDate[gte] for a range. */\n \"createDate[lte]\"?: string;\n /** UUID of the customer whose subscriptions to list. */\n customerRef?: string;\n /** Maximum number of subscriptions per page. Defaults to 25 when omitted or invalid; values above 100 are capped at 100. */\n limit?: number;\n /** UUID of the location whose subscriptions to list. */\n locationRef?: string;\n /** Pagination token from nextPageToken in a previous response. Keep the same filters when fetching the next page. */\n nextPageToken?: string;\n /** Sort order for results. */\n order?: string;\n /** UUID of the plan to filter subscriptions by. */\n planRef?: string;\n /** Filter by subscription status. Comma-separated values, e.g. `active,scheduled`. Defaults to `active`, `scheduled`, and `incomplete` when omitted.\n\n Supported values:\n - **active** — currently active\n - **scheduled** — scheduled to start\n - **incomplete** — pending setup or payment\n - **incompleteExpired** — incomplete and expired\n - **canceled** — canceled */\n status?: string;\n}\n\n/** Request body for `sb.subscriptions.create()`. */\nexport type CreateSubscriptionBody = NonNullable<operations[\"createSubscription\"][\"requestBody\"]>[\"content\"][\"application/json\"];\n\n/** Request body for `sb.subscriptions.createItem()`. */\nexport type CreateSubscriptionItemBody = NonNullable<NonNullable<operations[\"createSubscriptionItem\"][\"requestBody\"]>[\"content\"][\"application/json\"][\"item\"]>;\n\n/** Request body for `sb.subscriptions.update()`. */\nexport type UpdateSubscriptionBody = NonNullable<NonNullable<operations[\"updateSubscription\"][\"requestBody\"]>[\"content\"][\"application/json\"][\"subscription\"]>;\n\n/** Request body for `sb.subscriptions.updateItem()`. */\nexport type UpdateSubscriptionItemBody = NonNullable<NonNullable<operations[\"updateSubscriptionItem\"][\"requestBody\"]>[\"content\"][\"application/json\"][\"item\"]>;\n\nexport function createSubscriptions(client: Client<paths>, defaults: SpacebringDefaults) {\n return {\n /** Retrieve subscriptions */\n async list(query?: GetSubscriptionsQuery, options?: SpacebringRequestOptions): Promise<{ nextPageToken?: string; searchQueryNext?: string; subscriptions: Subscription[] }> {\n return unwrap(await client.GET(\"/subscriptions/v1\", { params: { query }, signal: options?.signal }), \"GET /subscriptions/v1\");\n },\n /** Retrieve subscriptions — iterates every item across all pages. */\n iterate(query?: Omit<GetSubscriptionsQuery, \"nextPageToken\">, options?: SpacebringRequestOptions): AsyncGenerator<Subscription, void, undefined> {\n return paginate(\n async (nextPageToken: string | undefined) =>\n unwrap(await client.GET(\"/subscriptions/v1\", { params: { query: { ...query, nextPageToken } }, signal: options?.signal }), \"GET /subscriptions/v1\"),\n \"subscriptions\",\n );\n },\n /**\n * Retrieve a subscription\n *\n * Retrieve a certain subscription.\n *\n * @param subscriptionId The id of the subscription.\n * @param options Request options (abort signal).\n */\n async get(subscriptionId: string, options?: SpacebringRequestOptions): Promise<Subscription> {\n return unwrapProp(await client.GET(\"/subscriptions/v1/{subscriptionId}\", { params: { path: { subscriptionId } }, signal: options?.signal }), \"subscription\", \"GET /subscriptions/v1/{subscriptionId}\");\n },\n /**\n * Create a subscription\n *\n * Create a subscription for a membership or company.\n */\n async create(body: CreateSubscriptionBody, options?: SpacebringRequestOptions): Promise<Subscription> {\n return unwrapProp(await client.POST(\"/subscriptions/v1\", { body, signal: options?.signal }), \"subscription\", \"POST /subscriptions/v1\");\n },\n /**\n * Update a subscription\n *\n * Update a certain subscription.\n *\n * @param subscriptionId The id of the subscription.\n * @param subscription The `subscription` payload.\n * @param options Request options (abort signal).\n */\n async update(subscriptionId: string, subscription: UpdateSubscriptionBody, options?: SpacebringRequestOptions): Promise<undefined> {\n return unwrap(await client.PATCH(\"/subscriptions/v1/{subscriptionId}\", { params: { path: { subscriptionId } }, body: { subscription }, signal: options?.signal }), \"PATCH /subscriptions/v1/{subscriptionId}\");\n },\n /**\n * Delete a subscription\n *\n * Delete a certain subscription.\n *\n * @param subscriptionId The id of the subscription.\n * @param options Request options (abort signal).\n */\n async delete(subscriptionId: string, options?: SpacebringRequestOptions): Promise<undefined> {\n return unwrap(await client.DELETE(\"/subscriptions/v1/{subscriptionId}\", { params: { path: { subscriptionId } }, signal: options?.signal }), \"DELETE /subscriptions/v1/{subscriptionId}\");\n },\n /**\n * Create a subscription item\n *\n * @param subscriptionId The id of the subscription.\n * @param item The `item` payload.\n * @param options Request options (abort signal).\n */\n async createItem(subscriptionId: string, item: CreateSubscriptionItemBody, options?: SpacebringRequestOptions): Promise<Subscription> {\n return unwrapProp(await client.POST(\"/subscriptions/v1/{subscriptionId}/items\", { params: { path: { subscriptionId } }, body: { item }, signal: options?.signal }), \"subscription\", \"POST /subscriptions/v1/{subscriptionId}/items\");\n },\n /**\n * Delete a subscription item\n *\n * @param subscriptionId The id of the subscription.\n * @param itemId The id of the subscription item.\n * @param options Request options (abort signal).\n */\n async deleteItem(subscriptionId: string, itemId: string, options?: SpacebringRequestOptions): Promise<undefined> {\n return unwrap(await client.DELETE(\"/subscriptions/v1/{subscriptionId}/items/{itemId}\", { params: { path: { subscriptionId, itemId } }, signal: options?.signal }), \"DELETE /subscriptions/v1/{subscriptionId}/items/{itemId}\");\n },\n /**\n * Update a subscription item\n *\n * @param subscriptionId The id of the subscription.\n * @param itemId The id of the subscription item.\n * @param item The `item` payload.\n * @param options Request options (abort signal).\n */\n async updateItem(subscriptionId: string, itemId: string, item: UpdateSubscriptionItemBody, options?: SpacebringRequestOptions): Promise<undefined> {\n return unwrap(await client.PATCH(\"/subscriptions/v1/{subscriptionId}/items/{itemId}\", { params: { path: { subscriptionId, itemId } }, body: { item }, signal: options?.signal }), \"PATCH /subscriptions/v1/{subscriptionId}/items/{itemId}\");\n },\n };\n}\n","// AUTO-GENERATED by codegen/generate-facade.ts — DO NOT EDIT.\n// Regenerate with `npm run generate:facade`.\nimport type { Client } from \"openapi-fetch\";\nimport { paginate, unwrap, unwrapProp, type SpacebringDefaults, type SpacebringRequestOptions } from \"../../core.js\";\nimport type { components, operations, paths } from \"../schema.js\";\n\n/** A Activity entity as returned by the Spacebring API. */\nexport type Activity = NonNullable<components[\"schemas\"][\"ticketActivity\"]>;\n\n/** A SupportTicket entity as returned by the Spacebring API. */\nexport type SupportTicket = NonNullable<components[\"schemas\"][\"ticket\"]>;\n\n/** Query parameters for `sb.support.tickets.list()`. */\nexport interface GetSupportTicketsQuery {\n /** The id of the location. */\n locationRef: string;\n /** The number of items to return */\n limit?: number;\n /** Filter tickets by requester membership ids. Pass one UUID or multiple unique comma-separated UUIDs without spaces, e.g. `id` or `id1,id2,id3`, up to 100. The memberships must exist in the location. Admins can filter by any requester; other users only by their own membership. */\n membershipRefRequester?: string;\n /** Token to retrieve the next page of results. */\n nextPageToken?: string;\n /** The order of the tickets. createDate:asc, createDate:desc, updateDate:asc or updateDate:desc. Default: createDate:desc */\n order?: string;\n /** Filter tickets by assignee user ids. Pass one UUID or multiple unique comma-separated UUIDs without spaces, e.g. `id` or `id1,id2,id3`, up to 100. The users must exist. Only admins can filter by assignee. */\n userRefAssignee?: string;\n}\n\n/** Request body for `sb.support.tickets.create()`. */\nexport type CreateSupportTicketBody = NonNullable<NonNullable<operations[\"createSupportTicket\"][\"requestBody\"]>[\"content\"][\"application/json\"][\"ticket\"]>;\n\n/** Request body for `sb.support.tickets.comment.create()`. */\nexport type CreateSupportTicketCommentBody = NonNullable<NonNullable<operations[\"createSupportTicketComment\"][\"requestBody\"]>[\"content\"][\"application/json\"][\"activity\"]>;\n\n/** Request body for `sb.support.tickets.updateAssignee()`. */\nexport type UpdateSupportTicketAssigneeBody = NonNullable<NonNullable<operations[\"updateSupportTicketAssignee\"][\"requestBody\"]>[\"content\"][\"application/json\"][\"ticket\"]>;\n\n/** Request body for `sb.support.tickets.updateStatus()`. */\nexport type UpdateSupportTicketStatusBody = NonNullable<NonNullable<operations[\"updateSupportTicketStatus\"][\"requestBody\"]>[\"content\"][\"application/json\"][\"ticket\"]>;\n\n/** Request body for `sb.support.tickets.updateType()`. */\nexport type UpdateSupportTicketTypeBody = NonNullable<NonNullable<operations[\"updateSupportTicketType\"][\"requestBody\"]>[\"content\"][\"application/json\"][\"ticket\"]>;\n\nexport function createSupport(client: Client<paths>, defaults: SpacebringDefaults) {\n return {\n tickets: {\n /**\n * Retrieve tickets\n *\n * Retrieve all support tickets.\n */\n async list(query: GetSupportTicketsQuery, options?: SpacebringRequestOptions): Promise<{ nextPageToken?: string; searchQueryNext?: string; tickets?: SupportTicket[] }> {\n return unwrap(await client.GET(\"/support/tickets/v1\", { params: { query }, signal: options?.signal }), \"GET /support/tickets/v1\");\n },\n /**\n * Retrieve tickets — iterates every item across all pages.\n *\n * Retrieve all support tickets.\n */\n iterate(query: Omit<GetSupportTicketsQuery, \"nextPageToken\">, options?: SpacebringRequestOptions): AsyncGenerator<SupportTicket, void, undefined> {\n return paginate(\n async (nextPageToken: string | undefined) =>\n unwrap(await client.GET(\"/support/tickets/v1\", { params: { query: { ...query, nextPageToken } }, signal: options?.signal }), \"GET /support/tickets/v1\"),\n \"tickets\",\n );\n },\n /**\n * Retrieve a ticket\n *\n * Retrieve a support ticket.\n *\n * @param id The id of the ticket.\n * @param options Request options (abort signal).\n */\n async get(id: string, options?: SpacebringRequestOptions): Promise<{ activities?: Activity[]; ticket?: SupportTicket }> {\n return unwrap(await client.GET(\"/support/tickets/v1/{id}\", { params: { path: { id } }, signal: options?.signal }), \"GET /support/tickets/v1/{id}\");\n },\n /**\n * Create a ticket\n *\n * Create a support ticket.\n */\n async create(ticket: CreateSupportTicketBody, options?: SpacebringRequestOptions): Promise<{ activities?: Activity[]; ticket?: SupportTicket }> {\n return unwrap(await client.POST(\"/support/tickets/v1\", { body: { ticket }, signal: options?.signal }), \"POST /support/tickets/v1\");\n },\n /**\n * Update a ticket's assignee\n *\n * Update support ticket assignee.\n *\n * @param id The id of the ticket.\n * @param ticket The `ticket` payload.\n * @param options Request options (abort signal).\n */\n async updateAssignee(id: string, ticket: UpdateSupportTicketAssigneeBody, options?: SpacebringRequestOptions): Promise<{ activity?: Activity; ticket?: SupportTicket }> {\n return unwrap(await client.PUT(\"/support/tickets/v1/{id}/assignee\", { params: { path: { id } }, body: { ticket }, signal: options?.signal }), \"PUT /support/tickets/v1/{id}/assignee\");\n },\n /**\n * Update a ticket's status\n *\n * Update support ticket status.\n *\n * @param id The id of the ticket.\n * @param ticket The `ticket` payload.\n * @param options Request options (abort signal).\n */\n async updateStatus(id: string, ticket: UpdateSupportTicketStatusBody, options?: SpacebringRequestOptions): Promise<{ activity?: Activity; ticket?: SupportTicket }> {\n return unwrap(await client.PUT(\"/support/tickets/v1/{id}/status\", { params: { path: { id } }, body: { ticket }, signal: options?.signal }), \"PUT /support/tickets/v1/{id}/status\");\n },\n /**\n * Update a ticket's type\n *\n * Update a support ticket type.\n *\n * @param id The id of the ticket.\n * @param ticket The `ticket` payload.\n * @param options Request options (abort signal).\n */\n async updateType(id: string, ticket: UpdateSupportTicketTypeBody, options?: SpacebringRequestOptions): Promise<undefined> {\n return unwrap(await client.PATCH(\"/support/tickets/v1/{id}/type\", { params: { path: { id } }, body: { ticket }, signal: options?.signal }), \"PATCH /support/tickets/v1/{id}/type\");\n },\n comment: {\n /**\n * Create a ticket comment\n *\n * Create a support ticket comment.\n */\n async create(activity: CreateSupportTicketCommentBody, options?: SpacebringRequestOptions): Promise<Activity> {\n return unwrapProp(await client.POST(\"/support/tickets/v1/comment\", { body: { activity }, signal: options?.signal }), \"activity\", \"POST /support/tickets/v1/comment\");\n },\n /**\n * Delete a ticket comment\n *\n * Delete a support ticket comment.\n *\n * @param id The id of the ticket activity.\n * @param options Request options (abort signal).\n */\n async delete(id: string, options?: SpacebringRequestOptions): Promise<undefined> {\n return unwrap(await client.DELETE(\"/support/tickets/v1/comment/{id}\", { params: { path: { id } }, signal: options?.signal }), \"DELETE /support/tickets/v1/comment/{id}\");\n },\n },\n },\n };\n}\n","// AUTO-GENERATED by codegen/generate-facade.ts — DO NOT EDIT.\n// Regenerate with `npm run generate:facade`.\nimport type { Client } from \"openapi-fetch\";\nimport { paginate, unwrap, unwrapProp, type SpacebringDefaults, type SpacebringRequestOptions } from \"../../core.js\";\nimport type { components, operations, paths } from \"../schema.js\";\n\n/** A Balance entity as returned by the Spacebring API. */\nexport type Balance = NonNullable<components[\"schemas\"][\"balance\"]>;\n\n/** A CreditScheduledTransaction entity as returned by the Spacebring API. */\nexport type CreditScheduledTransaction = NonNullable<operations[\"getScheduledCreditsTransactions\"][\"responses\"][200][\"content\"][\"application/json\"][\"scheduledTransactions\"]>[number];\n\n/** A CreditTransaction entity as returned by the Spacebring API. */\nexport type CreditTransaction = NonNullable<components[\"schemas\"][\"transactionCredits\"]>;\n\n/** A DayPassScheduledTransaction entity as returned by the Spacebring API. */\nexport type DayPassScheduledTransaction = NonNullable<operations[\"getScheduledDayPassesTransactions\"][\"responses\"][200][\"content\"][\"application/json\"][\"scheduledTransactions\"]>[number];\n\n/** A DayPassTransaction entity as returned by the Spacebring API. */\nexport type DayPassTransaction = NonNullable<components[\"schemas\"][\"transactionDayPasses\"]>;\n\n/** A MoneyTransaction entity as returned by the Spacebring API. */\nexport type MoneyTransaction = NonNullable<components[\"schemas\"][\"transaction\"]>;\n\n/** Query parameters for `sb.transactions.credits.list()`. */\nexport interface GetCreditsTransactionsQuery {\n /** @deprecated Use customerRef instead. The id of the company to get transactions for. */\n companyRef?: string;\n /** Get transactions with greater or equal createDate. Example: createDate[gte]=2021-05-21T10:00:00Z */\n \"createDate[gte]\"?: string;\n /** Get transactions with less or equal createDate. Example: createDate[lte]=2021-05-21T10:00:00Z */\n \"createDate[lte]\"?: string;\n /** UUID of the company or membership whose credits transactions to list. */\n customerRef?: string;\n /** Maximum number of transactions per page. Defaults to 25 when omitted or invalid; values above 100 are capped at 100. */\n limit?: number;\n /** UUID of the location whose credits transactions to list. */\n locationRef?: string;\n /** @deprecated Use customerRef instead. The id of the membership to get transactions for. */\n membershipRef?: string;\n /** Token to retrieve the next page of results. */\n nextPageToken?: string;\n /** Filter by transaction status. Comma-separated status values, e.g. `status=succeeded,pending`. */\n status?: string;\n /** Filter by transaction type. Comma-separated storage type values, e.g. `type=refund,booking`. Matches analytics report type filters. */\n type?: string;\n}\n\n/** Query parameters for `sb.transactions.dayPasses.list()`. */\nexport interface GetDayPassesTransactionsQuery {\n /** @deprecated Use customerRef instead. The id of the company to get transactions for. */\n companyRef?: string;\n /** Get transactions with greater or equal createDate. Example: createDate[gte]=2021-05-21T10:00:00Z */\n \"createDate[gte]\"?: string;\n /** Get transactions with less or equal createDate. Example: createDate[lte]=2021-05-21T10:00:00Z */\n \"createDate[lte]\"?: string;\n /** UUID of the company or membership whose day pass transactions to list. */\n customerRef?: string;\n /** Maximum number of transactions per page. Defaults to 25 when omitted or invalid; values above 100 are capped at 100. */\n limit?: number;\n /** UUID of the location whose day pass transactions to list. */\n locationRef?: string;\n /** @deprecated Use customerRef instead. The id of the membership to get transactions for. */\n membershipRef?: string;\n /** Token to retrieve the next page of results. */\n nextPageToken?: string;\n /** Filter by transaction type. Comma-separated storage type values, e.g. `type=refund,booking`. Matches analytics report type filters. */\n type?: string;\n}\n\n/** Query parameters for `sb.transactions.money.list()`. */\nexport interface GetMoneyTransactionsQuery {\n /** The id of the location */\n locationRef: string;\n /** The number of items to return */\n limit?: number;\n /** The payment status of transactions */\n status?: \"canceled\" | \"failed\" | \"pending\" | \"processing\" | \"succeeded\";\n /** The type of transactions */\n type?: \"booking\" | \"creditPackage\" | \"eventTicket\" | \"invoice\" | \"order\" | \"subscription\";\n /** The date filter of items. */\n createDate?: { lte?: string; gte?: string };\n /** Token to retrieve the next page of results. */\n nextPageToken?: string;\n}\n\n/** Query parameters for `sb.transactions.credits.scheduled.list()`. */\nexport interface GetScheduledCreditsTransactionsQuery {\n /** UUID of the company or membership whose scheduled credits transactions to list. */\n customerRef?: string;\n /** Maximum number of transactions per page. Defaults to 25 when omitted or invalid; values above 100 are capped at 100. */\n limit?: number;\n /** Token to retrieve the next page of results. */\n nextPageToken?: string;\n /** UUID of the subscription whose scheduled credits transactions to list. */\n subscriptionRef?: string;\n}\n\n/** Query parameters for `sb.transactions.dayPasses.scheduled.list()`. */\nexport interface GetScheduledDayPassesTransactionsQuery {\n /** UUID of the company or membership whose scheduled day pass transactions to list. */\n customerRef?: string;\n /** Maximum number of transactions per page. Defaults to 25 when omitted or invalid; values above 100 are capped at 100. */\n limit?: number;\n /** Token to retrieve the next page of results. */\n nextPageToken?: string;\n /** UUID of the subscription whose scheduled day pass transactions to list. */\n subscriptionRef?: string;\n}\n\n/** Request body for `sb.transactions.credits.create()`. */\nexport type CreateCreditsTransactionBody = NonNullable<NonNullable<operations[\"createCreditsTransaction\"][\"requestBody\"]>[\"content\"][\"application/json\"][\"transaction\"]>;\n\n/** Request body for `sb.transactions.dayPasses.create()`. */\nexport type CreateDayPassesTransactionBody = NonNullable<NonNullable<operations[\"createDayPassesTransaction\"][\"requestBody\"]>[\"content\"][\"application/json\"][\"transaction\"]>;\n\nexport function createTransactions(client: Client<paths>, defaults: SpacebringDefaults) {\n return {\n balances: {\n /**\n * Retrieve credit balance\n *\n * Retrieve credits balance.\n *\n * @param id The id of the customer\n * @param options Request options (abort signal).\n */\n async getCredits(id: string, options?: SpacebringRequestOptions): Promise<Balance[]> {\n return unwrapProp(await client.GET(\"/transactions/v1/balances/{id}/credits\", { params: { path: { id } }, signal: options?.signal }), \"balances\", \"GET /transactions/v1/balances/{id}/credits\");\n },\n /**\n * Retrieve day passes balance\n *\n * @param id The id of the customer\n * @param options Request options (abort signal).\n */\n async getDayPasses(id: string, options?: SpacebringRequestOptions): Promise<Balance[]> {\n return unwrapProp(await client.GET(\"/transactions/v1/balances/{id}/day_passes\", { params: { path: { id } }, signal: options?.signal }), \"balances\", \"GET /transactions/v1/balances/{id}/day_passes\");\n },\n },\n credits: {\n /**\n * Retrieve credit transactions\n *\n * Retrieve credits transactions.\n */\n async list(query?: GetCreditsTransactionsQuery, options?: SpacebringRequestOptions): Promise<{ nextPageToken?: string; searchQueryNext?: string; transactions: CreditTransaction[] }> {\n return unwrap(await client.GET(\"/transactions/credits/v1\", { params: { query }, signal: options?.signal }), \"GET /transactions/credits/v1\");\n },\n /**\n * Retrieve credit transactions — iterates every item across all pages.\n *\n * Retrieve credits transactions.\n */\n iterate(query?: Omit<GetCreditsTransactionsQuery, \"nextPageToken\">, options?: SpacebringRequestOptions): AsyncGenerator<CreditTransaction, void, undefined> {\n return paginate(\n async (nextPageToken: string | undefined) =>\n unwrap(await client.GET(\"/transactions/credits/v1\", { params: { query: { ...query, nextPageToken } }, signal: options?.signal }), \"GET /transactions/credits/v1\"),\n \"transactions\",\n );\n },\n /**\n * Retrieve a credit transaction\n *\n * Retrieve a credits transaction.\n *\n * @param id The id of the transaction\n * @param options Request options (abort signal).\n */\n async get(id: string, options?: SpacebringRequestOptions): Promise<CreditTransaction> {\n return unwrapProp(await client.GET(\"/transactions/credits/v1/{id}\", { params: { path: { id } }, signal: options?.signal }), \"transaction\", \"GET /transactions/credits/v1/{id}\");\n },\n /**\n * Create a credit transaction\n *\n * Create a credits transaction.\n */\n async create(transaction: CreateCreditsTransactionBody, options?: SpacebringRequestOptions): Promise<CreditTransaction> {\n return unwrapProp(await client.POST(\"/transactions/credits/v1\", { body: { transaction }, signal: options?.signal }), \"transaction\", \"POST /transactions/credits/v1\");\n },\n scheduled: {\n /**\n * Retrieve scheduled credits transactions\n *\n * Retrieve scheduled credits transactions of a subscription or a customer.\n */\n async list(query?: GetScheduledCreditsTransactionsQuery, options?: SpacebringRequestOptions): Promise<{ nextPageToken?: string; scheduledTransactions: CreditScheduledTransaction[]; searchQueryNext?: string }> {\n return unwrap(await client.GET(\"/transactions/credits/scheduled/v1\", { params: { query }, signal: options?.signal }), \"GET /transactions/credits/scheduled/v1\");\n },\n /**\n * Retrieve scheduled credits transactions — iterates every item across all pages.\n *\n * Retrieve scheduled credits transactions of a subscription or a customer.\n */\n iterate(query?: Omit<GetScheduledCreditsTransactionsQuery, \"nextPageToken\">, options?: SpacebringRequestOptions): AsyncGenerator<CreditScheduledTransaction, void, undefined> {\n return paginate(\n async (nextPageToken: string | undefined) =>\n unwrap(await client.GET(\"/transactions/credits/scheduled/v1\", { params: { query: { ...query, nextPageToken } }, signal: options?.signal }), \"GET /transactions/credits/scheduled/v1\"),\n \"scheduledTransactions\",\n );\n },\n },\n },\n dayPasses: {\n /**\n * Retrieve day pass transactions\n *\n * Retrieve day passes transactions.\n */\n async list(query?: GetDayPassesTransactionsQuery, options?: SpacebringRequestOptions): Promise<{ nextPageToken?: string; searchQueryNext?: string; transactions: DayPassTransaction[] }> {\n return unwrap(await client.GET(\"/transactions/day_passes/v1\", { params: { query }, signal: options?.signal }), \"GET /transactions/day_passes/v1\");\n },\n /**\n * Retrieve day pass transactions — iterates every item across all pages.\n *\n * Retrieve day passes transactions.\n */\n iterate(query?: Omit<GetDayPassesTransactionsQuery, \"nextPageToken\">, options?: SpacebringRequestOptions): AsyncGenerator<DayPassTransaction, void, undefined> {\n return paginate(\n async (nextPageToken: string | undefined) =>\n unwrap(await client.GET(\"/transactions/day_passes/v1\", { params: { query: { ...query, nextPageToken } }, signal: options?.signal }), \"GET /transactions/day_passes/v1\"),\n \"transactions\",\n );\n },\n /**\n * Retrieve a day pass transaction\n *\n * Retrieve a day passes transaction.\n *\n * @param id The id of the transaction\n * @param options Request options (abort signal).\n */\n async get(id: string, options?: SpacebringRequestOptions): Promise<DayPassTransaction> {\n return unwrapProp(await client.GET(\"/transactions/day_passes/v1/{id}\", { params: { path: { id } }, signal: options?.signal }), \"transaction\", \"GET /transactions/day_passes/v1/{id}\");\n },\n /**\n * Create a day pass transaction\n *\n * Create a day passes transaction.\n */\n async create(transaction: CreateDayPassesTransactionBody, options?: SpacebringRequestOptions): Promise<DayPassTransaction> {\n return unwrapProp(await client.POST(\"/transactions/day_passes/v1\", { body: { transaction }, signal: options?.signal }), \"transaction\", \"POST /transactions/day_passes/v1\");\n },\n scheduled: {\n /**\n * Retrieve scheduled day pass transactions\n *\n * Retrieve scheduled day passes transactions of a subscription or a customer.\n */\n async list(query?: GetScheduledDayPassesTransactionsQuery, options?: SpacebringRequestOptions): Promise<{ nextPageToken?: string; scheduledTransactions: DayPassScheduledTransaction[]; searchQueryNext?: string }> {\n return unwrap(await client.GET(\"/transactions/day_passes/scheduled/v1\", { params: { query }, signal: options?.signal }), \"GET /transactions/day_passes/scheduled/v1\");\n },\n /**\n * Retrieve scheduled day pass transactions — iterates every item across all pages.\n *\n * Retrieve scheduled day passes transactions of a subscription or a customer.\n */\n iterate(query?: Omit<GetScheduledDayPassesTransactionsQuery, \"nextPageToken\">, options?: SpacebringRequestOptions): AsyncGenerator<DayPassScheduledTransaction, void, undefined> {\n return paginate(\n async (nextPageToken: string | undefined) =>\n unwrap(await client.GET(\"/transactions/day_passes/scheduled/v1\", { params: { query: { ...query, nextPageToken } }, signal: options?.signal }), \"GET /transactions/day_passes/scheduled/v1\"),\n \"scheduledTransactions\",\n );\n },\n },\n },\n money: {\n /** Retrieve money transactions */\n async list(query: GetMoneyTransactionsQuery, options?: SpacebringRequestOptions): Promise<{ transactions?: MoneyTransaction[]; nextPageToken?: string }> {\n return unwrap(await client.GET(\"/transactions/money/v1\", { params: { query }, signal: options?.signal }), \"GET /transactions/money/v1\");\n },\n /** Retrieve money transactions — iterates every item across all pages. */\n iterate(query: Omit<GetMoneyTransactionsQuery, \"nextPageToken\">, options?: SpacebringRequestOptions): AsyncGenerator<MoneyTransaction, void, undefined> {\n return paginate(\n async (nextPageToken: string | undefined) =>\n unwrap(await client.GET(\"/transactions/money/v1\", { params: { query: { ...query, nextPageToken } }, signal: options?.signal }), \"GET /transactions/money/v1\"),\n \"transactions\",\n );\n },\n /**\n * Retrieve a money transaction\n *\n * @param id The id of the transaction\n * @param options Request options (abort signal).\n */\n async get(id: string, options?: SpacebringRequestOptions): Promise<MoneyTransaction> {\n return unwrapProp(await client.GET(\"/transactions/money/v1/{id}\", { params: { path: { id } }, signal: options?.signal }), \"transaction\", \"GET /transactions/money/v1/{id}\");\n },\n },\n };\n}\n","// AUTO-GENERATED by codegen/generate-facade.ts — DO NOT EDIT.\n// Regenerate with `npm run generate:facade`.\nimport type { Client } from \"openapi-fetch\";\nimport { paginate, unwrap, unwrapProp, type SpacebringDefaults, type SpacebringRequestOptions } from \"../../core.js\";\nimport type { components, operations, paths } from \"../schema.js\";\n\n/** A Contact entity as returned by the Spacebring API. */\nexport type Contact = NonNullable<components[\"schemas\"][\"contact\"]>;\n\n/** A Request entity as returned by the Spacebring API. */\nexport type Request = NonNullable<components[\"schemas\"][\"visitRequest\"]>;\n\n/** A Visit entity as returned by the Spacebring API. */\nexport type Visit = NonNullable<components[\"schemas\"][\"visit\"]>;\n\n/** Query parameters for `sb.visitors.contacts.list()`. */\nexport interface GetContactsQuery {\n /** The maximum number of contacts to return. Default is 25. */\n limit?: number;\n /** Token to retrieve the next page of results. */\n nextPageToken?: string;\n /** The id of the location. */\n locationRef: string;\n /** The create date filter of items. */\n createDate?: { lte?: string; gte?: string };\n}\n\n/** Query parameters for `sb.visitors.requests.list()`. */\nexport interface GetRequestsQuery {\n /** The id of the location. */\n locationRef: string;\n /** Token to retrieve the next page of results. */\n nextPageToken?: string;\n /** The number of items to return. */\n limit?: number;\n /** The create date filter of items. */\n createDate?: { lte?: string; gte?: string };\n}\n\n/** Query parameters for `sb.visitors.visits.list()`. */\nexport interface GetVisitsQuery {\n /** The id of the location. */\n locationRef: string;\n /** The id of the user, host of the visit. */\n userRefHost?: string;\n /** The date filter of items. */\n createDate?: { lte?: string; gte?: string };\n /** The visit date filter of items. */\n date?: { lte?: string; gte?: string };\n /** The number of items to return */\n limit?: number;\n /** Token to retrieve the next page of results. */\n nextPageToken?: string;\n}\n\n/** Request body for `sb.visitors.visits.checkIn()`. */\nexport type CheckInVisitBody = NonNullable<operations[\"checkInVisit\"][\"requestBody\"]>[\"content\"][\"application/json\"];\n\n/** Request body for `sb.visitors.visits.checkOut()`. */\nexport type CheckOutVisitBody = NonNullable<operations[\"checkOutVisit\"][\"requestBody\"]>[\"content\"][\"application/json\"];\n\n/** Request body for `sb.visitors.contacts.create()`. */\nexport type CreateContactBody = NonNullable<NonNullable<operations[\"createContact\"][\"requestBody\"]>[\"content\"][\"application/json\"][\"contact\"]>;\n\n/** Request body for `sb.visitors.requests.create()`. */\nexport type CreateRequestBody = NonNullable<NonNullable<operations[\"createRequest\"][\"requestBody\"]>[\"content\"][\"application/json\"][\"request\"]>;\n\n/** Request body for `sb.visitors.visits.create()`. */\nexport type CreateVisitBody = NonNullable<NonNullable<operations[\"createVisit\"][\"requestBody\"]>[\"content\"][\"application/json\"][\"visit\"]>;\n\n/** Request body for `sb.visitors.visits.update()`. */\nexport type UpdateVisitBody = NonNullable<NonNullable<operations[\"updateVisit\"][\"requestBody\"]>[\"content\"][\"application/json\"][\"visit\"]>;\n\nexport function createVisitors(client: Client<paths>, defaults: SpacebringDefaults) {\n return {\n contacts: {\n /** Get contacts */\n async list(query: GetContactsQuery, options?: SpacebringRequestOptions): Promise<{ contacts?: Contact[]; nextPageToken?: string; searchQueryNext?: string }> {\n return unwrap(await client.GET(\"/visitors/contacts/v1\", { params: { query }, signal: options?.signal }), \"GET /visitors/contacts/v1\");\n },\n /** Get contacts — iterates every item across all pages. */\n iterate(query: Omit<GetContactsQuery, \"nextPageToken\">, options?: SpacebringRequestOptions): AsyncGenerator<Contact, void, undefined> {\n return paginate(\n async (nextPageToken: string | undefined) =>\n unwrap(await client.GET(\"/visitors/contacts/v1\", { params: { query: { ...query, nextPageToken } }, signal: options?.signal }), \"GET /visitors/contacts/v1\"),\n \"contacts\",\n );\n },\n /**\n * Get a contact\n *\n * @param contactId The id of the contact.\n * @param options Request options (abort signal).\n */\n async get(contactId: string, options?: SpacebringRequestOptions): Promise<Contact> {\n return unwrapProp(await client.GET(\"/visitors/contacts/v1/{contactId}\", { params: { path: { contactId } }, signal: options?.signal }), \"contact\", \"GET /visitors/contacts/v1/{contactId}\");\n },\n /** Create a contact */\n async create(contact: CreateContactBody, options?: SpacebringRequestOptions): Promise<Contact> {\n return unwrapProp(await client.POST(\"/visitors/contacts/v1\", { body: { contact }, signal: options?.signal }), \"contact\", \"POST /visitors/contacts/v1\");\n },\n },\n requests: {\n /** Get requests */\n async list(query: GetRequestsQuery, options?: SpacebringRequestOptions): Promise<{ nextPageToken?: string; requests?: Request[]; searchQueryNext?: string }> {\n return unwrap(await client.GET(\"/visitors/requests/v1\", { params: { query }, signal: options?.signal }), \"GET /visitors/requests/v1\");\n },\n /** Get requests — iterates every item across all pages. */\n iterate(query: Omit<GetRequestsQuery, \"nextPageToken\">, options?: SpacebringRequestOptions): AsyncGenerator<Request, void, undefined> {\n return paginate(\n async (nextPageToken: string | undefined) =>\n unwrap(await client.GET(\"/visitors/requests/v1\", { params: { query: { ...query, nextPageToken } }, signal: options?.signal }), \"GET /visitors/requests/v1\"),\n \"requests\",\n );\n },\n /**\n * Retrieve a request\n *\n * @param id The id of the request.\n * @param options Request options (abort signal).\n */\n async get(id: string, options?: SpacebringRequestOptions): Promise<Request> {\n return unwrapProp(await client.GET(\"/visitors/requests/v1/{id}\", { params: { path: { id } }, signal: options?.signal }), \"request\", \"GET /visitors/requests/v1/{id}\");\n },\n /** Create a request */\n async create(request: CreateRequestBody, options?: SpacebringRequestOptions): Promise<Request> {\n return unwrapProp(await client.POST(\"/visitors/requests/v1\", { body: { request }, signal: options?.signal }), \"request\", \"POST /visitors/requests/v1\");\n },\n /**\n * Approve a request\n *\n * @param id The id of the request\n * @param options Request options (abort signal).\n */\n async approve(id: string, options?: SpacebringRequestOptions): Promise<Visit> {\n return unwrapProp(await client.POST(\"/visitors/requests/v1/{id}/approve\", { params: { path: { id } }, signal: options?.signal }), \"visit\", \"POST /visitors/requests/v1/{id}/approve\");\n },\n /**\n * Reject a request\n *\n * @param id The id of the request\n * @param options Request options (abort signal).\n */\n async reject(id: string, options?: SpacebringRequestOptions): Promise<undefined> {\n return unwrap(await client.POST(\"/visitors/requests/v1/{id}/reject\", { params: { path: { id } }, signal: options?.signal }), \"POST /visitors/requests/v1/{id}/reject\");\n },\n },\n visits: {\n /** Retrieve visits */\n async list(query: GetVisitsQuery, options?: SpacebringRequestOptions): Promise<{ nextPageToken?: string; searchQueryNext?: string; visits?: Visit[] }> {\n return unwrap(await client.GET(\"/visitors/visits/v1\", { params: { query }, signal: options?.signal }), \"GET /visitors/visits/v1\");\n },\n /** Retrieve visits — iterates every item across all pages. */\n iterate(query: Omit<GetVisitsQuery, \"nextPageToken\">, options?: SpacebringRequestOptions): AsyncGenerator<Visit, void, undefined> {\n return paginate(\n async (nextPageToken: string | undefined) =>\n unwrap(await client.GET(\"/visitors/visits/v1\", { params: { query: { ...query, nextPageToken } }, signal: options?.signal }), \"GET /visitors/visits/v1\"),\n \"visits\",\n );\n },\n /**\n * Retrieve a visit\n *\n * Retrieve a visit by id.\n *\n * @param id The id of the visit\n * @param options Request options (abort signal).\n */\n async get(id: string, options?: SpacebringRequestOptions): Promise<Visit> {\n return unwrapProp(await client.GET(\"/visitors/visits/v1/{id}\", { params: { path: { id } }, signal: options?.signal }), \"visit\", \"GET /visitors/visits/v1/{id}\");\n },\n /** Create a visit */\n async create(visit: CreateVisitBody, options?: SpacebringRequestOptions): Promise<Visit> {\n return unwrapProp(await client.POST(\"/visitors/visits/v1\", { body: { visit }, signal: options?.signal }), \"visit\", \"POST /visitors/visits/v1\");\n },\n /**\n * Update a visit\n *\n * Update a visit by id.\n *\n * @param id The id of the visit\n * @param visit The `visit` payload.\n * @param options Request options (abort signal).\n */\n async update(id: string, visit: UpdateVisitBody, options?: SpacebringRequestOptions): Promise<Visit> {\n return unwrapProp(await client.PUT(\"/visitors/visits/v1/{id}\", { params: { path: { id } }, body: { visit }, signal: options?.signal }), \"visit\", \"PUT /visitors/visits/v1/{id}\");\n },\n /**\n * Delete a visit\n *\n * Delete a visit by id.\n *\n * @param id The id of the visit\n * @param options Request options (abort signal).\n */\n async delete(id: string, options?: SpacebringRequestOptions): Promise<undefined> {\n return unwrap(await client.DELETE(\"/visitors/visits/v1/{id}\", { params: { path: { id } }, signal: options?.signal }), \"DELETE /visitors/visits/v1/{id}\");\n },\n /** Check in a visit */\n async checkIn(body: CheckInVisitBody, options?: SpacebringRequestOptions): Promise<Visit> {\n return unwrapProp(await client.POST(\"/visitors/visits/v1/checkin\", { body, signal: options?.signal }), \"visit\", \"POST /visitors/visits/v1/checkin\");\n },\n /** Check out a visit */\n async checkOut(body: CheckOutVisitBody, options?: SpacebringRequestOptions): Promise<Visit> {\n return unwrapProp(await client.POST(\"/visitors/visits/v1/checkout\", { body, signal: options?.signal }), \"visit\", \"POST /visitors/visits/v1/checkout\");\n },\n },\n };\n}\n","// AUTO-GENERATED by codegen/generate-facade.ts — DO NOT EDIT.\n// Regenerate with `npm run generate:facade`.\nimport type { Client } from \"openapi-fetch\";\nimport type { SpacebringDefaults } from \"../../core.js\";\nimport type { paths } from \"../schema.js\";\nimport { createAltcurrencies as altCurrenciesGroup } from \"./altCurrencies.js\";\nimport { createBenefits as benefitsGroup } from \"./benefits.js\";\nimport { createBilling as billingGroup } from \"./billing.js\";\nimport { createCommunity as communityGroup } from \"./community.js\";\nimport { createContracts as contractsGroup } from \"./contracts.js\";\nimport { createDiscounts as discountsGroup } from \"./discounts.js\";\nimport { createEvents as eventsGroup } from \"./events.js\";\nimport { createFeed as feedGroup } from \"./feed.js\";\nimport { createFloors as floorsGroup } from \"./floors.js\";\nimport { createGuides as guidesGroup } from \"./guides.js\";\nimport { createLocations as locationsGroup } from \"./locations.js\";\nimport { createNetworks as networksGroup } from \"./networks.js\";\nimport { createPackages as packagesGroup } from \"./packages.js\";\nimport { createPlans as plansGroup } from \"./plans.js\";\nimport { createRegistrations as registrationsGroup } from \"./registrations.js\";\nimport { createResources as resourcesGroup } from \"./resources.js\";\nimport { createShop as shopGroup } from \"./shop.js\";\nimport { createSubscriptions as subscriptionsGroup } from \"./subscriptions.js\";\nimport { createSupport as supportGroup } from \"./support.js\";\nimport { createTransactions as transactionsGroup } from \"./transactions.js\";\nimport { createVisitors as visitorsGroup } from \"./visitors.js\";\n\nexport function createResources(client: Client<paths>, defaults: SpacebringDefaults) {\n return {\n altCurrencies: altCurrenciesGroup(client, defaults),\n benefits: benefitsGroup(client, defaults),\n billing: billingGroup(client, defaults),\n community: communityGroup(client, defaults),\n contracts: contractsGroup(client, defaults),\n discounts: discountsGroup(client, defaults),\n events: eventsGroup(client, defaults),\n feed: feedGroup(client, defaults),\n floors: floorsGroup(client, defaults),\n guides: guidesGroup(client, defaults),\n locations: locationsGroup(client, defaults),\n networks: networksGroup(client, defaults),\n packages: packagesGroup(client, defaults),\n plans: plansGroup(client, defaults),\n registrations: registrationsGroup(client, defaults),\n resources: resourcesGroup(client, defaults),\n shop: shopGroup(client, defaults),\n subscriptions: subscriptionsGroup(client, defaults),\n support: supportGroup(client, defaults),\n transactions: transactionsGroup(client, defaults),\n visitors: visitorsGroup(client, defaults),\n };\n}\n\nexport type SpacebringResources = ReturnType<typeof createResources>;\n","import createClient, { type Client } from \"openapi-fetch\";\nimport { createResources, type SpacebringResources } from \"./generated/resources/index.js\";\nimport type { paths } from \"./generated/schema.js\";\n\nexport interface SpacebringConfig {\n /** Client ID from Spacebring > Network Settings > Developers. */\n clientId: string;\n /** Client secret from Spacebring > Network Settings > Developers. */\n clientSecret: string;\n /** Network ID, sent as the `spacebring-network-id` header on every request. */\n networkId?: string;\n /** API origin. Defaults to `https://api.spacebring.com`. */\n baseUrl?: string;\n /** Custom fetch implementation (testing, non-standard platforms). */\n fetch?: typeof globalThis.fetch;\n /**\n * How many times to retry a failed request. Retried: 429 rate limits\n * (any method — the API allows 10 requests/second and did not process the\n * request), plus 502/503/504 responses, network errors, and timeouts on\n * idempotent methods only (GET/HEAD/PUT/DELETE/OPTIONS — a gateway error\n * may have reached the API, so POSTs are never replayed). Waits per the\n * `Retry-After` header (seconds or HTTP-date), or with exponential backoff\n * when absent. Defaults to 3; 0 disables.\n */\n maxRetries?: number;\n /**\n * Timeout per request attempt in milliseconds (each retry attempt gets a\n * fresh budget). Timed-out attempts reject with a `TimeoutError` and are\n * retried like network errors. Off by default. Uses `AbortSignal.timeout`;\n * combining with a caller-supplied signal needs `AbortSignal.any`\n * (Node >= 20.3, all modern browsers/workers).\n */\n timeoutMs?: number;\n}\n\nexport interface Spacebring extends SpacebringResources {}\n\n// biome-ignore lint/suspicious/noUnsafeDeclarationMerging: the constructor Object.assigns every resource group onto the instance, so the merge is backed at runtime.\nexport class Spacebring {\n /** Typed openapi-fetch client — escape hatch for endpoints or options the facade does not cover. */\n readonly raw: Client<paths>;\n\n constructor(config: SpacebringConfig) {\n const baseUrl = config.baseUrl ?? \"https://api.spacebring.com\";\n // Basic-auth credentials ride on every request; refuse to send them in\n // cleartext. Loopback is allowed for local proxies/mock servers over http.\n assertSecureBaseUrl(baseUrl);\n const headers: Record<string, string> = {\n Authorization: `Basic ${toBase64(`${config.clientId}:${config.clientSecret}`)}`,\n };\n if (config.networkId) {\n headers[\"spacebring-network-id\"] = config.networkId;\n }\n this.raw = createClient<paths>({\n baseUrl,\n headers,\n fetch: withRetry(config.fetch ?? globalThis.fetch, config.maxRetries ?? 3, config.timeoutMs),\n });\n Object.assign(this, createResources(this.raw, { networkId: config.networkId }));\n }\n}\n\n// A gateway error or dropped connection may have reached the API, so only\n// methods that are safe to replay retry on those; 429 means the request was\n// not processed and is retried regardless of method.\nconst IDEMPOTENT_METHODS = new Set([\"GET\", \"HEAD\", \"PUT\", \"DELETE\", \"OPTIONS\"]);\nconst RETRYABLE_STATUSES = new Set([502, 503, 504]);\n\n/**\n * Adds retry (429 always; 502/503/504, network errors, and timeouts for\n * idempotent methods) and an optional per-attempt timeout. The request is\n * cloned per attempt so bodies can be resent.\n */\nfunction withRetry(\n fetchImpl: typeof globalThis.fetch,\n maxRetries: number,\n timeoutMs: number | undefined,\n): typeof globalThis.fetch {\n if (maxRetries <= 0 && timeoutMs === undefined) return fetchImpl;\n return async (input, init) => {\n const request = input instanceof Request && init === undefined ? input : new Request(input, init);\n const idempotent = IDEMPOTENT_METHODS.has(request.method);\n for (let attempt = 0; ; attempt += 1) {\n let response: Response;\n try {\n response = await fetchImpl(request.clone(), attemptInit(request, timeoutMs));\n } catch (error) {\n const retryable = attempt < maxRetries && idempotent && !request.signal.aborted && isTransientError(error);\n if (!retryable) throw error;\n await sleep(backoffMs(attempt), request.signal);\n continue;\n }\n const retryableStatus = response.status === 429 || (idempotent && RETRYABLE_STATUSES.has(response.status));\n if (!retryableStatus || attempt >= maxRetries) return response;\n await sleep(retryDelayMs(response.headers.get(\"retry-after\"), attempt), request.signal);\n }\n };\n}\n\n/** Per-attempt timeout signal, combined with the caller's signal when possible. */\nfunction attemptInit(request: Request, timeoutMs: number | undefined): RequestInit | undefined {\n if (timeoutMs === undefined) return undefined;\n const timeout = AbortSignal.timeout(timeoutMs);\n return {\n signal: typeof AbortSignal.any === \"function\" ? AbortSignal.any([request.signal, timeout]) : timeout,\n };\n}\n\n/** Network failures reject with TypeError, `AbortSignal.timeout` with TimeoutError. */\nfunction isTransientError(error: unknown): boolean {\n return error instanceof TypeError || (error instanceof Error && error.name === \"TimeoutError\");\n}\n\nfunction retryDelayMs(retryAfter: string | null, attempt: number): number {\n if (retryAfter !== null) {\n // Cap server-supplied delays: a misbehaving proxy must not be able to\n // park the client on a multi-hour setTimeout.\n const seconds = Number(retryAfter);\n if (Number.isFinite(seconds) && seconds >= 0) return Math.min(seconds * 1000, 60_000);\n const date = Date.parse(retryAfter); // HTTP-date form, e.g. \"Wed, 21 Oct 2026 07:28:00 GMT\"\n if (!Number.isNaN(date)) return Math.min(Math.max(date - Date.now(), 0), 60_000);\n }\n return backoffMs(attempt);\n}\n\nfunction backoffMs(attempt: number): number {\n return Math.min(250 * 2 ** attempt + Math.random() * 100, 5_000);\n}\n\n/** Waits `ms`, rejecting immediately with the abort reason if `signal` fires. */\nfunction sleep(ms: number, signal: AbortSignal): Promise<void> {\n return new Promise((resolve, reject) => {\n if (signal.aborted) {\n reject(signal.reason);\n return;\n }\n const onAbort = () => {\n clearTimeout(timer);\n reject(signal.reason);\n };\n const timer = setTimeout(() => {\n signal.removeEventListener(\"abort\", onAbort);\n resolve();\n }, ms);\n signal.addEventListener(\"abort\", onAbort, { once: true });\n });\n}\n\n/** Rejects an http:// baseUrl (credentials would go in cleartext); allows loopback. */\nfunction assertSecureBaseUrl(baseUrl: string): void {\n let url: URL;\n try {\n url = new URL(baseUrl);\n } catch {\n throw new Error(`Spacebring baseUrl is not a valid URL: ${baseUrl}`);\n }\n if (url.protocol === \"https:\") return;\n const isLoopback =\n url.hostname === \"localhost\" || url.hostname === \"127.0.0.1\" || url.hostname === \"[::1]\" || url.hostname === \"::1\";\n if (url.protocol === \"http:\" && isLoopback) return;\n throw new Error(\n `Spacebring baseUrl must use https (got \"${url.protocol}//\"): Basic-auth credentials would otherwise be sent in cleartext. Use https, or http only for a loopback host.`,\n );\n}\n\nfunction toBase64(value: string): string {\n if (typeof Buffer !== \"undefined\") {\n return Buffer.from(value, \"utf8\").toString(\"base64\");\n }\n let binary = \"\";\n for (const byte of new TextEncoder().encode(value)) {\n binary += String.fromCharCode(byte);\n }\n return btoa(binary);\n}\n"],"mappings":"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","names":["Request","error","final","joiner","createResources","createResources"]}