@raisfast/sdk 0.1.0 → 0.1.1

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.
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts","../src/errors.ts","../src/client.ts","../src/auth.ts","../src/public/auth.ts","../src/public/users.ts","../src/public/posts.ts","../src/public/pages.ts","../src/public/comments.ts","../src/public/categories.ts","../src/public/tags.ts","../src/public/media.ts","../src/public/health.ts","../src/public/wallets.ts","../src/public/events.ts","../src/public/orders.ts","../src/public/payment.ts","../src/public/products.ts","../src/public/cart.ts","../src/admin/audit.ts","../src/admin/categories.ts","../src/admin/comments.ts","../src/admin/content-types.ts","../src/admin/crons.ts","../src/admin/currencies.ts","../src/admin/media.ts","../src/admin/options.ts","../src/admin/orders.ts","../src/admin/pages.ts","../src/admin/payment.ts","../src/admin/plugins.ts","../src/admin/posts.ts","../src/admin/products.ts","../src/admin/rbac.ts","../src/admin/reusable-blocks.ts","../src/admin/stats.ts","../src/admin/tags.ts","../src/admin/tenants.ts","../src/admin/tokens.ts","../src/admin/users.ts","../src/admin/wallets.ts","../src/admin/webhooks.ts","../src/admin/workflows.ts","../src/admin/index.ts","../src/collection.ts","../src/raisfast.ts"],"sourcesContent":["export { RaisFast } from \"./raisfast\";\nexport { Collection } from \"./collection\";\nexport { Auth } from \"./public/auth\";\nexport { Admin } from \"./admin\";\nexport { Users } from \"./public/users\";\nexport { Media } from \"./public/media\";\nexport { Health } from \"./public/health\";\nexport { Posts } from \"./public/posts\";\nexport { Categories } from \"./public/categories\";\nexport { Tags } from \"./public/tags\";\nexport { Comments } from \"./public/comments\";\nexport { Pages } from \"./public/pages\";\nexport { Wallets } from \"./public/wallets\";\nexport { Events } from \"./public/events\";\nexport { Orders } from \"./public/orders\";\nexport { Payment } from \"./public/payment\";\nexport { Products } from \"./public/products\";\nexport { Cart } from \"./public/cart\";\nexport { BaseAuthStore, LocalAuthStore } from \"./auth\";\nexport { HttpClient, type ApiStyle } from \"./client\";\nexport { SDKError } from \"./errors\";\nexport type {\n CreatePostBody,\n UpdatePostBody,\n} from \"./public/posts\";\nexport type {\n StatsOverview,\n TrendsData,\n} from \"./admin/stats\";\nexport type {\n CreatePageBody,\n UpdatePageBody,\n} from \"./admin/pages\";\nexport type {\n CreateProductBody,\n UpdateProductBody,\n} from \"./admin/products\";\nexport type {\n ShipOrderBody,\n UpdateAdminRemarkBody,\n} from \"./admin/orders\";\nexport type {\n CreatePaymentChannelBody,\n UpdatePaymentChannelBody,\n CreateRefundBody,\n} from \"./admin/payment\";\nexport type { CreateCommentBody } from \"./public/comments\";\nexport type {\n CreateCategoryBody,\n UpdateCategoryBody,\n} from \"./public/categories\";\nexport type {\n CreateOrderBody,\n CreateOrderItemBody,\n} from \"./public/orders\";\nexport type {\n CreatePaymentOrderBody,\n} from \"./public/payment\";\nexport type {\n AddToCartBody,\n UpdateCartItemBody,\n} from \"./public/cart\";\nexport type {\n CreateReusableBlockBody,\n UpdateReusableBlockBody,\n} from \"./admin/reusable-blocks\";\nexport type {\n AdminCommentListQuery,\n AdminCommentRow,\n AdminPageListQuery,\n AdminPostListQuery,\n AdminWalletOperationRequest,\n ApiAccess,\n ApiConfig,\n ApiEndpointConfig,\n ApiToken,\n ApiTokenListItem,\n AuditEntry,\n AuditLog,\n AuthConfig,\n AuthConfigResponse,\n AuthResult,\n AuthStoreListener,\n AuthType,\n BeforeSendHook,\n AfterSendHook,\n BatchRequest,\n BatchRequestWithRole,\n BatchResponse,\n BindEmailRequest,\n BindPhoneRequest,\n Category,\n ColumnDef,\n CommentOpenStatus,\n CommentResponse,\n CommentStatus,\n ContentKind,\n ContentRevision,\n ContentTypeSchema,\n CreateCategoryRequest,\n CreateCommentRequest,\n CreateCurrencyRequest,\n CreatePageRequest,\n CreatePostRequest,\n CreateTagRequest,\n CreateTokenResult,\n CreateWorkflowRequest,\n CredentialResponse,\n CronExecStatus,\n CronExecutionLog,\n CronJob,\n CronLog,\n CronSchedule,\n CurrencyResponse,\n ExecuteStepRequest,\n FaqItem,\n FieldDef,\n FieldSchema,\n FieldType,\n ForgotPasswordRequest,\n FormFieldDef,\n GalleryImage,\n HealthStatus,\n IAuthStore,\n IndexDef,\n InstanceQuery,\n JobStatus,\n ListOptions,\n LoginRequest,\n LoginResponse,\n MediaConfig,\n MediaFile,\n MediaResponse,\n MediaStats,\n MediaStatsResponse,\n MediaTypeInfoResponse,\n MutateOptions,\n OAuthBinding,\n OAuthBindingInfo,\n OAuthProvider,\n OptionEntry,\n OptionGroup,\n OptionType,\n Page,\n PageBlock,\n PageListQuery,\n PageStatus,\n PaginatedData,\n Permission,\n Permissions,\n PluginEvent,\n PluginHealth,\n PluginInfo,\n PluginInfoResponse,\n PluginMetrics,\n PostListQuery,\n PostResponse,\n PostStatus,\n PricingPlan,\n ProviderInfo,\n RefreshRequest,\n RegisterRequest,\n RegisteredVia,\n RelationConfig,\n RelationType,\n ReorderItem,\n ReorderRequest,\n RequestOptions,\n ResendVerificationRequest,\n ResetPasswordRequest,\n ReusableBlock,\n ReversalRequest,\n Revision,\n RevisionSummary,\n Role,\n RouteInfo,\n SendOptions,\n SendSmsCodeRequest,\n SetPasswordRequest,\n SitemapEntry,\n SocialLink,\n StartWorkflowRequest,\n StatItem,\n StepDef,\n StepLog,\n StepType,\n Tag,\n TagBrief,\n TeamMember,\n Tenant,\n TenantStatus,\n TestimonialItem,\n TimelineItem,\n TrendPoint,\n UpdateCategoryRequest,\n UpdateCommentStatusRequest,\n UpdateCurrencyRequest,\n UpdatePageRequest,\n UpdatePasswordRequest,\n UpdatePostRequest,\n UpdateRoleRequest,\n UpdateStatusRequest,\n UpdateTagRequest,\n UpdateUserRequest,\n User,\n UserResponse,\n UserRole,\n UserStatus,\n VerifyEmailRequest,\n VerifySmsRequest,\n WalletEntryType,\n WalletReferenceType,\n WalletResponse,\n WalletStatus,\n WalletTransactionResponse,\n WalletTxType,\n Webhook,\n WebhookSubscription,\n Workflow,\n WorkflowDefinition,\n WorkflowInstance,\n WorkflowInstanceStatus,\n WorkflowStepStatus,\n OrderItemResponse,\n OrderResponse,\n OrderStatsResponse,\n ProductResponse,\n PaymentOrderResponse,\n PaymentChannelResponse,\n PaymentTransactionResponse,\n PaymentRefundResponse,\n AvailableChannelItem,\n AvailableChannelsResponse,\n Order,\n OrderItem,\n OrderStats,\n Product,\n PaymentOrder,\n PaymentChannel,\n PaymentTransaction,\n PaymentRefund,\n} from \"./types\";\n","export class SDKError extends Error {\n readonly code: number;\n readonly status: number;\n readonly url: string;\n readonly response: Record<string, unknown>;\n readonly isAbort: boolean;\n readonly originalError: Error | null;\n\n constructor(\n code: number,\n message: string,\n status = 400,\n url = \"\",\n response: Record<string, unknown> = {},\n isAbort = false,\n originalError: Error | null = null,\n ) {\n super(message);\n this.name = \"SDKError\";\n this.code = code;\n this.status = status;\n this.url = url;\n this.response = response;\n this.isAbort = isAbort;\n this.originalError = originalError;\n }\n}\n","import { SDKError } from \"./errors\";\nimport type {\n AfterSendHook,\n AuthResult,\n BeforeSendHook,\n IAuthStore,\n RequestOptions,\n SendOptions,\n} from \"./types\";\n\nexport function toQueryString(query?: Record<string, string | number | bigint | boolean | undefined | null>): Record<string, string> | undefined {\n if (!query) return undefined;\n const result: Record<string, string> = {};\n for (const [key, value] of Object.entries(query)) {\n if (value !== undefined && value !== null) {\n result[key] = String(value);\n }\n }\n return result;\n}\n\nexport type ApiStyle = \"restful\" | \"simple\";\n\nexport class HttpClient {\n readonly baseUrl: string;\n readonly authStore: IAuthStore;\n private _apiStyle: ApiStyle = \"restful\";\n private _tenantId: string | null = null;\n private _refreshPromise: Promise<string | null> | null = null;\n private _beforeSend: BeforeSendHook | null = null;\n private _afterSend: AfterSendHook | null = null;\n private _requestControllers = new Map<string, AbortController>();\n\n constructor(baseUrl: string, authStore: IAuthStore) {\n this.baseUrl = baseUrl;\n this.authStore = authStore;\n }\n\n get apiStyle(): ApiStyle {\n return this._apiStyle;\n }\n\n set apiStyle(style: ApiStyle) {\n this._apiStyle = style;\n }\n\n get isRestful(): boolean {\n return this._apiStyle === \"restful\";\n }\n\n get tenantId(): string | null {\n return this._tenantId;\n }\n\n setTenantId(tenantId: string | null): void {\n this._tenantId = tenantId;\n }\n\n set beforeSend(hook: BeforeSendHook | null) {\n this._beforeSend = hook;\n }\n\n set afterSend(hook: AfterSendHook | null) {\n this._afterSend = hook;\n }\n\n cancelRequest(key: string): void {\n this._requestControllers.get(key)?.abort();\n this._requestControllers.delete(key);\n }\n\n cancelAllRequests(): void {\n for (const controller of this._requestControllers.values()) {\n controller.abort();\n }\n this._requestControllers.clear();\n }\n\n pathForCreate(resource: string): string {\n return this._apiStyle === \"restful\" ? resource : `${resource}/create`;\n }\n\n methodForCreate(): \"POST\" {\n return \"POST\";\n }\n\n pathForUpdate(resource: string, id: string): string {\n return this._apiStyle === \"restful\"\n ? `${resource}/${id}`\n : `${resource}/${id}/update`;\n }\n\n methodForUpdate(): \"PUT\" | \"POST\" {\n return this._apiStyle === \"restful\" ? \"PUT\" : \"POST\";\n }\n\n pathForDelete(resource: string, id: string): string {\n return this._apiStyle === \"restful\"\n ? `${resource}/${id}`\n : `${resource}/${id}/delete`;\n }\n\n methodForDelete(): \"DELETE\" | \"POST\" {\n return this._apiStyle === \"restful\" ? \"DELETE\" : \"POST\";\n }\n\n async request<T>(path: string, options: SendOptions = {}): Promise<T> {\n const {\n method = \"GET\",\n body,\n query,\n headers: extraHeaders,\n signal,\n fetch: customFetch,\n requestKey,\n } = options;\n\n let url = `${this.baseUrl}${path}`;\n if (query) {\n const qs = new URLSearchParams(query).toString();\n if (qs) {\n url += (url.includes(\"?\") ? \"&\" : \"?\") + qs;\n }\n }\n\n const headers = new Headers();\n if (body !== undefined && body !== null && !(body instanceof FormData)) {\n headers.set(\"Content-Type\", \"application/json\");\n }\n const token = this.authStore.token;\n if (token) {\n headers.set(\"Authorization\", `Bearer ${token}`);\n }\n if (this._tenantId) {\n headers.set(\"X-Tenant-ID\", this._tenantId);\n }\n if (extraHeaders) {\n for (const [key, value] of Object.entries(extraHeaders)) {\n headers.set(key, value);\n }\n }\n\n let combinedSignal = signal;\n if (requestKey) {\n this.cancelRequest(requestKey);\n const controller = new AbortController();\n this._requestControllers.set(requestKey, controller);\n if (signal) {\n signal.addEventListener(\"abort\", () => controller.abort());\n }\n combinedSignal = controller.signal;\n }\n\n let fetchOptions: RequestInit = {\n method,\n headers,\n body:\n body instanceof FormData\n ? body\n : body !== undefined\n ? JSON.stringify(body)\n : undefined,\n signal: combinedSignal,\n };\n\n if (this._beforeSend) {\n const result = await this._beforeSend(url, fetchOptions);\n url = result.url;\n fetchOptions = { ...fetchOptions, ...result.options };\n }\n\n const fetchFn = customFetch ?? fetch;\n let res: Response;\n\n try {\n res = await fetchFn(url, fetchOptions);\n } catch (e) {\n if (requestKey) this._requestControllers.delete(requestKey);\n throw new SDKError(\n 0,\n e instanceof Error ? e.message : \"Network request failed\",\n 0,\n url,\n {},\n e instanceof DOMException && e.name === \"AbortError\",\n e instanceof Error ? e : null,\n );\n }\n\n if (res.status === 401 && this.authStore.isAuthenticated) {\n const newToken = await this._refresh();\n if (newToken) {\n const retryHeaders = new Headers(fetchOptions.headers as Headers);\n retryHeaders.set(\"Authorization\", `Bearer ${newToken}`);\n fetchOptions = { ...fetchOptions, headers: retryHeaders };\n res = await fetchFn(url, fetchOptions);\n }\n }\n\n if (requestKey) this._requestControllers.delete(requestKey);\n\n let json: Record<string, unknown>;\n try {\n json = (await res.json()) as Record<string, unknown>;\n } catch (e) {\n throw new SDKError(\n 0,\n \"Failed to parse response\",\n res.status,\n url,\n {},\n false,\n e instanceof Error ? e : null,\n );\n }\n\n if (json.code !== 0) {\n throw new SDKError(\n (json.code as number) ?? 0,\n (json.message as string) ?? \"Unknown error\",\n res.status,\n url,\n json,\n );\n }\n\n let data = json.data as T;\n if (this._afterSend) {\n data = (await this._afterSend(res, data)) as T;\n }\n\n return data;\n }\n\n async get<T>(path: string, options?: RequestOptions): Promise<T> {\n return this.request<T>(path, { ...options, method: \"GET\" });\n }\n\n async post<T>(\n path: string,\n body?: unknown,\n options?: RequestOptions,\n ): Promise<T> {\n return this.request<T>(path, { ...options, method: \"POST\", body });\n }\n\n async put<T>(\n path: string,\n body?: unknown,\n options?: RequestOptions,\n ): Promise<T> {\n return this.request<T>(path, { ...options, method: \"PUT\", body });\n }\n\n async del<T>(path: string, options?: RequestOptions): Promise<T> {\n return this.request<T>(path, { ...options, method: \"DELETE\" });\n }\n\n private async _refresh(): Promise<string | null> {\n if (this._refreshPromise) return this._refreshPromise;\n\n this._refreshPromise = (async () => {\n try {\n const rt = this.authStore.refreshToken;\n if (!rt) return null;\n\n const res = await fetch(`${this.baseUrl}/auth/refresh`, {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n body: JSON.stringify({ refresh_token: rt }),\n });\n\n const json = (await res.json()) as Record<string, unknown>;\n if (json.code !== 0) {\n this.authStore.clear();\n return null;\n }\n\n const auth = json.data as AuthResult;\n this.authStore.save(auth);\n return auth.access_token;\n } catch {\n this.authStore.clear();\n return null;\n } finally {\n this._refreshPromise = null;\n }\n })();\n\n return this._refreshPromise;\n }\n}\n","import type { AuthResult, AuthStoreListener, IAuthStore, User } from \"./types\";\n\nexport class BaseAuthStore implements IAuthStore {\n protected _token: string | null = null;\n protected _refreshToken: string | null = null;\n protected _user: User | null = null;\n private _listeners = new Set<AuthStoreListener>();\n\n get token(): string | null {\n return this._token;\n }\n\n get refreshToken(): string | null {\n return this._refreshToken;\n }\n\n get user(): User | null {\n return this._user;\n }\n\n get isAuthenticated(): boolean {\n return !!this._token;\n }\n\n save(auth: AuthResult): void {\n this._token = auth.access_token;\n this._refreshToken = auth.refresh_token;\n this._user = auth.user;\n this._notify();\n }\n\n clear(): void {\n this._token = null;\n this._refreshToken = null;\n this._user = null;\n this._notify();\n }\n\n onChange(\n callback: AuthStoreListener,\n fireImmediately = false,\n ): () => void {\n this._listeners.add(callback);\n if (fireImmediately) {\n callback(this._token, this._user);\n }\n return () => {\n this._listeners.delete(callback);\n };\n }\n\n exportToStorage(): string {\n return JSON.stringify({\n token: this._token,\n refreshToken: this._refreshToken,\n user: this._user,\n });\n }\n\n importFromStorage(data: string): void {\n try {\n const parsed = JSON.parse(data);\n this._token = parsed.token ?? null;\n this._refreshToken = parsed.refreshToken ?? null;\n this._user = parsed.user ?? null;\n } catch {\n // silent — don't trigger onChange on invalid data\n }\n }\n\n protected _notify(): void {\n for (const cb of this._listeners) {\n cb(this._token, this._user);\n }\n }\n}\n\nexport class LocalAuthStore extends BaseAuthStore {\n private readonly _storageKey: string;\n private readonly _storage: Storage | null;\n\n constructor(storageKey = \"raisfast_auth\", storage?: Storage) {\n super();\n this._storageKey = storageKey;\n this._storage =\n storage ?? (typeof window !== \"undefined\" ? window.localStorage : null);\n this._load();\n }\n\n save(auth: AuthResult): void {\n super.save(auth);\n this._persist();\n }\n\n clear(): void {\n super.clear();\n this._persist();\n }\n\n private _persist(): void {\n try {\n this._storage?.setItem(this._storageKey, this.exportToStorage());\n } catch {\n // ignore storage errors\n }\n }\n\n private _load(): void {\n try {\n const data = this._storage?.getItem(this._storageKey);\n if (data) this.importFromStorage(data);\n } catch {\n // ignore storage errors\n }\n }\n}\n","import { HttpClient } from \"../client\";\nimport type {\n AuthConfig,\n AuthResult,\n CredentialResponse,\n IAuthStore,\n OAuthBinding,\n OAuthProvider,\n RequestOptions,\n User,\n} from \"../types\";\n\nexport class Auth {\n private readonly http: HttpClient;\n private readonly store: IAuthStore;\n\n constructor(http: HttpClient, store: IAuthStore) {\n this.http = http;\n this.store = store;\n }\n\n get token(): string | null {\n return this.store.token;\n }\n\n get user(): User | null {\n return this.store.user;\n }\n\n get isAuthenticated(): boolean {\n return this.store.isAuthenticated;\n }\n\n async login(\n email: string,\n password: string,\n options?: RequestOptions,\n ): Promise<AuthResult> {\n const result = await this.http.post<AuthResult>(\n \"/auth/login\",\n { email, password },\n options,\n );\n this.store.save(result);\n return result;\n }\n\n async register(\n data: { email: string; password: string; username: string },\n options?: RequestOptions,\n ): Promise<AuthResult> {\n const result = await this.http.post<AuthResult>(\n \"/auth/register\",\n data,\n options,\n );\n this.store.save(result);\n return result;\n }\n\n async refresh(options?: RequestOptions): Promise<AuthResult | null> {\n const rt = this.store.refreshToken;\n if (!rt) return null;\n\n const result = await this.http.post<AuthResult>(\n \"/auth/refresh\",\n { refresh_token: rt },\n options,\n );\n this.store.save(result);\n return result;\n }\n\n async logout(options?: RequestOptions): Promise<void> {\n try {\n await this.http.post(\"/auth/logout\", undefined, options);\n } finally {\n this.store.clear();\n }\n }\n\n async getConfig(options?: RequestOptions): Promise<AuthConfig> {\n return this.http.get<AuthConfig>(\"/auth/config\", options);\n }\n\n async getMe(options?: RequestOptions): Promise<User> {\n return this.http.get<User>(\"/users/me\", options);\n }\n\n async updateMe(\n data: {\n username?: string;\n bio?: string;\n website?: string;\n avatar?: string;\n social_links?: Record<string, string>;\n metadata?: unknown;\n },\n options?: RequestOptions,\n ): Promise<User> {\n return this.http.request<User>(this.http.pathForUpdate(\"/users\", \"me\"), {\n ...options,\n method: this.http.methodForUpdate(),\n body: data,\n });\n }\n\n async changePassword(\n data: { old_password: string; new_password: string },\n options?: RequestOptions,\n ): Promise<void> {\n await this.http.request<void>(this.http.pathForUpdate(\"/users\", \"me/password\"), {\n ...options,\n method: this.http.methodForUpdate(),\n body: data,\n });\n }\n\n async requestPasswordReset(\n email: string,\n options?: RequestOptions,\n ): Promise<void> {\n await this.http.post(\"/auth/forgot-password\", { email }, options);\n }\n\n async confirmPasswordReset(\n data: { token: string; new_password: string },\n options?: RequestOptions,\n ): Promise<void> {\n await this.http.post(\"/auth/reset-password\", data, options);\n }\n\n async setPassword(\n data: { email: string; new_password: string },\n options?: RequestOptions,\n ): Promise<void> {\n await this.http.post(\"/auth/set-password\", data, options);\n }\n\n async verifyEmail(\n data: { token: string },\n options?: RequestOptions,\n ): Promise<void> {\n await this.http.post(\"/auth/verify-email\", data, options);\n }\n\n async resendVerification(\n email: string,\n options?: RequestOptions,\n ): Promise<void> {\n await this.http.post(\"/auth/resend-verification\", { email }, options);\n }\n\n async sendSmsCode(\n phone: string,\n purpose: string,\n options?: RequestOptions,\n ): Promise<void> {\n await this.http.post(\"/auth/sms/send\", { phone, purpose }, options);\n }\n\n async verifySms(\n data: { phone: string; code: string; purpose: string },\n options?: RequestOptions,\n ): Promise<AuthResult> {\n const result = await this.http.post<AuthResult>(\n \"/auth/sms/verify\",\n data,\n options,\n );\n this.store.save(result);\n return result;\n }\n\n async bindPhone(\n data: { phone: string; code: string },\n options?: RequestOptions,\n ): Promise<void> {\n await this.http.post(\"/auth/phone/bind\", data, options);\n }\n\n getOAuthRedirectURL(provider: string): string {\n return `${this.http.baseUrl}/auth/oauth/${provider}`;\n }\n\n async listOAuthProviders(\n options?: RequestOptions,\n ): Promise<OAuthProvider[]> {\n return this.http.get<OAuthProvider[]>(\n \"/auth/oauth/providers\",\n options,\n );\n }\n\n async authWithOAuth(\n data: { provider: string; code: string; redirect_url: string },\n options?: RequestOptions,\n ): Promise<AuthResult> {\n const result = await this.http.get<AuthResult>(\n `/auth/oauth/${data.provider}/callback`,\n {\n ...options,\n query: { code: data.code, redirect_url: data.redirect_url },\n },\n );\n this.store.save(result);\n return result;\n }\n\n async listOAuthBindings(options?: RequestOptions): Promise<OAuthBinding[]> {\n return this.http.get<OAuthBinding[]>(\n \"/auth/oauth/bindings\",\n options,\n );\n }\n\n async unbindOAuth(\n provider: string,\n options?: RequestOptions,\n ): Promise<void> {\n await this.http.request<void>(this.http.pathForDelete(\"/auth/oauth\", `${provider}/unbind`), {\n ...options,\n method: this.http.methodForDelete(),\n });\n }\n\n async listCredentials(\n options?: RequestOptions,\n ): Promise<CredentialResponse[]> {\n return this.http.get<CredentialResponse[]>(\"/auth/credentials\", options);\n }\n\n async bindEmail(\n data: { email: string; password: string },\n options?: RequestOptions,\n ): Promise<void> {\n await this.http.post(\"/auth/credentials/bind-email\", data, options);\n }\n\n async deleteCredential(id: number, options?: RequestOptions): Promise<void> {\n await this.http.request<void>(this.http.pathForDelete(\"/auth/credentials\", String(id)), {\n ...options,\n method: this.http.methodForDelete(),\n });\n }\n}\n","import { HttpClient } from \"../client\";\nimport type { PaginatedData, RequestOptions, User, UserRole } from \"../types\";\n\nexport class Users {\n private readonly http: HttpClient;\n\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n async getMe(options?: RequestOptions): Promise<User> {\n return this.http.get<User>(\"/users/me\", options);\n }\n\n async updateMe(\n data: {\n username?: string;\n bio?: string;\n website?: string;\n avatar?: string;\n social_links?: Record<string, string>;\n metadata?: unknown;\n },\n options?: RequestOptions,\n ): Promise<User> {\n return this.http.request<User>(this.http.pathForUpdate(\"/users\", \"me\"), {\n ...options,\n method: this.http.methodForUpdate(),\n body: data,\n });\n }\n\n async changePassword(\n data: { old_password: string; new_password: string },\n options?: RequestOptions,\n ): Promise<void> {\n await this.http.request<void>(this.http.pathForUpdate(\"/users\", \"me/password\"), {\n ...options,\n method: this.http.methodForUpdate(),\n body: data,\n });\n }\n\n async getUser(id: string, options?: RequestOptions): Promise<User> {\n return this.http.get<User>(`/users/${id}`, options);\n }\n\n async listUsers(\n page = 1,\n pageSize = 25,\n options?: RequestOptions,\n ): Promise<PaginatedData<User>> {\n return this.http.get<PaginatedData<User>>(\"/users\", {\n ...options,\n query: { page: String(page), page_size: String(pageSize) },\n });\n }\n\n async updateUserRole(\n id: string,\n role: UserRole,\n options?: RequestOptions,\n ): Promise<User> {\n return this.http.request<User>(this.http.pathForUpdate(\"/users\", `${id}/role`), {\n ...options,\n method: this.http.methodForUpdate(),\n body: { role },\n });\n }\n}\n","import { HttpClient, toQueryString } from \"../client\";\nimport type {\n PaginatedData,\n PostListQuery,\n PostResponse,\n PostStatus,\n RequestOptions,\n} from \"../types\";\n\nexport interface CreatePostBody {\n title: string;\n content: string;\n excerpt?: string;\n cover_image?: string;\n status?: PostStatus;\n category_id?: string;\n tag_ids?: string[];\n}\n\nexport interface UpdatePostBody {\n title?: string;\n content?: string;\n excerpt?: string;\n cover_image?: string;\n status?: PostStatus;\n category_id?: string;\n tag_ids?: string[];\n}\n\nexport class Posts {\n private readonly http: HttpClient;\n\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n async list(\n query?: PostListQuery,\n options?: RequestOptions,\n ): Promise<PaginatedData<PostResponse>> {\n return this.http.get<PaginatedData<PostResponse>>(\"/posts\", {\n ...options,\n query: toQueryString(query as unknown as Record<string, string | number | undefined>),\n });\n }\n\n async get(slug: string, options?: RequestOptions): Promise<PostResponse> {\n return this.http.get<PostResponse>(`/posts/${slug}`, options);\n }\n\n async create(\n body: CreatePostBody,\n options?: RequestOptions,\n ): Promise<PostResponse> {\n return this.http.request<PostResponse>(this.http.pathForCreate(\"/posts\"), {\n ...options,\n method: this.http.methodForCreate(),\n body,\n });\n }\n\n async update(\n slug: string,\n body: UpdatePostBody,\n options?: RequestOptions,\n ): Promise<PostResponse> {\n return this.http.request<PostResponse>(this.http.pathForUpdate(\"/posts\", slug), {\n ...options,\n method: this.http.methodForUpdate(),\n body,\n });\n }\n\n async delete(slug: string, options?: RequestOptions): Promise<void> {\n await this.http.request<void>(this.http.pathForDelete(\"/posts\", slug), {\n ...options,\n method: this.http.methodForDelete(),\n });\n }\n}\n","import { HttpClient } from \"../client\";\nimport type { Page, PaginatedData, RequestOptions, SitemapEntry } from \"../types\";\n\nexport class Pages {\n private readonly http: HttpClient;\n\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n async list(\n page = 1,\n pageSize = 25,\n options?: RequestOptions,\n ): Promise<PaginatedData<Page>> {\n return this.http.get<PaginatedData<Page>>(\"/pages\", {\n ...options,\n query: { page: String(page), page_size: String(pageSize) },\n });\n }\n\n async get(slug: string, options?: RequestOptions): Promise<Page> {\n return this.http.get<Page>(`/pages/${slug}`, options);\n }\n\n async sitemap(options?: RequestOptions): Promise<SitemapEntry[]> {\n return this.http.get<SitemapEntry[]>(\"/pages/sitemap\", options);\n }\n}\n","import { HttpClient } from \"../client\";\nimport type {\n CommentResponse,\n CommentStatus,\n PaginatedData,\n RequestOptions,\n} from \"../types\";\n\nexport interface CreateCommentBody {\n content: string;\n parent_id?: string;\n nickname?: string;\n email?: string;\n}\n\nexport class Comments {\n private readonly http: HttpClient;\n\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n async list(\n postSlug: string,\n page = 1,\n pageSize = 25,\n options?: RequestOptions,\n ): Promise<PaginatedData<CommentResponse>> {\n return this.http.get<PaginatedData<CommentResponse>>(\n `/posts/${postSlug}/comments`,\n {\n ...options,\n query: { page: String(page), page_size: String(pageSize) },\n },\n );\n }\n\n async create(\n postSlug: string,\n body: CreateCommentBody,\n options?: RequestOptions,\n ): Promise<CommentResponse> {\n const isAuthenticated = this.http.authStore?.isAuthenticated;\n const endpoint = isAuthenticated\n ? `/posts/${postSlug}/comments/authed`\n : `/posts/${postSlug}/comments`;\n return this.http.post<CommentResponse>(endpoint, body, options);\n }\n\n async listAll(\n page = 1,\n pageSize = 25,\n options?: RequestOptions,\n ): Promise<PaginatedData<CommentResponse>> {\n return this.http.get<PaginatedData<CommentResponse>>(\"/comments\", {\n ...options,\n query: { page: String(page), page_size: String(pageSize) },\n });\n }\n\n async updateStatus(\n id: string,\n status: CommentStatus,\n options?: RequestOptions,\n ): Promise<void> {\n await this.http.request<void>(this.http.pathForUpdate(\"/comments/status\", id), {\n ...options,\n method: this.http.methodForUpdate(),\n body: { status },\n });\n }\n\n async delete(id: string, options?: RequestOptions): Promise<void> {\n await this.http.request<void>(this.http.pathForDelete(\"/comments\", id), {\n ...options,\n method: this.http.methodForDelete(),\n });\n }\n}\n","import { HttpClient } from \"../client\";\nimport type { Category, PaginatedData, RequestOptions } from \"../types\";\n\nexport interface CreateCategoryBody {\n name: string;\n description?: string;\n parent_id?: string;\n sort_order?: number;\n}\n\nexport interface UpdateCategoryBody {\n name?: string;\n description?: string;\n parent_id?: string;\n sort_order?: number;\n}\n\nexport class Categories {\n private readonly http: HttpClient;\n\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n async list(\n page = 1,\n pageSize = 25,\n options?: RequestOptions,\n ): Promise<PaginatedData<Category>> {\n return this.http.get<PaginatedData<Category>>(\"/categories\", {\n ...options,\n query: { page: String(page), page_size: String(pageSize) },\n });\n }\n\n async get(\n id: string,\n options?: RequestOptions,\n ): Promise<Category> {\n return this.http.get<Category>(`/categories/${id}`, options);\n }\n\n async create(\n body: CreateCategoryBody,\n options?: RequestOptions,\n ): Promise<Category> {\n return this.http.request<Category>(this.http.pathForCreate(\"/categories\"), {\n ...options,\n method: this.http.methodForCreate(),\n body,\n });\n }\n\n async update(\n id: string,\n body: UpdateCategoryBody,\n options?: RequestOptions,\n ): Promise<Category> {\n return this.http.request<Category>(this.http.pathForUpdate(\"/categories\", id), {\n ...options,\n method: this.http.methodForUpdate(),\n body,\n });\n }\n\n async delete(id: string, options?: RequestOptions): Promise<void> {\n await this.http.request<void>(this.http.pathForDelete(\"/categories\", id), {\n ...options,\n method: this.http.methodForDelete(),\n });\n }\n}\n","import { HttpClient } from \"../client\";\nimport type { PaginatedData, RequestOptions, Tag } from \"../types\";\n\nexport class Tags {\n private readonly http: HttpClient;\n\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n async list(\n page = 1,\n pageSize = 25,\n options?: RequestOptions,\n ): Promise<PaginatedData<Tag>> {\n return this.http.get<PaginatedData<Tag>>(\"/tags\", {\n ...options,\n query: { page: String(page), page_size: String(pageSize) },\n });\n }\n\n async get(\n id: string,\n options?: RequestOptions,\n ): Promise<Tag> {\n return this.http.get<Tag>(`/tags/${id}`, options);\n }\n\n async create(\n body: { name: string },\n options?: RequestOptions,\n ): Promise<Tag> {\n return this.http.request<Tag>(this.http.pathForCreate(\"/tags\"), {\n ...options,\n method: this.http.methodForCreate(),\n body,\n });\n }\n\n async update(\n id: string,\n body: { name: string },\n options?: RequestOptions,\n ): Promise<Tag> {\n return this.http.request<Tag>(this.http.pathForUpdate(\"/tags\", id), {\n ...options,\n method: this.http.methodForUpdate(),\n body,\n });\n }\n\n async delete(id: string, options?: RequestOptions): Promise<void> {\n await this.http.request<void>(this.http.pathForDelete(\"/tags\", id), {\n ...options,\n method: this.http.methodForDelete(),\n });\n }\n}\n","import { HttpClient } from \"../client\";\nimport type {\n MediaFile,\n MediaStats,\n MutateOptions,\n PaginatedData,\n RequestOptions,\n} from \"../types\";\n\nexport class Media {\n private readonly http: HttpClient;\n\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n async upload(\n file: File,\n options?: MutateOptions,\n ): Promise<MediaFile> {\n const formData = new FormData();\n formData.append(\"file\", file);\n return this.http.request<MediaFile>(\"/media/upload\", {\n ...options,\n method: \"POST\",\n body: formData,\n });\n }\n\n async list(\n page = 1,\n pageSize = 25,\n options?: RequestOptions,\n ): Promise<PaginatedData<MediaFile>> {\n return this.http.get<PaginatedData<MediaFile>>(\"/media\", {\n ...options,\n query: { page: String(page), page_size: String(pageSize) },\n });\n }\n\n async stats(options?: RequestOptions): Promise<MediaStats> {\n return this.http.get<MediaStats>(\"/media/stats\", options);\n }\n\n async delete(id: string, options?: RequestOptions): Promise<void> {\n await this.http.request<void>(this.http.pathForDelete(\"/media\", id), {\n ...options,\n method: this.http.methodForDelete(),\n });\n }\n\n getFileURL(\n record: Record<string, unknown>,\n field: string,\n options?: { thumb?: string },\n ): string {\n const base = this.http.baseUrl.replace(\"/api/v1\", \"\");\n const path = record[field];\n if (typeof path !== \"string\") return \"\";\n if (path.startsWith(\"http\")) return path;\n let url = `${base}/uploads/${path}`;\n if (options?.thumb) {\n url += `?thumb=${encodeURIComponent(options.thumb)}`;\n }\n return url;\n }\n}\n","import { HttpClient } from \"../client\";\nimport type { HealthStatus, RequestOptions } from \"../types\";\n\nexport class Health {\n private readonly http: HttpClient;\n\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n async check(options?: RequestOptions): Promise<HealthStatus> {\n return this.http.get<HealthStatus>(\"/health\", options);\n }\n\n async liveness(options?: RequestOptions): Promise<HealthStatus> {\n const base = this.http.baseUrl.replace(/\\/api\\/v\\d+\\/?$/, \"\");\n const res = await fetch(`${base}/healthz`);\n return res.json();\n }\n\n async readiness(options?: RequestOptions): Promise<HealthStatus> {\n const base = this.http.baseUrl.replace(/\\/api\\/v\\d+\\/?$/, \"\");\n const res = await fetch(`${base}/readyz`);\n return res.json();\n }\n}\n","import { HttpClient, toQueryString } from \"../client\";\nimport type {\n PaginatedData,\n RequestOptions,\n WalletResponse,\n WalletTransactionResponse,\n} from \"../types\";\n\nexport class Wallets {\n private readonly http: HttpClient;\n\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n async list(options?: RequestOptions): Promise<WalletResponse[]> {\n return this.http.get<WalletResponse[]>(\"/wallets\", options);\n }\n\n async get(\n currency: string,\n options?: RequestOptions,\n ): Promise<WalletResponse> {\n return this.http.get<WalletResponse>(`/wallets/${currency}`, options);\n }\n\n async listTransactions(\n currency: string,\n query?: { page?: number; page_size?: number },\n options?: RequestOptions,\n ): Promise<PaginatedData<WalletTransactionResponse>> {\n return this.http.get<PaginatedData<WalletTransactionResponse>>(\n `/wallets/${currency}/transactions`,\n { ...options, query: toQueryString(query) },\n );\n }\n\n async listAllTransactions(\n query?: { page?: number; page_size?: number },\n options?: RequestOptions,\n ): Promise<PaginatedData<WalletTransactionResponse>> {\n return this.http.get<PaginatedData<WalletTransactionResponse>>(\n \"/wallets/transactions\",\n { ...options, query: toQueryString(query) },\n );\n }\n}\n","export class Events {\n private readonly baseUrl: string;\n\n constructor(baseUrl: string) {\n this.baseUrl = baseUrl;\n }\n\n subscribe(filter?: string): EventSource {\n const url = filter\n ? `${this.baseUrl}/events?filter=${encodeURIComponent(filter)}`\n : `${this.baseUrl}/events`;\n return new EventSource(url);\n }\n}\n","import { HttpClient } from \"../client\";\nimport type { OrderResponse, PaginatedData, RequestOptions } from \"../types\";\n\nexport interface CreateOrderItemBody {\n product_id: string;\n quantity: number;\n}\n\nexport interface CreateOrderBody {\n items: CreateOrderItemBody[];\n currency?: string;\n buyer_name?: string;\n buyer_phone?: string;\n buyer_email?: string;\n shipping_address?: string;\n remark?: string;\n}\n\nexport class Orders {\n private readonly http: HttpClient;\n\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n async list(\n page = 1,\n pageSize = 25,\n options?: RequestOptions,\n ): Promise<PaginatedData<OrderResponse>> {\n return this.http.get<PaginatedData<OrderResponse>>(\"/orders\", {\n ...options,\n query: { page: String(page), page_size: String(pageSize) },\n });\n }\n\n async get(id: string, options?: RequestOptions): Promise<OrderResponse> {\n return this.http.get<OrderResponse>(`/orders/${id}`, options);\n }\n\n async create(\n body: CreateOrderBody,\n options?: RequestOptions,\n ): Promise<OrderResponse> {\n return this.http.request<OrderResponse>(this.http.pathForCreate(\"/orders\"), {\n ...options,\n method: this.http.methodForCreate(),\n body,\n });\n }\n\n async cancel(id: string, options?: RequestOptions): Promise<void> {\n await this.http.request<void>(this.http.pathForUpdate(\"/orders\", id), {\n ...options,\n method: this.http.methodForUpdate(),\n });\n }\n\n async confirmReceipt(id: string, options?: RequestOptions): Promise<void> {\n await this.http.post(`/orders/${id}/confirm`, undefined, options);\n }\n}\n","import { HttpClient, toQueryString } from \"../client\";\nimport type {\n AvailableChannelsResponse,\n PaymentOrderResponse,\n PaymentRefundResponse,\n PaymentTransactionResponse,\n PaginatedData,\n RequestOptions,\n} from \"../types\";\n\nexport interface CreatePaymentOrderBody {\n order_id: string;\n channel_id?: string;\n method?: string;\n country?: string;\n language?: string;\n return_url?: string;\n metadata?: string;\n}\n\nexport class Payment {\n private readonly http: HttpClient;\n\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n async listAvailableChannels(\n query: { order_id: string; country?: string; language?: string },\n options?: RequestOptions,\n ): Promise<AvailableChannelsResponse> {\n return this.http.get<AvailableChannelsResponse>(\"/payment/channels/available\", {\n ...options,\n query: toQueryString(query),\n });\n }\n\n async listOrders(\n page = 1,\n pageSize = 25,\n options?: RequestOptions,\n ): Promise<PaginatedData<PaymentOrderResponse>> {\n return this.http.get<PaginatedData<PaymentOrderResponse>>(\"/payment/orders\", {\n ...options,\n query: { page: String(page), page_size: String(pageSize) },\n });\n }\n\n async createOrder(\n body: CreatePaymentOrderBody,\n options?: RequestOptions,\n ): Promise<PaymentOrderResponse> {\n return this.http.request<PaymentOrderResponse>(this.http.pathForCreate(\"/payment/orders\"), {\n ...options,\n method: this.http.methodForCreate(),\n body,\n });\n }\n\n async getOrder(\n id: string,\n options?: RequestOptions,\n ): Promise<PaymentOrderResponse> {\n return this.http.get<PaymentOrderResponse>(`/payment/orders/${id}`, options);\n }\n\n async cancelOrder(id: string, options?: RequestOptions): Promise<void> {\n await this.http.post(`/payment/orders/${id}/cancel`, undefined, options);\n }\n\n async listTransactions(\n id: string,\n options?: RequestOptions,\n ): Promise<PaymentTransactionResponse[]> {\n return this.http.get<PaymentTransactionResponse[]>(\n `/payment/orders/${id}/transactions`,\n options,\n );\n }\n\n async listRefunds(\n id: string,\n options?: RequestOptions,\n ): Promise<PaymentRefundResponse[]> {\n return this.http.get<PaymentRefundResponse[]>(\n `/payment/orders/${id}/refunds`,\n options,\n );\n }\n}\n","import { HttpClient } from \"../client\";\nimport type { PaginatedData, ProductResponse, RequestOptions } from \"../types\";\n\nexport class Products {\n private readonly http: HttpClient;\n\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n async list(\n page = 1,\n pageSize = 25,\n options?: RequestOptions,\n ): Promise<PaginatedData<ProductResponse>> {\n return this.http.get<PaginatedData<ProductResponse>>(\"/products\", {\n ...options,\n query: { page: String(page), page_size: String(pageSize) },\n });\n }\n\n async get(id: string, options?: RequestOptions): Promise<ProductResponse> {\n return this.http.get<ProductResponse>(`/products/${id}`, options);\n }\n}\n","import { HttpClient } from \"../client\";\nimport type { RequestOptions } from \"../types\";\n\nexport interface CartItem {\n id: string;\n quantity: number;\n attributes: string | null;\n title: string;\n price: number;\n cover_url: string | null;\n created_at: string;\n updated_at: string;\n}\n\nexport interface CartResponse {\n items: CartItem[];\n total: number;\n}\n\nexport interface AddToCartBody {\n product_id: string;\n quantity: number;\n attributes?: string;\n}\n\nexport interface UpdateCartItemBody {\n quantity: number;\n}\n\nexport class Cart {\n private readonly http: HttpClient;\n\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n async list(options?: RequestOptions): Promise<CartResponse> {\n return this.http.get<CartResponse>(\"/cart\", options);\n }\n\n async add(\n body: AddToCartBody,\n options?: RequestOptions,\n ): Promise<void> {\n await this.http.request<void>(this.http.pathForCreate(\"/cart\"), {\n ...options,\n method: this.http.methodForCreate(),\n body,\n });\n }\n\n async updateItem(\n id: string,\n body: UpdateCartItemBody,\n options?: RequestOptions,\n ): Promise<void> {\n await this.http.request<void>(this.http.pathForUpdate(\"/cart\", id), {\n ...options,\n method: this.http.methodForUpdate(),\n body,\n });\n }\n\n async removeItem(\n id: string,\n options?: RequestOptions,\n ): Promise<void> {\n await this.http.request<void>(this.http.pathForUpdate(\"/cart\", id), {\n ...options,\n method: this.http.methodForUpdate(),\n });\n }\n\n async clear(options?: RequestOptions): Promise<void> {\n await this.http.request<void>(\"/cart\", {\n ...options,\n method: \"DELETE\",\n });\n }\n\n async checkout(options?: RequestOptions): Promise<Record<string, unknown>> {\n return this.http.post<Record<string, unknown>>(\n \"/cart/checkout\",\n undefined,\n options,\n );\n }\n}\n","import { HttpClient } from \"../client\";\nimport type { AuditLog, PaginatedData, RequestOptions } from \"../types\";\n\nexport class AdminAudit {\n private readonly http: HttpClient;\n\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n async list(\n page = 1,\n pageSize = 25,\n options?: RequestOptions,\n ): Promise<PaginatedData<AuditLog>> {\n return this.http.get<PaginatedData<AuditLog>>(\"/admin/audit\", {\n ...options,\n query: { page: String(page), page_size: String(pageSize) },\n });\n }\n\n async get(id: number, options?: RequestOptions): Promise<AuditLog> {\n return this.http.get<AuditLog>(`/admin/audit/${id}`, options);\n }\n}\n","import { HttpClient } from \"../client\";\nimport type {\n BatchRequest,\n BatchResponse,\n Category,\n CreateCategoryRequest,\n PaginatedData,\n RequestOptions,\n UpdateCategoryRequest,\n} from \"../types\";\n\nexport class AdminCategories {\n private readonly http: HttpClient;\n\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n async list(\n page = 1,\n pageSize = 25,\n options?: RequestOptions,\n ): Promise<PaginatedData<Category>> {\n return this.http.get<PaginatedData<Category>>(\"/admin/categories\", {\n ...options,\n query: { page: String(page), page_size: String(pageSize) },\n });\n }\n\n async create(\n body: CreateCategoryRequest,\n options?: RequestOptions,\n ): Promise<Category> {\n return this.http.request<Category>(this.http.pathForCreate(\"/admin/categories\"), {\n ...options,\n method: this.http.methodForCreate(),\n body,\n });\n }\n\n async update(\n id: string,\n body: UpdateCategoryRequest,\n options?: RequestOptions,\n ): Promise<Category> {\n return this.http.request<Category>(this.http.pathForUpdate(\"/admin/categories\", id), {\n ...options,\n method: this.http.methodForUpdate(),\n body,\n });\n }\n\n async delete(id: string, options?: RequestOptions): Promise<void> {\n await this.http.request<void>(this.http.pathForDelete(\"/admin/categories\", id), {\n ...options,\n method: this.http.methodForDelete(),\n });\n }\n\n async batch(\n data: BatchRequest,\n options?: RequestOptions,\n ): Promise<BatchResponse> {\n return this.http.post<BatchResponse>(\n \"/admin/categories/batch\",\n data,\n options,\n );\n }\n}\n","import { HttpClient, toQueryString } from \"../client\";\nimport type {\n AdminCommentRow,\n BatchRequest,\n BatchResponse,\n CommentStatus,\n PaginatedData,\n RequestOptions,\n} from \"../types\";\n\nexport class AdminComments {\n private readonly http: HttpClient;\n\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n async list(\n query?: { page?: number; page_size?: number; status?: CommentStatus },\n options?: RequestOptions,\n ): Promise<PaginatedData<AdminCommentRow>> {\n return this.http.get<PaginatedData<AdminCommentRow>>(\"/admin/comments\", {\n ...options,\n query: toQueryString(query as Record<string, string | number | undefined>),\n });\n }\n\n async updateStatus(\n id: string,\n status: CommentStatus,\n options?: RequestOptions,\n ): Promise<void> {\n await this.http.request<void>(this.http.pathForUpdate(\"/admin/comments/status\", id), {\n ...options,\n method: this.http.methodForUpdate(),\n body: { status },\n });\n }\n\n async delete(id: string, options?: RequestOptions): Promise<void> {\n await this.http.request<void>(this.http.pathForDelete(\"/admin/comments\", id), {\n ...options,\n method: this.http.methodForDelete(),\n });\n }\n\n async batch(\n data: BatchRequest,\n options?: RequestOptions,\n ): Promise<BatchResponse> {\n return this.http.post<BatchResponse>(\n \"/admin/comments/batch\",\n data,\n options,\n );\n }\n}\n","import { HttpClient } from \"../client\";\nimport type { ContentTypeSchema, RequestOptions } from \"../types\";\n\nexport class AdminContentTypes {\n private readonly http: HttpClient;\n\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n async list(options?: RequestOptions): Promise<ContentTypeSchema[]> {\n return this.http.get<ContentTypeSchema[]>(\"/admin/content-types\", options);\n }\n\n async get(\n name: string,\n options?: RequestOptions,\n ): Promise<ContentTypeSchema> {\n return this.http.get<ContentTypeSchema>(\n `/admin/content-types/${name}`,\n options,\n );\n }\n\n async create(\n schema: ContentTypeSchema,\n options?: RequestOptions,\n ): Promise<ContentTypeSchema> {\n return this.http.request<ContentTypeSchema>(this.http.pathForCreate(\"/admin/content-types\"), {\n ...options,\n method: this.http.methodForCreate(),\n body: schema,\n });\n }\n\n async update(\n name: string,\n schema: Partial<ContentTypeSchema>,\n options?: RequestOptions,\n ): Promise<ContentTypeSchema> {\n return this.http.request<ContentTypeSchema>(this.http.pathForUpdate(\"/admin/content-types\", name), {\n ...options,\n method: this.http.methodForUpdate(),\n body: schema,\n });\n }\n\n async delete(name: string, options?: RequestOptions): Promise<void> {\n await this.http.request<void>(this.http.pathForDelete(\"/admin/content-types\", name), {\n ...options,\n method: this.http.methodForDelete(),\n });\n }\n}\n","import { HttpClient, toQueryString } from \"../client\";\nimport type {\n BatchResponse,\n CronJob,\n CronLog,\n RequestOptions,\n} from \"../types\";\n\nexport class AdminCrons {\n private readonly http: HttpClient;\n\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n async list(options?: RequestOptions): Promise<CronJob[]> {\n return this.http.get<CronJob[]>(\"/admin/crons\", options);\n }\n\n async create(\n data: { name: string; schedule: string; handler: string },\n options?: RequestOptions,\n ): Promise<CronJob> {\n return this.http.request<CronJob>(this.http.pathForCreate(\"/admin/crons\"), {\n ...options,\n method: this.http.methodForCreate(),\n body: data,\n });\n }\n\n async get(id: string, options?: RequestOptions): Promise<CronJob> {\n return this.http.get<CronJob>(`/admin/crons/${id}`, options);\n }\n\n async update(\n id: string,\n data: Partial<CronJob>,\n options?: RequestOptions,\n ): Promise<CronJob> {\n return this.http.request<CronJob>(this.http.pathForUpdate(\"/admin/crons\", id), {\n ...options,\n method: this.http.methodForUpdate(),\n body: data,\n });\n }\n\n async delete(id: string, options?: RequestOptions): Promise<void> {\n await this.http.request<void>(this.http.pathForDelete(\"/admin/crons\", id), {\n ...options,\n method: this.http.methodForDelete(),\n });\n }\n\n async toggle(\n id: string,\n enabled: boolean,\n options?: RequestOptions,\n ): Promise<CronJob> {\n return this.http.post<CronJob>(`/admin/crons/${id}/toggle`, { enabled }, options);\n }\n\n async listLogs(\n params?: { schedule_id?: string; limit?: number },\n options?: RequestOptions,\n ): Promise<CronLog[]> {\n return this.http.get<CronLog[]>(\"/admin/crons/logs\", {\n ...options,\n query: toQueryString(params),\n });\n }\n\n async cleanupLogs(options?: RequestOptions): Promise<void> {\n await this.http.post(\"/admin/crons/logs/cleanup\", {}, options);\n }\n\n async batch(\n data: { action: string; ids: string[] },\n options?: RequestOptions,\n ): Promise<BatchResponse> {\n return this.http.post(\"/admin/crons/batch\", data, options);\n }\n}\n","import { HttpClient } from \"../client\";\nimport type {\n CreateCurrencyRequest,\n CurrencyResponse,\n RequestOptions,\n UpdateCurrencyRequest,\n} from \"../types\";\n\nexport class AdminCurrencies {\n private readonly http: HttpClient;\n\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n async list(options?: RequestOptions): Promise<CurrencyResponse[]> {\n return this.http.get<CurrencyResponse[]>(\"/admin/currencies\", options);\n }\n\n async get(\n code: string,\n options?: RequestOptions,\n ): Promise<CurrencyResponse> {\n return this.http.get<CurrencyResponse>(\n `/admin/currencies/${code}`,\n options,\n );\n }\n\n async create(\n body: CreateCurrencyRequest,\n options?: RequestOptions,\n ): Promise<CurrencyResponse> {\n return this.http.request<CurrencyResponse>(this.http.pathForCreate(\"/admin/currencies\"), {\n ...options,\n method: this.http.methodForCreate(),\n body,\n });\n }\n\n async update(\n code: string,\n body: UpdateCurrencyRequest,\n options?: RequestOptions,\n ): Promise<CurrencyResponse> {\n return this.http.request<CurrencyResponse>(this.http.pathForUpdate(\"/admin/currencies\", code), {\n ...options,\n method: this.http.methodForUpdate(),\n body,\n });\n }\n}\n","import { HttpClient } from \"../client\";\nimport type {\n BatchRequest,\n BatchResponse,\n MediaFile,\n MediaStats,\n MutateOptions,\n PaginatedData,\n RequestOptions,\n} from \"../types\";\n\nexport class AdminMedia {\n private readonly http: HttpClient;\n\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n async upload(\n file: File,\n options?: MutateOptions,\n ): Promise<MediaFile> {\n const formData = new FormData();\n formData.append(\"file\", file);\n return this.http.request<MediaFile>(\"/admin/media/upload\", {\n ...options,\n method: \"POST\",\n body: formData,\n });\n }\n\n async list(\n page = 1,\n pageSize = 25,\n options?: RequestOptions,\n ): Promise<PaginatedData<MediaFile>> {\n return this.http.get<PaginatedData<MediaFile>>(\"/admin/media\", {\n ...options,\n query: { page: String(page), page_size: String(pageSize) },\n });\n }\n\n async delete(id: string, options?: RequestOptions): Promise<void> {\n await this.http.request<void>(this.http.pathForDelete(\"/admin/media\", id), {\n ...options,\n method: this.http.methodForDelete(),\n });\n }\n\n async batch(\n data: BatchRequest,\n options?: RequestOptions,\n ): Promise<BatchResponse> {\n return this.http.post<BatchResponse>(\"/admin/media/batch\", data, options);\n }\n}\n","import { HttpClient } from \"../client\";\nimport type { OptionGroup, RequestOptions } from \"../types\";\n\nexport class AdminOptions {\n private readonly http: HttpClient;\n\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n async list(options?: RequestOptions): Promise<OptionGroup[]> {\n return this.http.get<OptionGroup[]>(\"/admin/options\", options);\n }\n\n async get(key: string, options?: RequestOptions): Promise<unknown> {\n return this.http.get<unknown>(`/admin/options/${key}`, options);\n }\n\n async set(\n key: string,\n value: string,\n options?: RequestOptions,\n ): Promise<void> {\n await this.http.request<void>(this.http.pathForUpdate(\"/admin/options\", key), {\n ...options,\n method: this.http.methodForUpdate(),\n body: { value },\n });\n }\n\n async delete(key: string, options?: RequestOptions): Promise<void> {\n await this.http.request<void>(this.http.pathForDelete(\"/admin/options\", key), {\n ...options,\n method: this.http.methodForDelete(),\n });\n }\n\n async batchUpdate(\n data: Record<string, unknown>,\n options?: RequestOptions,\n ): Promise<void> {\n await this.http.request<void>(this.http.pathForUpdate(\"/admin/options\", \"\"), {\n ...options,\n method: this.http.methodForUpdate(),\n body: { options: data },\n });\n }\n\n async getPublic(\n options?: RequestOptions,\n ): Promise<Record<string, string>> {\n return this.http.get<Record<string, string>>(\"/options/public\", options);\n }\n}\n","import { HttpClient, toQueryString } from \"../client\";\nimport type {\n OrderResponse,\n OrderStatsResponse,\n PaginatedData,\n RequestOptions,\n} from \"../types\";\n\nexport interface ShipOrderBody {\n tracking_no?: string;\n carrier?: string;\n}\n\nexport interface UpdateAdminRemarkBody {\n admin_remark: string;\n}\n\nexport class AdminOrders {\n private readonly http: HttpClient;\n\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n async list(\n query?: { page?: number; page_size?: number; status?: string },\n options?: RequestOptions,\n ): Promise<PaginatedData<OrderResponse>> {\n return this.http.get<PaginatedData<OrderResponse>>(\"/admin/orders\", {\n ...options,\n query: toQueryString(query as Record<string, string | number | undefined>),\n });\n }\n\n async get(id: string, options?: RequestOptions): Promise<OrderResponse> {\n return this.http.get<OrderResponse>(`/admin/orders/${id}`, options);\n }\n\n async pay(id: string, options?: RequestOptions): Promise<void> {\n await this.http.post(`/admin/orders/${id}/pay`, undefined, options);\n }\n\n async ship(id: string, body: ShipOrderBody, options?: RequestOptions): Promise<void> {\n await this.http.post(`/admin/orders/${id}/ship`, body, options);\n }\n\n async cancel(id: string, options?: RequestOptions): Promise<void> {\n await this.http.post(`/admin/orders/${id}/cancel`, undefined, options);\n }\n\n async refund(id: string, options?: RequestOptions): Promise<void> {\n await this.http.post(`/admin/orders/${id}/refund`, undefined, options);\n }\n\n async updateRemark(\n id: string,\n body: UpdateAdminRemarkBody,\n options?: RequestOptions,\n ): Promise<void> {\n await this.http.request<void>(this.http.pathForUpdate(\"/admin/orders\", `${id}/remark`), {\n ...options,\n method: this.http.methodForUpdate(),\n body,\n });\n }\n\n async stats(options?: RequestOptions): Promise<OrderStatsResponse> {\n return this.http.get<OrderStatsResponse>(\"/admin/orders/stats\", options);\n }\n}\n","import { HttpClient, toQueryString } from \"../client\";\nimport type {\n BatchRequest,\n BatchResponse,\n Page,\n PageStatus,\n PaginatedData,\n RequestOptions,\n} from \"../types\";\n\nexport interface CreatePageBody {\n title: string;\n slug?: string;\n content?: string;\n blocks?: string;\n meta_title?: string;\n meta_description?: string;\n og_image?: string;\n template?: string;\n parent_id?: string;\n sort_order?: number;\n status?: PageStatus;\n cover_image?: string;\n}\n\nexport interface UpdatePageBody {\n title?: string;\n slug?: string;\n content?: string;\n blocks?: string;\n meta_title?: string;\n meta_description?: string;\n og_image?: string;\n template?: string;\n parent_id?: string | null;\n sort_order?: number;\n status?: PageStatus;\n cover_image?: string;\n}\n\nexport class AdminPages {\n private readonly http: HttpClient;\n\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n async list(\n query?: { page?: number; page_size?: number; status?: PageStatus },\n options?: RequestOptions,\n ): Promise<PaginatedData<Page>> {\n return this.http.get<PaginatedData<Page>>(\"/admin/pages\", {\n ...options,\n query: toQueryString(query as Record<string, string | number | undefined>),\n });\n }\n\n async get(id: string, options?: RequestOptions): Promise<Page> {\n return this.http.get<Page>(`/admin/pages/${id}`, options);\n }\n\n async create(body: CreatePageBody, options?: RequestOptions): Promise<Page> {\n return this.http.request<Page>(this.http.pathForCreate(\"/admin/pages\"), {\n ...options,\n method: this.http.methodForCreate(),\n body,\n });\n }\n\n async update(\n id: string,\n body: UpdatePageBody,\n options?: RequestOptions,\n ): Promise<Page> {\n return this.http.request<Page>(this.http.pathForUpdate(\"/admin/pages\", id), {\n ...options,\n method: this.http.methodForUpdate(),\n body,\n });\n }\n\n async updateStatus(\n id: string,\n status: PageStatus,\n options?: RequestOptions,\n ): Promise<Page> {\n return this.http.request<Page>(this.http.pathForUpdate(\"/admin/pages/status\", id), {\n ...options,\n method: this.http.methodForUpdate(),\n body: { status },\n });\n }\n\n async delete(id: string, options?: RequestOptions): Promise<void> {\n await this.http.request<void>(this.http.pathForDelete(\"/admin/pages\", id), {\n ...options,\n method: this.http.methodForDelete(),\n });\n }\n\n async reorder(\n items: Array<{ id: string; sort_order: number }>,\n options?: RequestOptions,\n ): Promise<void> {\n await this.http.request<void>(this.http.pathForUpdate(\"/admin/pages\", \"reorder\"), {\n ...options,\n method: this.http.methodForUpdate(),\n body: { items },\n });\n }\n\n async batch(\n data: BatchRequest,\n options?: RequestOptions,\n ): Promise<BatchResponse> {\n return this.http.post<BatchResponse>(\"/admin/pages/batch\", data, options);\n }\n}\n","import { HttpClient, toQueryString } from \"../client\";\nimport type {\n PaginatedData,\n PaymentChannelResponse,\n PaymentOrderResponse,\n PaymentRefundResponse,\n PaymentTransactionResponse,\n RequestOptions,\n} from \"../types\";\n\nexport interface CreatePaymentChannelBody {\n provider: string;\n name: string;\n is_live?: boolean;\n credentials: string;\n webhook_secret?: string;\n settings?: string;\n sort_order?: number;\n}\n\nexport interface UpdatePaymentChannelBody {\n name?: string;\n is_live?: boolean;\n credentials?: string;\n webhook_secret?: string;\n settings?: string;\n is_active?: boolean;\n sort_order?: number;\n version: number;\n}\n\nexport interface CreateRefundBody {\n amount: number;\n reason?: string;\n}\n\nexport class AdminPayment {\n private readonly http: HttpClient;\n\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n async listChannels(\n page = 1,\n pageSize = 25,\n options?: RequestOptions,\n ): Promise<PaginatedData<PaymentChannelResponse>> {\n return this.http.get<PaginatedData<PaymentChannelResponse>>(\"/admin/payment/channels\", {\n ...options,\n query: { page: String(page), page_size: String(pageSize) },\n });\n }\n\n async getChannel(\n id: string,\n options?: RequestOptions,\n ): Promise<PaymentChannelResponse> {\n return this.http.get<PaymentChannelResponse>(`/admin/payment/channels/${id}`, options);\n }\n\n async createChannel(\n body: CreatePaymentChannelBody,\n options?: RequestOptions,\n ): Promise<PaymentChannelResponse> {\n return this.http.request<PaymentChannelResponse>(\n this.http.pathForCreate(\"/admin/payment/channels\"),\n { ...options, method: this.http.methodForCreate(), body },\n );\n }\n\n async updateChannel(\n id: string,\n body: UpdatePaymentChannelBody,\n options?: RequestOptions,\n ): Promise<PaymentChannelResponse> {\n return this.http.request<PaymentChannelResponse>(\n this.http.pathForUpdate(\"/admin/payment/channels\", id),\n { ...options, method: this.http.methodForUpdate(), body },\n );\n }\n\n async deleteChannel(id: string, options?: RequestOptions): Promise<void> {\n await this.http.request<void>(this.http.pathForDelete(\"/admin/payment/channels\", id), {\n ...options,\n method: this.http.methodForDelete(),\n });\n }\n\n async listOrders(\n query?: { page?: number; page_size?: number },\n options?: RequestOptions,\n ): Promise<PaginatedData<PaymentOrderResponse>> {\n return this.http.get<PaginatedData<PaymentOrderResponse>>(\"/admin/payment/orders\", {\n ...options,\n query: toQueryString(query),\n });\n }\n\n async getOrder(\n id: string,\n options?: RequestOptions,\n ): Promise<PaymentOrderResponse> {\n return this.http.get<PaymentOrderResponse>(`/admin/payment/orders/${id}`, options);\n }\n\n async refundOrder(\n id: string,\n body: CreateRefundBody,\n options?: RequestOptions,\n ): Promise<PaymentRefundResponse> {\n return this.http.post<PaymentRefundResponse>(\n `/admin/payment/orders/${id}/refund`,\n body,\n options,\n );\n }\n\n async listTransactions(\n query?: { page?: number; page_size?: number },\n options?: RequestOptions,\n ): Promise<PaginatedData<PaymentTransactionResponse>> {\n return this.http.get<PaginatedData<PaymentTransactionResponse>>(\n \"/admin/payment/transactions\",\n { ...options, query: toQueryString(query) },\n );\n }\n\n async listRefunds(\n query?: { page?: number; page_size?: number },\n options?: RequestOptions,\n ): Promise<PaginatedData<PaymentRefundResponse>> {\n return this.http.get<PaginatedData<PaymentRefundResponse>>(\n \"/admin/payment/refunds\",\n { ...options, query: toQueryString(query) },\n );\n }\n}\n","import { HttpClient } from \"../client\";\nimport type { BatchResponse, PaginatedData, PluginInfoResponse, RequestOptions } from \"../types\";\n\nexport class AdminPlugins {\n private readonly http: HttpClient;\n\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n async list(\n page = 1,\n pageSize = 25,\n options?: RequestOptions,\n ): Promise<PaginatedData<PluginInfoResponse>> {\n return this.http.get<PaginatedData<PluginInfoResponse>>(\"/admin/plugins\", {\n ...options,\n query: { page: String(page), page_size: String(pageSize) },\n });\n }\n\n async get(id: string, options?: RequestOptions): Promise<PluginInfoResponse> {\n return this.http.get<PluginInfoResponse>(`/admin/plugins/${id}`, options);\n }\n\n async enable(id: string, options?: RequestOptions): Promise<void> {\n await this.http.post(`/admin/plugins/${id}/enable`, {}, options);\n }\n\n async disable(id: string, options?: RequestOptions): Promise<void> {\n await this.http.post(`/admin/plugins/${id}/disable`, {}, options);\n }\n\n async reload(id: string, options?: RequestOptions): Promise<void> {\n await this.http.post(`/admin/plugins/${id}/reload`, {}, options);\n }\n\n async unload(id: string, options?: RequestOptions): Promise<void> {\n await this.http.request<void>(this.http.pathForDelete(\"/admin/plugins\", id), {\n ...options,\n method: this.http.methodForDelete(),\n });\n }\n\n async batch(\n data: { action: string; ids: string[] },\n options?: RequestOptions,\n ): Promise<BatchResponse> {\n return this.http.post(\"/admin/plugins/batch\", data, options);\n }\n}\n","import { HttpClient, toQueryString } from \"../client\";\nimport type {\n BatchRequest,\n BatchResponse,\n PaginatedData,\n PostResponse,\n PostStatus,\n RequestOptions,\n} from \"../types\";\nimport type { CreatePostBody, UpdatePostBody } from \"../public/posts\";\n\nexport class AdminPosts {\n private readonly http: HttpClient;\n\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n async list(\n query?: { page?: number; page_size?: number; status?: PostStatus },\n options?: RequestOptions,\n ): Promise<PaginatedData<PostResponse>> {\n return this.http.get<PaginatedData<PostResponse>>(\"/admin/posts\", {\n ...options,\n query: toQueryString(query as Record<string, string | number | undefined>),\n });\n }\n\n async get(\n slug: string,\n options?: RequestOptions,\n ): Promise<PostResponse> {\n return this.http.get<PostResponse>(`/admin/posts/${slug}`, options);\n }\n\n async create(\n body: CreatePostBody,\n options?: RequestOptions,\n ): Promise<PostResponse> {\n return this.http.request<PostResponse>(this.http.pathForCreate(\"/admin/posts\"), {\n ...options,\n method: this.http.methodForCreate(),\n body,\n });\n }\n\n async update(\n id: string,\n body: UpdatePostBody,\n options?: RequestOptions,\n ): Promise<PostResponse> {\n return this.http.request<PostResponse>(this.http.pathForUpdate(\"/admin/posts\", id), {\n ...options,\n method: this.http.methodForUpdate(),\n body,\n });\n }\n\n async delete(id: string, options?: RequestOptions): Promise<void> {\n await this.http.request<void>(this.http.pathForDelete(\"/admin/posts\", id), {\n ...options,\n method: this.http.methodForDelete(),\n });\n }\n\n async batch(\n data: BatchRequest,\n options?: RequestOptions,\n ): Promise<BatchResponse> {\n return this.http.post<BatchResponse>(\"/admin/posts/batch\", data, options);\n }\n}\n","import { HttpClient } from \"../client\";\nimport type { PaginatedData, ProductResponse, RequestOptions } from \"../types\";\n\nexport interface CreateProductBody {\n title: string;\n description?: string;\n cover_url?: string;\n category_id?: string;\n product_type?: string;\n fulfillment_type?: string;\n delivery_hook?: string;\n weight?: number;\n price: number;\n currency?: string;\n attributes?: string;\n sort_order?: number;\n slug?: string;\n content?: string;\n image_ids?: unknown;\n original_price?: number;\n specs?: unknown;\n unit?: string;\n min_purchase?: number;\n max_purchase?: number;\n virtual_sales?: number;\n meta_title?: string;\n meta_description?: string;\n}\n\nexport interface UpdateProductBody {\n title?: string;\n description?: string;\n cover_url?: string;\n category_id?: string;\n product_type?: string;\n fulfillment_type?: string;\n delivery_hook?: string;\n weight?: number;\n price?: number;\n currency?: string;\n status?: string;\n attributes?: string;\n sort_order?: number;\n slug?: string;\n content?: string;\n image_ids?: unknown;\n original_price?: number;\n specs?: unknown;\n unit?: string;\n min_purchase?: number;\n max_purchase?: number;\n virtual_sales?: number;\n meta_title?: string;\n meta_description?: string;\n version: number;\n}\n\nexport class AdminProducts {\n private readonly http: HttpClient;\n\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n async list(\n page = 1,\n pageSize = 25,\n options?: RequestOptions,\n ): Promise<PaginatedData<ProductResponse>> {\n return this.http.get<PaginatedData<ProductResponse>>(\"/admin/products\", {\n ...options,\n query: { page: String(page), page_size: String(pageSize) },\n });\n }\n\n async get(id: string, options?: RequestOptions): Promise<ProductResponse> {\n return this.http.get<ProductResponse>(`/admin/products/${id}`, options);\n }\n\n async create(\n body: CreateProductBody,\n options?: RequestOptions,\n ): Promise<ProductResponse> {\n return this.http.request<ProductResponse>(this.http.pathForCreate(\"/admin/products\"), {\n ...options,\n method: this.http.methodForCreate(),\n body,\n });\n }\n\n async update(\n id: string,\n body: UpdateProductBody,\n options?: RequestOptions,\n ): Promise<ProductResponse> {\n return this.http.request<ProductResponse>(this.http.pathForUpdate(\"/admin/products\", id), {\n ...options,\n method: this.http.methodForUpdate(),\n body,\n });\n }\n\n async delete(id: string, options?: RequestOptions): Promise<void> {\n await this.http.request<void>(this.http.pathForDelete(\"/admin/products\", id), {\n ...options,\n method: this.http.methodForDelete(),\n });\n }\n}\n","import { HttpClient } from \"../client\";\nimport type {\n BatchResponse,\n Permission,\n RequestOptions,\n Role,\n} from \"../types\";\n\nexport class AdminRBAC {\n private readonly http: HttpClient;\n\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n async listRoles(options?: RequestOptions): Promise<Role[]> {\n return this.http.get<Role[]>(\"/admin/rbac/roles\", options);\n }\n\n async createRole(\n data: { name: string; description?: string },\n options?: RequestOptions,\n ): Promise<Role> {\n return this.http.request<Role>(this.http.pathForCreate(\"/admin/rbac/roles\"), {\n ...options,\n method: this.http.methodForCreate(),\n body: data,\n });\n }\n\n async updateRole(\n id: string,\n data: Partial<Role>,\n options?: RequestOptions,\n ): Promise<Role> {\n return this.http.request<Role>(this.http.pathForUpdate(\"/admin/rbac/roles\", id), {\n ...options,\n method: this.http.methodForUpdate(),\n body: data,\n });\n }\n\n async deleteRole(id: string, options?: RequestOptions): Promise<void> {\n await this.http.request<void>(this.http.pathForDelete(\"/admin/rbac/roles\", id), {\n ...options,\n method: this.http.methodForDelete(),\n });\n }\n\n async batchRoles(\n data: { action: string; ids: string[] },\n options?: RequestOptions,\n ): Promise<BatchResponse> {\n return this.http.post(\"/admin/rbac/roles/batch\", data, options);\n }\n\n async getPermissions(\n roleId: string,\n options?: RequestOptions,\n ): Promise<Permission[]> {\n return this.http.get<Permission[]>(\n `/admin/rbac/roles/${roleId}/permissions`,\n options,\n );\n }\n\n async setPermissions(\n roleId: string,\n permissions: Permission[],\n options?: RequestOptions,\n ): Promise<void> {\n await this.http.request<void>(this.http.pathForUpdate(\"/admin/rbac/roles\", `${roleId}/permissions`), {\n ...options,\n method: this.http.methodForUpdate(),\n body: permissions,\n });\n }\n}\n","import { HttpClient } from \"../client\";\nimport type {\n BatchRequest,\n BatchResponse,\n RequestOptions,\n ReusableBlock,\n} from \"../types\";\n\nexport interface CreateReusableBlockBody {\n name: string;\n block_type: string;\n content: string;\n description?: string;\n}\n\nexport interface UpdateReusableBlockBody {\n name?: string;\n block_type?: string;\n content?: string;\n description?: string;\n}\n\nexport class AdminReusableBlocks {\n private readonly http: HttpClient;\n\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n async list(options?: RequestOptions): Promise<ReusableBlock[]> {\n return this.http.get<ReusableBlock[]>(\"/admin/reusable-blocks\", options);\n }\n\n async get(id: string, options?: RequestOptions): Promise<ReusableBlock> {\n return this.http.get<ReusableBlock>(\n `/admin/reusable-blocks/${id}`,\n options,\n );\n }\n\n async create(\n body: CreateReusableBlockBody,\n options?: RequestOptions,\n ): Promise<ReusableBlock> {\n return this.http.request<ReusableBlock>(this.http.pathForCreate(\"/admin/reusable-blocks\"), {\n ...options,\n method: this.http.methodForCreate(),\n body,\n });\n }\n\n async update(\n id: string,\n body: UpdateReusableBlockBody,\n options?: RequestOptions,\n ): Promise<ReusableBlock> {\n return this.http.request<ReusableBlock>(this.http.pathForUpdate(\"/admin/reusable-blocks\", id), {\n ...options,\n method: this.http.methodForUpdate(),\n body,\n });\n }\n\n async delete(id: string, options?: RequestOptions): Promise<void> {\n await this.http.request<void>(this.http.pathForDelete(\"/admin/reusable-blocks\", id), {\n ...options,\n method: this.http.methodForDelete(),\n });\n }\n\n async batch(\n data: BatchRequest,\n options?: RequestOptions,\n ): Promise<BatchResponse> {\n return this.http.post<BatchResponse>(\n \"/admin/reusable-blocks/batch\",\n data,\n options,\n );\n }\n}\n","import { HttpClient, toQueryString } from \"../client\";\nimport type { RequestOptions } from \"../types\";\n\nexport interface StatsOverview {\n total_posts: number;\n total_comments: number;\n total_users: number;\n total_media: number;\n total_categories: number;\n total_tags: number;\n posts_by_status: Record<string, number>;\n comments_by_status: Record<string, number>;\n content_by_type: Record<string, number>;\n recent_activity: {\n type: string;\n title?: string;\n slug?: string;\n content?: string;\n at: string;\n }[];\n}\n\nexport interface TrendsData {\n table: string;\n days: number;\n data: { date: string; count: number }[];\n}\n\nexport class AdminStats {\n private readonly http: HttpClient;\n\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n async overview(options?: RequestOptions): Promise<StatsOverview> {\n return this.http.get(\"/admin/stats\", options);\n }\n\n async content(\n table: string,\n options?: RequestOptions,\n ): Promise<Record<string, number>> {\n return this.http.get<Record<string, number>>(\n `/admin/stats/content/${table}`,\n options,\n );\n }\n\n async trends(\n table: string,\n days = 30,\n options?: RequestOptions,\n ): Promise<TrendsData> {\n return this.http.get<TrendsData>(\"/admin/stats/trends\", {\n ...options,\n query: toQueryString({ table, days }),\n });\n }\n}\n","import { HttpClient } from \"../client\";\nimport type {\n BatchRequest,\n BatchResponse,\n CreateTagRequest,\n PaginatedData,\n RequestOptions,\n Tag,\n UpdateTagRequest,\n} from \"../types\";\n\nexport class AdminTags {\n private readonly http: HttpClient;\n\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n async list(\n page = 1,\n pageSize = 25,\n options?: RequestOptions,\n ): Promise<PaginatedData<Tag>> {\n return this.http.get<PaginatedData<Tag>>(\"/admin/tags\", {\n ...options,\n query: { page: String(page), page_size: String(pageSize) },\n });\n }\n\n async create(\n body: CreateTagRequest,\n options?: RequestOptions,\n ): Promise<Tag> {\n return this.http.request<Tag>(this.http.pathForCreate(\"/admin/tags\"), {\n ...options,\n method: this.http.methodForCreate(),\n body,\n });\n }\n\n async update(\n id: string,\n body: UpdateTagRequest,\n options?: RequestOptions,\n ): Promise<Tag> {\n return this.http.request<Tag>(this.http.pathForUpdate(\"/admin/tags\", id), {\n ...options,\n method: this.http.methodForUpdate(),\n body,\n });\n }\n\n async delete(id: string, options?: RequestOptions): Promise<void> {\n await this.http.request<void>(this.http.pathForDelete(\"/admin/tags\", id), {\n ...options,\n method: this.http.methodForDelete(),\n });\n }\n\n async batch(\n data: BatchRequest,\n options?: RequestOptions,\n ): Promise<BatchResponse> {\n return this.http.post<BatchResponse>(\"/admin/tags/batch\", data, options);\n }\n}\n","import { HttpClient } from \"../client\";\nimport type {\n BatchResponse,\n PaginatedData,\n RequestOptions,\n Tenant,\n} from \"../types\";\n\nexport class AdminTenants {\n private readonly http: HttpClient;\n\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n async list(\n page = 1,\n pageSize = 25,\n options?: RequestOptions,\n ): Promise<PaginatedData<Tenant>> {\n return this.http.get<PaginatedData<Tenant>>(\"/admin/tenants\", {\n ...options,\n query: { page: String(page), page_size: String(pageSize) },\n });\n }\n\n async get(id: string, options?: RequestOptions): Promise<Tenant> {\n return this.http.get<Tenant>(`/admin/tenants/${id}`, options);\n }\n\n async create(\n data: { name: string; slug: string },\n options?: RequestOptions,\n ): Promise<Tenant> {\n return this.http.request<Tenant>(this.http.pathForCreate(\"/admin/tenants\"), {\n ...options,\n method: this.http.methodForCreate(),\n body: data,\n });\n }\n\n async update(\n id: string,\n data: Partial<Tenant>,\n options?: RequestOptions,\n ): Promise<Tenant> {\n return this.http.request<Tenant>(this.http.pathForUpdate(\"/admin/tenants\", id), {\n ...options,\n method: this.http.methodForUpdate(),\n body: data,\n });\n }\n\n async delete(id: string, options?: RequestOptions): Promise<void> {\n await this.http.request<void>(this.http.pathForDelete(\"/admin/tenants\", id), {\n ...options,\n method: this.http.methodForDelete(),\n });\n }\n\n async batch(\n data: { action: string; ids: string[] },\n options?: RequestOptions,\n ): Promise<BatchResponse> {\n return this.http.post(\"/admin/tenants/batch\", data, options);\n }\n}\n","import { HttpClient } from \"../client\";\nimport type { ApiToken, RequestOptions } from \"../types\";\n\nexport class AdminTokens {\n private readonly http: HttpClient;\n\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n async list(options?: RequestOptions): Promise<ApiToken[]> {\n return this.http.get<ApiToken[]>(\"/tokens\", options);\n }\n\n async create(\n data: { name: string; scopes: string[]; expires_at?: string },\n options?: RequestOptions,\n ): Promise<ApiToken & { token: string }> {\n return this.http.request<ApiToken & { token: string }>(this.http.pathForCreate(\"/tokens\"), {\n ...options,\n method: this.http.methodForCreate(),\n body: data,\n });\n }\n\n async delete(id: string, options?: RequestOptions): Promise<void> {\n await this.http.request<void>(this.http.pathForDelete(\"/tokens\", id), {\n ...options,\n method: this.http.methodForDelete(),\n });\n }\n}\n","import { HttpClient } from \"../client\";\nimport type {\n BatchRequestWithRole,\n BatchResponse,\n PaginatedData,\n RequestOptions,\n UpdateUserRequest,\n UserResponse,\n} from \"../types\";\n\nexport class AdminUsers {\n private readonly http: HttpClient;\n\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n async list(\n page = 1,\n pageSize = 25,\n options?: RequestOptions,\n ): Promise<PaginatedData<UserResponse>> {\n return this.http.get<PaginatedData<UserResponse>>(\"/admin/users\", {\n ...options,\n query: { page: String(page), page_size: String(pageSize) },\n });\n }\n\n async get(id: string, options?: RequestOptions): Promise<UserResponse> {\n return this.http.get<UserResponse>(`/admin/users/${id}`, options);\n }\n\n async update(\n id: string,\n data: UpdateUserRequest,\n options?: RequestOptions,\n ): Promise<UserResponse> {\n return this.http.request<UserResponse>(this.http.pathForUpdate(\"/admin/users\", id), {\n ...options,\n method: this.http.methodForUpdate(),\n body: data,\n });\n }\n\n async delete(id: string, options?: RequestOptions): Promise<void> {\n await this.http.request<void>(this.http.pathForDelete(\"/admin/users\", id), {\n ...options,\n method: this.http.methodForDelete(),\n });\n }\n\n async batch(\n data: BatchRequestWithRole,\n options?: RequestOptions,\n ): Promise<BatchResponse> {\n return this.http.post<BatchResponse>(\"/admin/users/batch\", data, options);\n }\n}\n","import { HttpClient, toQueryString } from \"../client\";\nimport type {\n AdminWalletOperationRequest,\n BatchResponse,\n PaginatedData,\n RequestOptions,\n ReversalRequest,\n WalletResponse,\n WalletTransactionResponse,\n} from \"../types\";\n\nexport class AdminWallets {\n private readonly http: HttpClient;\n\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n async listWallets(\n query?: { page?: number; page_size?: number },\n options?: RequestOptions,\n ): Promise<PaginatedData<WalletResponse>> {\n return this.http.get<PaginatedData<WalletResponse>>(\"/admin/wallets\", {\n ...options,\n query: toQueryString(query),\n });\n }\n\n async listTransactions(\n query?: { page?: number; page_size?: number },\n options?: RequestOptions,\n ): Promise<PaginatedData<WalletTransactionResponse>> {\n return this.http.get<PaginatedData<WalletTransactionResponse>>(\n \"/admin/wallets/transactions\",\n { ...options, query: toQueryString(query) },\n );\n }\n\n async credit(\n body: AdminWalletOperationRequest,\n options?: RequestOptions,\n ): Promise<WalletTransactionResponse> {\n return this.http.post<WalletTransactionResponse>(\n \"/admin/wallets/credit\",\n body,\n options,\n );\n }\n\n async debit(\n body: AdminWalletOperationRequest,\n options?: RequestOptions,\n ): Promise<WalletTransactionResponse> {\n return this.http.post<WalletTransactionResponse>(\n \"/admin/wallets/debit\",\n body,\n options,\n );\n }\n\n async userTransactions(\n userId: string,\n query?: { page?: number; page_size?: number },\n options?: RequestOptions,\n ): Promise<PaginatedData<WalletTransactionResponse>> {\n return this.http.get<PaginatedData<WalletTransactionResponse>>(\n `/admin/wallets/${userId}/transactions`,\n { ...options, query: toQueryString(query) },\n );\n }\n\n async userCurrencyTransactions(\n userId: string,\n currency: string,\n query?: { page?: number; page_size?: number },\n options?: RequestOptions,\n ): Promise<PaginatedData<WalletTransactionResponse>> {\n return this.http.get<PaginatedData<WalletTransactionResponse>>(\n `/admin/wallets/${userId}/${currency}/transactions`,\n { ...options, query: toQueryString(query) },\n );\n }\n\n async reversal(\n txDocId: string,\n body?: ReversalRequest,\n options?: RequestOptions,\n ): Promise<WalletTransactionResponse> {\n return this.http.post<WalletTransactionResponse>(\n `/admin/wallets/${txDocId}/reversal`,\n body,\n options,\n );\n }\n}\n","import { HttpClient } from \"../client\";\nimport type { BatchResponse, PaginatedData, RequestOptions, Webhook } from \"../types\";\n\nexport class AdminWebhooks {\n private readonly http: HttpClient;\n\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n async list(\n page = 1,\n pageSize = 25,\n options?: RequestOptions,\n ): Promise<PaginatedData<Webhook>> {\n return this.http.get<PaginatedData<Webhook>>(\"/admin/webhooks\", {\n ...options,\n query: { page: String(page), page_size: String(pageSize) },\n });\n }\n\n async create(\n data: { url: string; events: string[]; description?: string; enabled?: boolean },\n options?: RequestOptions,\n ): Promise<Webhook> {\n return this.http.request<Webhook>(this.http.pathForCreate(\"/admin/webhooks\"), {\n ...options,\n method: this.http.methodForCreate(),\n body: data,\n });\n }\n\n async get(id: string, options?: RequestOptions): Promise<Webhook> {\n return this.http.get<Webhook>(`/admin/webhooks/${id}`, options);\n }\n\n async update(\n id: string,\n data: Partial<Webhook>,\n options?: RequestOptions,\n ): Promise<Webhook> {\n return this.http.request<Webhook>(this.http.pathForUpdate(\"/admin/webhooks\", id), {\n ...options,\n method: this.http.methodForUpdate(),\n body: data,\n });\n }\n\n async delete(id: string, options?: RequestOptions): Promise<void> {\n await this.http.request<void>(this.http.pathForDelete(\"/admin/webhooks\", id), {\n ...options,\n method: this.http.methodForDelete(),\n });\n }\n\n async batch(\n data: { action: string; ids: string[] },\n options?: RequestOptions,\n ): Promise<BatchResponse> {\n return this.http.post(\"/admin/webhooks/batch\", data, options);\n }\n}\n","import { HttpClient } from \"../client\";\nimport type {\n PaginatedData,\n RequestOptions,\n StepLog,\n Workflow,\n WorkflowInstance,\n} from \"../types\";\n\nexport class AdminWorkflows {\n private readonly http: HttpClient;\n\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n async list(options?: RequestOptions): Promise<Workflow[]> {\n return this.http.get<Workflow[]>(\"/admin/workflows\", options);\n }\n\n async create(\n data: { name: string; steps: unknown[] },\n options?: RequestOptions,\n ): Promise<Workflow> {\n return this.http.request<Workflow>(this.http.pathForCreate(\"/admin/workflows\"), {\n ...options,\n method: this.http.methodForCreate(),\n body: data,\n });\n }\n\n async get(id: string, options?: RequestOptions): Promise<Workflow> {\n return this.http.get<Workflow>(`/admin/workflows/${id}`, options);\n }\n\n async delete(id: string, options?: RequestOptions): Promise<void> {\n await this.http.request<void>(this.http.pathForDelete(\"/admin/workflows\", id), {\n ...options,\n method: this.http.methodForDelete(),\n });\n }\n\n async start(\n id: string,\n payload?: Record<string, unknown>,\n options?: RequestOptions,\n ): Promise<WorkflowInstance> {\n return this.http.post<WorkflowInstance>(\n `/admin/workflows/${id}/start`,\n payload ?? {},\n options,\n );\n }\n\n async listInstances(\n page = 1,\n pageSize = 25,\n options?: RequestOptions,\n ): Promise<PaginatedData<WorkflowInstance>> {\n return this.http.get<PaginatedData<WorkflowInstance>>(\n \"/admin/workflows/instances\",\n { ...options, query: { page: String(page), page_size: String(pageSize) } },\n );\n }\n\n async getInstance(\n id: string,\n options?: RequestOptions,\n ): Promise<WorkflowInstance> {\n return this.http.get<WorkflowInstance>(\n `/admin/workflows/instances/${id}`,\n options,\n );\n }\n\n async executeStep(\n instanceId: string,\n data: { step: string; action: string; data?: Record<string, unknown> },\n options?: RequestOptions,\n ): Promise<WorkflowInstance> {\n return this.http.post<WorkflowInstance>(\n `/admin/workflows/instances/${instanceId}/execute`,\n data,\n options,\n );\n }\n\n async cancelInstance(\n instanceId: string,\n options?: RequestOptions,\n ): Promise<void> {\n await this.http.post(\n `/admin/workflows/instances/${instanceId}/cancel`,\n {},\n options,\n );\n }\n\n async getStepLogs(\n instanceId: string,\n options?: RequestOptions,\n ): Promise<StepLog[]> {\n return this.http.get<StepLog[]>(\n `/admin/workflows/instances/${instanceId}/logs`,\n options,\n );\n }\n}\n","import { HttpClient } from \"../client\";\nimport type { RequestOptions, RouteInfo } from \"../types\";\nimport { AdminAudit } from \"./audit\";\nimport { AdminCategories } from \"./categories\";\nimport { AdminComments } from \"./comments\";\nimport { AdminContentTypes } from \"./content-types\";\nimport { AdminCrons } from \"./crons\";\nimport { AdminCurrencies } from \"./currencies\";\nimport { AdminMedia } from \"./media\";\nimport { AdminOptions } from \"./options\";\nimport { AdminOrders } from \"./orders\";\nimport { AdminPages } from \"./pages\";\nimport { AdminPayment } from \"./payment\";\nimport { AdminPlugins } from \"./plugins\";\nimport { AdminPosts } from \"./posts\";\nimport { AdminProducts } from \"./products\";\nimport { AdminRBAC } from \"./rbac\";\nimport { AdminReusableBlocks } from \"./reusable-blocks\";\nimport { AdminStats } from \"./stats\";\nimport { AdminTags } from \"./tags\";\nimport { AdminTenants } from \"./tenants\";\nimport { AdminTokens } from \"./tokens\";\nimport { AdminUsers } from \"./users\";\nimport { AdminWallets } from \"./wallets\";\nimport { AdminWebhooks } from \"./webhooks\";\nimport { AdminWorkflows } from \"./workflows\";\n\nexport class Admin {\n readonly users: AdminUsers;\n readonly posts: AdminPosts;\n readonly pages: AdminPages;\n readonly comments: AdminComments;\n readonly categories: AdminCategories;\n readonly tags: AdminTags;\n readonly media: AdminMedia;\n readonly reusableBlocks: AdminReusableBlocks;\n readonly wallets: AdminWallets;\n readonly currencies: AdminCurrencies;\n readonly plugins: AdminPlugins;\n readonly contentTypes: AdminContentTypes;\n readonly tenants: AdminTenants;\n readonly rbac: AdminRBAC;\n readonly options: AdminOptions;\n readonly webhooks: AdminWebhooks;\n readonly audit: AdminAudit;\n readonly crons: AdminCrons;\n readonly tokens: AdminTokens;\n readonly workflows: AdminWorkflows;\n readonly stats: AdminStats;\n readonly orders: AdminOrders;\n readonly payment: AdminPayment;\n readonly products: AdminProducts;\n\n private readonly http: HttpClient;\n\n constructor(http: HttpClient) {\n this.http = http;\n this.users = new AdminUsers(http);\n this.posts = new AdminPosts(http);\n this.pages = new AdminPages(http);\n this.comments = new AdminComments(http);\n this.categories = new AdminCategories(http);\n this.tags = new AdminTags(http);\n this.media = new AdminMedia(http);\n this.reusableBlocks = new AdminReusableBlocks(http);\n this.wallets = new AdminWallets(http);\n this.currencies = new AdminCurrencies(http);\n this.plugins = new AdminPlugins(http);\n this.contentTypes = new AdminContentTypes(http);\n this.tenants = new AdminTenants(http);\n this.rbac = new AdminRBAC(http);\n this.options = new AdminOptions(http);\n this.webhooks = new AdminWebhooks(http);\n this.audit = new AdminAudit(http);\n this.crons = new AdminCrons(http);\n this.tokens = new AdminTokens(http);\n this.workflows = new AdminWorkflows(http);\n this.stats = new AdminStats(http);\n this.orders = new AdminOrders(http);\n this.payment = new AdminPayment(http);\n this.products = new AdminProducts(http);\n }\n\n async listRoutes(options?: RequestOptions): Promise<RouteInfo[]> {\n return this.http.get<RouteInfo[]>(\"/routes\", options);\n }\n}\n","import { HttpClient } from \"./client\";\nimport { SDKError } from \"./errors\";\nimport type {\n ListOptions,\n MutateOptions,\n PaginatedData,\n RequestOptions,\n Revision,\n} from \"./types\";\n\nexport class Collection<T = Record<string, unknown>> {\n private readonly http: HttpClient;\n private readonly name: string;\n private readonly prefix: string;\n\n constructor(http: HttpClient, name: string, admin = false) {\n this.http = http;\n this.name = name;\n this.prefix = admin ? `/admin/cms/${name}` : `/cms/${name}`;\n }\n\n async getList(\n page = 1,\n pageSize = 25,\n options?: ListOptions,\n ): Promise<PaginatedData<T>> {\n const query: Record<string, string> = {\n page: String(page),\n page_size: String(pageSize),\n };\n if (options?.sort) query.sort = options.sort;\n if (options?.filter) query.filter = options.filter;\n if (options?.search) query.search = options.search;\n if (options?.fields) query.fields = options.fields;\n if (options?.status) query.status = options.status;\n if (options?.expand) query.expand = options.expand;\n\n return this.http.get<PaginatedData<T>>(this.prefix, { ...options, query });\n }\n\n async getFullList(options?: ListOptions): Promise<T[]> {\n const all: T[] = [];\n let page = 1;\n while (true) {\n const result = await this.getList(page, 200, options);\n all.push(...result.items);\n if (all.length >= result.total) break;\n page++;\n }\n return all;\n }\n\n async getOne(idOrSlug: string, options?: RequestOptions): Promise<T> {\n return this.http.get<T>(`${this.prefix}/${idOrSlug}`, options);\n }\n\n async getFirstListItem(\n filter: string,\n options?: ListOptions,\n ): Promise<T> {\n const result = await this.getList(1, 1, { ...options, filter });\n if (result.items.length === 0) {\n throw new SDKError(\n 404,\n `No item found matching filter: ${filter}`,\n 404,\n );\n }\n return result.items[0];\n }\n\n async create(data: Partial<T>, options?: MutateOptions): Promise<T> {\n return this.http.request<T>(this.http.pathForCreate(this.prefix), {\n ...options,\n method: this.http.methodForCreate(),\n body: data,\n });\n }\n\n async update(\n id: string,\n data: Partial<T>,\n options?: MutateOptions,\n ): Promise<T> {\n return this.http.request<T>(this.http.pathForUpdate(this.prefix, id), {\n ...options,\n method: this.http.methodForUpdate(),\n body: data,\n });\n }\n\n async delete(id: string, options?: RequestOptions): Promise<void> {\n await this.http.request<void>(this.http.pathForDelete(this.prefix, id), {\n ...options,\n method: this.http.methodForDelete(),\n });\n }\n\n async upload(\n id: string,\n file: File,\n fileField = \"file\",\n options?: MutateOptions,\n ): Promise<T> {\n const formData = new FormData();\n formData.append(fileField, file);\n return this.http.request<T>(`${this.prefix}/${id}`, {\n ...options,\n method: \"POST\",\n body: formData,\n });\n }\n\n // ─── Revisions (versionable) ───\n\n async listRevisions(\n id: string,\n page = 1,\n pageSize = 25,\n options?: RequestOptions,\n ): Promise<PaginatedData<Revision>> {\n return this.http.get<PaginatedData<Revision>>(\n `/admin/cms/${this.name}/${id}/revisions`,\n { ...options, query: { page: String(page), page_size: String(pageSize) } },\n );\n }\n\n async getRevision(\n id: string,\n revisionId: string,\n options?: RequestOptions,\n ): Promise<Revision> {\n return this.http.get<Revision>(\n `/admin/cms/${this.name}/${id}/revisions/${revisionId}`,\n options,\n );\n }\n\n async restoreRevision(\n id: string,\n revisionId: string,\n options?: RequestOptions,\n ): Promise<T> {\n return this.http.post<T>(\n `/admin/cms/${this.name}/${id}/revisions/${revisionId}/restore`,\n {},\n options,\n );\n }\n\n async diffRevisions(\n id: string,\n revA: string,\n revB: string,\n options?: RequestOptions,\n ): Promise<Record<string, unknown>> {\n return this.http.get<Record<string, unknown>>(\n `/admin/cms/${this.name}/${id}/revisions/${revA}/diff/${revB}`,\n options,\n );\n }\n}\n","import { HttpClient, type ApiStyle } from \"./client\";\nimport { LocalAuthStore } from \"./auth\";\nimport { Auth } from \"./public/auth\";\nimport { Users } from \"./public/users\";\nimport { Posts } from \"./public/posts\";\nimport { Pages } from \"./public/pages\";\nimport { Comments } from \"./public/comments\";\nimport { Categories } from \"./public/categories\";\nimport { Tags } from \"./public/tags\";\nimport { Media } from \"./public/media\";\nimport { Health } from \"./public/health\";\nimport { Wallets } from \"./public/wallets\";\nimport { Events } from \"./public/events\";\nimport { Orders } from \"./public/orders\";\nimport { Payment } from \"./public/payment\";\nimport { Products } from \"./public/products\";\nimport { Cart } from \"./public/cart\";\nimport { Admin } from \"./admin\";\nimport { Collection } from \"./collection\";\nimport { SDKError } from \"./errors\";\nimport type {\n AfterSendHook,\n BeforeSendHook,\n IAuthStore,\n ListOptions,\n SendOptions,\n} from \"./types\";\n\ninterface ServerInfo {\n name: string;\n version: string;\n api_style: ApiStyle;\n}\n\nexport class RaisFast {\n readonly auth: Auth;\n readonly admin: Admin;\n readonly users: Users;\n readonly media: Media;\n readonly health: Health;\n readonly posts: Posts;\n readonly categories: Categories;\n readonly tags: Tags;\n readonly comments: Comments;\n readonly pages: Pages;\n readonly wallets: Wallets;\n readonly events: Events;\n readonly orders: Orders;\n readonly payment: Payment;\n readonly products: Products;\n readonly cart: Cart;\n readonly authStore: IAuthStore;\n private readonly http: HttpClient;\n\n constructor(\n baseUrl: string,\n options?: { authStore?: IAuthStore },\n ) {\n this.authStore = options?.authStore ?? new LocalAuthStore();\n this.http = new HttpClient(baseUrl, this.authStore);\n this.auth = new Auth(this.http, this.authStore);\n this.admin = new Admin(this.http);\n this.users = new Users(this.http);\n this.media = new Media(this.http);\n this.health = new Health(this.http);\n this.posts = new Posts(this.http);\n this.categories = new Categories(this.http);\n this.tags = new Tags(this.http);\n this.comments = new Comments(this.http);\n this.pages = new Pages(this.http);\n this.wallets = new Wallets(this.http);\n this.events = new Events(this.http.baseUrl);\n this.orders = new Orders(this.http);\n this.payment = new Payment(this.http);\n this.products = new Products(this.http);\n this.cart = new Cart(this.http);\n }\n\n async init(): Promise<void> {\n try {\n const res = await fetch(`${this.http.baseUrl}/info`);\n const json = (await res.json()) as { code: number; data: ServerInfo };\n if (json.code === 0 && json.data?.api_style) {\n this.http.apiStyle = json.data.api_style;\n }\n } catch {\n // keep default restful\n }\n }\n\n collection<T = Record<string, unknown>>(name: string): Collection<T> {\n return new Collection<T>(this.http, name);\n }\n\n adminCollection<T = Record<string, unknown>>(name: string): Collection<T> {\n return new Collection<T>(this.http, name, true);\n }\n\n setTenantId(tenantId: string | null): void {\n this.http.setTenantId(tenantId);\n }\n\n set beforeSend(hook: BeforeSendHook | null) {\n this.http.beforeSend = hook;\n }\n\n set afterSend(hook: AfterSendHook | null) {\n this.http.afterSend = hook;\n }\n\n cancelRequest(key: string): void {\n this.http.cancelRequest(key);\n }\n\n cancelAllRequests(): void {\n this.http.cancelAllRequests();\n }\n\n async send<T>(path: string, options?: SendOptions): Promise<T> {\n return this.http.request<T>(path, options);\n }\n\n async single<T>(\n collectionName: string,\n options?: ListOptions,\n ): Promise<T> {\n const col = this.collection<T>(collectionName);\n const result = await col.getList(1, 1, options);\n if (result.items.length === 0) {\n throw new SDKError(\n 404,\n `No ${collectionName} item found`,\n 404,\n );\n }\n return result.items[0];\n }\n\n getRssFeedURL(): string {\n const base = this.http.baseUrl.replace(\"/api/v1\", \"\");\n return `${base}/feed.xml`;\n }\n}\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../src/index.ts","../src/errors.ts","../src/client.ts","../src/auth.ts","../src/public/auth.ts","../src/public/users.ts","../src/public/posts.ts","../src/public/pages.ts","../src/public/comments.ts","../src/public/categories.ts","../src/public/tags.ts","../src/public/media.ts","../src/public/health.ts","../src/public/wallets.ts","../src/public/events.ts","../src/public/orders.ts","../src/public/payment.ts","../src/public/products.ts","../src/public/cart.ts","../src/admin/audit.ts","../src/admin/categories.ts","../src/admin/comments.ts","../src/admin/content-types.ts","../src/admin/crons.ts","../src/admin/currencies.ts","../src/admin/media.ts","../src/admin/options.ts","../src/admin/orders.ts","../src/admin/pages.ts","../src/admin/payment.ts","../src/admin/plugins.ts","../src/admin/posts.ts","../src/admin/products.ts","../src/admin/rbac.ts","../src/admin/reusable-blocks.ts","../src/admin/stats.ts","../src/admin/tags.ts","../src/admin/tenants.ts","../src/admin/tokens.ts","../src/admin/users.ts","../src/admin/wallets.ts","../src/admin/webhooks.ts","../src/admin/workflows.ts","../src/admin/index.ts","../src/collection.ts","../src/raisfast.ts","../src/generated/types.ts"],"sourcesContent":["export { RaisFast } from \"./raisfast\";\nexport { Collection } from \"./collection\";\nexport { Auth } from \"./public/auth\";\nexport { Admin } from \"./admin\";\nexport { Users } from \"./public/users\";\nexport { Media } from \"./public/media\";\nexport { Health } from \"./public/health\";\nexport { Posts } from \"./public/posts\";\nexport { Categories } from \"./public/categories\";\nexport { Tags } from \"./public/tags\";\nexport { Comments } from \"./public/comments\";\nexport { Pages } from \"./public/pages\";\nexport { Wallets } from \"./public/wallets\";\nexport { Events } from \"./public/events\";\nexport { Orders } from \"./public/orders\";\nexport { Payment } from \"./public/payment\";\nexport { Products } from \"./public/products\";\nexport { Cart } from \"./public/cart\";\nexport { BaseAuthStore, LocalAuthStore } from \"./auth\";\nexport { HttpClient, type ApiStyle } from \"./client\";\nexport { SDKError } from \"./errors\";\nexport type {\n CreatePostBody,\n UpdatePostBody,\n} from \"./public/posts\";\nexport type {\n StatsOverview,\n TrendsData,\n} from \"./admin/stats\";\nexport type {\n CreatePageBody,\n UpdatePageBody,\n} from \"./admin/pages\";\nexport type {\n CreateProductBody,\n UpdateProductBody,\n} from \"./admin/products\";\nexport type {\n ShipOrderBody,\n UpdateAdminRemarkBody,\n} from \"./admin/orders\";\nexport type {\n CreatePaymentChannelBody,\n UpdatePaymentChannelBody,\n CreateRefundBody,\n} from \"./admin/payment\";\nexport type { CreateCommentBody } from \"./public/comments\";\nexport type {\n CreateCategoryBody,\n UpdateCategoryBody,\n} from \"./public/categories\";\nexport type {\n CreateOrderBody,\n CreateOrderItemBody,\n} from \"./public/orders\";\nexport type {\n CreatePaymentOrderBody,\n} from \"./public/payment\";\nexport type {\n AddToCartBody,\n UpdateCartItemBody,\n} from \"./public/cart\";\nexport type {\n CreateReusableBlockBody,\n UpdateReusableBlockBody,\n} from \"./admin/reusable-blocks\";\nexport {\n ApiAccess,\n AuthType,\n CommentOpenStatus,\n CommentStatus,\n ContentKind,\n CronExecStatus,\n FieldType,\n JobStatus,\n OptionType,\n PageStatus,\n PostStatus,\n RegisteredVia,\n RelationType,\n StepType,\n TenantStatus,\n UserRole,\n UserStatus,\n WalletEntryType,\n WalletReferenceType,\n WalletStatus,\n WalletTxType,\n WorkflowInstanceStatus,\n WorkflowStepStatus,\n} from \"./types\";\nexport type {\n AdminCommentListQuery,\n AdminCommentRow,\n AdminPageListQuery,\n AdminPostListQuery,\n AdminWalletOperationRequest,\n ApiConfig,\n ApiEndpointConfig,\n ApiToken,\n ApiTokenListItem,\n AuditEntry,\n AuditLog,\n AuthConfig,\n AuthConfigResponse,\n AuthResult,\n AuthStoreListener,\n BeforeSendHook,\n AfterSendHook,\n BatchRequest,\n BatchRequestWithRole,\n BatchResponse,\n BindEmailRequest,\n BindPhoneRequest,\n Category,\n ColumnDef,\n CommentResponse,\n ContentRevision,\n ContentTypeSchema,\n CreateCategoryRequest,\n CreateCommentRequest,\n CreateCurrencyRequest,\n CreatePageRequest,\n CreatePostRequest,\n CreateTagRequest,\n CreateTokenResult,\n CreateWorkflowRequest,\n CredentialResponse,\n CronExecutionLog,\n CronJob,\n CronLog,\n CronSchedule,\n CurrencyResponse,\n ExecuteStepRequest,\n FaqItem,\n FieldDef,\n FieldSchema,\n ForgotPasswordRequest,\n FormFieldDef,\n GalleryImage,\n HealthStatus,\n IAuthStore,\n IndexDef,\n InstanceQuery,\n ListOptions,\n LoginRequest,\n LoginResponse,\n MediaConfig,\n MediaFile,\n MediaResponse,\n MediaStats,\n MediaStatsResponse,\n MediaTypeInfoResponse,\n MutateOptions,\n OAuthBinding,\n OAuthBindingInfo,\n OAuthProvider,\n OptionEntry,\n OptionGroup,\n Page,\n PageBlock,\n PageListQuery,\n PaginatedData,\n Permission,\n Permissions,\n PluginEvent,\n PluginHealth,\n PluginInfo,\n PluginInfoResponse,\n PluginMetrics,\n PostListQuery,\n PostResponse,\n PricingPlan,\n ProviderInfo,\n RefreshRequest,\n RegisterRequest,\n RelationConfig,\n ReorderItem,\n ReorderRequest,\n RequestOptions,\n ResendVerificationRequest,\n ResetPasswordRequest,\n ReusableBlock,\n ReversalRequest,\n Revision,\n RevisionSummary,\n Role,\n RouteInfo,\n SendOptions,\n SendSmsCodeRequest,\n SetPasswordRequest,\n SitemapEntry,\n SocialLink,\n StartWorkflowRequest,\n StatItem,\n StepDef,\n StepLog,\n Tag,\n TagBrief,\n TeamMember,\n Tenant,\n TestimonialItem,\n TimelineItem,\n TrendPoint,\n UpdateCategoryRequest,\n UpdateCommentStatusRequest,\n UpdateCurrencyRequest,\n UpdatePageRequest,\n UpdatePasswordRequest,\n UpdatePostRequest,\n UpdateRoleRequest,\n UpdateStatusRequest,\n UpdateTagRequest,\n UpdateUserRequest,\n User,\n UserResponse,\n VerifyEmailRequest,\n VerifySmsRequest,\n WalletResponse,\n WalletTransactionResponse,\n Webhook,\n WebhookSubscription,\n Workflow,\n WorkflowDefinition,\n WorkflowInstance,\n OrderItemResponse,\n OrderResponse,\n OrderStatsResponse,\n ProductResponse,\n PaymentOrderResponse,\n PaymentChannelResponse,\n PaymentTransactionResponse,\n PaymentRefundResponse,\n AvailableChannelItem,\n AvailableChannelsResponse,\n Order,\n OrderItem,\n OrderStats,\n Product,\n PaymentOrder,\n PaymentChannel,\n PaymentTransaction,\n PaymentRefund,\n} from \"./types\";\n","export class SDKError extends Error {\n readonly code: number;\n readonly status: number;\n readonly url: string;\n readonly response: Record<string, unknown>;\n readonly isAbort: boolean;\n readonly originalError: Error | null;\n\n constructor(\n code: number,\n message: string,\n status = 400,\n url = \"\",\n response: Record<string, unknown> = {},\n isAbort = false,\n originalError: Error | null = null,\n ) {\n super(message);\n this.name = \"SDKError\";\n this.code = code;\n this.status = status;\n this.url = url;\n this.response = response;\n this.isAbort = isAbort;\n this.originalError = originalError;\n }\n}\n","import { SDKError } from \"./errors\";\nimport type {\n AfterSendHook,\n AuthResult,\n BeforeSendHook,\n IAuthStore,\n RequestOptions,\n SendOptions,\n} from \"./types\";\n\nexport function toQueryString(query?: Record<string, string | number | bigint | boolean | undefined | null>): Record<string, string> | undefined {\n if (!query) return undefined;\n const result: Record<string, string> = {};\n for (const [key, value] of Object.entries(query)) {\n if (value !== undefined && value !== null) {\n result[key] = String(value);\n }\n }\n return result;\n}\n\nexport type ApiStyle = \"restful\" | \"simple\";\n\nexport class HttpClient {\n readonly baseUrl: string;\n readonly authStore: IAuthStore;\n private _apiStyle: ApiStyle = \"restful\";\n private _tenantId: string | null = null;\n private _refreshPromise: Promise<string | null> | null = null;\n private _beforeSend: BeforeSendHook | null = null;\n private _afterSend: AfterSendHook | null = null;\n private _requestControllers = new Map<string, AbortController>();\n\n constructor(baseUrl: string, authStore: IAuthStore) {\n this.baseUrl = baseUrl;\n this.authStore = authStore;\n }\n\n get apiStyle(): ApiStyle {\n return this._apiStyle;\n }\n\n set apiStyle(style: ApiStyle) {\n this._apiStyle = style;\n }\n\n get isRestful(): boolean {\n return this._apiStyle === \"restful\";\n }\n\n get tenantId(): string | null {\n return this._tenantId;\n }\n\n setTenantId(tenantId: string | null): void {\n this._tenantId = tenantId;\n }\n\n set beforeSend(hook: BeforeSendHook | null) {\n this._beforeSend = hook;\n }\n\n set afterSend(hook: AfterSendHook | null) {\n this._afterSend = hook;\n }\n\n cancelRequest(key: string): void {\n this._requestControllers.get(key)?.abort();\n this._requestControllers.delete(key);\n }\n\n cancelAllRequests(): void {\n for (const controller of this._requestControllers.values()) {\n controller.abort();\n }\n this._requestControllers.clear();\n }\n\n pathForCreate(resource: string): string {\n return this._apiStyle === \"restful\" ? resource : `${resource}/create`;\n }\n\n methodForCreate(): \"POST\" {\n return \"POST\";\n }\n\n pathForUpdate(resource: string, id: string): string {\n return this._apiStyle === \"restful\"\n ? `${resource}/${id}`\n : `${resource}/${id}/update`;\n }\n\n methodForUpdate(): \"PUT\" | \"POST\" {\n return this._apiStyle === \"restful\" ? \"PUT\" : \"POST\";\n }\n\n pathForDelete(resource: string, id: string): string {\n return this._apiStyle === \"restful\"\n ? `${resource}/${id}`\n : `${resource}/${id}/delete`;\n }\n\n methodForDelete(): \"DELETE\" | \"POST\" {\n return this._apiStyle === \"restful\" ? \"DELETE\" : \"POST\";\n }\n\n async request<T>(path: string, options: SendOptions = {}): Promise<T> {\n const {\n method = \"GET\",\n body,\n query,\n headers: extraHeaders,\n signal,\n fetch: customFetch,\n requestKey,\n } = options;\n\n let url = `${this.baseUrl}${path}`;\n if (query) {\n const qs = new URLSearchParams(query).toString();\n if (qs) {\n url += (url.includes(\"?\") ? \"&\" : \"?\") + qs;\n }\n }\n\n const headers = new Headers();\n if (body !== undefined && body !== null && !(body instanceof FormData)) {\n headers.set(\"Content-Type\", \"application/json\");\n }\n const token = this.authStore.token;\n if (token) {\n headers.set(\"Authorization\", `Bearer ${token}`);\n }\n if (this._tenantId) {\n headers.set(\"X-Tenant-ID\", this._tenantId);\n }\n if (extraHeaders) {\n for (const [key, value] of Object.entries(extraHeaders)) {\n headers.set(key, value);\n }\n }\n\n let combinedSignal = signal;\n if (requestKey) {\n this.cancelRequest(requestKey);\n const controller = new AbortController();\n this._requestControllers.set(requestKey, controller);\n if (signal) {\n signal.addEventListener(\"abort\", () => controller.abort());\n }\n combinedSignal = controller.signal;\n }\n\n let fetchOptions: RequestInit = {\n method,\n headers,\n body:\n body instanceof FormData\n ? body\n : body !== undefined\n ? JSON.stringify(body)\n : undefined,\n signal: combinedSignal,\n };\n\n if (this._beforeSend) {\n const result = await this._beforeSend(url, fetchOptions);\n url = result.url;\n fetchOptions = { ...fetchOptions, ...result.options };\n }\n\n const fetchFn = customFetch ?? fetch;\n let res: Response;\n\n try {\n res = await fetchFn(url, fetchOptions);\n } catch (e) {\n if (requestKey) this._requestControllers.delete(requestKey);\n throw new SDKError(\n 0,\n e instanceof Error ? e.message : \"Network request failed\",\n 0,\n url,\n {},\n e instanceof DOMException && e.name === \"AbortError\",\n e instanceof Error ? e : null,\n );\n }\n\n if (res.status === 401 && this.authStore.isAuthenticated) {\n const newToken = await this._refresh();\n if (newToken) {\n const retryHeaders = new Headers(fetchOptions.headers as Headers);\n retryHeaders.set(\"Authorization\", `Bearer ${newToken}`);\n fetchOptions = { ...fetchOptions, headers: retryHeaders };\n res = await fetchFn(url, fetchOptions);\n }\n }\n\n if (requestKey) this._requestControllers.delete(requestKey);\n\n let json: Record<string, unknown>;\n try {\n json = (await res.json()) as Record<string, unknown>;\n } catch (e) {\n throw new SDKError(\n 0,\n \"Failed to parse response\",\n res.status,\n url,\n {},\n false,\n e instanceof Error ? e : null,\n );\n }\n\n if (json.code !== 0) {\n throw new SDKError(\n (json.code as number) ?? 0,\n (json.message as string) ?? \"Unknown error\",\n res.status,\n url,\n json,\n );\n }\n\n let data = json.data as T;\n if (this._afterSend) {\n data = (await this._afterSend(res, data)) as T;\n }\n\n return data;\n }\n\n async get<T>(path: string, options?: RequestOptions): Promise<T> {\n return this.request<T>(path, { ...options, method: \"GET\" });\n }\n\n async post<T>(\n path: string,\n body?: unknown,\n options?: RequestOptions,\n ): Promise<T> {\n return this.request<T>(path, { ...options, method: \"POST\", body });\n }\n\n async put<T>(\n path: string,\n body?: unknown,\n options?: RequestOptions,\n ): Promise<T> {\n return this.request<T>(path, { ...options, method: \"PUT\", body });\n }\n\n async del<T>(path: string, options?: RequestOptions): Promise<T> {\n return this.request<T>(path, { ...options, method: \"DELETE\" });\n }\n\n private async _refresh(): Promise<string | null> {\n if (this._refreshPromise) return this._refreshPromise;\n\n this._refreshPromise = (async () => {\n try {\n const rt = this.authStore.refreshToken;\n if (!rt) return null;\n\n const res = await fetch(`${this.baseUrl}/auth/refresh`, {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n body: JSON.stringify({ refresh_token: rt }),\n });\n\n const json = (await res.json()) as Record<string, unknown>;\n if (json.code !== 0) {\n this.authStore.clear();\n return null;\n }\n\n const auth = json.data as AuthResult;\n this.authStore.save(auth);\n return auth.access_token;\n } catch {\n this.authStore.clear();\n return null;\n } finally {\n this._refreshPromise = null;\n }\n })();\n\n return this._refreshPromise;\n }\n}\n","import type { AuthResult, AuthStoreListener, IAuthStore, User } from \"./types\";\n\nexport class BaseAuthStore implements IAuthStore {\n protected _token: string | null = null;\n protected _refreshToken: string | null = null;\n protected _user: User | null = null;\n private _listeners = new Set<AuthStoreListener>();\n\n get token(): string | null {\n return this._token;\n }\n\n get refreshToken(): string | null {\n return this._refreshToken;\n }\n\n get user(): User | null {\n return this._user;\n }\n\n get isAuthenticated(): boolean {\n return !!this._token;\n }\n\n save(auth: AuthResult): void {\n this._token = auth.access_token;\n this._refreshToken = auth.refresh_token;\n this._user = auth.user;\n this._notify();\n }\n\n clear(): void {\n this._token = null;\n this._refreshToken = null;\n this._user = null;\n this._notify();\n }\n\n onChange(\n callback: AuthStoreListener,\n fireImmediately = false,\n ): () => void {\n this._listeners.add(callback);\n if (fireImmediately) {\n callback(this._token, this._user);\n }\n return () => {\n this._listeners.delete(callback);\n };\n }\n\n exportToStorage(): string {\n return JSON.stringify({\n token: this._token,\n refreshToken: this._refreshToken,\n user: this._user,\n });\n }\n\n importFromStorage(data: string): void {\n try {\n const parsed = JSON.parse(data);\n this._token = parsed.token ?? null;\n this._refreshToken = parsed.refreshToken ?? null;\n this._user = parsed.user ?? null;\n } catch {\n // silent — don't trigger onChange on invalid data\n }\n }\n\n protected _notify(): void {\n for (const cb of this._listeners) {\n cb(this._token, this._user);\n }\n }\n}\n\nexport class LocalAuthStore extends BaseAuthStore {\n private readonly _storageKey: string;\n private readonly _storage: Storage | null;\n\n constructor(storageKey = \"raisfast_auth\", storage?: Storage) {\n super();\n this._storageKey = storageKey;\n this._storage =\n storage ?? (typeof window !== \"undefined\" ? window.localStorage : null);\n this._load();\n }\n\n save(auth: AuthResult): void {\n super.save(auth);\n this._persist();\n }\n\n clear(): void {\n super.clear();\n this._persist();\n }\n\n private _persist(): void {\n try {\n this._storage?.setItem(this._storageKey, this.exportToStorage());\n } catch {\n // ignore storage errors\n }\n }\n\n private _load(): void {\n try {\n const data = this._storage?.getItem(this._storageKey);\n if (data) this.importFromStorage(data);\n } catch {\n // ignore storage errors\n }\n }\n}\n","import { HttpClient } from \"../client\";\nimport type {\n AuthConfig,\n AuthResult,\n CredentialResponse,\n IAuthStore,\n OAuthBinding,\n OAuthProvider,\n RequestOptions,\n User,\n} from \"../types\";\n\nexport class Auth {\n private readonly http: HttpClient;\n private readonly store: IAuthStore;\n\n constructor(http: HttpClient, store: IAuthStore) {\n this.http = http;\n this.store = store;\n }\n\n get token(): string | null {\n return this.store.token;\n }\n\n get user(): User | null {\n return this.store.user;\n }\n\n get isAuthenticated(): boolean {\n return this.store.isAuthenticated;\n }\n\n async login(\n email: string,\n password: string,\n options?: RequestOptions,\n ): Promise<AuthResult> {\n const result = await this.http.post<AuthResult>(\n \"/auth/login\",\n { email, password },\n options,\n );\n this.store.save(result);\n return result;\n }\n\n async register(\n data: { email: string; password: string; username: string },\n options?: RequestOptions,\n ): Promise<AuthResult> {\n const result = await this.http.post<AuthResult>(\n \"/auth/register\",\n data,\n options,\n );\n this.store.save(result);\n return result;\n }\n\n async refresh(options?: RequestOptions): Promise<AuthResult | null> {\n const rt = this.store.refreshToken;\n if (!rt) return null;\n\n const result = await this.http.post<AuthResult>(\n \"/auth/refresh\",\n { refresh_token: rt },\n options,\n );\n this.store.save(result);\n return result;\n }\n\n async logout(options?: RequestOptions): Promise<void> {\n try {\n await this.http.post(\"/auth/logout\", undefined, options);\n } finally {\n this.store.clear();\n }\n }\n\n async getConfig(options?: RequestOptions): Promise<AuthConfig> {\n return this.http.get<AuthConfig>(\"/auth/config\", options);\n }\n\n async getMe(options?: RequestOptions): Promise<User> {\n return this.http.get<User>(\"/users/me\", options);\n }\n\n async updateMe(\n data: {\n username?: string;\n bio?: string;\n website?: string;\n avatar?: string;\n social_links?: Record<string, string>;\n metadata?: unknown;\n },\n options?: RequestOptions,\n ): Promise<User> {\n return this.http.request<User>(this.http.pathForUpdate(\"/users\", \"me\"), {\n ...options,\n method: this.http.methodForUpdate(),\n body: data,\n });\n }\n\n async changePassword(\n data: { old_password: string; new_password: string },\n options?: RequestOptions,\n ): Promise<void> {\n await this.http.request<void>(this.http.pathForUpdate(\"/users\", \"me/password\"), {\n ...options,\n method: this.http.methodForUpdate(),\n body: data,\n });\n }\n\n async requestPasswordReset(\n email: string,\n options?: RequestOptions,\n ): Promise<void> {\n await this.http.post(\"/auth/forgot-password\", { email }, options);\n }\n\n async confirmPasswordReset(\n data: { token: string; new_password: string },\n options?: RequestOptions,\n ): Promise<void> {\n await this.http.post(\"/auth/reset-password\", data, options);\n }\n\n async setPassword(\n data: { email: string; new_password: string },\n options?: RequestOptions,\n ): Promise<void> {\n await this.http.post(\"/auth/set-password\", data, options);\n }\n\n async verifyEmail(\n data: { token: string },\n options?: RequestOptions,\n ): Promise<void> {\n await this.http.post(\"/auth/verify-email\", data, options);\n }\n\n async resendVerification(\n email: string,\n options?: RequestOptions,\n ): Promise<void> {\n await this.http.post(\"/auth/resend-verification\", { email }, options);\n }\n\n async sendSmsCode(\n phone: string,\n purpose: string,\n options?: RequestOptions,\n ): Promise<void> {\n await this.http.post(\"/auth/sms/send\", { phone, purpose }, options);\n }\n\n async verifySms(\n data: { phone: string; code: string; purpose: string },\n options?: RequestOptions,\n ): Promise<AuthResult> {\n const result = await this.http.post<AuthResult>(\n \"/auth/sms/verify\",\n data,\n options,\n );\n this.store.save(result);\n return result;\n }\n\n async bindPhone(\n data: { phone: string; code: string },\n options?: RequestOptions,\n ): Promise<void> {\n await this.http.post(\"/auth/phone/bind\", data, options);\n }\n\n getOAuthRedirectURL(provider: string): string {\n return `${this.http.baseUrl}/auth/oauth/${provider}`;\n }\n\n async listOAuthProviders(\n options?: RequestOptions,\n ): Promise<OAuthProvider[]> {\n return this.http.get<OAuthProvider[]>(\n \"/auth/oauth/providers\",\n options,\n );\n }\n\n async authWithOAuth(\n data: { provider: string; code: string; redirect_url: string },\n options?: RequestOptions,\n ): Promise<AuthResult> {\n const result = await this.http.get<AuthResult>(\n `/auth/oauth/${data.provider}/callback`,\n {\n ...options,\n query: { code: data.code, redirect_url: data.redirect_url },\n },\n );\n this.store.save(result);\n return result;\n }\n\n async listOAuthBindings(options?: RequestOptions): Promise<OAuthBinding[]> {\n return this.http.get<OAuthBinding[]>(\n \"/auth/oauth/bindings\",\n options,\n );\n }\n\n async unbindOAuth(\n provider: string,\n options?: RequestOptions,\n ): Promise<void> {\n await this.http.request<void>(this.http.pathForDelete(\"/auth/oauth\", `${provider}/unbind`), {\n ...options,\n method: this.http.methodForDelete(),\n });\n }\n\n async listCredentials(\n options?: RequestOptions,\n ): Promise<CredentialResponse[]> {\n return this.http.get<CredentialResponse[]>(\"/auth/credentials\", options);\n }\n\n async bindEmail(\n data: { email: string; password: string },\n options?: RequestOptions,\n ): Promise<void> {\n await this.http.post(\"/auth/credentials/bind-email\", data, options);\n }\n\n async deleteCredential(id: number, options?: RequestOptions): Promise<void> {\n await this.http.request<void>(this.http.pathForDelete(\"/auth/credentials\", String(id)), {\n ...options,\n method: this.http.methodForDelete(),\n });\n }\n}\n","import { HttpClient } from \"../client\";\nimport type { PaginatedData, RequestOptions, User, UserRole } from \"../types\";\n\nexport class Users {\n private readonly http: HttpClient;\n\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n async getMe(options?: RequestOptions): Promise<User> {\n return this.http.get<User>(\"/users/me\", options);\n }\n\n async updateMe(\n data: {\n username?: string;\n bio?: string;\n website?: string;\n avatar?: string;\n social_links?: Record<string, string>;\n metadata?: unknown;\n },\n options?: RequestOptions,\n ): Promise<User> {\n return this.http.request<User>(this.http.pathForUpdate(\"/users\", \"me\"), {\n ...options,\n method: this.http.methodForUpdate(),\n body: data,\n });\n }\n\n async changePassword(\n data: { old_password: string; new_password: string },\n options?: RequestOptions,\n ): Promise<void> {\n await this.http.request<void>(this.http.pathForUpdate(\"/users\", \"me/password\"), {\n ...options,\n method: this.http.methodForUpdate(),\n body: data,\n });\n }\n\n async getUser(id: string, options?: RequestOptions): Promise<User> {\n return this.http.get<User>(`/users/${id}`, options);\n }\n\n async listUsers(\n page = 1,\n pageSize = 25,\n options?: RequestOptions,\n ): Promise<PaginatedData<User>> {\n return this.http.get<PaginatedData<User>>(\"/users\", {\n ...options,\n query: { page: String(page), page_size: String(pageSize) },\n });\n }\n\n async updateUserRole(\n id: string,\n role: UserRole,\n options?: RequestOptions,\n ): Promise<User> {\n return this.http.request<User>(this.http.pathForUpdate(\"/users\", `${id}/role`), {\n ...options,\n method: this.http.methodForUpdate(),\n body: { role },\n });\n }\n}\n","import { HttpClient, toQueryString } from \"../client\";\nimport type {\n PaginatedData,\n PostListQuery,\n PostResponse,\n PostStatus,\n RequestOptions,\n} from \"../types\";\n\nexport interface CreatePostBody {\n title: string;\n content: string;\n excerpt?: string;\n cover_image?: string;\n status?: PostStatus;\n category_id?: string;\n tag_ids?: string[];\n}\n\nexport interface UpdatePostBody {\n title?: string;\n content?: string;\n excerpt?: string;\n cover_image?: string;\n status?: PostStatus;\n category_id?: string;\n tag_ids?: string[];\n}\n\nexport class Posts {\n private readonly http: HttpClient;\n\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n async list(\n query?: PostListQuery,\n options?: RequestOptions,\n ): Promise<PaginatedData<PostResponse>> {\n return this.http.get<PaginatedData<PostResponse>>(\"/posts\", {\n ...options,\n query: toQueryString(query as unknown as Record<string, string | number | undefined>),\n });\n }\n\n async get(slug: string, options?: RequestOptions): Promise<PostResponse> {\n return this.http.get<PostResponse>(`/posts/${slug}`, options);\n }\n\n async create(\n body: CreatePostBody,\n options?: RequestOptions,\n ): Promise<PostResponse> {\n return this.http.request<PostResponse>(this.http.pathForCreate(\"/posts\"), {\n ...options,\n method: this.http.methodForCreate(),\n body,\n });\n }\n\n async update(\n slug: string,\n body: UpdatePostBody,\n options?: RequestOptions,\n ): Promise<PostResponse> {\n return this.http.request<PostResponse>(this.http.pathForUpdate(\"/posts\", slug), {\n ...options,\n method: this.http.methodForUpdate(),\n body,\n });\n }\n\n async delete(slug: string, options?: RequestOptions): Promise<void> {\n await this.http.request<void>(this.http.pathForDelete(\"/posts\", slug), {\n ...options,\n method: this.http.methodForDelete(),\n });\n }\n}\n","import { HttpClient } from \"../client\";\nimport type { Page, PaginatedData, RequestOptions, SitemapEntry } from \"../types\";\n\nexport class Pages {\n private readonly http: HttpClient;\n\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n async list(\n page = 1,\n pageSize = 25,\n options?: RequestOptions,\n ): Promise<PaginatedData<Page>> {\n return this.http.get<PaginatedData<Page>>(\"/pages\", {\n ...options,\n query: { page: String(page), page_size: String(pageSize) },\n });\n }\n\n async get(slug: string, options?: RequestOptions): Promise<Page> {\n return this.http.get<Page>(`/pages/${slug}`, options);\n }\n\n async sitemap(options?: RequestOptions): Promise<SitemapEntry[]> {\n return this.http.get<SitemapEntry[]>(\"/pages/sitemap\", options);\n }\n}\n","import { HttpClient } from \"../client\";\nimport type {\n CommentResponse,\n CommentStatus,\n PaginatedData,\n RequestOptions,\n} from \"../types\";\n\nexport interface CreateCommentBody {\n content: string;\n parent_id?: string;\n nickname?: string;\n email?: string;\n}\n\nexport class Comments {\n private readonly http: HttpClient;\n\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n async list(\n postSlug: string,\n page = 1,\n pageSize = 25,\n options?: RequestOptions,\n ): Promise<PaginatedData<CommentResponse>> {\n return this.http.get<PaginatedData<CommentResponse>>(\n `/posts/${postSlug}/comments`,\n {\n ...options,\n query: { page: String(page), page_size: String(pageSize) },\n },\n );\n }\n\n async create(\n postSlug: string,\n body: CreateCommentBody,\n options?: RequestOptions,\n ): Promise<CommentResponse> {\n const isAuthenticated = this.http.authStore?.isAuthenticated;\n const endpoint = isAuthenticated\n ? `/posts/${postSlug}/comments/authed`\n : `/posts/${postSlug}/comments`;\n return this.http.post<CommentResponse>(endpoint, body, options);\n }\n\n async listAll(\n page = 1,\n pageSize = 25,\n options?: RequestOptions,\n ): Promise<PaginatedData<CommentResponse>> {\n return this.http.get<PaginatedData<CommentResponse>>(\"/comments\", {\n ...options,\n query: { page: String(page), page_size: String(pageSize) },\n });\n }\n\n async updateStatus(\n id: string,\n status: CommentStatus,\n options?: RequestOptions,\n ): Promise<void> {\n await this.http.request<void>(this.http.pathForUpdate(\"/comments/status\", id), {\n ...options,\n method: this.http.methodForUpdate(),\n body: { status },\n });\n }\n\n async delete(id: string, options?: RequestOptions): Promise<void> {\n await this.http.request<void>(this.http.pathForDelete(\"/comments\", id), {\n ...options,\n method: this.http.methodForDelete(),\n });\n }\n}\n","import { HttpClient } from \"../client\";\nimport type { Category, PaginatedData, RequestOptions } from \"../types\";\n\nexport interface CreateCategoryBody {\n name: string;\n description?: string;\n parent_id?: string;\n sort_order?: number;\n}\n\nexport interface UpdateCategoryBody {\n name?: string;\n description?: string;\n parent_id?: string;\n sort_order?: number;\n}\n\nexport class Categories {\n private readonly http: HttpClient;\n\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n async list(\n page = 1,\n pageSize = 25,\n options?: RequestOptions,\n ): Promise<PaginatedData<Category>> {\n return this.http.get<PaginatedData<Category>>(\"/categories\", {\n ...options,\n query: { page: String(page), page_size: String(pageSize) },\n });\n }\n\n async get(\n id: string,\n options?: RequestOptions,\n ): Promise<Category> {\n return this.http.get<Category>(`/categories/${id}`, options);\n }\n\n async create(\n body: CreateCategoryBody,\n options?: RequestOptions,\n ): Promise<Category> {\n return this.http.request<Category>(this.http.pathForCreate(\"/categories\"), {\n ...options,\n method: this.http.methodForCreate(),\n body,\n });\n }\n\n async update(\n id: string,\n body: UpdateCategoryBody,\n options?: RequestOptions,\n ): Promise<Category> {\n return this.http.request<Category>(this.http.pathForUpdate(\"/categories\", id), {\n ...options,\n method: this.http.methodForUpdate(),\n body,\n });\n }\n\n async delete(id: string, options?: RequestOptions): Promise<void> {\n await this.http.request<void>(this.http.pathForDelete(\"/categories\", id), {\n ...options,\n method: this.http.methodForDelete(),\n });\n }\n}\n","import { HttpClient } from \"../client\";\nimport type { PaginatedData, RequestOptions, Tag } from \"../types\";\n\nexport class Tags {\n private readonly http: HttpClient;\n\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n async list(\n page = 1,\n pageSize = 25,\n options?: RequestOptions,\n ): Promise<PaginatedData<Tag>> {\n return this.http.get<PaginatedData<Tag>>(\"/tags\", {\n ...options,\n query: { page: String(page), page_size: String(pageSize) },\n });\n }\n\n async get(\n id: string,\n options?: RequestOptions,\n ): Promise<Tag> {\n return this.http.get<Tag>(`/tags/${id}`, options);\n }\n\n async create(\n body: { name: string },\n options?: RequestOptions,\n ): Promise<Tag> {\n return this.http.request<Tag>(this.http.pathForCreate(\"/tags\"), {\n ...options,\n method: this.http.methodForCreate(),\n body,\n });\n }\n\n async update(\n id: string,\n body: { name: string },\n options?: RequestOptions,\n ): Promise<Tag> {\n return this.http.request<Tag>(this.http.pathForUpdate(\"/tags\", id), {\n ...options,\n method: this.http.methodForUpdate(),\n body,\n });\n }\n\n async delete(id: string, options?: RequestOptions): Promise<void> {\n await this.http.request<void>(this.http.pathForDelete(\"/tags\", id), {\n ...options,\n method: this.http.methodForDelete(),\n });\n }\n}\n","import { HttpClient } from \"../client\";\nimport type {\n MediaFile,\n MediaStats,\n MutateOptions,\n PaginatedData,\n RequestOptions,\n} from \"../types\";\n\nexport class Media {\n private readonly http: HttpClient;\n\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n async upload(\n file: File,\n options?: MutateOptions,\n ): Promise<MediaFile> {\n const formData = new FormData();\n formData.append(\"file\", file);\n return this.http.request<MediaFile>(\"/media/upload\", {\n ...options,\n method: \"POST\",\n body: formData,\n });\n }\n\n async list(\n page = 1,\n pageSize = 25,\n options?: RequestOptions,\n ): Promise<PaginatedData<MediaFile>> {\n return this.http.get<PaginatedData<MediaFile>>(\"/media\", {\n ...options,\n query: { page: String(page), page_size: String(pageSize) },\n });\n }\n\n async stats(options?: RequestOptions): Promise<MediaStats> {\n return this.http.get<MediaStats>(\"/media/stats\", options);\n }\n\n async delete(id: string, options?: RequestOptions): Promise<void> {\n await this.http.request<void>(this.http.pathForDelete(\"/media\", id), {\n ...options,\n method: this.http.methodForDelete(),\n });\n }\n\n getFileURL(\n record: Record<string, unknown>,\n field: string,\n options?: { thumb?: string },\n ): string {\n const base = this.http.baseUrl.replace(\"/api/v1\", \"\");\n const path = record[field];\n if (typeof path !== \"string\") return \"\";\n if (path.startsWith(\"http\")) return path;\n let url = `${base}/uploads/${path}`;\n if (options?.thumb) {\n url += `?thumb=${encodeURIComponent(options.thumb)}`;\n }\n return url;\n }\n}\n","import { HttpClient } from \"../client\";\nimport type { HealthStatus, RequestOptions } from \"../types\";\n\nexport class Health {\n private readonly http: HttpClient;\n\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n async check(options?: RequestOptions): Promise<HealthStatus> {\n return this.http.get<HealthStatus>(\"/health\", options);\n }\n\n async liveness(options?: RequestOptions): Promise<HealthStatus> {\n const base = this.http.baseUrl.replace(/\\/api\\/v\\d+\\/?$/, \"\");\n const res = await fetch(`${base}/healthz`);\n return res.json();\n }\n\n async readiness(options?: RequestOptions): Promise<HealthStatus> {\n const base = this.http.baseUrl.replace(/\\/api\\/v\\d+\\/?$/, \"\");\n const res = await fetch(`${base}/readyz`);\n return res.json();\n }\n}\n","import { HttpClient, toQueryString } from \"../client\";\nimport type {\n PaginatedData,\n RequestOptions,\n WalletResponse,\n WalletTransactionResponse,\n} from \"../types\";\n\nexport class Wallets {\n private readonly http: HttpClient;\n\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n async list(options?: RequestOptions): Promise<WalletResponse[]> {\n return this.http.get<WalletResponse[]>(\"/wallets\", options);\n }\n\n async get(\n currency: string,\n options?: RequestOptions,\n ): Promise<WalletResponse> {\n return this.http.get<WalletResponse>(`/wallets/${currency}`, options);\n }\n\n async listTransactions(\n currency: string,\n query?: { page?: number; page_size?: number },\n options?: RequestOptions,\n ): Promise<PaginatedData<WalletTransactionResponse>> {\n return this.http.get<PaginatedData<WalletTransactionResponse>>(\n `/wallets/${currency}/transactions`,\n { ...options, query: toQueryString(query) },\n );\n }\n\n async listAllTransactions(\n query?: { page?: number; page_size?: number },\n options?: RequestOptions,\n ): Promise<PaginatedData<WalletTransactionResponse>> {\n return this.http.get<PaginatedData<WalletTransactionResponse>>(\n \"/wallets/transactions\",\n { ...options, query: toQueryString(query) },\n );\n }\n}\n","export class Events {\n private readonly baseUrl: string;\n\n constructor(baseUrl: string) {\n this.baseUrl = baseUrl;\n }\n\n subscribe(filter?: string): EventSource {\n const url = filter\n ? `${this.baseUrl}/events?filter=${encodeURIComponent(filter)}`\n : `${this.baseUrl}/events`;\n return new EventSource(url);\n }\n}\n","import { HttpClient } from \"../client\";\nimport type { OrderResponse, PaginatedData, RequestOptions } from \"../types\";\n\nexport interface CreateOrderItemBody {\n product_id: string;\n quantity: number;\n}\n\nexport interface CreateOrderBody {\n items: CreateOrderItemBody[];\n currency?: string;\n buyer_name?: string;\n buyer_phone?: string;\n buyer_email?: string;\n shipping_address?: string;\n remark?: string;\n}\n\nexport class Orders {\n private readonly http: HttpClient;\n\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n async list(\n page = 1,\n pageSize = 25,\n options?: RequestOptions,\n ): Promise<PaginatedData<OrderResponse>> {\n return this.http.get<PaginatedData<OrderResponse>>(\"/orders\", {\n ...options,\n query: { page: String(page), page_size: String(pageSize) },\n });\n }\n\n async get(id: string, options?: RequestOptions): Promise<OrderResponse> {\n return this.http.get<OrderResponse>(`/orders/${id}`, options);\n }\n\n async create(\n body: CreateOrderBody,\n options?: RequestOptions,\n ): Promise<OrderResponse> {\n return this.http.request<OrderResponse>(this.http.pathForCreate(\"/orders\"), {\n ...options,\n method: this.http.methodForCreate(),\n body,\n });\n }\n\n async cancel(id: string, options?: RequestOptions): Promise<void> {\n await this.http.request<void>(this.http.pathForUpdate(\"/orders\", id), {\n ...options,\n method: this.http.methodForUpdate(),\n });\n }\n\n async confirmReceipt(id: string, options?: RequestOptions): Promise<void> {\n await this.http.post(`/orders/${id}/confirm`, undefined, options);\n }\n}\n","import { HttpClient, toQueryString } from \"../client\";\nimport type {\n AvailableChannelsResponse,\n PaymentOrderResponse,\n PaymentRefundResponse,\n PaymentTransactionResponse,\n PaginatedData,\n RequestOptions,\n} from \"../types\";\n\nexport interface CreatePaymentOrderBody {\n order_id: string;\n channel_id?: string;\n method?: string;\n country?: string;\n language?: string;\n return_url?: string;\n metadata?: string;\n}\n\nexport class Payment {\n private readonly http: HttpClient;\n\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n async listAvailableChannels(\n query: { order_id: string; country?: string; language?: string },\n options?: RequestOptions,\n ): Promise<AvailableChannelsResponse> {\n return this.http.get<AvailableChannelsResponse>(\"/payment/channels/available\", {\n ...options,\n query: toQueryString(query),\n });\n }\n\n async listOrders(\n page = 1,\n pageSize = 25,\n options?: RequestOptions,\n ): Promise<PaginatedData<PaymentOrderResponse>> {\n return this.http.get<PaginatedData<PaymentOrderResponse>>(\"/payment/orders\", {\n ...options,\n query: { page: String(page), page_size: String(pageSize) },\n });\n }\n\n async createOrder(\n body: CreatePaymentOrderBody,\n options?: RequestOptions,\n ): Promise<PaymentOrderResponse> {\n return this.http.request<PaymentOrderResponse>(this.http.pathForCreate(\"/payment/orders\"), {\n ...options,\n method: this.http.methodForCreate(),\n body,\n });\n }\n\n async getOrder(\n id: string,\n options?: RequestOptions,\n ): Promise<PaymentOrderResponse> {\n return this.http.get<PaymentOrderResponse>(`/payment/orders/${id}`, options);\n }\n\n async cancelOrder(id: string, options?: RequestOptions): Promise<void> {\n await this.http.post(`/payment/orders/${id}/cancel`, undefined, options);\n }\n\n async listTransactions(\n id: string,\n options?: RequestOptions,\n ): Promise<PaymentTransactionResponse[]> {\n return this.http.get<PaymentTransactionResponse[]>(\n `/payment/orders/${id}/transactions`,\n options,\n );\n }\n\n async listRefunds(\n id: string,\n options?: RequestOptions,\n ): Promise<PaymentRefundResponse[]> {\n return this.http.get<PaymentRefundResponse[]>(\n `/payment/orders/${id}/refunds`,\n options,\n );\n }\n}\n","import { HttpClient } from \"../client\";\nimport type { PaginatedData, ProductResponse, RequestOptions } from \"../types\";\n\nexport class Products {\n private readonly http: HttpClient;\n\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n async list(\n page = 1,\n pageSize = 25,\n options?: RequestOptions,\n ): Promise<PaginatedData<ProductResponse>> {\n return this.http.get<PaginatedData<ProductResponse>>(\"/products\", {\n ...options,\n query: { page: String(page), page_size: String(pageSize) },\n });\n }\n\n async get(id: string, options?: RequestOptions): Promise<ProductResponse> {\n return this.http.get<ProductResponse>(`/products/${id}`, options);\n }\n}\n","import { HttpClient } from \"../client\";\nimport type { RequestOptions } from \"../types\";\n\nexport interface CartItem {\n id: string;\n quantity: number;\n attributes: string | null;\n title: string;\n price: number;\n cover_url: string | null;\n created_at: string;\n updated_at: string;\n}\n\nexport interface CartResponse {\n items: CartItem[];\n total: number;\n}\n\nexport interface AddToCartBody {\n product_id: string;\n quantity: number;\n attributes?: string;\n}\n\nexport interface UpdateCartItemBody {\n quantity: number;\n}\n\nexport class Cart {\n private readonly http: HttpClient;\n\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n async list(options?: RequestOptions): Promise<CartResponse> {\n return this.http.get<CartResponse>(\"/cart\", options);\n }\n\n async add(\n body: AddToCartBody,\n options?: RequestOptions,\n ): Promise<void> {\n await this.http.request<void>(this.http.pathForCreate(\"/cart\"), {\n ...options,\n method: this.http.methodForCreate(),\n body,\n });\n }\n\n async updateItem(\n id: string,\n body: UpdateCartItemBody,\n options?: RequestOptions,\n ): Promise<void> {\n await this.http.request<void>(this.http.pathForUpdate(\"/cart\", id), {\n ...options,\n method: this.http.methodForUpdate(),\n body,\n });\n }\n\n async removeItem(\n id: string,\n options?: RequestOptions,\n ): Promise<void> {\n await this.http.request<void>(this.http.pathForUpdate(\"/cart\", id), {\n ...options,\n method: this.http.methodForUpdate(),\n });\n }\n\n async clear(options?: RequestOptions): Promise<void> {\n await this.http.request<void>(\"/cart\", {\n ...options,\n method: \"DELETE\",\n });\n }\n\n async checkout(options?: RequestOptions): Promise<Record<string, unknown>> {\n return this.http.post<Record<string, unknown>>(\n \"/cart/checkout\",\n undefined,\n options,\n );\n }\n}\n","import { HttpClient } from \"../client\";\nimport type { AuditLog, PaginatedData, RequestOptions } from \"../types\";\n\nexport class AdminAudit {\n private readonly http: HttpClient;\n\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n async list(\n page = 1,\n pageSize = 25,\n options?: RequestOptions,\n ): Promise<PaginatedData<AuditLog>> {\n return this.http.get<PaginatedData<AuditLog>>(\"/admin/audit\", {\n ...options,\n query: { page: String(page), page_size: String(pageSize) },\n });\n }\n\n async get(id: number, options?: RequestOptions): Promise<AuditLog> {\n return this.http.get<AuditLog>(`/admin/audit/${id}`, options);\n }\n}\n","import { HttpClient } from \"../client\";\nimport type {\n BatchRequest,\n BatchResponse,\n Category,\n CreateCategoryRequest,\n PaginatedData,\n RequestOptions,\n UpdateCategoryRequest,\n} from \"../types\";\n\nexport class AdminCategories {\n private readonly http: HttpClient;\n\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n async list(\n page = 1,\n pageSize = 25,\n options?: RequestOptions,\n ): Promise<PaginatedData<Category>> {\n return this.http.get<PaginatedData<Category>>(\"/admin/categories\", {\n ...options,\n query: { page: String(page), page_size: String(pageSize) },\n });\n }\n\n async create(\n body: CreateCategoryRequest,\n options?: RequestOptions,\n ): Promise<Category> {\n return this.http.request<Category>(this.http.pathForCreate(\"/admin/categories\"), {\n ...options,\n method: this.http.methodForCreate(),\n body,\n });\n }\n\n async update(\n id: string,\n body: UpdateCategoryRequest,\n options?: RequestOptions,\n ): Promise<Category> {\n return this.http.request<Category>(this.http.pathForUpdate(\"/admin/categories\", id), {\n ...options,\n method: this.http.methodForUpdate(),\n body,\n });\n }\n\n async delete(id: string, options?: RequestOptions): Promise<void> {\n await this.http.request<void>(this.http.pathForDelete(\"/admin/categories\", id), {\n ...options,\n method: this.http.methodForDelete(),\n });\n }\n\n async batch(\n data: BatchRequest,\n options?: RequestOptions,\n ): Promise<BatchResponse> {\n return this.http.post<BatchResponse>(\n \"/admin/categories/batch\",\n data,\n options,\n );\n }\n}\n","import { HttpClient, toQueryString } from \"../client\";\nimport type {\n AdminCommentRow,\n BatchRequest,\n BatchResponse,\n CommentStatus,\n PaginatedData,\n RequestOptions,\n} from \"../types\";\n\nexport class AdminComments {\n private readonly http: HttpClient;\n\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n async list(\n query?: { page?: number; page_size?: number; status?: CommentStatus },\n options?: RequestOptions,\n ): Promise<PaginatedData<AdminCommentRow>> {\n return this.http.get<PaginatedData<AdminCommentRow>>(\"/admin/comments\", {\n ...options,\n query: toQueryString(query as Record<string, string | number | undefined>),\n });\n }\n\n async updateStatus(\n id: string,\n status: CommentStatus,\n options?: RequestOptions,\n ): Promise<void> {\n await this.http.request<void>(this.http.pathForUpdate(\"/admin/comments/status\", id), {\n ...options,\n method: this.http.methodForUpdate(),\n body: { status },\n });\n }\n\n async delete(id: string, options?: RequestOptions): Promise<void> {\n await this.http.request<void>(this.http.pathForDelete(\"/admin/comments\", id), {\n ...options,\n method: this.http.methodForDelete(),\n });\n }\n\n async batch(\n data: BatchRequest,\n options?: RequestOptions,\n ): Promise<BatchResponse> {\n return this.http.post<BatchResponse>(\n \"/admin/comments/batch\",\n data,\n options,\n );\n }\n}\n","import { HttpClient } from \"../client\";\nimport type { ContentTypeSchema, RequestOptions } from \"../types\";\n\nexport class AdminContentTypes {\n private readonly http: HttpClient;\n\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n async list(options?: RequestOptions): Promise<ContentTypeSchema[]> {\n return this.http.get<ContentTypeSchema[]>(\"/admin/content-types\", options);\n }\n\n async get(\n name: string,\n options?: RequestOptions,\n ): Promise<ContentTypeSchema> {\n return this.http.get<ContentTypeSchema>(\n `/admin/content-types/${name}`,\n options,\n );\n }\n\n async create(\n schema: ContentTypeSchema,\n options?: RequestOptions,\n ): Promise<ContentTypeSchema> {\n return this.http.request<ContentTypeSchema>(this.http.pathForCreate(\"/admin/content-types\"), {\n ...options,\n method: this.http.methodForCreate(),\n body: schema,\n });\n }\n\n async update(\n name: string,\n schema: Partial<ContentTypeSchema>,\n options?: RequestOptions,\n ): Promise<ContentTypeSchema> {\n return this.http.request<ContentTypeSchema>(this.http.pathForUpdate(\"/admin/content-types\", name), {\n ...options,\n method: this.http.methodForUpdate(),\n body: schema,\n });\n }\n\n async delete(name: string, options?: RequestOptions): Promise<void> {\n await this.http.request<void>(this.http.pathForDelete(\"/admin/content-types\", name), {\n ...options,\n method: this.http.methodForDelete(),\n });\n }\n}\n","import { HttpClient, toQueryString } from \"../client\";\nimport type {\n BatchResponse,\n CronJob,\n CronLog,\n RequestOptions,\n} from \"../types\";\n\nexport class AdminCrons {\n private readonly http: HttpClient;\n\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n async list(options?: RequestOptions): Promise<CronJob[]> {\n return this.http.get<CronJob[]>(\"/admin/crons\", options);\n }\n\n async create(\n data: { name: string; schedule: string; handler: string },\n options?: RequestOptions,\n ): Promise<CronJob> {\n return this.http.request<CronJob>(this.http.pathForCreate(\"/admin/crons\"), {\n ...options,\n method: this.http.methodForCreate(),\n body: data,\n });\n }\n\n async get(id: string, options?: RequestOptions): Promise<CronJob> {\n return this.http.get<CronJob>(`/admin/crons/${id}`, options);\n }\n\n async update(\n id: string,\n data: Partial<CronJob>,\n options?: RequestOptions,\n ): Promise<CronJob> {\n return this.http.request<CronJob>(this.http.pathForUpdate(\"/admin/crons\", id), {\n ...options,\n method: this.http.methodForUpdate(),\n body: data,\n });\n }\n\n async delete(id: string, options?: RequestOptions): Promise<void> {\n await this.http.request<void>(this.http.pathForDelete(\"/admin/crons\", id), {\n ...options,\n method: this.http.methodForDelete(),\n });\n }\n\n async toggle(\n id: string,\n enabled: boolean,\n options?: RequestOptions,\n ): Promise<CronJob> {\n return this.http.post<CronJob>(`/admin/crons/${id}/toggle`, { enabled }, options);\n }\n\n async listLogs(\n params?: { schedule_id?: string; limit?: number },\n options?: RequestOptions,\n ): Promise<CronLog[]> {\n return this.http.get<CronLog[]>(\"/admin/crons/logs\", {\n ...options,\n query: toQueryString(params),\n });\n }\n\n async cleanupLogs(options?: RequestOptions): Promise<void> {\n await this.http.post(\"/admin/crons/logs/cleanup\", {}, options);\n }\n\n async batch(\n data: { action: string; ids: string[] },\n options?: RequestOptions,\n ): Promise<BatchResponse> {\n return this.http.post(\"/admin/crons/batch\", data, options);\n }\n}\n","import { HttpClient } from \"../client\";\nimport type {\n CreateCurrencyRequest,\n CurrencyResponse,\n RequestOptions,\n UpdateCurrencyRequest,\n} from \"../types\";\n\nexport class AdminCurrencies {\n private readonly http: HttpClient;\n\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n async list(options?: RequestOptions): Promise<CurrencyResponse[]> {\n return this.http.get<CurrencyResponse[]>(\"/admin/currencies\", options);\n }\n\n async get(\n code: string,\n options?: RequestOptions,\n ): Promise<CurrencyResponse> {\n return this.http.get<CurrencyResponse>(\n `/admin/currencies/${code}`,\n options,\n );\n }\n\n async create(\n body: CreateCurrencyRequest,\n options?: RequestOptions,\n ): Promise<CurrencyResponse> {\n return this.http.request<CurrencyResponse>(this.http.pathForCreate(\"/admin/currencies\"), {\n ...options,\n method: this.http.methodForCreate(),\n body,\n });\n }\n\n async update(\n code: string,\n body: UpdateCurrencyRequest,\n options?: RequestOptions,\n ): Promise<CurrencyResponse> {\n return this.http.request<CurrencyResponse>(this.http.pathForUpdate(\"/admin/currencies\", code), {\n ...options,\n method: this.http.methodForUpdate(),\n body,\n });\n }\n}\n","import { HttpClient } from \"../client\";\nimport type {\n BatchRequest,\n BatchResponse,\n MediaFile,\n MediaStats,\n MutateOptions,\n PaginatedData,\n RequestOptions,\n} from \"../types\";\n\nexport class AdminMedia {\n private readonly http: HttpClient;\n\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n async upload(\n file: File,\n options?: MutateOptions,\n ): Promise<MediaFile> {\n const formData = new FormData();\n formData.append(\"file\", file);\n return this.http.request<MediaFile>(\"/admin/media/upload\", {\n ...options,\n method: \"POST\",\n body: formData,\n });\n }\n\n async list(\n page = 1,\n pageSize = 25,\n options?: RequestOptions,\n ): Promise<PaginatedData<MediaFile>> {\n return this.http.get<PaginatedData<MediaFile>>(\"/admin/media\", {\n ...options,\n query: { page: String(page), page_size: String(pageSize) },\n });\n }\n\n async delete(id: string, options?: RequestOptions): Promise<void> {\n await this.http.request<void>(this.http.pathForDelete(\"/admin/media\", id), {\n ...options,\n method: this.http.methodForDelete(),\n });\n }\n\n async batch(\n data: BatchRequest,\n options?: RequestOptions,\n ): Promise<BatchResponse> {\n return this.http.post<BatchResponse>(\"/admin/media/batch\", data, options);\n }\n}\n","import { HttpClient } from \"../client\";\nimport type { OptionGroup, RequestOptions } from \"../types\";\n\nexport class AdminOptions {\n private readonly http: HttpClient;\n\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n async list(options?: RequestOptions): Promise<OptionGroup[]> {\n return this.http.get<OptionGroup[]>(\"/admin/options\", options);\n }\n\n async get(key: string, options?: RequestOptions): Promise<unknown> {\n return this.http.get<unknown>(`/admin/options/${key}`, options);\n }\n\n async set(\n key: string,\n value: string,\n options?: RequestOptions,\n ): Promise<void> {\n await this.http.request<void>(this.http.pathForUpdate(\"/admin/options\", key), {\n ...options,\n method: this.http.methodForUpdate(),\n body: { value },\n });\n }\n\n async delete(key: string, options?: RequestOptions): Promise<void> {\n await this.http.request<void>(this.http.pathForDelete(\"/admin/options\", key), {\n ...options,\n method: this.http.methodForDelete(),\n });\n }\n\n async batchUpdate(\n data: Record<string, unknown>,\n options?: RequestOptions,\n ): Promise<void> {\n await this.http.request<void>(this.http.pathForUpdate(\"/admin/options\", \"\"), {\n ...options,\n method: this.http.methodForUpdate(),\n body: { options: data },\n });\n }\n\n async getPublic(\n options?: RequestOptions,\n ): Promise<Record<string, string>> {\n return this.http.get<Record<string, string>>(\"/options/public\", options);\n }\n}\n","import { HttpClient, toQueryString } from \"../client\";\nimport type {\n OrderResponse,\n OrderStatsResponse,\n PaginatedData,\n RequestOptions,\n} from \"../types\";\n\nexport interface ShipOrderBody {\n tracking_no?: string;\n carrier?: string;\n}\n\nexport interface UpdateAdminRemarkBody {\n admin_remark: string;\n}\n\nexport class AdminOrders {\n private readonly http: HttpClient;\n\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n async list(\n query?: { page?: number; page_size?: number; status?: string },\n options?: RequestOptions,\n ): Promise<PaginatedData<OrderResponse>> {\n return this.http.get<PaginatedData<OrderResponse>>(\"/admin/orders\", {\n ...options,\n query: toQueryString(query as Record<string, string | number | undefined>),\n });\n }\n\n async get(id: string, options?: RequestOptions): Promise<OrderResponse> {\n return this.http.get<OrderResponse>(`/admin/orders/${id}`, options);\n }\n\n async pay(id: string, options?: RequestOptions): Promise<void> {\n await this.http.post(`/admin/orders/${id}/pay`, undefined, options);\n }\n\n async ship(id: string, body: ShipOrderBody, options?: RequestOptions): Promise<void> {\n await this.http.post(`/admin/orders/${id}/ship`, body, options);\n }\n\n async cancel(id: string, options?: RequestOptions): Promise<void> {\n await this.http.post(`/admin/orders/${id}/cancel`, undefined, options);\n }\n\n async refund(id: string, options?: RequestOptions): Promise<void> {\n await this.http.post(`/admin/orders/${id}/refund`, undefined, options);\n }\n\n async updateRemark(\n id: string,\n body: UpdateAdminRemarkBody,\n options?: RequestOptions,\n ): Promise<void> {\n await this.http.request<void>(this.http.pathForUpdate(\"/admin/orders\", `${id}/remark`), {\n ...options,\n method: this.http.methodForUpdate(),\n body,\n });\n }\n\n async stats(options?: RequestOptions): Promise<OrderStatsResponse> {\n return this.http.get<OrderStatsResponse>(\"/admin/orders/stats\", options);\n }\n}\n","import { HttpClient, toQueryString } from \"../client\";\nimport type {\n BatchRequest,\n BatchResponse,\n Page,\n PageStatus,\n PaginatedData,\n RequestOptions,\n} from \"../types\";\n\nexport interface CreatePageBody {\n title: string;\n slug?: string;\n content?: string;\n blocks?: string;\n meta_title?: string;\n meta_description?: string;\n og_image?: string;\n template?: string;\n parent_id?: string;\n sort_order?: number;\n status?: PageStatus;\n cover_image?: string;\n}\n\nexport interface UpdatePageBody {\n title?: string;\n slug?: string;\n content?: string;\n blocks?: string;\n meta_title?: string;\n meta_description?: string;\n og_image?: string;\n template?: string;\n parent_id?: string | null;\n sort_order?: number;\n status?: PageStatus;\n cover_image?: string;\n}\n\nexport class AdminPages {\n private readonly http: HttpClient;\n\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n async list(\n query?: { page?: number; page_size?: number; status?: PageStatus },\n options?: RequestOptions,\n ): Promise<PaginatedData<Page>> {\n return this.http.get<PaginatedData<Page>>(\"/admin/pages\", {\n ...options,\n query: toQueryString(query as Record<string, string | number | undefined>),\n });\n }\n\n async get(id: string, options?: RequestOptions): Promise<Page> {\n return this.http.get<Page>(`/admin/pages/${id}`, options);\n }\n\n async create(body: CreatePageBody, options?: RequestOptions): Promise<Page> {\n return this.http.request<Page>(this.http.pathForCreate(\"/admin/pages\"), {\n ...options,\n method: this.http.methodForCreate(),\n body,\n });\n }\n\n async update(\n id: string,\n body: UpdatePageBody,\n options?: RequestOptions,\n ): Promise<Page> {\n return this.http.request<Page>(this.http.pathForUpdate(\"/admin/pages\", id), {\n ...options,\n method: this.http.methodForUpdate(),\n body,\n });\n }\n\n async updateStatus(\n id: string,\n status: PageStatus,\n options?: RequestOptions,\n ): Promise<Page> {\n return this.http.request<Page>(this.http.pathForUpdate(\"/admin/pages/status\", id), {\n ...options,\n method: this.http.methodForUpdate(),\n body: { status },\n });\n }\n\n async delete(id: string, options?: RequestOptions): Promise<void> {\n await this.http.request<void>(this.http.pathForDelete(\"/admin/pages\", id), {\n ...options,\n method: this.http.methodForDelete(),\n });\n }\n\n async reorder(\n items: Array<{ id: string; sort_order: number }>,\n options?: RequestOptions,\n ): Promise<void> {\n await this.http.request<void>(this.http.pathForUpdate(\"/admin/pages\", \"reorder\"), {\n ...options,\n method: this.http.methodForUpdate(),\n body: { items },\n });\n }\n\n async batch(\n data: BatchRequest,\n options?: RequestOptions,\n ): Promise<BatchResponse> {\n return this.http.post<BatchResponse>(\"/admin/pages/batch\", data, options);\n }\n}\n","import { HttpClient, toQueryString } from \"../client\";\nimport type {\n PaginatedData,\n PaymentChannelResponse,\n PaymentOrderResponse,\n PaymentRefundResponse,\n PaymentTransactionResponse,\n RequestOptions,\n} from \"../types\";\n\nexport interface CreatePaymentChannelBody {\n provider: string;\n name: string;\n is_live?: boolean;\n credentials: string;\n webhook_secret?: string;\n settings?: string;\n sort_order?: number;\n}\n\nexport interface UpdatePaymentChannelBody {\n name?: string;\n is_live?: boolean;\n credentials?: string;\n webhook_secret?: string;\n settings?: string;\n is_active?: boolean;\n sort_order?: number;\n version: number;\n}\n\nexport interface CreateRefundBody {\n amount: number;\n reason?: string;\n}\n\nexport class AdminPayment {\n private readonly http: HttpClient;\n\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n async listChannels(\n page = 1,\n pageSize = 25,\n options?: RequestOptions,\n ): Promise<PaginatedData<PaymentChannelResponse>> {\n return this.http.get<PaginatedData<PaymentChannelResponse>>(\"/admin/payment/channels\", {\n ...options,\n query: { page: String(page), page_size: String(pageSize) },\n });\n }\n\n async getChannel(\n id: string,\n options?: RequestOptions,\n ): Promise<PaymentChannelResponse> {\n return this.http.get<PaymentChannelResponse>(`/admin/payment/channels/${id}`, options);\n }\n\n async createChannel(\n body: CreatePaymentChannelBody,\n options?: RequestOptions,\n ): Promise<PaymentChannelResponse> {\n return this.http.request<PaymentChannelResponse>(\n this.http.pathForCreate(\"/admin/payment/channels\"),\n { ...options, method: this.http.methodForCreate(), body },\n );\n }\n\n async updateChannel(\n id: string,\n body: UpdatePaymentChannelBody,\n options?: RequestOptions,\n ): Promise<PaymentChannelResponse> {\n return this.http.request<PaymentChannelResponse>(\n this.http.pathForUpdate(\"/admin/payment/channels\", id),\n { ...options, method: this.http.methodForUpdate(), body },\n );\n }\n\n async deleteChannel(id: string, options?: RequestOptions): Promise<void> {\n await this.http.request<void>(this.http.pathForDelete(\"/admin/payment/channels\", id), {\n ...options,\n method: this.http.methodForDelete(),\n });\n }\n\n async listOrders(\n query?: { page?: number; page_size?: number },\n options?: RequestOptions,\n ): Promise<PaginatedData<PaymentOrderResponse>> {\n return this.http.get<PaginatedData<PaymentOrderResponse>>(\"/admin/payment/orders\", {\n ...options,\n query: toQueryString(query),\n });\n }\n\n async getOrder(\n id: string,\n options?: RequestOptions,\n ): Promise<PaymentOrderResponse> {\n return this.http.get<PaymentOrderResponse>(`/admin/payment/orders/${id}`, options);\n }\n\n async refundOrder(\n id: string,\n body: CreateRefundBody,\n options?: RequestOptions,\n ): Promise<PaymentRefundResponse> {\n return this.http.post<PaymentRefundResponse>(\n `/admin/payment/orders/${id}/refund`,\n body,\n options,\n );\n }\n\n async listTransactions(\n query?: { page?: number; page_size?: number },\n options?: RequestOptions,\n ): Promise<PaginatedData<PaymentTransactionResponse>> {\n return this.http.get<PaginatedData<PaymentTransactionResponse>>(\n \"/admin/payment/transactions\",\n { ...options, query: toQueryString(query) },\n );\n }\n\n async listRefunds(\n query?: { page?: number; page_size?: number },\n options?: RequestOptions,\n ): Promise<PaginatedData<PaymentRefundResponse>> {\n return this.http.get<PaginatedData<PaymentRefundResponse>>(\n \"/admin/payment/refunds\",\n { ...options, query: toQueryString(query) },\n );\n }\n}\n","import { HttpClient } from \"../client\";\nimport type { BatchResponse, PaginatedData, PluginInfoResponse, RequestOptions } from \"../types\";\n\nexport class AdminPlugins {\n private readonly http: HttpClient;\n\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n async list(\n page = 1,\n pageSize = 25,\n options?: RequestOptions,\n ): Promise<PaginatedData<PluginInfoResponse>> {\n return this.http.get<PaginatedData<PluginInfoResponse>>(\"/admin/plugins\", {\n ...options,\n query: { page: String(page), page_size: String(pageSize) },\n });\n }\n\n async get(id: string, options?: RequestOptions): Promise<PluginInfoResponse> {\n return this.http.get<PluginInfoResponse>(`/admin/plugins/${id}`, options);\n }\n\n async enable(id: string, options?: RequestOptions): Promise<void> {\n await this.http.post(`/admin/plugins/${id}/enable`, {}, options);\n }\n\n async disable(id: string, options?: RequestOptions): Promise<void> {\n await this.http.post(`/admin/plugins/${id}/disable`, {}, options);\n }\n\n async reload(id: string, options?: RequestOptions): Promise<void> {\n await this.http.post(`/admin/plugins/${id}/reload`, {}, options);\n }\n\n async unload(id: string, options?: RequestOptions): Promise<void> {\n await this.http.request<void>(this.http.pathForDelete(\"/admin/plugins\", id), {\n ...options,\n method: this.http.methodForDelete(),\n });\n }\n\n async batch(\n data: { action: string; ids: string[] },\n options?: RequestOptions,\n ): Promise<BatchResponse> {\n return this.http.post(\"/admin/plugins/batch\", data, options);\n }\n}\n","import { HttpClient, toQueryString } from \"../client\";\nimport type {\n BatchRequest,\n BatchResponse,\n PaginatedData,\n PostResponse,\n PostStatus,\n RequestOptions,\n} from \"../types\";\nimport type { CreatePostBody, UpdatePostBody } from \"../public/posts\";\n\nexport class AdminPosts {\n private readonly http: HttpClient;\n\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n async list(\n query?: { page?: number; page_size?: number; status?: PostStatus },\n options?: RequestOptions,\n ): Promise<PaginatedData<PostResponse>> {\n return this.http.get<PaginatedData<PostResponse>>(\"/admin/posts\", {\n ...options,\n query: toQueryString(query as Record<string, string | number | undefined>),\n });\n }\n\n async get(\n id: string,\n options?: RequestOptions,\n ): Promise<PostResponse> {\n return this.http.get<PostResponse>(`/admin/posts/${id}`, options);\n }\n\n async create(\n body: CreatePostBody,\n options?: RequestOptions,\n ): Promise<PostResponse> {\n return this.http.request<PostResponse>(this.http.pathForCreate(\"/admin/posts\"), {\n ...options,\n method: this.http.methodForCreate(),\n body,\n });\n }\n\n async update(\n id: string,\n body: UpdatePostBody,\n options?: RequestOptions,\n ): Promise<PostResponse> {\n return this.http.request<PostResponse>(this.http.pathForUpdate(\"/admin/posts\", id), {\n ...options,\n method: this.http.methodForUpdate(),\n body,\n });\n }\n\n async delete(id: string, options?: RequestOptions): Promise<void> {\n await this.http.request<void>(this.http.pathForDelete(\"/admin/posts\", id), {\n ...options,\n method: this.http.methodForDelete(),\n });\n }\n\n async batch(\n data: BatchRequest,\n options?: RequestOptions,\n ): Promise<BatchResponse> {\n return this.http.post<BatchResponse>(\"/admin/posts/batch\", data, options);\n }\n}\n","import { HttpClient } from \"../client\";\nimport type { PaginatedData, ProductResponse, RequestOptions } from \"../types\";\n\nexport interface CreateProductBody {\n title: string;\n description?: string;\n cover_url?: string;\n category_id?: string;\n product_type?: string;\n fulfillment_type?: string;\n delivery_hook?: string;\n weight?: number;\n price: number;\n currency?: string;\n attributes?: string;\n sort_order?: number;\n slug?: string;\n content?: string;\n image_ids?: unknown;\n original_price?: number;\n specs?: unknown;\n unit?: string;\n min_purchase?: number;\n max_purchase?: number;\n virtual_sales?: number;\n meta_title?: string;\n meta_description?: string;\n}\n\nexport interface UpdateProductBody {\n title?: string;\n description?: string;\n cover_url?: string;\n category_id?: string;\n product_type?: string;\n fulfillment_type?: string;\n delivery_hook?: string;\n weight?: number;\n price?: number;\n currency?: string;\n status?: string;\n attributes?: string;\n sort_order?: number;\n slug?: string;\n content?: string;\n image_ids?: unknown;\n original_price?: number;\n specs?: unknown;\n unit?: string;\n min_purchase?: number;\n max_purchase?: number;\n virtual_sales?: number;\n meta_title?: string;\n meta_description?: string;\n version: number;\n}\n\nexport class AdminProducts {\n private readonly http: HttpClient;\n\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n async list(\n page = 1,\n pageSize = 25,\n options?: RequestOptions,\n ): Promise<PaginatedData<ProductResponse>> {\n return this.http.get<PaginatedData<ProductResponse>>(\"/admin/products\", {\n ...options,\n query: { page: String(page), page_size: String(pageSize) },\n });\n }\n\n async get(id: string, options?: RequestOptions): Promise<ProductResponse> {\n return this.http.get<ProductResponse>(`/admin/products/${id}`, options);\n }\n\n async create(\n body: CreateProductBody,\n options?: RequestOptions,\n ): Promise<ProductResponse> {\n return this.http.request<ProductResponse>(this.http.pathForCreate(\"/admin/products\"), {\n ...options,\n method: this.http.methodForCreate(),\n body,\n });\n }\n\n async update(\n id: string,\n body: UpdateProductBody,\n options?: RequestOptions,\n ): Promise<ProductResponse> {\n return this.http.request<ProductResponse>(this.http.pathForUpdate(\"/admin/products\", id), {\n ...options,\n method: this.http.methodForUpdate(),\n body,\n });\n }\n\n async delete(id: string, options?: RequestOptions): Promise<void> {\n await this.http.request<void>(this.http.pathForDelete(\"/admin/products\", id), {\n ...options,\n method: this.http.methodForDelete(),\n });\n }\n}\n","import { HttpClient } from \"../client\";\nimport type {\n BatchResponse,\n Permission,\n RequestOptions,\n Role,\n} from \"../types\";\n\nexport class AdminRBAC {\n private readonly http: HttpClient;\n\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n async listRoles(options?: RequestOptions): Promise<Role[]> {\n return this.http.get<Role[]>(\"/admin/rbac/roles\", options);\n }\n\n async createRole(\n data: { name: string; description?: string },\n options?: RequestOptions,\n ): Promise<Role> {\n return this.http.request<Role>(this.http.pathForCreate(\"/admin/rbac/roles\"), {\n ...options,\n method: this.http.methodForCreate(),\n body: data,\n });\n }\n\n async updateRole(\n id: string,\n data: Partial<Role>,\n options?: RequestOptions,\n ): Promise<Role> {\n return this.http.request<Role>(this.http.pathForUpdate(\"/admin/rbac/roles\", id), {\n ...options,\n method: this.http.methodForUpdate(),\n body: data,\n });\n }\n\n async deleteRole(id: string, options?: RequestOptions): Promise<void> {\n await this.http.request<void>(this.http.pathForDelete(\"/admin/rbac/roles\", id), {\n ...options,\n method: this.http.methodForDelete(),\n });\n }\n\n async batchRoles(\n data: { action: string; ids: string[] },\n options?: RequestOptions,\n ): Promise<BatchResponse> {\n return this.http.post(\"/admin/rbac/roles/batch\", data, options);\n }\n\n async getPermissions(\n roleId: string,\n options?: RequestOptions,\n ): Promise<Permission[]> {\n return this.http.get<Permission[]>(\n `/admin/rbac/roles/${roleId}/permissions`,\n options,\n );\n }\n\n async setPermissions(\n roleId: string,\n permissions: Permission[],\n options?: RequestOptions,\n ): Promise<void> {\n await this.http.request<void>(this.http.pathForUpdate(\"/admin/rbac/roles\", `${roleId}/permissions`), {\n ...options,\n method: this.http.methodForUpdate(),\n body: permissions,\n });\n }\n}\n","import { HttpClient } from \"../client\";\nimport type {\n BatchRequest,\n BatchResponse,\n RequestOptions,\n ReusableBlock,\n} from \"../types\";\n\nexport interface CreateReusableBlockBody {\n name: string;\n block_type: string;\n content: string;\n description?: string;\n}\n\nexport interface UpdateReusableBlockBody {\n name?: string;\n block_type?: string;\n content?: string;\n description?: string;\n}\n\nexport class AdminReusableBlocks {\n private readonly http: HttpClient;\n\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n async list(options?: RequestOptions): Promise<ReusableBlock[]> {\n return this.http.get<ReusableBlock[]>(\"/admin/reusable-blocks\", options);\n }\n\n async get(id: string, options?: RequestOptions): Promise<ReusableBlock> {\n return this.http.get<ReusableBlock>(\n `/admin/reusable-blocks/${id}`,\n options,\n );\n }\n\n async create(\n body: CreateReusableBlockBody,\n options?: RequestOptions,\n ): Promise<ReusableBlock> {\n return this.http.request<ReusableBlock>(this.http.pathForCreate(\"/admin/reusable-blocks\"), {\n ...options,\n method: this.http.methodForCreate(),\n body,\n });\n }\n\n async update(\n id: string,\n body: UpdateReusableBlockBody,\n options?: RequestOptions,\n ): Promise<ReusableBlock> {\n return this.http.request<ReusableBlock>(this.http.pathForUpdate(\"/admin/reusable-blocks\", id), {\n ...options,\n method: this.http.methodForUpdate(),\n body,\n });\n }\n\n async delete(id: string, options?: RequestOptions): Promise<void> {\n await this.http.request<void>(this.http.pathForDelete(\"/admin/reusable-blocks\", id), {\n ...options,\n method: this.http.methodForDelete(),\n });\n }\n\n async batch(\n data: BatchRequest,\n options?: RequestOptions,\n ): Promise<BatchResponse> {\n return this.http.post<BatchResponse>(\n \"/admin/reusable-blocks/batch\",\n data,\n options,\n );\n }\n}\n","import { HttpClient, toQueryString } from \"../client\";\nimport type { RequestOptions } from \"../types\";\n\nexport interface StatsOverview {\n total_posts: number;\n total_comments: number;\n total_users: number;\n total_media: number;\n total_categories: number;\n total_tags: number;\n posts_by_status: Record<string, number>;\n comments_by_status: Record<string, number>;\n content_by_type: Record<string, number>;\n recent_activity: {\n type: string;\n id?: string;\n title?: string;\n slug?: string;\n content?: string;\n at: string;\n }[];\n}\n\nexport interface TrendsData {\n table: string;\n days: number;\n data: { date: string; count: number }[];\n}\n\nexport class AdminStats {\n private readonly http: HttpClient;\n\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n async overview(options?: RequestOptions): Promise<StatsOverview> {\n return this.http.get(\"/admin/stats\", options);\n }\n\n async content(\n table: string,\n options?: RequestOptions,\n ): Promise<Record<string, number>> {\n return this.http.get<Record<string, number>>(\n `/admin/stats/content/${table}`,\n options,\n );\n }\n\n async trends(\n table: string,\n days = 30,\n options?: RequestOptions,\n ): Promise<TrendsData> {\n return this.http.get<TrendsData>(\"/admin/stats/trends\", {\n ...options,\n query: toQueryString({ table, days }),\n });\n }\n}\n","import { HttpClient } from \"../client\";\nimport type {\n BatchRequest,\n BatchResponse,\n CreateTagRequest,\n PaginatedData,\n RequestOptions,\n Tag,\n UpdateTagRequest,\n} from \"../types\";\n\nexport class AdminTags {\n private readonly http: HttpClient;\n\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n async list(\n page = 1,\n pageSize = 25,\n options?: RequestOptions,\n ): Promise<PaginatedData<Tag>> {\n return this.http.get<PaginatedData<Tag>>(\"/admin/tags\", {\n ...options,\n query: { page: String(page), page_size: String(pageSize) },\n });\n }\n\n async create(\n body: CreateTagRequest,\n options?: RequestOptions,\n ): Promise<Tag> {\n return this.http.request<Tag>(this.http.pathForCreate(\"/admin/tags\"), {\n ...options,\n method: this.http.methodForCreate(),\n body,\n });\n }\n\n async update(\n id: string,\n body: UpdateTagRequest,\n options?: RequestOptions,\n ): Promise<Tag> {\n return this.http.request<Tag>(this.http.pathForUpdate(\"/admin/tags\", id), {\n ...options,\n method: this.http.methodForUpdate(),\n body,\n });\n }\n\n async delete(id: string, options?: RequestOptions): Promise<void> {\n await this.http.request<void>(this.http.pathForDelete(\"/admin/tags\", id), {\n ...options,\n method: this.http.methodForDelete(),\n });\n }\n\n async batch(\n data: BatchRequest,\n options?: RequestOptions,\n ): Promise<BatchResponse> {\n return this.http.post<BatchResponse>(\"/admin/tags/batch\", data, options);\n }\n}\n","import { HttpClient } from \"../client\";\nimport type {\n BatchResponse,\n PaginatedData,\n RequestOptions,\n Tenant,\n} from \"../types\";\n\nexport class AdminTenants {\n private readonly http: HttpClient;\n\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n async list(\n page = 1,\n pageSize = 25,\n options?: RequestOptions,\n ): Promise<PaginatedData<Tenant>> {\n return this.http.get<PaginatedData<Tenant>>(\"/admin/tenants\", {\n ...options,\n query: { page: String(page), page_size: String(pageSize) },\n });\n }\n\n async get(id: string, options?: RequestOptions): Promise<Tenant> {\n return this.http.get<Tenant>(`/admin/tenants/${id}`, options);\n }\n\n async create(\n data: { name: string; slug: string },\n options?: RequestOptions,\n ): Promise<Tenant> {\n return this.http.request<Tenant>(this.http.pathForCreate(\"/admin/tenants\"), {\n ...options,\n method: this.http.methodForCreate(),\n body: data,\n });\n }\n\n async update(\n id: string,\n data: Partial<Tenant>,\n options?: RequestOptions,\n ): Promise<Tenant> {\n return this.http.request<Tenant>(this.http.pathForUpdate(\"/admin/tenants\", id), {\n ...options,\n method: this.http.methodForUpdate(),\n body: data,\n });\n }\n\n async delete(id: string, options?: RequestOptions): Promise<void> {\n await this.http.request<void>(this.http.pathForDelete(\"/admin/tenants\", id), {\n ...options,\n method: this.http.methodForDelete(),\n });\n }\n\n async batch(\n data: { action: string; ids: string[] },\n options?: RequestOptions,\n ): Promise<BatchResponse> {\n return this.http.post(\"/admin/tenants/batch\", data, options);\n }\n}\n","import { HttpClient } from \"../client\";\nimport type { ApiToken, RequestOptions } from \"../types\";\n\nexport class AdminTokens {\n private readonly http: HttpClient;\n\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n async list(options?: RequestOptions): Promise<ApiToken[]> {\n return this.http.get<ApiToken[]>(\"/tokens\", options);\n }\n\n async create(\n data: { name: string; scopes: string[]; expires_at?: string },\n options?: RequestOptions,\n ): Promise<ApiToken & { token: string }> {\n return this.http.request<ApiToken & { token: string }>(this.http.pathForCreate(\"/tokens\"), {\n ...options,\n method: this.http.methodForCreate(),\n body: data,\n });\n }\n\n async delete(id: string, options?: RequestOptions): Promise<void> {\n await this.http.request<void>(this.http.pathForDelete(\"/tokens\", id), {\n ...options,\n method: this.http.methodForDelete(),\n });\n }\n}\n","import { HttpClient } from \"../client\";\nimport type {\n BatchRequestWithRole,\n BatchResponse,\n PaginatedData,\n RequestOptions,\n UpdateUserRequest,\n UserResponse,\n} from \"../types\";\n\nexport class AdminUsers {\n private readonly http: HttpClient;\n\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n async list(\n page = 1,\n pageSize = 25,\n options?: RequestOptions,\n ): Promise<PaginatedData<UserResponse>> {\n return this.http.get<PaginatedData<UserResponse>>(\"/admin/users\", {\n ...options,\n query: { page: String(page), page_size: String(pageSize) },\n });\n }\n\n async get(id: string, options?: RequestOptions): Promise<UserResponse> {\n return this.http.get<UserResponse>(`/admin/users/${id}`, options);\n }\n\n async update(\n id: string,\n data: UpdateUserRequest,\n options?: RequestOptions,\n ): Promise<UserResponse> {\n return this.http.request<UserResponse>(this.http.pathForUpdate(\"/admin/users\", id), {\n ...options,\n method: this.http.methodForUpdate(),\n body: data,\n });\n }\n\n async delete(id: string, options?: RequestOptions): Promise<void> {\n await this.http.request<void>(this.http.pathForDelete(\"/admin/users\", id), {\n ...options,\n method: this.http.methodForDelete(),\n });\n }\n\n async batch(\n data: BatchRequestWithRole,\n options?: RequestOptions,\n ): Promise<BatchResponse> {\n return this.http.post<BatchResponse>(\"/admin/users/batch\", data, options);\n }\n}\n","import { HttpClient, toQueryString } from \"../client\";\nimport type {\n AdminWalletOperationRequest,\n BatchResponse,\n PaginatedData,\n RequestOptions,\n ReversalRequest,\n WalletResponse,\n WalletTransactionResponse,\n} from \"../types\";\n\nexport class AdminWallets {\n private readonly http: HttpClient;\n\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n async listWallets(\n query?: { page?: number; page_size?: number },\n options?: RequestOptions,\n ): Promise<PaginatedData<WalletResponse>> {\n return this.http.get<PaginatedData<WalletResponse>>(\"/admin/wallets\", {\n ...options,\n query: toQueryString(query),\n });\n }\n\n async listTransactions(\n query?: { page?: number; page_size?: number },\n options?: RequestOptions,\n ): Promise<PaginatedData<WalletTransactionResponse>> {\n return this.http.get<PaginatedData<WalletTransactionResponse>>(\n \"/admin/wallets/transactions\",\n { ...options, query: toQueryString(query) },\n );\n }\n\n async credit(\n body: AdminWalletOperationRequest,\n options?: RequestOptions,\n ): Promise<WalletTransactionResponse> {\n return this.http.post<WalletTransactionResponse>(\n \"/admin/wallets/credit\",\n body,\n options,\n );\n }\n\n async debit(\n body: AdminWalletOperationRequest,\n options?: RequestOptions,\n ): Promise<WalletTransactionResponse> {\n return this.http.post<WalletTransactionResponse>(\n \"/admin/wallets/debit\",\n body,\n options,\n );\n }\n\n async userTransactions(\n userId: string,\n query?: { page?: number; page_size?: number },\n options?: RequestOptions,\n ): Promise<PaginatedData<WalletTransactionResponse>> {\n return this.http.get<PaginatedData<WalletTransactionResponse>>(\n `/admin/wallets/${userId}/transactions`,\n { ...options, query: toQueryString(query) },\n );\n }\n\n async userCurrencyTransactions(\n userId: string,\n currency: string,\n query?: { page?: number; page_size?: number },\n options?: RequestOptions,\n ): Promise<PaginatedData<WalletTransactionResponse>> {\n return this.http.get<PaginatedData<WalletTransactionResponse>>(\n `/admin/wallets/${userId}/${currency}/transactions`,\n { ...options, query: toQueryString(query) },\n );\n }\n\n async reversal(\n txDocId: string,\n body?: ReversalRequest,\n options?: RequestOptions,\n ): Promise<WalletTransactionResponse> {\n return this.http.post<WalletTransactionResponse>(\n `/admin/wallets/${txDocId}/reversal`,\n body,\n options,\n );\n }\n}\n","import { HttpClient } from \"../client\";\nimport type { BatchResponse, PaginatedData, RequestOptions, Webhook } from \"../types\";\n\nexport class AdminWebhooks {\n private readonly http: HttpClient;\n\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n async list(\n page = 1,\n pageSize = 25,\n options?: RequestOptions,\n ): Promise<PaginatedData<Webhook>> {\n return this.http.get<PaginatedData<Webhook>>(\"/admin/webhooks\", {\n ...options,\n query: { page: String(page), page_size: String(pageSize) },\n });\n }\n\n async create(\n data: { url: string; events: string[]; description?: string; enabled?: boolean },\n options?: RequestOptions,\n ): Promise<Webhook> {\n return this.http.request<Webhook>(this.http.pathForCreate(\"/admin/webhooks\"), {\n ...options,\n method: this.http.methodForCreate(),\n body: data,\n });\n }\n\n async get(id: string, options?: RequestOptions): Promise<Webhook> {\n return this.http.get<Webhook>(`/admin/webhooks/${id}`, options);\n }\n\n async update(\n id: string,\n data: Partial<Webhook>,\n options?: RequestOptions,\n ): Promise<Webhook> {\n return this.http.request<Webhook>(this.http.pathForUpdate(\"/admin/webhooks\", id), {\n ...options,\n method: this.http.methodForUpdate(),\n body: data,\n });\n }\n\n async delete(id: string, options?: RequestOptions): Promise<void> {\n await this.http.request<void>(this.http.pathForDelete(\"/admin/webhooks\", id), {\n ...options,\n method: this.http.methodForDelete(),\n });\n }\n\n async batch(\n data: { action: string; ids: string[] },\n options?: RequestOptions,\n ): Promise<BatchResponse> {\n return this.http.post(\"/admin/webhooks/batch\", data, options);\n }\n}\n","import { HttpClient } from \"../client\";\nimport type {\n PaginatedData,\n RequestOptions,\n StepLog,\n Workflow,\n WorkflowInstance,\n} from \"../types\";\n\nexport class AdminWorkflows {\n private readonly http: HttpClient;\n\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n async list(options?: RequestOptions): Promise<Workflow[]> {\n return this.http.get<Workflow[]>(\"/admin/workflows\", options);\n }\n\n async create(\n data: { name: string; steps: unknown[] },\n options?: RequestOptions,\n ): Promise<Workflow> {\n return this.http.request<Workflow>(this.http.pathForCreate(\"/admin/workflows\"), {\n ...options,\n method: this.http.methodForCreate(),\n body: data,\n });\n }\n\n async get(id: string, options?: RequestOptions): Promise<Workflow> {\n return this.http.get<Workflow>(`/admin/workflows/${id}`, options);\n }\n\n async delete(id: string, options?: RequestOptions): Promise<void> {\n await this.http.request<void>(this.http.pathForDelete(\"/admin/workflows\", id), {\n ...options,\n method: this.http.methodForDelete(),\n });\n }\n\n async start(\n id: string,\n payload?: Record<string, unknown>,\n options?: RequestOptions,\n ): Promise<WorkflowInstance> {\n return this.http.post<WorkflowInstance>(\n `/admin/workflows/${id}/start`,\n payload ?? {},\n options,\n );\n }\n\n async listInstances(\n page = 1,\n pageSize = 25,\n options?: RequestOptions,\n ): Promise<PaginatedData<WorkflowInstance>> {\n return this.http.get<PaginatedData<WorkflowInstance>>(\n \"/admin/workflows/instances\",\n { ...options, query: { page: String(page), page_size: String(pageSize) } },\n );\n }\n\n async getInstance(\n id: string,\n options?: RequestOptions,\n ): Promise<WorkflowInstance> {\n return this.http.get<WorkflowInstance>(\n `/admin/workflows/instances/${id}`,\n options,\n );\n }\n\n async executeStep(\n instanceId: string,\n data: { step: string; action: string; data?: Record<string, unknown> },\n options?: RequestOptions,\n ): Promise<WorkflowInstance> {\n return this.http.post<WorkflowInstance>(\n `/admin/workflows/instances/${instanceId}/execute`,\n data,\n options,\n );\n }\n\n async cancelInstance(\n instanceId: string,\n options?: RequestOptions,\n ): Promise<void> {\n await this.http.post(\n `/admin/workflows/instances/${instanceId}/cancel`,\n {},\n options,\n );\n }\n\n async getStepLogs(\n instanceId: string,\n options?: RequestOptions,\n ): Promise<StepLog[]> {\n return this.http.get<StepLog[]>(\n `/admin/workflows/instances/${instanceId}/logs`,\n options,\n );\n }\n}\n","import { HttpClient } from \"../client\";\nimport type { RequestOptions, RouteInfo } from \"../types\";\nimport { AdminAudit } from \"./audit\";\nimport { AdminCategories } from \"./categories\";\nimport { AdminComments } from \"./comments\";\nimport { AdminContentTypes } from \"./content-types\";\nimport { AdminCrons } from \"./crons\";\nimport { AdminCurrencies } from \"./currencies\";\nimport { AdminMedia } from \"./media\";\nimport { AdminOptions } from \"./options\";\nimport { AdminOrders } from \"./orders\";\nimport { AdminPages } from \"./pages\";\nimport { AdminPayment } from \"./payment\";\nimport { AdminPlugins } from \"./plugins\";\nimport { AdminPosts } from \"./posts\";\nimport { AdminProducts } from \"./products\";\nimport { AdminRBAC } from \"./rbac\";\nimport { AdminReusableBlocks } from \"./reusable-blocks\";\nimport { AdminStats } from \"./stats\";\nimport { AdminTags } from \"./tags\";\nimport { AdminTenants } from \"./tenants\";\nimport { AdminTokens } from \"./tokens\";\nimport { AdminUsers } from \"./users\";\nimport { AdminWallets } from \"./wallets\";\nimport { AdminWebhooks } from \"./webhooks\";\nimport { AdminWorkflows } from \"./workflows\";\n\nexport class Admin {\n readonly users: AdminUsers;\n readonly posts: AdminPosts;\n readonly pages: AdminPages;\n readonly comments: AdminComments;\n readonly categories: AdminCategories;\n readonly tags: AdminTags;\n readonly media: AdminMedia;\n readonly reusableBlocks: AdminReusableBlocks;\n readonly wallets: AdminWallets;\n readonly currencies: AdminCurrencies;\n readonly plugins: AdminPlugins;\n readonly contentTypes: AdminContentTypes;\n readonly tenants: AdminTenants;\n readonly rbac: AdminRBAC;\n readonly options: AdminOptions;\n readonly webhooks: AdminWebhooks;\n readonly audit: AdminAudit;\n readonly crons: AdminCrons;\n readonly tokens: AdminTokens;\n readonly workflows: AdminWorkflows;\n readonly stats: AdminStats;\n readonly orders: AdminOrders;\n readonly payment: AdminPayment;\n readonly products: AdminProducts;\n\n private readonly http: HttpClient;\n\n constructor(http: HttpClient) {\n this.http = http;\n this.users = new AdminUsers(http);\n this.posts = new AdminPosts(http);\n this.pages = new AdminPages(http);\n this.comments = new AdminComments(http);\n this.categories = new AdminCategories(http);\n this.tags = new AdminTags(http);\n this.media = new AdminMedia(http);\n this.reusableBlocks = new AdminReusableBlocks(http);\n this.wallets = new AdminWallets(http);\n this.currencies = new AdminCurrencies(http);\n this.plugins = new AdminPlugins(http);\n this.contentTypes = new AdminContentTypes(http);\n this.tenants = new AdminTenants(http);\n this.rbac = new AdminRBAC(http);\n this.options = new AdminOptions(http);\n this.webhooks = new AdminWebhooks(http);\n this.audit = new AdminAudit(http);\n this.crons = new AdminCrons(http);\n this.tokens = new AdminTokens(http);\n this.workflows = new AdminWorkflows(http);\n this.stats = new AdminStats(http);\n this.orders = new AdminOrders(http);\n this.payment = new AdminPayment(http);\n this.products = new AdminProducts(http);\n }\n\n async listRoutes(options?: RequestOptions): Promise<RouteInfo[]> {\n return this.http.get<RouteInfo[]>(\"/routes\", options);\n }\n}\n","import { HttpClient } from \"./client\";\nimport { SDKError } from \"./errors\";\nimport type {\n ListOptions,\n MutateOptions,\n PaginatedData,\n RequestOptions,\n Revision,\n} from \"./types\";\n\nexport class Collection<T = Record<string, unknown>> {\n private readonly http: HttpClient;\n private readonly name: string;\n private readonly prefix: string;\n\n constructor(http: HttpClient, name: string, admin = false) {\n this.http = http;\n this.name = name;\n this.prefix = admin ? `/admin/cms/${name}` : `/cms/${name}`;\n }\n\n async getList(\n page = 1,\n pageSize = 25,\n options?: ListOptions,\n ): Promise<PaginatedData<T>> {\n const query: Record<string, string> = {\n page: String(page),\n page_size: String(pageSize),\n };\n if (options?.sort) query.sort = options.sort;\n if (options?.filter) query.filter = options.filter;\n if (options?.search) query.search = options.search;\n if (options?.fields) query.fields = options.fields;\n if (options?.status) query.status = options.status;\n if (options?.expand) query.expand = options.expand;\n\n return this.http.get<PaginatedData<T>>(this.prefix, { ...options, query });\n }\n\n async getFullList(options?: ListOptions): Promise<T[]> {\n const all: T[] = [];\n let page = 1;\n while (true) {\n const result = await this.getList(page, 200, options);\n all.push(...result.items);\n if (all.length >= result.total) break;\n page++;\n }\n return all;\n }\n\n async getOne(idOrSlug: string, options?: RequestOptions): Promise<T> {\n return this.http.get<T>(`${this.prefix}/${idOrSlug}`, options);\n }\n\n async getFirstListItem(\n filter: string,\n options?: ListOptions,\n ): Promise<T> {\n const result = await this.getList(1, 1, { ...options, filter });\n if (result.items.length === 0) {\n throw new SDKError(\n 404,\n `No item found matching filter: ${filter}`,\n 404,\n );\n }\n return result.items[0];\n }\n\n async create(data: Partial<T>, options?: MutateOptions): Promise<T> {\n return this.http.request<T>(this.http.pathForCreate(this.prefix), {\n ...options,\n method: this.http.methodForCreate(),\n body: data,\n });\n }\n\n async update(\n id: string,\n data: Partial<T>,\n options?: MutateOptions,\n ): Promise<T> {\n return this.http.request<T>(this.http.pathForUpdate(this.prefix, id), {\n ...options,\n method: this.http.methodForUpdate(),\n body: data,\n });\n }\n\n async delete(id: string, options?: RequestOptions): Promise<void> {\n await this.http.request<void>(this.http.pathForDelete(this.prefix, id), {\n ...options,\n method: this.http.methodForDelete(),\n });\n }\n\n async upload(\n id: string,\n file: File,\n fileField = \"file\",\n options?: MutateOptions,\n ): Promise<T> {\n const formData = new FormData();\n formData.append(fileField, file);\n return this.http.request<T>(`${this.prefix}/${id}`, {\n ...options,\n method: \"POST\",\n body: formData,\n });\n }\n\n // ─── Revisions (versionable) ───\n\n async listRevisions(\n id: string,\n page = 1,\n pageSize = 25,\n options?: RequestOptions,\n ): Promise<PaginatedData<Revision>> {\n return this.http.get<PaginatedData<Revision>>(\n `/admin/cms/${this.name}/${id}/revisions`,\n { ...options, query: { page: String(page), page_size: String(pageSize) } },\n );\n }\n\n async getRevision(\n id: string,\n revisionId: string,\n options?: RequestOptions,\n ): Promise<Revision> {\n return this.http.get<Revision>(\n `/admin/cms/${this.name}/${id}/revisions/${revisionId}`,\n options,\n );\n }\n\n async restoreRevision(\n id: string,\n revisionId: string,\n options?: RequestOptions,\n ): Promise<T> {\n return this.http.post<T>(\n `/admin/cms/${this.name}/${id}/revisions/${revisionId}/restore`,\n {},\n options,\n );\n }\n\n async diffRevisions(\n id: string,\n revA: string,\n revB: string,\n options?: RequestOptions,\n ): Promise<Record<string, unknown>> {\n return this.http.get<Record<string, unknown>>(\n `/admin/cms/${this.name}/${id}/revisions/${revA}/diff/${revB}`,\n options,\n );\n }\n}\n","import { HttpClient, type ApiStyle } from \"./client\";\nimport { LocalAuthStore } from \"./auth\";\nimport { Auth } from \"./public/auth\";\nimport { Users } from \"./public/users\";\nimport { Posts } from \"./public/posts\";\nimport { Pages } from \"./public/pages\";\nimport { Comments } from \"./public/comments\";\nimport { Categories } from \"./public/categories\";\nimport { Tags } from \"./public/tags\";\nimport { Media } from \"./public/media\";\nimport { Health } from \"./public/health\";\nimport { Wallets } from \"./public/wallets\";\nimport { Events } from \"./public/events\";\nimport { Orders } from \"./public/orders\";\nimport { Payment } from \"./public/payment\";\nimport { Products } from \"./public/products\";\nimport { Cart } from \"./public/cart\";\nimport { Admin } from \"./admin\";\nimport { Collection } from \"./collection\";\nimport { SDKError } from \"./errors\";\nimport type {\n AfterSendHook,\n BeforeSendHook,\n IAuthStore,\n ListOptions,\n SendOptions,\n} from \"./types\";\n\ninterface ServerInfo {\n name: string;\n version: string;\n api_style: ApiStyle;\n}\n\nexport class RaisFast {\n readonly auth: Auth;\n readonly admin: Admin;\n readonly users: Users;\n readonly media: Media;\n readonly health: Health;\n readonly posts: Posts;\n readonly categories: Categories;\n readonly tags: Tags;\n readonly comments: Comments;\n readonly pages: Pages;\n readonly wallets: Wallets;\n readonly events: Events;\n readonly orders: Orders;\n readonly payment: Payment;\n readonly products: Products;\n readonly cart: Cart;\n readonly authStore: IAuthStore;\n private readonly http: HttpClient;\n\n constructor(\n baseUrl: string,\n options?: { authStore?: IAuthStore },\n ) {\n this.authStore = options?.authStore ?? new LocalAuthStore();\n this.http = new HttpClient(baseUrl, this.authStore);\n this.auth = new Auth(this.http, this.authStore);\n this.admin = new Admin(this.http);\n this.users = new Users(this.http);\n this.media = new Media(this.http);\n this.health = new Health(this.http);\n this.posts = new Posts(this.http);\n this.categories = new Categories(this.http);\n this.tags = new Tags(this.http);\n this.comments = new Comments(this.http);\n this.pages = new Pages(this.http);\n this.wallets = new Wallets(this.http);\n this.events = new Events(this.http.baseUrl);\n this.orders = new Orders(this.http);\n this.payment = new Payment(this.http);\n this.products = new Products(this.http);\n this.cart = new Cart(this.http);\n }\n\n async init(): Promise<void> {\n try {\n const res = await fetch(`${this.http.baseUrl}/info`);\n const json = (await res.json()) as { code: number; data: ServerInfo };\n if (json.code === 0 && json.data?.api_style) {\n this.http.apiStyle = json.data.api_style;\n }\n } catch {\n // keep default restful\n }\n }\n\n collection<T = Record<string, unknown>>(name: string): Collection<T> {\n return new Collection<T>(this.http, name);\n }\n\n adminCollection<T = Record<string, unknown>>(name: string): Collection<T> {\n return new Collection<T>(this.http, name, true);\n }\n\n setTenantId(tenantId: string | null): void {\n this.http.setTenantId(tenantId);\n }\n\n set beforeSend(hook: BeforeSendHook | null) {\n this.http.beforeSend = hook;\n }\n\n set afterSend(hook: AfterSendHook | null) {\n this.http.afterSend = hook;\n }\n\n cancelRequest(key: string): void {\n this.http.cancelRequest(key);\n }\n\n cancelAllRequests(): void {\n this.http.cancelAllRequests();\n }\n\n async send<T>(path: string, options?: SendOptions): Promise<T> {\n return this.http.request<T>(path, options);\n }\n\n async single<T>(\n collectionName: string,\n options?: ListOptions,\n ): Promise<T> {\n const col = this.collection<T>(collectionName);\n const result = await col.getList(1, 1, options);\n if (result.items.length === 0) {\n throw new SDKError(\n 404,\n `No ${collectionName} item found`,\n 404,\n );\n }\n return result.items[0];\n }\n\n getRssFeedURL(): string {\n const base = this.http.baseUrl.replace(\"/api/v1\", \"\");\n return `${base}/feed.xml`;\n }\n}\n","// Auto-generated by `cargo run --bin export-types`\n// DO NOT EDIT MANUALLY\n\nexport type AdminCommentListQuery = {\n page: bigint | null;\n page_size: bigint | null;\n status: CommentStatus | null;\n};\n\nexport type AdminCommentRow = {\n id: string;\n post_id: string;\n post_title: string;\n nickname: string | null;\n email: string | null;\n content: string;\n status: CommentStatus;\n created_by: string | null;\n parent_id: string | null;\n created_at: string;\n};\n\nexport type AdminPageListQuery = {\n page: bigint | null;\n page_size: bigint | null;\n status: PageStatus | null;\n};\n\nexport type AdminWalletOperationRequest = {\n user_id: string;\n currency: string;\n transaction_no: string;\n amount: bigint;\n reference_type: WalletReferenceType | null;\n reference_id: string | null;\n metadata: string | null;\n};\n\nexport const ApiAccess = {\n none: \"none\",\n public: \"public\",\n member: \"member\",\n admin: \"admin\"\n} as const;\nexport type ApiAccess = typeof ApiAccess[keyof typeof ApiAccess];\n\nexport type ApiConfig = {\n /**\n * List query (GET /cms/{plural})\n */\n list: ApiEndpointConfig;\n /**\n * Single query (GET /cms/{plural}/{id})\n */\n get: ApiEndpointConfig;\n /**\n * Create (POST /cms/{plural})\n */\n create: ApiEndpointConfig;\n /**\n * Update (PUT /cms/{plural}/{id})\n */\n update: ApiEndpointConfig;\n /**\n * Delete (DELETE /cms/{plural}/{id})\n */\n delete: ApiEndpointConfig;\n};\n\nexport type ApiEndpointConfig = {\n /**\n * Access level: none / public / member / admin\n */\n access: ApiAccess;\n /**\n * Data filter expression (applies to all requests passing access check)\n */\n filter: string | null;\n /**\n * Additional filter for authenticated users (ORed with filter)\n */\n filter_auth: string | null;\n /**\n * Whether to enable server-side caching (default false)\n */\n cache: boolean;\n /**\n * API return field whitelist (default empty = return all non-private fields)\n * Only effective for list/get endpoints; create/update/delete ignore this setting\n */\n fields: Array<string> | null;\n};\n\nexport type ApiTokenListItem = {\n id: string;\n name: string;\n token_prefix: string;\n scopes: string;\n last_used_at: string | null;\n expires_at: string | null;\n created_at: string;\n};\n\nexport type AuditEntry = {\n id: string;\n tenant_id: string | null;\n actor_id: string | null;\n actor_role: string | null;\n action: string;\n subject: string;\n subject_id: string | null;\n detail: string | null;\n ip_address: string | null;\n user_agent: string | null;\n created_at: string;\n};\n\nexport type AuthConfigResponse = {\n registration_email_enabled: boolean;\n registration_sms_enabled: boolean;\n oauth_providers: Array<string>;\n require_email_verification: boolean;\n};\n\nexport const AuthType = {\n email: \"email\",\n phone: \"phone\",\n oauth: \"oauth\"\n} as const;\nexport type AuthType = typeof AuthType[keyof typeof AuthType];\n\nexport type BatchRequest = {\n action: string;\n ids: Array<string>;\n};\n\nexport type BatchRequestWithRole = {\n action: string;\n ids: Array<string>;\n role: UserRole | null;\n};\n\nexport type BatchResponse = {\n action: string;\n affected: number;\n};\n\nexport type BindEmailRequest = {\n email: string;\n password: string;\n};\n\nexport type BindPhoneRequest = {\n phone: string;\n code: string;\n};\n\nexport type Category = {\n id: string;\n tenant_id: string | null;\n name: string;\n slug: string;\n description: string | null;\n cover_image: string | null;\n meta_title: string | null;\n meta_description: string | null;\n og_title: string | null;\n og_description: string | null;\n og_image: string | null;\n parent_id: string | null;\n sort_order: bigint;\n created_by: string | null;\n updated_by: string | null;\n created_at: string;\n updated_at: string;\n};\n\nexport type ColumnDef = {\n width: string | null;\n blocks: Array<PageBlock>;\n};\n\nexport const CommentOpenStatus = {\n open: \"open\",\n closed: \"closed\"\n} as const;\nexport type CommentOpenStatus = typeof CommentOpenStatus[keyof typeof CommentOpenStatus];\n\nexport type CommentResponse = {\n id: string;\n nickname: string | null;\n content: string;\n depth: number;\n replies: Array<CommentResponse>;\n created_at: string;\n post_id: string | null;\n created_by: string | null;\n parent_id: string | null;\n};\n\nexport const CommentStatus = {\n pending: \"pending\",\n approved: \"approved\",\n spam: \"spam\"\n} as const;\nexport type CommentStatus = typeof CommentStatus[keyof typeof CommentStatus];\n\nexport const ContentKind = {\n collection: \"collection\",\n single: \"single\"\n} as const;\nexport type ContentKind = typeof ContentKind[keyof typeof ContentKind];\n\nexport type ContentRevision = {\n id: string;\n content_type: string;\n record_id: string;\n revision_number: bigint;\n snapshot: string;\n created_by: string | null;\n created_at: string;\n};\n\nexport type ContentTypeSchema = {\n /**\n * Display name (e.g., \"Post\")\n */\n name: string;\n /**\n * Singular identifier (e.g., \"post\"), used for API paths and registry key\n */\n singular: string;\n /**\n * Plural identifier (e.g., \"posts\"), used for API paths\n */\n plural: string;\n /**\n * Database table name\n */\n table: string;\n /**\n * Kind: collection (multiple records) or single (only one record)\n */\n kind: ContentKind;\n /**\n * Description\n */\n description: string;\n /**\n * Field list\n */\n fields: Array<FieldSchema>;\n /**\n * Which field to auto-generate slug from\n */\n slug_field: string | null;\n /**\n * Whether this is a built-in content type (built-in CTs don't inject default fields; all fields are explicitly defined)\n */\n builtin: boolean;\n /**\n * Declared Protocol list (e.g., [\"versionable\", \"soft_deletable\"])\n */\n implements: Array<string | Record<string, string>>;\n /**\n * Index definitions\n */\n indexes: Array<IndexDef>;\n /**\n * API access control configuration\n */\n api: ApiConfig;\n};\n\nexport type CreateCategoryRequest = {\n name: string;\n description: string | null;\n parent_id: string | null;\n sort_order: bigint | null;\n};\n\nexport type CreateCommentRequest = {\n content: string;\n parent_id: string | null;\n nickname: string | null;\n email: string | null;\n};\n\nexport type CreateCurrencyRequest = {\n code: string;\n name: string;\n decimals: bigint | null;\n};\n\nexport type CreatePageRequest = {\n title: string;\n slug: string | null;\n content: string | null;\n blocks: string | null;\n meta_title: string | null;\n meta_description: string | null;\n og_image: string | null;\n template: string | null;\n parent_id: string | null;\n sort_order: bigint | null;\n status: PageStatus | null;\n cover_image: string | null;\n};\n\nexport type CreatePostRequest = {\n title: string;\n content: string;\n excerpt: string | null;\n cover_image: string | null;\n status: PostStatus | null;\n category_id: string | null;\n tag_ids: Array<string> | null;\n};\n\nexport type CreateTagRequest = {\n name: string;\n};\n\nexport type CreateTokenResult = {\n id: string;\n name: string;\n token: string;\n token_prefix: string;\n scopes: Array<string>;\n expires_at: string | null;\n created_at: string;\n};\n\nexport type CreateWorkflowRequest = {\n id: string;\n name: string;\n description: string | null;\n steps: Array<StepDef>;\n};\n\nexport type CredentialResponse = {\n id: string;\n auth_type: AuthType;\n identifier: string;\n verified: boolean;\n created_at: string;\n updated_at: string;\n};\n\nexport const CronExecStatus = {\n running: \"running\",\n completed: \"completed\",\n failed: \"failed\"\n} as const;\nexport type CronExecStatus = typeof CronExecStatus[keyof typeof CronExecStatus];\n\nexport type CronExecutionLog = {\n id: string;\n schedule_id: string;\n job_type: string;\n label: string;\n status: CronExecStatus;\n duration_ms: bigint | null;\n error: string | null;\n started_at: string;\n finished_at: string | null;\n};\n\nexport type CronSchedule = {\n id: string;\n label: string;\n job_type: string;\n payload: string | null;\n cron_expr: string;\n enabled: boolean;\n last_run_at: string | null;\n next_run_at: string;\n plugin_id: string | null;\n created_at: string;\n updated_at: string;\n};\n\nexport type CurrencyResponse = {\n id: string;\n code: string;\n name: string;\n decimals: bigint;\n is_active: boolean;\n};\n\nexport type ExecuteStepRequest = {\n output: unknown;\n};\n\nexport type FaqItem = {\n question: string;\n answer: string;\n is_open: boolean | null;\n};\n\nexport type FieldSchema = {\n /**\n * Field name\n */\n name: string;\n /**\n * Field type\n */\n field_type: FieldType;\n /**\n * Whether required\n */\n required: boolean;\n /**\n * Whether unique\n */\n unique: boolean;\n /**\n * Default value\n */\n default: unknown;\n /**\n * Private field, hidden in public API responses (only returned by admin API)\n */\n private: boolean;\n /**\n * Immutable after creation\n */\n immutable: boolean;\n /**\n * Admin UI display label\n */\n label: string | null;\n /**\n * Field description\n */\n description: string | null;\n /**\n * Maximum length (text/email/password)\n */\n max_length: number | null;\n /**\n * Minimum value (numeric types)\n */\n min: number | null;\n /**\n * Maximum value (numeric types)\n */\n max: number | null;\n /**\n * Regex validation (text/email)\n */\n pattern: string | null;\n /**\n * Relation configuration (relation type only)\n */\n relation: RelationConfig | null;\n /**\n * Media configuration (media type only)\n */\n media_config: MediaConfig | null;\n /**\n * Enum values list (enum type only)\n */\n enum_values: Array<string> | null;\n};\n\nexport const FieldType = {\n text: \"text\",\n rich_text: \"rich_text\",\n integer: \"integer\",\n big_int: \"big_int\",\n decimal: \"decimal\",\n float: \"float\",\n boolean: \"boolean\",\n date: \"date\",\n date_time: \"date_time\",\n time: \"time\",\n email: \"email\",\n password: \"password\",\n enum: \"enum\",\n uid: \"uid\",\n json: \"json\",\n media: \"media\",\n relation: \"relation\"\n} as const;\nexport type FieldType = typeof FieldType[keyof typeof FieldType];\n\nexport type ForgotPasswordRequest = {\n email: string;\n};\n\nexport type FormFieldDef = {\n name: string;\n label: string;\n field_type: string;\n required: boolean | null;\n options: Array<string> | null;\n placeholder: string | null;\n};\n\nexport type GalleryImage = {\n url: string;\n alt: string | null;\n caption: string | null;\n};\n\nexport type IndexDef = {\n /**\n * Fields included in the index\n */\n fields: Array<string>;\n /**\n * Whether this is a unique index\n */\n unique: boolean;\n};\n\nexport type InstanceQuery = {\n definition_id: string | null;\n status: WorkflowInstanceStatus | null;\n page: bigint | null;\n page_size: bigint | null;\n};\n\nexport const JobStatus = {\n pending: \"pending\",\n running: \"running\",\n completed: \"completed\",\n failed: \"failed\",\n dead: \"dead\"\n} as const;\nexport type JobStatus = typeof JobStatus[keyof typeof JobStatus];\n\nexport type LoginRequest = {\n email: string;\n password: string;\n};\n\nexport type LoginResponse = {\n access_token: string;\n refresh_token: string;\n expires_in: bigint;\n user: UserResponse;\n};\n\nexport type MediaConfig = {\n /**\n * Accepted MIME types\n */\n accept: Array<string>;\n /**\n * Maximum file count\n */\n max_count: number;\n};\n\nexport type MediaResponse = {\n id: string;\n filename: string;\n url: string;\n mimetype: string;\n size: bigint;\n width: number | null;\n height: number | null;\n title: string | null;\n alt_text: string | null;\n caption: string | null;\n description: string | null;\n created_at: string;\n updated_at: string;\n};\n\nexport type MediaStatsResponse = {\n total_files: bigint;\n total_size: bigint;\n by_type: Array<MediaTypeInfoResponse>;\n};\n\nexport type MediaTypeInfoResponse = {\n mimetype: string;\n count: bigint;\n total_size: bigint;\n};\n\nexport type OAuthBindingInfo = {\n provider: string;\n display_name: string | null;\n avatar_url: string | null;\n email: string | null;\n created_at: string;\n};\n\nexport type OptionEntry = {\n option_key: string;\n value: unknown;\n type: string;\n label: string;\n description: string | null;\n validation: unknown;\n is_public: boolean;\n};\n\nexport type OptionGroup = {\n option_key: string;\n label: string;\n options: Array<OptionEntry>;\n};\n\nexport const OptionType = {\n text: \"text\",\n url: \"url\",\n email: \"email\",\n select: \"select\",\n integer: \"integer\",\n boolean: \"boolean\"\n} as const;\nexport type OptionType = typeof OptionType[keyof typeof OptionType];\n\nexport type Page = {\n id: string;\n tenant_id: string | null;\n title: string;\n slug: string;\n content: string | null;\n blocks: string | null;\n meta_title: string | null;\n meta_description: string | null;\n og_image: string | null;\n template: string;\n parent_id: string | null;\n sort_order: bigint;\n status: PageStatus;\n created_by: string;\n updated_by: string | null;\n cover_image: string | null;\n password: string | null;\n comment_status: CommentOpenStatus;\n og_title: string | null;\n og_description: string | null;\n canonical_url: string | null;\n published_at: string | null;\n created_at: string;\n updated_at: string;\n};\n\nexport type PageBlock =\n | {\n \"type\": \"hero\";\n title: string;\n subtitle: string | null;\n background_image: string | null;\n cta_text: string | null;\n cta_url: string | null;\n alignment: string | null;\n overlay: boolean | null;\n height: string | null;\n }\n | {\n \"type\": \"richtext\";\n content: string;\n }\n | {\n \"type\": \"image\";\n url: string;\n alt: string | null;\n caption: string | null;\n link: string | null;\n width: string | null;\n }\n | {\n \"type\": \"gallery\";\n images: Array<GalleryImage>;\n columns: number | null;\n gap: string | null;\n }\n | {\n \"type\": \"video\";\n url: string;\n provider: string | null;\n title: string | null;\n autoplay: boolean | null;\n }\n | {\n \"type\": \"cta\";\n title: string;\n description: string | null;\n button_text: string;\n button_url: string;\n style: string | null;\n background_image: string | null;\n }\n | {\n \"type\": \"testimonial\";\n items: Array<TestimonialItem>;\n layout: string | null;\n }\n | {\n \"type\": \"faq\";\n items: Array<FaqItem>;\n }\n | {\n \"type\": \"stats\";\n items: Array<StatItem>;\n background: string | null;\n }\n | {\n \"type\": \"timeline\";\n items: Array<TimelineItem>;\n }\n | {\n \"type\": \"team\";\n members: Array<TeamMember>;\n columns: number | null;\n }\n | {\n \"type\": \"pricing\";\n plans: Array<PricingPlan>;\n highlight_index: number | null;\n }\n | {\n \"type\": \"contact_form\";\n email_to: string | null;\n fields: Array<FormFieldDef> | null;\n submit_text: string | null;\n success_message: string | null;\n }\n | {\n \"type\": \"map\";\n address: string | null;\n lat: number | null;\n lng: number | null;\n zoom: number | null;\n }\n | {\n \"type\": \"code\";\n code: string;\n language: string | null;\n show_line_numbers: boolean | null;\n }\n | {\n \"type\": \"quote\";\n content: string;\n author: string | null;\n source: string | null;\n }\n | {\n \"type\": \"divider\";\n style: string | null;\n }\n | {\n \"type\": \"spacer\";\n height: string | null;\n }\n | {\n \"type\": \"columns\";\n columns: Array<ColumnDef>;\n gap: string | null;\n }\n | {\n \"type\": \"html\";\n content: string;\n }\n | {\n \"type\": \"reusable\";\n ref_id: string;\n };\n\nexport type PageListQuery = {\n page: bigint | null;\n page_size: bigint | null;\n};\n\nexport const PageStatus = {\n draft: \"draft\",\n published: \"published\"\n} as const;\nexport type PageStatus = typeof PageStatus[keyof typeof PageStatus];\n\nexport type Permission = {\n id: string;\n role_id: string;\n action: string;\n subject: string;\n fields: string | null;\n conditions: string | null;\n created_at: string;\n};\n\nexport type Permissions = {\n http: Array<string>;\n config: Array<string>;\n database: Array<string>;\n filesystem: Array<string>;\n max_memory_mb: number | null;\n timeout_ms: bigint | null;\n};\n\nexport type PluginEvent =\n | {\n \"PluginLoaded\": { id: string, name: string, };\n }\n | {\n \"PluginUnloaded\": { id: string, };\n }\n | {\n \"PluginReloaded\": { id: string, };\n }\n | {\n \"PluginDisabled\": { id: string, reason: string, };\n }\n | {\n \"HookFailed\": { plugin_id: string, hook: string, error: string, };\n };\n\nexport type PluginHealth = {\n error_count: number;\n last_error: string | null;\n last_error_at: string | null;\n auto_disabled: boolean;\n};\n\nexport type PluginInfoResponse = {\n id: string;\n name: string;\n version: string;\n description: string;\n runtime: string;\n enabled: boolean;\n health: PluginHealth;\n hooks: Array<string>;\n metrics: { [key in string]: PluginMetrics };\n permissions: Permissions;\n};\n\nexport type PluginMetrics = {\n total_calls: bigint;\n total_errors: bigint;\n total_duration_us: bigint;\n};\n\nexport type PostResponse = {\n id: string;\n title: string;\n slug: string;\n content: string;\n excerpt: string | null;\n cover_image: string | null;\n status: PostStatus;\n author_name: string | null;\n category_name: string | null;\n tags: Array<TagBrief>;\n view_count: bigint;\n is_pinned: boolean;\n password: string | null;\n comment_status: CommentOpenStatus;\n format: string;\n template: string;\n meta_title: string | null;\n meta_description: string | null;\n og_title: string | null;\n og_description: string | null;\n og_image: string | null;\n canonical_url: string | null;\n reading_time: bigint;\n created_at: string;\n updated_at: string;\n published_at: string | null;\n title_highlight: string | null;\n excerpt_highlight: string | null;\n created_by: string | null;\n category_id: string | null;\n};\n\nexport const PostStatus = {\n draft: \"draft\",\n published: \"published\"\n} as const;\nexport type PostStatus = typeof PostStatus[keyof typeof PostStatus];\n\nexport type PricingPlan = {\n name: string;\n price: string;\n period: string | null;\n description: string | null;\n features: Array<string>;\n button_text: string | null;\n button_url: string | null;\n};\n\nexport type ProviderInfo = {\n name: string;\n configured: boolean;\n};\n\nexport type RefreshRequest = {\n refresh_token: string;\n};\n\nexport type RegisterRequest = {\n email: string;\n username: string;\n password: string;\n};\n\nexport const RegisteredVia = {\n email: \"email\",\n phone: \"phone\",\n oauth: \"oauth\"\n} as const;\nexport type RegisteredVia = typeof RegisteredVia[keyof typeof RegisteredVia];\n\nexport type RelationConfig = {\n relation_type: RelationType;\n /**\n * Target content type name\n */\n target: string;\n /**\n * Many-to-many junction table name\n */\n through: string | null;\n /**\n * Foreign key column name (defaults to \"{target}_id\")\n */\n foreign_key: string | null;\n};\n\nexport const RelationType = {\n one_to_one: \"one_to_one\",\n one_to_many: \"one_to_many\",\n many_to_one: \"many_to_one\",\n many_to_many: \"many_to_many\",\n one_way: \"one_way\",\n many_way: \"many_way\"\n} as const;\nexport type RelationType = typeof RelationType[keyof typeof RelationType];\n\nexport type ReorderItem = {\n id: string;\n sort_order: bigint;\n};\n\nexport type ReorderRequest = {\n items: Array<ReorderItem>;\n};\n\nexport type ResendVerificationRequest = {\n email: string;\n};\n\nexport type ResetPasswordRequest = {\n token: string;\n new_password: string;\n};\n\nexport type ReusableBlock = {\n id: string;\n tenant_id: string | null;\n name: string;\n block_type: string;\n content: string;\n description: string | null;\n created_by: string | null;\n updated_by: string | null;\n created_at: string;\n updated_at: string;\n};\n\nexport type ReversalRequest = {\n transaction_no: string;\n};\n\nexport type RevisionSummary = {\n id: string;\n revision_number: bigint;\n created_by: string | null;\n created_at: string;\n};\n\nexport type Role = {\n id: string;\n name: string;\n description: string | null;\n is_system: boolean;\n created_at: string;\n updated_at: string;\n};\n\nexport type SendSmsCodeRequest = {\n phone: string;\n purpose: string;\n};\n\nexport type SetPasswordRequest = {\n email: string;\n new_password: string;\n};\n\nexport type SitemapEntry = {\n slug: string;\n updated_at: string | null;\n};\n\nexport type SocialLink = {\n platform: string;\n url: string;\n};\n\nexport type StartWorkflowRequest = {\n context: unknown;\n triggered_by: string | null;\n};\n\nexport type StatItem = {\n label: string;\n value: string;\n suffix: string | null;\n icon: string | null;\n description: string | null;\n};\n\nexport type StepDef = {\n id: string;\n name: string;\n type: StepType;\n config: unknown;\n next: unknown;\n timeout_ms: bigint;\n};\n\nexport type StepLog = {\n id: string;\n instance_id: string;\n step_id: string;\n step_name: string;\n status: WorkflowStepStatus;\n input: string | null;\n output: string | null;\n error: string | null;\n started_at: string;\n completed_at: string | null;\n};\n\nexport const StepType = {\n task: \"task\",\n await: \"await\",\n branch: \"branch\",\n parallel: \"parallel\",\n delay: \"delay\"\n} as const;\nexport type StepType = typeof StepType[keyof typeof StepType];\n\nexport type Tag = {\n id: string;\n tenant_id: string | null;\n name: string;\n slug: string;\n description: string | null;\n cover_image: string | null;\n meta_title: string | null;\n meta_description: string | null;\n og_title: string | null;\n og_description: string | null;\n og_image: string | null;\n created_by: string | null;\n updated_by: string | null;\n created_at: string;\n updated_at: string;\n};\n\nexport type TagBrief = {\n id: string;\n name: string;\n slug: string;\n};\n\nexport type TeamMember = {\n name: string;\n role: string | null;\n avatar: string | null;\n bio: string | null;\n social_links: Array<SocialLink> | null;\n};\n\nexport type Tenant = {\n id: string;\n name: string;\n domain: string | null;\n config: string;\n status: TenantStatus;\n created_at: string;\n updated_at: string;\n};\n\nexport const TenantStatus = {\n active: \"active\",\n inactive: \"inactive\"\n} as const;\nexport type TenantStatus = typeof TenantStatus[keyof typeof TenantStatus];\n\nexport type TestimonialItem = {\n quote: string;\n author: string;\n company: string | null;\n avatar: string | null;\n rating: number | null;\n};\n\nexport type TimelineItem = {\n date: string;\n title: string;\n description: string | null;\n icon: string | null;\n color: string | null;\n};\n\nexport type UpdateCategoryRequest = {\n name: string | null;\n description: string | null;\n parent_id: string | null;\n sort_order: bigint | null;\n};\n\nexport type UpdateCommentStatusRequest = {\n status: CommentStatus;\n};\n\nexport type UpdateCurrencyRequest = {\n name: string | null;\n is_active: boolean | null;\n};\n\nexport type UpdatePageRequest = {\n title: string | null;\n slug: string | null;\n content: string | null;\n blocks: string | null;\n meta_title: string | null;\n meta_description: string | null;\n og_image: string | null;\n template: string | null;\n parent_id: string | null | null;\n sort_order: bigint | null;\n status: PageStatus | null;\n cover_image: string | null;\n};\n\nexport type UpdatePasswordRequest = {\n old_password: string;\n new_password: string;\n};\n\nexport type UpdatePostRequest = {\n title: string | null;\n content: string | null;\n excerpt: string | null;\n cover_image: string | null;\n status: PostStatus | null;\n category_id: string | null;\n tag_ids: Array<string> | null;\n};\n\nexport type UpdateRoleRequest = {\n role: UserRole;\n};\n\nexport type UpdateStatusRequest = {\n status: PageStatus;\n};\n\nexport type UpdateTagRequest = {\n name: string;\n};\n\nexport type UpdateUserRequest = {\n username: string | null;\n bio: string | null;\n website: string | null;\n avatar: string | null;\n social_links: Record<string, string>;\n metadata: unknown;\n};\n\nexport type UserResponse = {\n id: string;\n username: string;\n role: UserRole;\n status: UserStatus;\n registered_via: RegisteredVia;\n avatar: string | null;\n bio: string | null;\n website: string | null;\n display_name: string | null;\n slug: string | null;\n locale: string | null;\n social_links: Record<string, string>;\n metadata: unknown;\n created_at: string;\n updated_at: string;\n};\n\nexport const UserRole = {\n admin: \"admin\",\n editor: \"editor\",\n author: \"author\",\n reader: \"reader\"\n} as const;\nexport type UserRole = typeof UserRole[keyof typeof UserRole];\n\nexport const UserStatus = {\n active: \"active\",\n suspended: \"suspended\",\n banned: \"banned\"\n} as const;\nexport type UserStatus = typeof UserStatus[keyof typeof UserStatus];\n\nexport type VerifyEmailRequest = {\n token: string;\n};\n\nexport type VerifySmsRequest = {\n phone: string;\n code: string;\n purpose: string;\n};\n\nexport const WalletEntryType = {\n credit: \"credit\",\n debit: \"debit\"\n} as const;\nexport type WalletEntryType = typeof WalletEntryType[keyof typeof WalletEntryType];\n\nexport const WalletReferenceType = {\n admin: \"admin\",\n checkin: \"checkin\",\n order_reward: \"order_reward\",\n api_usage: \"api_usage\",\n points_mall: \"points_mall\",\n order: \"order\",\n expiry: \"expiry\",\n payment: \"payment\",\n payment_refund: \"payment_refund\"\n} as const;\nexport type WalletReferenceType = typeof WalletReferenceType[keyof typeof WalletReferenceType];\n\nexport type WalletResponse = {\n id: string;\n currency: string;\n balance: bigint;\n status: WalletStatus;\n created_at: string;\n updated_at: string;\n};\n\nexport const WalletStatus = {\n active: \"active\",\n frozen: \"frozen\"\n} as const;\nexport type WalletStatus = typeof WalletStatus[keyof typeof WalletStatus];\n\nexport type WalletTransactionResponse = {\n id: string;\n entry_type: WalletEntryType;\n amount: bigint;\n balance_after: bigint;\n tx_type: WalletTxType;\n currency: string;\n transaction_no: string;\n reference_type: WalletReferenceType | null;\n reference_id: string | null;\n metadata: string | null;\n related_tx_id: string | null;\n created_at: string;\n};\n\nexport const WalletTxType = {\n recharge: \"recharge\",\n payment: \"payment\",\n refund: \"refund\",\n transfer_out: \"transfer_out\",\n transfer_in: \"transfer_in\"\n} as const;\nexport type WalletTxType = typeof WalletTxType[keyof typeof WalletTxType];\n\nexport type WebhookSubscription = {\n id: string;\n tenant_id: string | null;\n url: string;\n secret: string;\n events: string;\n enabled: boolean;\n description: string | null;\n created_at: string;\n updated_at: string;\n};\n\nexport type WorkflowDefinition = {\n id: string;\n name: string;\n description: string | null;\n steps: string;\n initial_step: string;\n version: bigint;\n enabled: boolean;\n created_at: string;\n updated_at: string;\n};\n\nexport type WorkflowInstance = {\n id: string;\n definition_id: string;\n status: WorkflowInstanceStatus;\n current_step: string | null;\n context: string;\n triggered_by: string | null;\n started_at: string;\n completed_at: string | null;\n updated_at: string;\n};\n\nexport const WorkflowInstanceStatus = {\n running: \"running\",\n completed: \"completed\",\n failed: \"failed\",\n cancelled: \"cancelled\",\n paused: \"paused\"\n} as const;\nexport type WorkflowInstanceStatus = typeof WorkflowInstanceStatus[keyof typeof WorkflowInstanceStatus];\n\nexport const WorkflowStepStatus = {\n running: \"running\",\n completed: \"completed\",\n failed: \"failed\"\n} as const;\nexport type WorkflowStepStatus = typeof WorkflowStepStatus[keyof typeof WorkflowStepStatus];\n\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAO,IAAM,WAAN,cAAuB,MAAM;AAAA,EAQlC,YACE,MACA,SACA,SAAS,KACT,MAAM,IACN,WAAoC,CAAC,GACrC,UAAU,OACV,gBAA8B,MAC9B;AACA,UAAM,OAAO;AACb,SAAK,OAAO;AACZ,SAAK,OAAO;AACZ,SAAK,SAAS;AACd,SAAK,MAAM;AACX,SAAK,WAAW;AAChB,SAAK,UAAU;AACf,SAAK,gBAAgB;AAAA,EACvB;AACF;;;AChBO,SAAS,cAAc,OAAmH;AAC/I,MAAI,CAAC,MAAO,QAAO;AACnB,QAAM,SAAiC,CAAC;AACxC,aAAW,CAAC,KAAK,KAAK,KAAK,OAAO,QAAQ,KAAK,GAAG;AAChD,QAAI,UAAU,UAAa,UAAU,MAAM;AACzC,aAAO,GAAG,IAAI,OAAO,KAAK;AAAA,IAC5B;AAAA,EACF;AACA,SAAO;AACT;AAIO,IAAM,aAAN,MAAiB;AAAA,EAUtB,YAAY,SAAiB,WAAuB;AAPpD,SAAQ,YAAsB;AAC9B,SAAQ,YAA2B;AACnC,SAAQ,kBAAiD;AACzD,SAAQ,cAAqC;AAC7C,SAAQ,aAAmC;AAC3C,SAAQ,sBAAsB,oBAAI,IAA6B;AAG7D,SAAK,UAAU;AACf,SAAK,YAAY;AAAA,EACnB;AAAA,EAEA,IAAI,WAAqB;AACvB,WAAO,KAAK;AAAA,EACd;AAAA,EAEA,IAAI,SAAS,OAAiB;AAC5B,SAAK,YAAY;AAAA,EACnB;AAAA,EAEA,IAAI,YAAqB;AACvB,WAAO,KAAK,cAAc;AAAA,EAC5B;AAAA,EAEA,IAAI,WAA0B;AAC5B,WAAO,KAAK;AAAA,EACd;AAAA,EAEA,YAAY,UAA+B;AACzC,SAAK,YAAY;AAAA,EACnB;AAAA,EAEA,IAAI,WAAW,MAA6B;AAC1C,SAAK,cAAc;AAAA,EACrB;AAAA,EAEA,IAAI,UAAU,MAA4B;AACxC,SAAK,aAAa;AAAA,EACpB;AAAA,EAEA,cAAc,KAAmB;AAC/B,SAAK,oBAAoB,IAAI,GAAG,GAAG,MAAM;AACzC,SAAK,oBAAoB,OAAO,GAAG;AAAA,EACrC;AAAA,EAEA,oBAA0B;AACxB,eAAW,cAAc,KAAK,oBAAoB,OAAO,GAAG;AAC1D,iBAAW,MAAM;AAAA,IACnB;AACA,SAAK,oBAAoB,MAAM;AAAA,EACjC;AAAA,EAEA,cAAc,UAA0B;AACtC,WAAO,KAAK,cAAc,YAAY,WAAW,GAAG,QAAQ;AAAA,EAC9D;AAAA,EAEA,kBAA0B;AACxB,WAAO;AAAA,EACT;AAAA,EAEA,cAAc,UAAkB,IAAoB;AAClD,WAAO,KAAK,cAAc,YACtB,GAAG,QAAQ,IAAI,EAAE,KACjB,GAAG,QAAQ,IAAI,EAAE;AAAA,EACvB;AAAA,EAEA,kBAAkC;AAChC,WAAO,KAAK,cAAc,YAAY,QAAQ;AAAA,EAChD;AAAA,EAEA,cAAc,UAAkB,IAAoB;AAClD,WAAO,KAAK,cAAc,YACtB,GAAG,QAAQ,IAAI,EAAE,KACjB,GAAG,QAAQ,IAAI,EAAE;AAAA,EACvB;AAAA,EAEA,kBAAqC;AACnC,WAAO,KAAK,cAAc,YAAY,WAAW;AAAA,EACnD;AAAA,EAEA,MAAM,QAAW,MAAc,UAAuB,CAAC,GAAe;AACpE,UAAM;AAAA,MACJ,SAAS;AAAA,MACT;AAAA,MACA;AAAA,MACA,SAAS;AAAA,MACT;AAAA,MACA,OAAO;AAAA,MACP;AAAA,IACF,IAAI;AAEJ,QAAI,MAAM,GAAG,KAAK,OAAO,GAAG,IAAI;AAChC,QAAI,OAAO;AACT,YAAM,KAAK,IAAI,gBAAgB,KAAK,EAAE,SAAS;AAC/C,UAAI,IAAI;AACN,gBAAQ,IAAI,SAAS,GAAG,IAAI,MAAM,OAAO;AAAA,MAC3C;AAAA,IACF;AAEA,UAAM,UAAU,IAAI,QAAQ;AAC5B,QAAI,SAAS,UAAa,SAAS,QAAQ,EAAE,gBAAgB,WAAW;AACtE,cAAQ,IAAI,gBAAgB,kBAAkB;AAAA,IAChD;AACA,UAAM,QAAQ,KAAK,UAAU;AAC7B,QAAI,OAAO;AACT,cAAQ,IAAI,iBAAiB,UAAU,KAAK,EAAE;AAAA,IAChD;AACA,QAAI,KAAK,WAAW;AAClB,cAAQ,IAAI,eAAe,KAAK,SAAS;AAAA,IAC3C;AACA,QAAI,cAAc;AAChB,iBAAW,CAAC,KAAK,KAAK,KAAK,OAAO,QAAQ,YAAY,GAAG;AACvD,gBAAQ,IAAI,KAAK,KAAK;AAAA,MACxB;AAAA,IACF;AAEA,QAAI,iBAAiB;AACrB,QAAI,YAAY;AACd,WAAK,cAAc,UAAU;AAC7B,YAAM,aAAa,IAAI,gBAAgB;AACvC,WAAK,oBAAoB,IAAI,YAAY,UAAU;AACnD,UAAI,QAAQ;AACV,eAAO,iBAAiB,SAAS,MAAM,WAAW,MAAM,CAAC;AAAA,MAC3D;AACA,uBAAiB,WAAW;AAAA,IAC9B;AAEA,QAAI,eAA4B;AAAA,MAC9B;AAAA,MACA;AAAA,MACA,MACE,gBAAgB,WACZ,OACA,SAAS,SACP,KAAK,UAAU,IAAI,IACnB;AAAA,MACR,QAAQ;AAAA,IACV;AAEA,QAAI,KAAK,aAAa;AACpB,YAAM,SAAS,MAAM,KAAK,YAAY,KAAK,YAAY;AACvD,YAAM,OAAO;AACb,qBAAe,EAAE,GAAG,cAAc,GAAG,OAAO,QAAQ;AAAA,IACtD;AAEA,UAAM,UAAU,eAAe;AAC/B,QAAI;AAEJ,QAAI;AACF,YAAM,MAAM,QAAQ,KAAK,YAAY;AAAA,IACvC,SAAS,GAAG;AACV,UAAI,WAAY,MAAK,oBAAoB,OAAO,UAAU;AAC1D,YAAM,IAAI;AAAA,QACR;AAAA,QACA,aAAa,QAAQ,EAAE,UAAU;AAAA,QACjC;AAAA,QACA;AAAA,QACA,CAAC;AAAA,QACD,aAAa,gBAAgB,EAAE,SAAS;AAAA,QACxC,aAAa,QAAQ,IAAI;AAAA,MAC3B;AAAA,IACF;AAEA,QAAI,IAAI,WAAW,OAAO,KAAK,UAAU,iBAAiB;AACxD,YAAM,WAAW,MAAM,KAAK,SAAS;AACrC,UAAI,UAAU;AACZ,cAAM,eAAe,IAAI,QAAQ,aAAa,OAAkB;AAChE,qBAAa,IAAI,iBAAiB,UAAU,QAAQ,EAAE;AACtD,uBAAe,EAAE,GAAG,cAAc,SAAS,aAAa;AACxD,cAAM,MAAM,QAAQ,KAAK,YAAY;AAAA,MACvC;AAAA,IACF;AAEA,QAAI,WAAY,MAAK,oBAAoB,OAAO,UAAU;AAE1D,QAAI;AACJ,QAAI;AACF,aAAQ,MAAM,IAAI,KAAK;AAAA,IACzB,SAAS,GAAG;AACV,YAAM,IAAI;AAAA,QACR;AAAA,QACA;AAAA,QACA,IAAI;AAAA,QACJ;AAAA,QACA,CAAC;AAAA,QACD;AAAA,QACA,aAAa,QAAQ,IAAI;AAAA,MAC3B;AAAA,IACF;AAEA,QAAI,KAAK,SAAS,GAAG;AACnB,YAAM,IAAI;AAAA,QACP,KAAK,QAAmB;AAAA,QACxB,KAAK,WAAsB;AAAA,QAC5B,IAAI;AAAA,QACJ;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAEA,QAAI,OAAO,KAAK;AAChB,QAAI,KAAK,YAAY;AACnB,aAAQ,MAAM,KAAK,WAAW,KAAK,IAAI;AAAA,IACzC;AAEA,WAAO;AAAA,EACT;AAAA,EAEA,MAAM,IAAO,MAAc,SAAsC;AAC/D,WAAO,KAAK,QAAW,MAAM,EAAE,GAAG,SAAS,QAAQ,MAAM,CAAC;AAAA,EAC5D;AAAA,EAEA,MAAM,KACJ,MACA,MACA,SACY;AACZ,WAAO,KAAK,QAAW,MAAM,EAAE,GAAG,SAAS,QAAQ,QAAQ,KAAK,CAAC;AAAA,EACnE;AAAA,EAEA,MAAM,IACJ,MACA,MACA,SACY;AACZ,WAAO,KAAK,QAAW,MAAM,EAAE,GAAG,SAAS,QAAQ,OAAO,KAAK,CAAC;AAAA,EAClE;AAAA,EAEA,MAAM,IAAO,MAAc,SAAsC;AAC/D,WAAO,KAAK,QAAW,MAAM,EAAE,GAAG,SAAS,QAAQ,SAAS,CAAC;AAAA,EAC/D;AAAA,EAEA,MAAc,WAAmC;AAC/C,QAAI,KAAK,gBAAiB,QAAO,KAAK;AAEtC,SAAK,mBAAmB,YAAY;AAClC,UAAI;AACF,cAAM,KAAK,KAAK,UAAU;AAC1B,YAAI,CAAC,GAAI,QAAO;AAEhB,cAAM,MAAM,MAAM,MAAM,GAAG,KAAK,OAAO,iBAAiB;AAAA,UACtD,QAAQ;AAAA,UACR,SAAS,EAAE,gBAAgB,mBAAmB;AAAA,UAC9C,MAAM,KAAK,UAAU,EAAE,eAAe,GAAG,CAAC;AAAA,QAC5C,CAAC;AAED,cAAM,OAAQ,MAAM,IAAI,KAAK;AAC7B,YAAI,KAAK,SAAS,GAAG;AACnB,eAAK,UAAU,MAAM;AACrB,iBAAO;AAAA,QACT;AAEA,cAAM,OAAO,KAAK;AAClB,aAAK,UAAU,KAAK,IAAI;AACxB,eAAO,KAAK;AAAA,MACd,QAAQ;AACN,aAAK,UAAU,MAAM;AACrB,eAAO;AAAA,MACT,UAAE;AACA,aAAK,kBAAkB;AAAA,MACzB;AAAA,IACF,GAAG;AAEH,WAAO,KAAK;AAAA,EACd;AACF;;;ACjSO,IAAM,gBAAN,MAA0C;AAAA,EAA1C;AACL,SAAU,SAAwB;AAClC,SAAU,gBAA+B;AACzC,SAAU,QAAqB;AAC/B,SAAQ,aAAa,oBAAI,IAAuB;AAAA;AAAA,EAEhD,IAAI,QAAuB;AACzB,WAAO,KAAK;AAAA,EACd;AAAA,EAEA,IAAI,eAA8B;AAChC,WAAO,KAAK;AAAA,EACd;AAAA,EAEA,IAAI,OAAoB;AACtB,WAAO,KAAK;AAAA,EACd;AAAA,EAEA,IAAI,kBAA2B;AAC7B,WAAO,CAAC,CAAC,KAAK;AAAA,EAChB;AAAA,EAEA,KAAK,MAAwB;AAC3B,SAAK,SAAS,KAAK;AACnB,SAAK,gBAAgB,KAAK;AAC1B,SAAK,QAAQ,KAAK;AAClB,SAAK,QAAQ;AAAA,EACf;AAAA,EAEA,QAAc;AACZ,SAAK,SAAS;AACd,SAAK,gBAAgB;AACrB,SAAK,QAAQ;AACb,SAAK,QAAQ;AAAA,EACf;AAAA,EAEA,SACE,UACA,kBAAkB,OACN;AACZ,SAAK,WAAW,IAAI,QAAQ;AAC5B,QAAI,iBAAiB;AACnB,eAAS,KAAK,QAAQ,KAAK,KAAK;AAAA,IAClC;AACA,WAAO,MAAM;AACX,WAAK,WAAW,OAAO,QAAQ;AAAA,IACjC;AAAA,EACF;AAAA,EAEA,kBAA0B;AACxB,WAAO,KAAK,UAAU;AAAA,MACpB,OAAO,KAAK;AAAA,MACZ,cAAc,KAAK;AAAA,MACnB,MAAM,KAAK;AAAA,IACb,CAAC;AAAA,EACH;AAAA,EAEA,kBAAkB,MAAoB;AACpC,QAAI;AACF,YAAM,SAAS,KAAK,MAAM,IAAI;AAC9B,WAAK,SAAS,OAAO,SAAS;AAC9B,WAAK,gBAAgB,OAAO,gBAAgB;AAC5C,WAAK,QAAQ,OAAO,QAAQ;AAAA,IAC9B,QAAQ;AAAA,IAER;AAAA,EACF;AAAA,EAEU,UAAgB;AACxB,eAAW,MAAM,KAAK,YAAY;AAChC,SAAG,KAAK,QAAQ,KAAK,KAAK;AAAA,IAC5B;AAAA,EACF;AACF;AAEO,IAAM,iBAAN,cAA6B,cAAc;AAAA,EAIhD,YAAY,aAAa,iBAAiB,SAAmB;AAC3D,UAAM;AACN,SAAK,cAAc;AACnB,SAAK,WACH,YAAY,OAAO,WAAW,cAAc,OAAO,eAAe;AACpE,SAAK,MAAM;AAAA,EACb;AAAA,EAEA,KAAK,MAAwB;AAC3B,UAAM,KAAK,IAAI;AACf,SAAK,SAAS;AAAA,EAChB;AAAA,EAEA,QAAc;AACZ,UAAM,MAAM;AACZ,SAAK,SAAS;AAAA,EAChB;AAAA,EAEQ,WAAiB;AACvB,QAAI;AACF,WAAK,UAAU,QAAQ,KAAK,aAAa,KAAK,gBAAgB,CAAC;AAAA,IACjE,QAAQ;AAAA,IAER;AAAA,EACF;AAAA,EAEQ,QAAc;AACpB,QAAI;AACF,YAAM,OAAO,KAAK,UAAU,QAAQ,KAAK,WAAW;AACpD,UAAI,KAAM,MAAK,kBAAkB,IAAI;AAAA,IACvC,QAAQ;AAAA,IAER;AAAA,EACF;AACF;;;ACvGO,IAAM,OAAN,MAAW;AAAA,EAIhB,YAAY,MAAkB,OAAmB;AAC/C,SAAK,OAAO;AACZ,SAAK,QAAQ;AAAA,EACf;AAAA,EAEA,IAAI,QAAuB;AACzB,WAAO,KAAK,MAAM;AAAA,EACpB;AAAA,EAEA,IAAI,OAAoB;AACtB,WAAO,KAAK,MAAM;AAAA,EACpB;AAAA,EAEA,IAAI,kBAA2B;AAC7B,WAAO,KAAK,MAAM;AAAA,EACpB;AAAA,EAEA,MAAM,MACJ,OACA,UACA,SACqB;AACrB,UAAM,SAAS,MAAM,KAAK,KAAK;AAAA,MAC7B;AAAA,MACA,EAAE,OAAO,SAAS;AAAA,MAClB;AAAA,IACF;AACA,SAAK,MAAM,KAAK,MAAM;AACtB,WAAO;AAAA,EACT;AAAA,EAEA,MAAM,SACJ,MACA,SACqB;AACrB,UAAM,SAAS,MAAM,KAAK,KAAK;AAAA,MAC7B;AAAA,MACA;AAAA,MACA;AAAA,IACF;AACA,SAAK,MAAM,KAAK,MAAM;AACtB,WAAO;AAAA,EACT;AAAA,EAEA,MAAM,QAAQ,SAAsD;AAClE,UAAM,KAAK,KAAK,MAAM;AACtB,QAAI,CAAC,GAAI,QAAO;AAEhB,UAAM,SAAS,MAAM,KAAK,KAAK;AAAA,MAC7B;AAAA,MACA,EAAE,eAAe,GAAG;AAAA,MACpB;AAAA,IACF;AACA,SAAK,MAAM,KAAK,MAAM;AACtB,WAAO;AAAA,EACT;AAAA,EAEA,MAAM,OAAO,SAAyC;AACpD,QAAI;AACF,YAAM,KAAK,KAAK,KAAK,gBAAgB,QAAW,OAAO;AAAA,IACzD,UAAE;AACA,WAAK,MAAM,MAAM;AAAA,IACnB;AAAA,EACF;AAAA,EAEA,MAAM,UAAU,SAA+C;AAC7D,WAAO,KAAK,KAAK,IAAgB,gBAAgB,OAAO;AAAA,EAC1D;AAAA,EAEA,MAAM,MAAM,SAAyC;AACnD,WAAO,KAAK,KAAK,IAAU,aAAa,OAAO;AAAA,EACjD;AAAA,EAEA,MAAM,SACJ,MAQA,SACe;AACf,WAAO,KAAK,KAAK,QAAc,KAAK,KAAK,cAAc,UAAU,IAAI,GAAG;AAAA,MACtE,GAAG;AAAA,MACH,QAAQ,KAAK,KAAK,gBAAgB;AAAA,MAClC,MAAM;AAAA,IACR,CAAC;AAAA,EACH;AAAA,EAEA,MAAM,eACJ,MACA,SACe;AACf,UAAM,KAAK,KAAK,QAAc,KAAK,KAAK,cAAc,UAAU,aAAa,GAAG;AAAA,MAC9E,GAAG;AAAA,MACH,QAAQ,KAAK,KAAK,gBAAgB;AAAA,MAClC,MAAM;AAAA,IACR,CAAC;AAAA,EACH;AAAA,EAEA,MAAM,qBACJ,OACA,SACe;AACf,UAAM,KAAK,KAAK,KAAK,yBAAyB,EAAE,MAAM,GAAG,OAAO;AAAA,EAClE;AAAA,EAEA,MAAM,qBACJ,MACA,SACe;AACf,UAAM,KAAK,KAAK,KAAK,wBAAwB,MAAM,OAAO;AAAA,EAC5D;AAAA,EAEA,MAAM,YACJ,MACA,SACe;AACf,UAAM,KAAK,KAAK,KAAK,sBAAsB,MAAM,OAAO;AAAA,EAC1D;AAAA,EAEA,MAAM,YACJ,MACA,SACe;AACf,UAAM,KAAK,KAAK,KAAK,sBAAsB,MAAM,OAAO;AAAA,EAC1D;AAAA,EAEA,MAAM,mBACJ,OACA,SACe;AACf,UAAM,KAAK,KAAK,KAAK,6BAA6B,EAAE,MAAM,GAAG,OAAO;AAAA,EACtE;AAAA,EAEA,MAAM,YACJ,OACA,SACA,SACe;AACf,UAAM,KAAK,KAAK,KAAK,kBAAkB,EAAE,OAAO,QAAQ,GAAG,OAAO;AAAA,EACpE;AAAA,EAEA,MAAM,UACJ,MACA,SACqB;AACrB,UAAM,SAAS,MAAM,KAAK,KAAK;AAAA,MAC7B;AAAA,MACA;AAAA,MACA;AAAA,IACF;AACA,SAAK,MAAM,KAAK,MAAM;AACtB,WAAO;AAAA,EACT;AAAA,EAEA,MAAM,UACJ,MACA,SACe;AACf,UAAM,KAAK,KAAK,KAAK,oBAAoB,MAAM,OAAO;AAAA,EACxD;AAAA,EAEA,oBAAoB,UAA0B;AAC5C,WAAO,GAAG,KAAK,KAAK,OAAO,eAAe,QAAQ;AAAA,EACpD;AAAA,EAEA,MAAM,mBACJ,SAC0B;AAC1B,WAAO,KAAK,KAAK;AAAA,MACf;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAAA,EAEA,MAAM,cACJ,MACA,SACqB;AACrB,UAAM,SAAS,MAAM,KAAK,KAAK;AAAA,MAC7B,eAAe,KAAK,QAAQ;AAAA,MAC5B;AAAA,QACE,GAAG;AAAA,QACH,OAAO,EAAE,MAAM,KAAK,MAAM,cAAc,KAAK,aAAa;AAAA,MAC5D;AAAA,IACF;AACA,SAAK,MAAM,KAAK,MAAM;AACtB,WAAO;AAAA,EACT;AAAA,EAEA,MAAM,kBAAkB,SAAmD;AACzE,WAAO,KAAK,KAAK;AAAA,MACf;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAAA,EAEA,MAAM,YACJ,UACA,SACe;AACf,UAAM,KAAK,KAAK,QAAc,KAAK,KAAK,cAAc,eAAe,GAAG,QAAQ,SAAS,GAAG;AAAA,MAC1F,GAAG;AAAA,MACH,QAAQ,KAAK,KAAK,gBAAgB;AAAA,IACpC,CAAC;AAAA,EACH;AAAA,EAEA,MAAM,gBACJ,SAC+B;AAC/B,WAAO,KAAK,KAAK,IAA0B,qBAAqB,OAAO;AAAA,EACzE;AAAA,EAEA,MAAM,UACJ,MACA,SACe;AACf,UAAM,KAAK,KAAK,KAAK,gCAAgC,MAAM,OAAO;AAAA,EACpE;AAAA,EAEA,MAAM,iBAAiB,IAAY,SAAyC;AAC1E,UAAM,KAAK,KAAK,QAAc,KAAK,KAAK,cAAc,qBAAqB,OAAO,EAAE,CAAC,GAAG;AAAA,MACtF,GAAG;AAAA,MACH,QAAQ,KAAK,KAAK,gBAAgB;AAAA,IACpC,CAAC;AAAA,EACH;AACF;;;AClPO,IAAM,QAAN,MAAY;AAAA,EAGjB,YAAY,MAAkB;AAC5B,SAAK,OAAO;AAAA,EACd;AAAA,EAEA,MAAM,MAAM,SAAyC;AACnD,WAAO,KAAK,KAAK,IAAU,aAAa,OAAO;AAAA,EACjD;AAAA,EAEA,MAAM,SACJ,MAQA,SACe;AACf,WAAO,KAAK,KAAK,QAAc,KAAK,KAAK,cAAc,UAAU,IAAI,GAAG;AAAA,MACtE,GAAG;AAAA,MACH,QAAQ,KAAK,KAAK,gBAAgB;AAAA,MAClC,MAAM;AAAA,IACR,CAAC;AAAA,EACH;AAAA,EAEA,MAAM,eACJ,MACA,SACe;AACf,UAAM,KAAK,KAAK,QAAc,KAAK,KAAK,cAAc,UAAU,aAAa,GAAG;AAAA,MAC9E,GAAG;AAAA,MACH,QAAQ,KAAK,KAAK,gBAAgB;AAAA,MAClC,MAAM;AAAA,IACR,CAAC;AAAA,EACH;AAAA,EAEA,MAAM,QAAQ,IAAY,SAAyC;AACjE,WAAO,KAAK,KAAK,IAAU,UAAU,EAAE,IAAI,OAAO;AAAA,EACpD;AAAA,EAEA,MAAM,UACJ,OAAO,GACP,WAAW,IACX,SAC8B;AAC9B,WAAO,KAAK,KAAK,IAAyB,UAAU;AAAA,MAClD,GAAG;AAAA,MACH,OAAO,EAAE,MAAM,OAAO,IAAI,GAAG,WAAW,OAAO,QAAQ,EAAE;AAAA,IAC3D,CAAC;AAAA,EACH;AAAA,EAEA,MAAM,eACJ,IACA,MACA,SACe;AACf,WAAO,KAAK,KAAK,QAAc,KAAK,KAAK,cAAc,UAAU,GAAG,EAAE,OAAO,GAAG;AAAA,MAC9E,GAAG;AAAA,MACH,QAAQ,KAAK,KAAK,gBAAgB;AAAA,MAClC,MAAM,EAAE,KAAK;AAAA,IACf,CAAC;AAAA,EACH;AACF;;;ACxCO,IAAM,QAAN,MAAY;AAAA,EAGjB,YAAY,MAAkB;AAC5B,SAAK,OAAO;AAAA,EACd;AAAA,EAEA,MAAM,KACJ,OACA,SACsC;AACtC,WAAO,KAAK,KAAK,IAAiC,UAAU;AAAA,MAC1D,GAAG;AAAA,MACH,OAAO,cAAc,KAA+D;AAAA,IACtF,CAAC;AAAA,EACH;AAAA,EAEA,MAAM,IAAI,MAAc,SAAiD;AACvE,WAAO,KAAK,KAAK,IAAkB,UAAU,IAAI,IAAI,OAAO;AAAA,EAC9D;AAAA,EAEA,MAAM,OACJ,MACA,SACuB;AACvB,WAAO,KAAK,KAAK,QAAsB,KAAK,KAAK,cAAc,QAAQ,GAAG;AAAA,MACxE,GAAG;AAAA,MACH,QAAQ,KAAK,KAAK,gBAAgB;AAAA,MAClC;AAAA,IACF,CAAC;AAAA,EACH;AAAA,EAEA,MAAM,OACJ,MACA,MACA,SACuB;AACvB,WAAO,KAAK,KAAK,QAAsB,KAAK,KAAK,cAAc,UAAU,IAAI,GAAG;AAAA,MAC9E,GAAG;AAAA,MACH,QAAQ,KAAK,KAAK,gBAAgB;AAAA,MAClC;AAAA,IACF,CAAC;AAAA,EACH;AAAA,EAEA,MAAM,OAAO,MAAc,SAAyC;AAClE,UAAM,KAAK,KAAK,QAAc,KAAK,KAAK,cAAc,UAAU,IAAI,GAAG;AAAA,MACrE,GAAG;AAAA,MACH,QAAQ,KAAK,KAAK,gBAAgB;AAAA,IACpC,CAAC;AAAA,EACH;AACF;;;AC5EO,IAAM,QAAN,MAAY;AAAA,EAGjB,YAAY,MAAkB;AAC5B,SAAK,OAAO;AAAA,EACd;AAAA,EAEA,MAAM,KACJ,OAAO,GACP,WAAW,IACX,SAC8B;AAC9B,WAAO,KAAK,KAAK,IAAyB,UAAU;AAAA,MAClD,GAAG;AAAA,MACH,OAAO,EAAE,MAAM,OAAO,IAAI,GAAG,WAAW,OAAO,QAAQ,EAAE;AAAA,IAC3D,CAAC;AAAA,EACH;AAAA,EAEA,MAAM,IAAI,MAAc,SAAyC;AAC/D,WAAO,KAAK,KAAK,IAAU,UAAU,IAAI,IAAI,OAAO;AAAA,EACtD;AAAA,EAEA,MAAM,QAAQ,SAAmD;AAC/D,WAAO,KAAK,KAAK,IAAoB,kBAAkB,OAAO;AAAA,EAChE;AACF;;;ACbO,IAAM,WAAN,MAAe;AAAA,EAGpB,YAAY,MAAkB;AAC5B,SAAK,OAAO;AAAA,EACd;AAAA,EAEA,MAAM,KACJ,UACA,OAAO,GACP,WAAW,IACX,SACyC;AACzC,WAAO,KAAK,KAAK;AAAA,MACf,UAAU,QAAQ;AAAA,MAClB;AAAA,QACE,GAAG;AAAA,QACH,OAAO,EAAE,MAAM,OAAO,IAAI,GAAG,WAAW,OAAO,QAAQ,EAAE;AAAA,MAC3D;AAAA,IACF;AAAA,EACF;AAAA,EAEA,MAAM,OACJ,UACA,MACA,SAC0B;AAC1B,UAAM,kBAAkB,KAAK,KAAK,WAAW;AAC7C,UAAM,WAAW,kBACb,UAAU,QAAQ,qBAClB,UAAU,QAAQ;AACtB,WAAO,KAAK,KAAK,KAAsB,UAAU,MAAM,OAAO;AAAA,EAChE;AAAA,EAEA,MAAM,QACJ,OAAO,GACP,WAAW,IACX,SACyC;AACzC,WAAO,KAAK,KAAK,IAAoC,aAAa;AAAA,MAChE,GAAG;AAAA,MACH,OAAO,EAAE,MAAM,OAAO,IAAI,GAAG,WAAW,OAAO,QAAQ,EAAE;AAAA,IAC3D,CAAC;AAAA,EACH;AAAA,EAEA,MAAM,aACJ,IACA,QACA,SACe;AACf,UAAM,KAAK,KAAK,QAAc,KAAK,KAAK,cAAc,oBAAoB,EAAE,GAAG;AAAA,MAC7E,GAAG;AAAA,MACH,QAAQ,KAAK,KAAK,gBAAgB;AAAA,MAClC,MAAM,EAAE,OAAO;AAAA,IACjB,CAAC;AAAA,EACH;AAAA,EAEA,MAAM,OAAO,IAAY,SAAyC;AAChE,UAAM,KAAK,KAAK,QAAc,KAAK,KAAK,cAAc,aAAa,EAAE,GAAG;AAAA,MACtE,GAAG;AAAA,MACH,QAAQ,KAAK,KAAK,gBAAgB;AAAA,IACpC,CAAC;AAAA,EACH;AACF;;;AC7DO,IAAM,aAAN,MAAiB;AAAA,EAGtB,YAAY,MAAkB;AAC5B,SAAK,OAAO;AAAA,EACd;AAAA,EAEA,MAAM,KACJ,OAAO,GACP,WAAW,IACX,SACkC;AAClC,WAAO,KAAK,KAAK,IAA6B,eAAe;AAAA,MAC3D,GAAG;AAAA,MACH,OAAO,EAAE,MAAM,OAAO,IAAI,GAAG,WAAW,OAAO,QAAQ,EAAE;AAAA,IAC3D,CAAC;AAAA,EACH;AAAA,EAEA,MAAM,IACJ,IACA,SACmB;AACnB,WAAO,KAAK,KAAK,IAAc,eAAe,EAAE,IAAI,OAAO;AAAA,EAC7D;AAAA,EAEA,MAAM,OACJ,MACA,SACmB;AACnB,WAAO,KAAK,KAAK,QAAkB,KAAK,KAAK,cAAc,aAAa,GAAG;AAAA,MACzE,GAAG;AAAA,MACH,QAAQ,KAAK,KAAK,gBAAgB;AAAA,MAClC;AAAA,IACF,CAAC;AAAA,EACH;AAAA,EAEA,MAAM,OACJ,IACA,MACA,SACmB;AACnB,WAAO,KAAK,KAAK,QAAkB,KAAK,KAAK,cAAc,eAAe,EAAE,GAAG;AAAA,MAC7E,GAAG;AAAA,MACH,QAAQ,KAAK,KAAK,gBAAgB;AAAA,MAClC;AAAA,IACF,CAAC;AAAA,EACH;AAAA,EAEA,MAAM,OAAO,IAAY,SAAyC;AAChE,UAAM,KAAK,KAAK,QAAc,KAAK,KAAK,cAAc,eAAe,EAAE,GAAG;AAAA,MACxE,GAAG;AAAA,MACH,QAAQ,KAAK,KAAK,gBAAgB;AAAA,IACpC,CAAC;AAAA,EACH;AACF;;;ACpEO,IAAM,OAAN,MAAW;AAAA,EAGhB,YAAY,MAAkB;AAC5B,SAAK,OAAO;AAAA,EACd;AAAA,EAEA,MAAM,KACJ,OAAO,GACP,WAAW,IACX,SAC6B;AAC7B,WAAO,KAAK,KAAK,IAAwB,SAAS;AAAA,MAChD,GAAG;AAAA,MACH,OAAO,EAAE,MAAM,OAAO,IAAI,GAAG,WAAW,OAAO,QAAQ,EAAE;AAAA,IAC3D,CAAC;AAAA,EACH;AAAA,EAEA,MAAM,IACJ,IACA,SACc;AACd,WAAO,KAAK,KAAK,IAAS,SAAS,EAAE,IAAI,OAAO;AAAA,EAClD;AAAA,EAEA,MAAM,OACJ,MACA,SACc;AACd,WAAO,KAAK,KAAK,QAAa,KAAK,KAAK,cAAc,OAAO,GAAG;AAAA,MAC9D,GAAG;AAAA,MACH,QAAQ,KAAK,KAAK,gBAAgB;AAAA,MAClC;AAAA,IACF,CAAC;AAAA,EACH;AAAA,EAEA,MAAM,OACJ,IACA,MACA,SACc;AACd,WAAO,KAAK,KAAK,QAAa,KAAK,KAAK,cAAc,SAAS,EAAE,GAAG;AAAA,MAClE,GAAG;AAAA,MACH,QAAQ,KAAK,KAAK,gBAAgB;AAAA,MAClC;AAAA,IACF,CAAC;AAAA,EACH;AAAA,EAEA,MAAM,OAAO,IAAY,SAAyC;AAChE,UAAM,KAAK,KAAK,QAAc,KAAK,KAAK,cAAc,SAAS,EAAE,GAAG;AAAA,MAClE,GAAG;AAAA,MACH,QAAQ,KAAK,KAAK,gBAAgB;AAAA,IACpC,CAAC;AAAA,EACH;AACF;;;AChDO,IAAM,QAAN,MAAY;AAAA,EAGjB,YAAY,MAAkB;AAC5B,SAAK,OAAO;AAAA,EACd;AAAA,EAEA,MAAM,OACJ,MACA,SACoB;AACpB,UAAM,WAAW,IAAI,SAAS;AAC9B,aAAS,OAAO,QAAQ,IAAI;AAC5B,WAAO,KAAK,KAAK,QAAmB,iBAAiB;AAAA,MACnD,GAAG;AAAA,MACH,QAAQ;AAAA,MACR,MAAM;AAAA,IACR,CAAC;AAAA,EACH;AAAA,EAEA,MAAM,KACJ,OAAO,GACP,WAAW,IACX,SACmC;AACnC,WAAO,KAAK,KAAK,IAA8B,UAAU;AAAA,MACvD,GAAG;AAAA,MACH,OAAO,EAAE,MAAM,OAAO,IAAI,GAAG,WAAW,OAAO,QAAQ,EAAE;AAAA,IAC3D,CAAC;AAAA,EACH;AAAA,EAEA,MAAM,MAAM,SAA+C;AACzD,WAAO,KAAK,KAAK,IAAgB,gBAAgB,OAAO;AAAA,EAC1D;AAAA,EAEA,MAAM,OAAO,IAAY,SAAyC;AAChE,UAAM,KAAK,KAAK,QAAc,KAAK,KAAK,cAAc,UAAU,EAAE,GAAG;AAAA,MACnE,GAAG;AAAA,MACH,QAAQ,KAAK,KAAK,gBAAgB;AAAA,IACpC,CAAC;AAAA,EACH;AAAA,EAEA,WACE,QACA,OACA,SACQ;AACR,UAAM,OAAO,KAAK,KAAK,QAAQ,QAAQ,WAAW,EAAE;AACpD,UAAM,OAAO,OAAO,KAAK;AACzB,QAAI,OAAO,SAAS,SAAU,QAAO;AACrC,QAAI,KAAK,WAAW,MAAM,EAAG,QAAO;AACpC,QAAI,MAAM,GAAG,IAAI,YAAY,IAAI;AACjC,QAAI,SAAS,OAAO;AAClB,aAAO,UAAU,mBAAmB,QAAQ,KAAK,CAAC;AAAA,IACpD;AACA,WAAO;AAAA,EACT;AACF;;;AC/DO,IAAM,SAAN,MAAa;AAAA,EAGlB,YAAY,MAAkB;AAC5B,SAAK,OAAO;AAAA,EACd;AAAA,EAEA,MAAM,MAAM,SAAiD;AAC3D,WAAO,KAAK,KAAK,IAAkB,WAAW,OAAO;AAAA,EACvD;AAAA,EAEA,MAAM,SAAS,SAAiD;AAC9D,UAAM,OAAO,KAAK,KAAK,QAAQ,QAAQ,mBAAmB,EAAE;AAC5D,UAAM,MAAM,MAAM,MAAM,GAAG,IAAI,UAAU;AACzC,WAAO,IAAI,KAAK;AAAA,EAClB;AAAA,EAEA,MAAM,UAAU,SAAiD;AAC/D,UAAM,OAAO,KAAK,KAAK,QAAQ,QAAQ,mBAAmB,EAAE;AAC5D,UAAM,MAAM,MAAM,MAAM,GAAG,IAAI,SAAS;AACxC,WAAO,IAAI,KAAK;AAAA,EAClB;AACF;;;ACjBO,IAAM,UAAN,MAAc;AAAA,EAGnB,YAAY,MAAkB;AAC5B,SAAK,OAAO;AAAA,EACd;AAAA,EAEA,MAAM,KAAK,SAAqD;AAC9D,WAAO,KAAK,KAAK,IAAsB,YAAY,OAAO;AAAA,EAC5D;AAAA,EAEA,MAAM,IACJ,UACA,SACyB;AACzB,WAAO,KAAK,KAAK,IAAoB,YAAY,QAAQ,IAAI,OAAO;AAAA,EACtE;AAAA,EAEA,MAAM,iBACJ,UACA,OACA,SACmD;AACnD,WAAO,KAAK,KAAK;AAAA,MACf,YAAY,QAAQ;AAAA,MACpB,EAAE,GAAG,SAAS,OAAO,cAAc,KAAK,EAAE;AAAA,IAC5C;AAAA,EACF;AAAA,EAEA,MAAM,oBACJ,OACA,SACmD;AACnD,WAAO,KAAK,KAAK;AAAA,MACf;AAAA,MACA,EAAE,GAAG,SAAS,OAAO,cAAc,KAAK,EAAE;AAAA,IAC5C;AAAA,EACF;AACF;;;AC9CO,IAAM,SAAN,MAAa;AAAA,EAGlB,YAAY,SAAiB;AAC3B,SAAK,UAAU;AAAA,EACjB;AAAA,EAEA,UAAU,QAA8B;AACtC,UAAM,MAAM,SACR,GAAG,KAAK,OAAO,kBAAkB,mBAAmB,MAAM,CAAC,KAC3D,GAAG,KAAK,OAAO;AACnB,WAAO,IAAI,YAAY,GAAG;AAAA,EAC5B;AACF;;;ACKO,IAAM,SAAN,MAAa;AAAA,EAGlB,YAAY,MAAkB;AAC5B,SAAK,OAAO;AAAA,EACd;AAAA,EAEA,MAAM,KACJ,OAAO,GACP,WAAW,IACX,SACuC;AACvC,WAAO,KAAK,KAAK,IAAkC,WAAW;AAAA,MAC5D,GAAG;AAAA,MACH,OAAO,EAAE,MAAM,OAAO,IAAI,GAAG,WAAW,OAAO,QAAQ,EAAE;AAAA,IAC3D,CAAC;AAAA,EACH;AAAA,EAEA,MAAM,IAAI,IAAY,SAAkD;AACtE,WAAO,KAAK,KAAK,IAAmB,WAAW,EAAE,IAAI,OAAO;AAAA,EAC9D;AAAA,EAEA,MAAM,OACJ,MACA,SACwB;AACxB,WAAO,KAAK,KAAK,QAAuB,KAAK,KAAK,cAAc,SAAS,GAAG;AAAA,MAC1E,GAAG;AAAA,MACH,QAAQ,KAAK,KAAK,gBAAgB;AAAA,MAClC;AAAA,IACF,CAAC;AAAA,EACH;AAAA,EAEA,MAAM,OAAO,IAAY,SAAyC;AAChE,UAAM,KAAK,KAAK,QAAc,KAAK,KAAK,cAAc,WAAW,EAAE,GAAG;AAAA,MACpE,GAAG;AAAA,MACH,QAAQ,KAAK,KAAK,gBAAgB;AAAA,IACpC,CAAC;AAAA,EACH;AAAA,EAEA,MAAM,eAAe,IAAY,SAAyC;AACxE,UAAM,KAAK,KAAK,KAAK,WAAW,EAAE,YAAY,QAAW,OAAO;AAAA,EAClE;AACF;;;ACzCO,IAAM,UAAN,MAAc;AAAA,EAGnB,YAAY,MAAkB;AAC5B,SAAK,OAAO;AAAA,EACd;AAAA,EAEA,MAAM,sBACJ,OACA,SACoC;AACpC,WAAO,KAAK,KAAK,IAA+B,+BAA+B;AAAA,MAC7E,GAAG;AAAA,MACH,OAAO,cAAc,KAAK;AAAA,IAC5B,CAAC;AAAA,EACH;AAAA,EAEA,MAAM,WACJ,OAAO,GACP,WAAW,IACX,SAC8C;AAC9C,WAAO,KAAK,KAAK,IAAyC,mBAAmB;AAAA,MAC3E,GAAG;AAAA,MACH,OAAO,EAAE,MAAM,OAAO,IAAI,GAAG,WAAW,OAAO,QAAQ,EAAE;AAAA,IAC3D,CAAC;AAAA,EACH;AAAA,EAEA,MAAM,YACJ,MACA,SAC+B;AAC/B,WAAO,KAAK,KAAK,QAA8B,KAAK,KAAK,cAAc,iBAAiB,GAAG;AAAA,MACzF,GAAG;AAAA,MACH,QAAQ,KAAK,KAAK,gBAAgB;AAAA,MAClC;AAAA,IACF,CAAC;AAAA,EACH;AAAA,EAEA,MAAM,SACJ,IACA,SAC+B;AAC/B,WAAO,KAAK,KAAK,IAA0B,mBAAmB,EAAE,IAAI,OAAO;AAAA,EAC7E;AAAA,EAEA,MAAM,YAAY,IAAY,SAAyC;AACrE,UAAM,KAAK,KAAK,KAAK,mBAAmB,EAAE,WAAW,QAAW,OAAO;AAAA,EACzE;AAAA,EAEA,MAAM,iBACJ,IACA,SACuC;AACvC,WAAO,KAAK,KAAK;AAAA,MACf,mBAAmB,EAAE;AAAA,MACrB;AAAA,IACF;AAAA,EACF;AAAA,EAEA,MAAM,YACJ,IACA,SACkC;AAClC,WAAO,KAAK,KAAK;AAAA,MACf,mBAAmB,EAAE;AAAA,MACrB;AAAA,IACF;AAAA,EACF;AACF;;;ACtFO,IAAM,WAAN,MAAe;AAAA,EAGpB,YAAY,MAAkB;AAC5B,SAAK,OAAO;AAAA,EACd;AAAA,EAEA,MAAM,KACJ,OAAO,GACP,WAAW,IACX,SACyC;AACzC,WAAO,KAAK,KAAK,IAAoC,aAAa;AAAA,MAChE,GAAG;AAAA,MACH,OAAO,EAAE,MAAM,OAAO,IAAI,GAAG,WAAW,OAAO,QAAQ,EAAE;AAAA,IAC3D,CAAC;AAAA,EACH;AAAA,EAEA,MAAM,IAAI,IAAY,SAAoD;AACxE,WAAO,KAAK,KAAK,IAAqB,aAAa,EAAE,IAAI,OAAO;AAAA,EAClE;AACF;;;ACKO,IAAM,OAAN,MAAW;AAAA,EAGhB,YAAY,MAAkB;AAC5B,SAAK,OAAO;AAAA,EACd;AAAA,EAEA,MAAM,KAAK,SAAiD;AAC1D,WAAO,KAAK,KAAK,IAAkB,SAAS,OAAO;AAAA,EACrD;AAAA,EAEA,MAAM,IACJ,MACA,SACe;AACf,UAAM,KAAK,KAAK,QAAc,KAAK,KAAK,cAAc,OAAO,GAAG;AAAA,MAC9D,GAAG;AAAA,MACH,QAAQ,KAAK,KAAK,gBAAgB;AAAA,MAClC;AAAA,IACF,CAAC;AAAA,EACH;AAAA,EAEA,MAAM,WACJ,IACA,MACA,SACe;AACf,UAAM,KAAK,KAAK,QAAc,KAAK,KAAK,cAAc,SAAS,EAAE,GAAG;AAAA,MAClE,GAAG;AAAA,MACH,QAAQ,KAAK,KAAK,gBAAgB;AAAA,MAClC;AAAA,IACF,CAAC;AAAA,EACH;AAAA,EAEA,MAAM,WACJ,IACA,SACe;AACf,UAAM,KAAK,KAAK,QAAc,KAAK,KAAK,cAAc,SAAS,EAAE,GAAG;AAAA,MAClE,GAAG;AAAA,MACH,QAAQ,KAAK,KAAK,gBAAgB;AAAA,IACpC,CAAC;AAAA,EACH;AAAA,EAEA,MAAM,MAAM,SAAyC;AACnD,UAAM,KAAK,KAAK,QAAc,SAAS;AAAA,MACrC,GAAG;AAAA,MACH,QAAQ;AAAA,IACV,CAAC;AAAA,EACH;AAAA,EAEA,MAAM,SAAS,SAA4D;AACzE,WAAO,KAAK,KAAK;AAAA,MACf;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF;AACF;;;ACpFO,IAAM,aAAN,MAAiB;AAAA,EAGtB,YAAY,MAAkB;AAC5B,SAAK,OAAO;AAAA,EACd;AAAA,EAEA,MAAM,KACJ,OAAO,GACP,WAAW,IACX,SACkC;AAClC,WAAO,KAAK,KAAK,IAA6B,gBAAgB;AAAA,MAC5D,GAAG;AAAA,MACH,OAAO,EAAE,MAAM,OAAO,IAAI,GAAG,WAAW,OAAO,QAAQ,EAAE;AAAA,IAC3D,CAAC;AAAA,EACH;AAAA,EAEA,MAAM,IAAI,IAAY,SAA6C;AACjE,WAAO,KAAK,KAAK,IAAc,gBAAgB,EAAE,IAAI,OAAO;AAAA,EAC9D;AACF;;;ACbO,IAAM,kBAAN,MAAsB;AAAA,EAG3B,YAAY,MAAkB;AAC5B,SAAK,OAAO;AAAA,EACd;AAAA,EAEA,MAAM,KACJ,OAAO,GACP,WAAW,IACX,SACkC;AAClC,WAAO,KAAK,KAAK,IAA6B,qBAAqB;AAAA,MACjE,GAAG;AAAA,MACH,OAAO,EAAE,MAAM,OAAO,IAAI,GAAG,WAAW,OAAO,QAAQ,EAAE;AAAA,IAC3D,CAAC;AAAA,EACH;AAAA,EAEA,MAAM,OACJ,MACA,SACmB;AACnB,WAAO,KAAK,KAAK,QAAkB,KAAK,KAAK,cAAc,mBAAmB,GAAG;AAAA,MAC/E,GAAG;AAAA,MACH,QAAQ,KAAK,KAAK,gBAAgB;AAAA,MAClC;AAAA,IACF,CAAC;AAAA,EACH;AAAA,EAEA,MAAM,OACJ,IACA,MACA,SACmB;AACnB,WAAO,KAAK,KAAK,QAAkB,KAAK,KAAK,cAAc,qBAAqB,EAAE,GAAG;AAAA,MACnF,GAAG;AAAA,MACH,QAAQ,KAAK,KAAK,gBAAgB;AAAA,MAClC;AAAA,IACF,CAAC;AAAA,EACH;AAAA,EAEA,MAAM,OAAO,IAAY,SAAyC;AAChE,UAAM,KAAK,KAAK,QAAc,KAAK,KAAK,cAAc,qBAAqB,EAAE,GAAG;AAAA,MAC9E,GAAG;AAAA,MACH,QAAQ,KAAK,KAAK,gBAAgB;AAAA,IACpC,CAAC;AAAA,EACH;AAAA,EAEA,MAAM,MACJ,MACA,SACwB;AACxB,WAAO,KAAK,KAAK;AAAA,MACf;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF;AACF;;;AC3DO,IAAM,gBAAN,MAAoB;AAAA,EAGzB,YAAY,MAAkB;AAC5B,SAAK,OAAO;AAAA,EACd;AAAA,EAEA,MAAM,KACJ,OACA,SACyC;AACzC,WAAO,KAAK,KAAK,IAAoC,mBAAmB;AAAA,MACtE,GAAG;AAAA,MACH,OAAO,cAAc,KAAoD;AAAA,IAC3E,CAAC;AAAA,EACH;AAAA,EAEA,MAAM,aACJ,IACA,QACA,SACe;AACf,UAAM,KAAK,KAAK,QAAc,KAAK,KAAK,cAAc,0BAA0B,EAAE,GAAG;AAAA,MACnF,GAAG;AAAA,MACH,QAAQ,KAAK,KAAK,gBAAgB;AAAA,MAClC,MAAM,EAAE,OAAO;AAAA,IACjB,CAAC;AAAA,EACH;AAAA,EAEA,MAAM,OAAO,IAAY,SAAyC;AAChE,UAAM,KAAK,KAAK,QAAc,KAAK,KAAK,cAAc,mBAAmB,EAAE,GAAG;AAAA,MAC5E,GAAG;AAAA,MACH,QAAQ,KAAK,KAAK,gBAAgB;AAAA,IACpC,CAAC;AAAA,EACH;AAAA,EAEA,MAAM,MACJ,MACA,SACwB;AACxB,WAAO,KAAK,KAAK;AAAA,MACf;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF;AACF;;;ACrDO,IAAM,oBAAN,MAAwB;AAAA,EAG7B,YAAY,MAAkB;AAC5B,SAAK,OAAO;AAAA,EACd;AAAA,EAEA,MAAM,KAAK,SAAwD;AACjE,WAAO,KAAK,KAAK,IAAyB,wBAAwB,OAAO;AAAA,EAC3E;AAAA,EAEA,MAAM,IACJ,MACA,SAC4B;AAC5B,WAAO,KAAK,KAAK;AAAA,MACf,wBAAwB,IAAI;AAAA,MAC5B;AAAA,IACF;AAAA,EACF;AAAA,EAEA,MAAM,OACJ,QACA,SAC4B;AAC5B,WAAO,KAAK,KAAK,QAA2B,KAAK,KAAK,cAAc,sBAAsB,GAAG;AAAA,MAC3F,GAAG;AAAA,MACH,QAAQ,KAAK,KAAK,gBAAgB;AAAA,MAClC,MAAM;AAAA,IACR,CAAC;AAAA,EACH;AAAA,EAEA,MAAM,OACJ,MACA,QACA,SAC4B;AAC5B,WAAO,KAAK,KAAK,QAA2B,KAAK,KAAK,cAAc,wBAAwB,IAAI,GAAG;AAAA,MACjG,GAAG;AAAA,MACH,QAAQ,KAAK,KAAK,gBAAgB;AAAA,MAClC,MAAM;AAAA,IACR,CAAC;AAAA,EACH;AAAA,EAEA,MAAM,OAAO,MAAc,SAAyC;AAClE,UAAM,KAAK,KAAK,QAAc,KAAK,KAAK,cAAc,wBAAwB,IAAI,GAAG;AAAA,MACnF,GAAG;AAAA,MACH,QAAQ,KAAK,KAAK,gBAAgB;AAAA,IACpC,CAAC;AAAA,EACH;AACF;;;AC7CO,IAAM,aAAN,MAAiB;AAAA,EAGtB,YAAY,MAAkB;AAC5B,SAAK,OAAO;AAAA,EACd;AAAA,EAEA,MAAM,KAAK,SAA8C;AACvD,WAAO,KAAK,KAAK,IAAe,gBAAgB,OAAO;AAAA,EACzD;AAAA,EAEA,MAAM,OACJ,MACA,SACkB;AAClB,WAAO,KAAK,KAAK,QAAiB,KAAK,KAAK,cAAc,cAAc,GAAG;AAAA,MACzE,GAAG;AAAA,MACH,QAAQ,KAAK,KAAK,gBAAgB;AAAA,MAClC,MAAM;AAAA,IACR,CAAC;AAAA,EACH;AAAA,EAEA,MAAM,IAAI,IAAY,SAA4C;AAChE,WAAO,KAAK,KAAK,IAAa,gBAAgB,EAAE,IAAI,OAAO;AAAA,EAC7D;AAAA,EAEA,MAAM,OACJ,IACA,MACA,SACkB;AAClB,WAAO,KAAK,KAAK,QAAiB,KAAK,KAAK,cAAc,gBAAgB,EAAE,GAAG;AAAA,MAC7E,GAAG;AAAA,MACH,QAAQ,KAAK,KAAK,gBAAgB;AAAA,MAClC,MAAM;AAAA,IACR,CAAC;AAAA,EACH;AAAA,EAEA,MAAM,OAAO,IAAY,SAAyC;AAChE,UAAM,KAAK,KAAK,QAAc,KAAK,KAAK,cAAc,gBAAgB,EAAE,GAAG;AAAA,MACzE,GAAG;AAAA,MACH,QAAQ,KAAK,KAAK,gBAAgB;AAAA,IACpC,CAAC;AAAA,EACH;AAAA,EAEA,MAAM,OACJ,IACA,SACA,SACkB;AAClB,WAAO,KAAK,KAAK,KAAc,gBAAgB,EAAE,WAAW,EAAE,QAAQ,GAAG,OAAO;AAAA,EAClF;AAAA,EAEA,MAAM,SACJ,QACA,SACoB;AACpB,WAAO,KAAK,KAAK,IAAe,qBAAqB;AAAA,MACnD,GAAG;AAAA,MACH,OAAO,cAAc,MAAM;AAAA,IAC7B,CAAC;AAAA,EACH;AAAA,EAEA,MAAM,YAAY,SAAyC;AACzD,UAAM,KAAK,KAAK,KAAK,6BAA6B,CAAC,GAAG,OAAO;AAAA,EAC/D;AAAA,EAEA,MAAM,MACJ,MACA,SACwB;AACxB,WAAO,KAAK,KAAK,KAAK,sBAAsB,MAAM,OAAO;AAAA,EAC3D;AACF;;;ACzEO,IAAM,kBAAN,MAAsB;AAAA,EAG3B,YAAY,MAAkB;AAC5B,SAAK,OAAO;AAAA,EACd;AAAA,EAEA,MAAM,KAAK,SAAuD;AAChE,WAAO,KAAK,KAAK,IAAwB,qBAAqB,OAAO;AAAA,EACvE;AAAA,EAEA,MAAM,IACJ,MACA,SAC2B;AAC3B,WAAO,KAAK,KAAK;AAAA,MACf,qBAAqB,IAAI;AAAA,MACzB;AAAA,IACF;AAAA,EACF;AAAA,EAEA,MAAM,OACJ,MACA,SAC2B;AAC3B,WAAO,KAAK,KAAK,QAA0B,KAAK,KAAK,cAAc,mBAAmB,GAAG;AAAA,MACvF,GAAG;AAAA,MACH,QAAQ,KAAK,KAAK,gBAAgB;AAAA,MAClC;AAAA,IACF,CAAC;AAAA,EACH;AAAA,EAEA,MAAM,OACJ,MACA,MACA,SAC2B;AAC3B,WAAO,KAAK,KAAK,QAA0B,KAAK,KAAK,cAAc,qBAAqB,IAAI,GAAG;AAAA,MAC7F,GAAG;AAAA,MACH,QAAQ,KAAK,KAAK,gBAAgB;AAAA,MAClC;AAAA,IACF,CAAC;AAAA,EACH;AACF;;;ACxCO,IAAM,aAAN,MAAiB;AAAA,EAGtB,YAAY,MAAkB;AAC5B,SAAK,OAAO;AAAA,EACd;AAAA,EAEA,MAAM,OACJ,MACA,SACoB;AACpB,UAAM,WAAW,IAAI,SAAS;AAC9B,aAAS,OAAO,QAAQ,IAAI;AAC5B,WAAO,KAAK,KAAK,QAAmB,uBAAuB;AAAA,MACzD,GAAG;AAAA,MACH,QAAQ;AAAA,MACR,MAAM;AAAA,IACR,CAAC;AAAA,EACH;AAAA,EAEA,MAAM,KACJ,OAAO,GACP,WAAW,IACX,SACmC;AACnC,WAAO,KAAK,KAAK,IAA8B,gBAAgB;AAAA,MAC7D,GAAG;AAAA,MACH,OAAO,EAAE,MAAM,OAAO,IAAI,GAAG,WAAW,OAAO,QAAQ,EAAE;AAAA,IAC3D,CAAC;AAAA,EACH;AAAA,EAEA,MAAM,OAAO,IAAY,SAAyC;AAChE,UAAM,KAAK,KAAK,QAAc,KAAK,KAAK,cAAc,gBAAgB,EAAE,GAAG;AAAA,MACzE,GAAG;AAAA,MACH,QAAQ,KAAK,KAAK,gBAAgB;AAAA,IACpC,CAAC;AAAA,EACH;AAAA,EAEA,MAAM,MACJ,MACA,SACwB;AACxB,WAAO,KAAK,KAAK,KAAoB,sBAAsB,MAAM,OAAO;AAAA,EAC1E;AACF;;;ACpDO,IAAM,eAAN,MAAmB;AAAA,EAGxB,YAAY,MAAkB;AAC5B,SAAK,OAAO;AAAA,EACd;AAAA,EAEA,MAAM,KAAK,SAAkD;AAC3D,WAAO,KAAK,KAAK,IAAmB,kBAAkB,OAAO;AAAA,EAC/D;AAAA,EAEA,MAAM,IAAI,KAAa,SAA4C;AACjE,WAAO,KAAK,KAAK,IAAa,kBAAkB,GAAG,IAAI,OAAO;AAAA,EAChE;AAAA,EAEA,MAAM,IACJ,KACA,OACA,SACe;AACf,UAAM,KAAK,KAAK,QAAc,KAAK,KAAK,cAAc,kBAAkB,GAAG,GAAG;AAAA,MAC5E,GAAG;AAAA,MACH,QAAQ,KAAK,KAAK,gBAAgB;AAAA,MAClC,MAAM,EAAE,MAAM;AAAA,IAChB,CAAC;AAAA,EACH;AAAA,EAEA,MAAM,OAAO,KAAa,SAAyC;AACjE,UAAM,KAAK,KAAK,QAAc,KAAK,KAAK,cAAc,kBAAkB,GAAG,GAAG;AAAA,MAC5E,GAAG;AAAA,MACH,QAAQ,KAAK,KAAK,gBAAgB;AAAA,IACpC,CAAC;AAAA,EACH;AAAA,EAEA,MAAM,YACJ,MACA,SACe;AACf,UAAM,KAAK,KAAK,QAAc,KAAK,KAAK,cAAc,kBAAkB,EAAE,GAAG;AAAA,MAC3E,GAAG;AAAA,MACH,QAAQ,KAAK,KAAK,gBAAgB;AAAA,MAClC,MAAM,EAAE,SAAS,KAAK;AAAA,IACxB,CAAC;AAAA,EACH;AAAA,EAEA,MAAM,UACJ,SACiC;AACjC,WAAO,KAAK,KAAK,IAA4B,mBAAmB,OAAO;AAAA,EACzE;AACF;;;ACpCO,IAAM,cAAN,MAAkB;AAAA,EAGvB,YAAY,MAAkB;AAC5B,SAAK,OAAO;AAAA,EACd;AAAA,EAEA,MAAM,KACJ,OACA,SACuC;AACvC,WAAO,KAAK,KAAK,IAAkC,iBAAiB;AAAA,MAClE,GAAG;AAAA,MACH,OAAO,cAAc,KAAoD;AAAA,IAC3E,CAAC;AAAA,EACH;AAAA,EAEA,MAAM,IAAI,IAAY,SAAkD;AACtE,WAAO,KAAK,KAAK,IAAmB,iBAAiB,EAAE,IAAI,OAAO;AAAA,EACpE;AAAA,EAEA,MAAM,IAAI,IAAY,SAAyC;AAC7D,UAAM,KAAK,KAAK,KAAK,iBAAiB,EAAE,QAAQ,QAAW,OAAO;AAAA,EACpE;AAAA,EAEA,MAAM,KAAK,IAAY,MAAqB,SAAyC;AACnF,UAAM,KAAK,KAAK,KAAK,iBAAiB,EAAE,SAAS,MAAM,OAAO;AAAA,EAChE;AAAA,EAEA,MAAM,OAAO,IAAY,SAAyC;AAChE,UAAM,KAAK,KAAK,KAAK,iBAAiB,EAAE,WAAW,QAAW,OAAO;AAAA,EACvE;AAAA,EAEA,MAAM,OAAO,IAAY,SAAyC;AAChE,UAAM,KAAK,KAAK,KAAK,iBAAiB,EAAE,WAAW,QAAW,OAAO;AAAA,EACvE;AAAA,EAEA,MAAM,aACJ,IACA,MACA,SACe;AACf,UAAM,KAAK,KAAK,QAAc,KAAK,KAAK,cAAc,iBAAiB,GAAG,EAAE,SAAS,GAAG;AAAA,MACtF,GAAG;AAAA,MACH,QAAQ,KAAK,KAAK,gBAAgB;AAAA,MAClC;AAAA,IACF,CAAC;AAAA,EACH;AAAA,EAEA,MAAM,MAAM,SAAuD;AACjE,WAAO,KAAK,KAAK,IAAwB,uBAAuB,OAAO;AAAA,EACzE;AACF;;;AC7BO,IAAM,aAAN,MAAiB;AAAA,EAGtB,YAAY,MAAkB;AAC5B,SAAK,OAAO;AAAA,EACd;AAAA,EAEA,MAAM,KACJ,OACA,SAC8B;AAC9B,WAAO,KAAK,KAAK,IAAyB,gBAAgB;AAAA,MACxD,GAAG;AAAA,MACH,OAAO,cAAc,KAAoD;AAAA,IAC3E,CAAC;AAAA,EACH;AAAA,EAEA,MAAM,IAAI,IAAY,SAAyC;AAC7D,WAAO,KAAK,KAAK,IAAU,gBAAgB,EAAE,IAAI,OAAO;AAAA,EAC1D;AAAA,EAEA,MAAM,OAAO,MAAsB,SAAyC;AAC1E,WAAO,KAAK,KAAK,QAAc,KAAK,KAAK,cAAc,cAAc,GAAG;AAAA,MACtE,GAAG;AAAA,MACH,QAAQ,KAAK,KAAK,gBAAgB;AAAA,MAClC;AAAA,IACF,CAAC;AAAA,EACH;AAAA,EAEA,MAAM,OACJ,IACA,MACA,SACe;AACf,WAAO,KAAK,KAAK,QAAc,KAAK,KAAK,cAAc,gBAAgB,EAAE,GAAG;AAAA,MAC1E,GAAG;AAAA,MACH,QAAQ,KAAK,KAAK,gBAAgB;AAAA,MAClC;AAAA,IACF,CAAC;AAAA,EACH;AAAA,EAEA,MAAM,aACJ,IACA,QACA,SACe;AACf,WAAO,KAAK,KAAK,QAAc,KAAK,KAAK,cAAc,uBAAuB,EAAE,GAAG;AAAA,MACjF,GAAG;AAAA,MACH,QAAQ,KAAK,KAAK,gBAAgB;AAAA,MAClC,MAAM,EAAE,OAAO;AAAA,IACjB,CAAC;AAAA,EACH;AAAA,EAEA,MAAM,OAAO,IAAY,SAAyC;AAChE,UAAM,KAAK,KAAK,QAAc,KAAK,KAAK,cAAc,gBAAgB,EAAE,GAAG;AAAA,MACzE,GAAG;AAAA,MACH,QAAQ,KAAK,KAAK,gBAAgB;AAAA,IACpC,CAAC;AAAA,EACH;AAAA,EAEA,MAAM,QACJ,OACA,SACe;AACf,UAAM,KAAK,KAAK,QAAc,KAAK,KAAK,cAAc,gBAAgB,SAAS,GAAG;AAAA,MAChF,GAAG;AAAA,MACH,QAAQ,KAAK,KAAK,gBAAgB;AAAA,MAClC,MAAM,EAAE,MAAM;AAAA,IAChB,CAAC;AAAA,EACH;AAAA,EAEA,MAAM,MACJ,MACA,SACwB;AACxB,WAAO,KAAK,KAAK,KAAoB,sBAAsB,MAAM,OAAO;AAAA,EAC1E;AACF;;;ACjFO,IAAM,eAAN,MAAmB;AAAA,EAGxB,YAAY,MAAkB;AAC5B,SAAK,OAAO;AAAA,EACd;AAAA,EAEA,MAAM,aACJ,OAAO,GACP,WAAW,IACX,SACgD;AAChD,WAAO,KAAK,KAAK,IAA2C,2BAA2B;AAAA,MACrF,GAAG;AAAA,MACH,OAAO,EAAE,MAAM,OAAO,IAAI,GAAG,WAAW,OAAO,QAAQ,EAAE;AAAA,IAC3D,CAAC;AAAA,EACH;AAAA,EAEA,MAAM,WACJ,IACA,SACiC;AACjC,WAAO,KAAK,KAAK,IAA4B,2BAA2B,EAAE,IAAI,OAAO;AAAA,EACvF;AAAA,EAEA,MAAM,cACJ,MACA,SACiC;AACjC,WAAO,KAAK,KAAK;AAAA,MACf,KAAK,KAAK,cAAc,yBAAyB;AAAA,MACjD,EAAE,GAAG,SAAS,QAAQ,KAAK,KAAK,gBAAgB,GAAG,KAAK;AAAA,IAC1D;AAAA,EACF;AAAA,EAEA,MAAM,cACJ,IACA,MACA,SACiC;AACjC,WAAO,KAAK,KAAK;AAAA,MACf,KAAK,KAAK,cAAc,2BAA2B,EAAE;AAAA,MACrD,EAAE,GAAG,SAAS,QAAQ,KAAK,KAAK,gBAAgB,GAAG,KAAK;AAAA,IAC1D;AAAA,EACF;AAAA,EAEA,MAAM,cAAc,IAAY,SAAyC;AACvE,UAAM,KAAK,KAAK,QAAc,KAAK,KAAK,cAAc,2BAA2B,EAAE,GAAG;AAAA,MACpF,GAAG;AAAA,MACH,QAAQ,KAAK,KAAK,gBAAgB;AAAA,IACpC,CAAC;AAAA,EACH;AAAA,EAEA,MAAM,WACJ,OACA,SAC8C;AAC9C,WAAO,KAAK,KAAK,IAAyC,yBAAyB;AAAA,MACjF,GAAG;AAAA,MACH,OAAO,cAAc,KAAK;AAAA,IAC5B,CAAC;AAAA,EACH;AAAA,EAEA,MAAM,SACJ,IACA,SAC+B;AAC/B,WAAO,KAAK,KAAK,IAA0B,yBAAyB,EAAE,IAAI,OAAO;AAAA,EACnF;AAAA,EAEA,MAAM,YACJ,IACA,MACA,SACgC;AAChC,WAAO,KAAK,KAAK;AAAA,MACf,yBAAyB,EAAE;AAAA,MAC3B;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAAA,EAEA,MAAM,iBACJ,OACA,SACoD;AACpD,WAAO,KAAK,KAAK;AAAA,MACf;AAAA,MACA,EAAE,GAAG,SAAS,OAAO,cAAc,KAAK,EAAE;AAAA,IAC5C;AAAA,EACF;AAAA,EAEA,MAAM,YACJ,OACA,SAC+C;AAC/C,WAAO,KAAK,KAAK;AAAA,MACf;AAAA,MACA,EAAE,GAAG,SAAS,OAAO,cAAc,KAAK,EAAE;AAAA,IAC5C;AAAA,EACF;AACF;;;ACtIO,IAAM,eAAN,MAAmB;AAAA,EAGxB,YAAY,MAAkB;AAC5B,SAAK,OAAO;AAAA,EACd;AAAA,EAEA,MAAM,KACJ,OAAO,GACP,WAAW,IACX,SAC4C;AAC5C,WAAO,KAAK,KAAK,IAAuC,kBAAkB;AAAA,MACxE,GAAG;AAAA,MACH,OAAO,EAAE,MAAM,OAAO,IAAI,GAAG,WAAW,OAAO,QAAQ,EAAE;AAAA,IAC3D,CAAC;AAAA,EACH;AAAA,EAEA,MAAM,IAAI,IAAY,SAAuD;AAC3E,WAAO,KAAK,KAAK,IAAwB,kBAAkB,EAAE,IAAI,OAAO;AAAA,EAC1E;AAAA,EAEA,MAAM,OAAO,IAAY,SAAyC;AAChE,UAAM,KAAK,KAAK,KAAK,kBAAkB,EAAE,WAAW,CAAC,GAAG,OAAO;AAAA,EACjE;AAAA,EAEA,MAAM,QAAQ,IAAY,SAAyC;AACjE,UAAM,KAAK,KAAK,KAAK,kBAAkB,EAAE,YAAY,CAAC,GAAG,OAAO;AAAA,EAClE;AAAA,EAEA,MAAM,OAAO,IAAY,SAAyC;AAChE,UAAM,KAAK,KAAK,KAAK,kBAAkB,EAAE,WAAW,CAAC,GAAG,OAAO;AAAA,EACjE;AAAA,EAEA,MAAM,OAAO,IAAY,SAAyC;AAChE,UAAM,KAAK,KAAK,QAAc,KAAK,KAAK,cAAc,kBAAkB,EAAE,GAAG;AAAA,MAC3E,GAAG;AAAA,MACH,QAAQ,KAAK,KAAK,gBAAgB;AAAA,IACpC,CAAC;AAAA,EACH;AAAA,EAEA,MAAM,MACJ,MACA,SACwB;AACxB,WAAO,KAAK,KAAK,KAAK,wBAAwB,MAAM,OAAO;AAAA,EAC7D;AACF;;;ACvCO,IAAM,aAAN,MAAiB;AAAA,EAGtB,YAAY,MAAkB;AAC5B,SAAK,OAAO;AAAA,EACd;AAAA,EAEA,MAAM,KACJ,OACA,SACsC;AACtC,WAAO,KAAK,KAAK,IAAiC,gBAAgB;AAAA,MAChE,GAAG;AAAA,MACH,OAAO,cAAc,KAAoD;AAAA,IAC3E,CAAC;AAAA,EACH;AAAA,EAEA,MAAM,IACJ,IACA,SACuB;AACvB,WAAO,KAAK,KAAK,IAAkB,gBAAgB,EAAE,IAAI,OAAO;AAAA,EAClE;AAAA,EAEA,MAAM,OACJ,MACA,SACuB;AACvB,WAAO,KAAK,KAAK,QAAsB,KAAK,KAAK,cAAc,cAAc,GAAG;AAAA,MAC9E,GAAG;AAAA,MACH,QAAQ,KAAK,KAAK,gBAAgB;AAAA,MAClC;AAAA,IACF,CAAC;AAAA,EACH;AAAA,EAEA,MAAM,OACJ,IACA,MACA,SACuB;AACvB,WAAO,KAAK,KAAK,QAAsB,KAAK,KAAK,cAAc,gBAAgB,EAAE,GAAG;AAAA,MAClF,GAAG;AAAA,MACH,QAAQ,KAAK,KAAK,gBAAgB;AAAA,MAClC;AAAA,IACF,CAAC;AAAA,EACH;AAAA,EAEA,MAAM,OAAO,IAAY,SAAyC;AAChE,UAAM,KAAK,KAAK,QAAc,KAAK,KAAK,cAAc,gBAAgB,EAAE,GAAG;AAAA,MACzE,GAAG;AAAA,MACH,QAAQ,KAAK,KAAK,gBAAgB;AAAA,IACpC,CAAC;AAAA,EACH;AAAA,EAEA,MAAM,MACJ,MACA,SACwB;AACxB,WAAO,KAAK,KAAK,KAAoB,sBAAsB,MAAM,OAAO;AAAA,EAC1E;AACF;;;ACdO,IAAM,gBAAN,MAAoB;AAAA,EAGzB,YAAY,MAAkB;AAC5B,SAAK,OAAO;AAAA,EACd;AAAA,EAEA,MAAM,KACJ,OAAO,GACP,WAAW,IACX,SACyC;AACzC,WAAO,KAAK,KAAK,IAAoC,mBAAmB;AAAA,MACtE,GAAG;AAAA,MACH,OAAO,EAAE,MAAM,OAAO,IAAI,GAAG,WAAW,OAAO,QAAQ,EAAE;AAAA,IAC3D,CAAC;AAAA,EACH;AAAA,EAEA,MAAM,IAAI,IAAY,SAAoD;AACxE,WAAO,KAAK,KAAK,IAAqB,mBAAmB,EAAE,IAAI,OAAO;AAAA,EACxE;AAAA,EAEA,MAAM,OACJ,MACA,SAC0B;AAC1B,WAAO,KAAK,KAAK,QAAyB,KAAK,KAAK,cAAc,iBAAiB,GAAG;AAAA,MACpF,GAAG;AAAA,MACH,QAAQ,KAAK,KAAK,gBAAgB;AAAA,MAClC;AAAA,IACF,CAAC;AAAA,EACH;AAAA,EAEA,MAAM,OACJ,IACA,MACA,SAC0B;AAC1B,WAAO,KAAK,KAAK,QAAyB,KAAK,KAAK,cAAc,mBAAmB,EAAE,GAAG;AAAA,MACxF,GAAG;AAAA,MACH,QAAQ,KAAK,KAAK,gBAAgB;AAAA,MAClC;AAAA,IACF,CAAC;AAAA,EACH;AAAA,EAEA,MAAM,OAAO,IAAY,SAAyC;AAChE,UAAM,KAAK,KAAK,QAAc,KAAK,KAAK,cAAc,mBAAmB,EAAE,GAAG;AAAA,MAC5E,GAAG;AAAA,MACH,QAAQ,KAAK,KAAK,gBAAgB;AAAA,IACpC,CAAC;AAAA,EACH;AACF;;;ACpGO,IAAM,YAAN,MAAgB;AAAA,EAGrB,YAAY,MAAkB;AAC5B,SAAK,OAAO;AAAA,EACd;AAAA,EAEA,MAAM,UAAU,SAA2C;AACzD,WAAO,KAAK,KAAK,IAAY,qBAAqB,OAAO;AAAA,EAC3D;AAAA,EAEA,MAAM,WACJ,MACA,SACe;AACf,WAAO,KAAK,KAAK,QAAc,KAAK,KAAK,cAAc,mBAAmB,GAAG;AAAA,MAC3E,GAAG;AAAA,MACH,QAAQ,KAAK,KAAK,gBAAgB;AAAA,MAClC,MAAM;AAAA,IACR,CAAC;AAAA,EACH;AAAA,EAEA,MAAM,WACJ,IACA,MACA,SACe;AACf,WAAO,KAAK,KAAK,QAAc,KAAK,KAAK,cAAc,qBAAqB,EAAE,GAAG;AAAA,MAC/E,GAAG;AAAA,MACH,QAAQ,KAAK,KAAK,gBAAgB;AAAA,MAClC,MAAM;AAAA,IACR,CAAC;AAAA,EACH;AAAA,EAEA,MAAM,WAAW,IAAY,SAAyC;AACpE,UAAM,KAAK,KAAK,QAAc,KAAK,KAAK,cAAc,qBAAqB,EAAE,GAAG;AAAA,MAC9E,GAAG;AAAA,MACH,QAAQ,KAAK,KAAK,gBAAgB;AAAA,IACpC,CAAC;AAAA,EACH;AAAA,EAEA,MAAM,WACJ,MACA,SACwB;AACxB,WAAO,KAAK,KAAK,KAAK,2BAA2B,MAAM,OAAO;AAAA,EAChE;AAAA,EAEA,MAAM,eACJ,QACA,SACuB;AACvB,WAAO,KAAK,KAAK;AAAA,MACf,qBAAqB,MAAM;AAAA,MAC3B;AAAA,IACF;AAAA,EACF;AAAA,EAEA,MAAM,eACJ,QACA,aACA,SACe;AACf,UAAM,KAAK,KAAK,QAAc,KAAK,KAAK,cAAc,qBAAqB,GAAG,MAAM,cAAc,GAAG;AAAA,MACnG,GAAG;AAAA,MACH,QAAQ,KAAK,KAAK,gBAAgB;AAAA,MAClC,MAAM;AAAA,IACR,CAAC;AAAA,EACH;AACF;;;ACvDO,IAAM,sBAAN,MAA0B;AAAA,EAG/B,YAAY,MAAkB;AAC5B,SAAK,OAAO;AAAA,EACd;AAAA,EAEA,MAAM,KAAK,SAAoD;AAC7D,WAAO,KAAK,KAAK,IAAqB,0BAA0B,OAAO;AAAA,EACzE;AAAA,EAEA,MAAM,IAAI,IAAY,SAAkD;AACtE,WAAO,KAAK,KAAK;AAAA,MACf,0BAA0B,EAAE;AAAA,MAC5B;AAAA,IACF;AAAA,EACF;AAAA,EAEA,MAAM,OACJ,MACA,SACwB;AACxB,WAAO,KAAK,KAAK,QAAuB,KAAK,KAAK,cAAc,wBAAwB,GAAG;AAAA,MACzF,GAAG;AAAA,MACH,QAAQ,KAAK,KAAK,gBAAgB;AAAA,MAClC;AAAA,IACF,CAAC;AAAA,EACH;AAAA,EAEA,MAAM,OACJ,IACA,MACA,SACwB;AACxB,WAAO,KAAK,KAAK,QAAuB,KAAK,KAAK,cAAc,0BAA0B,EAAE,GAAG;AAAA,MAC7F,GAAG;AAAA,MACH,QAAQ,KAAK,KAAK,gBAAgB;AAAA,MAClC;AAAA,IACF,CAAC;AAAA,EACH;AAAA,EAEA,MAAM,OAAO,IAAY,SAAyC;AAChE,UAAM,KAAK,KAAK,QAAc,KAAK,KAAK,cAAc,0BAA0B,EAAE,GAAG;AAAA,MACnF,GAAG;AAAA,MACH,QAAQ,KAAK,KAAK,gBAAgB;AAAA,IACpC,CAAC;AAAA,EACH;AAAA,EAEA,MAAM,MACJ,MACA,SACwB;AACxB,WAAO,KAAK,KAAK;AAAA,MACf;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF;AACF;;;ACnDO,IAAM,aAAN,MAAiB;AAAA,EAGtB,YAAY,MAAkB;AAC5B,SAAK,OAAO;AAAA,EACd;AAAA,EAEA,MAAM,SAAS,SAAkD;AAC/D,WAAO,KAAK,KAAK,IAAI,gBAAgB,OAAO;AAAA,EAC9C;AAAA,EAEA,MAAM,QACJ,OACA,SACiC;AACjC,WAAO,KAAK,KAAK;AAAA,MACf,wBAAwB,KAAK;AAAA,MAC7B;AAAA,IACF;AAAA,EACF;AAAA,EAEA,MAAM,OACJ,OACA,OAAO,IACP,SACqB;AACrB,WAAO,KAAK,KAAK,IAAgB,uBAAuB;AAAA,MACtD,GAAG;AAAA,MACH,OAAO,cAAc,EAAE,OAAO,KAAK,CAAC;AAAA,IACtC,CAAC;AAAA,EACH;AACF;;;ACjDO,IAAM,YAAN,MAAgB;AAAA,EAGrB,YAAY,MAAkB;AAC5B,SAAK,OAAO;AAAA,EACd;AAAA,EAEA,MAAM,KACJ,OAAO,GACP,WAAW,IACX,SAC6B;AAC7B,WAAO,KAAK,KAAK,IAAwB,eAAe;AAAA,MACtD,GAAG;AAAA,MACH,OAAO,EAAE,MAAM,OAAO,IAAI,GAAG,WAAW,OAAO,QAAQ,EAAE;AAAA,IAC3D,CAAC;AAAA,EACH;AAAA,EAEA,MAAM,OACJ,MACA,SACc;AACd,WAAO,KAAK,KAAK,QAAa,KAAK,KAAK,cAAc,aAAa,GAAG;AAAA,MACpE,GAAG;AAAA,MACH,QAAQ,KAAK,KAAK,gBAAgB;AAAA,MAClC;AAAA,IACF,CAAC;AAAA,EACH;AAAA,EAEA,MAAM,OACJ,IACA,MACA,SACc;AACd,WAAO,KAAK,KAAK,QAAa,KAAK,KAAK,cAAc,eAAe,EAAE,GAAG;AAAA,MACxE,GAAG;AAAA,MACH,QAAQ,KAAK,KAAK,gBAAgB;AAAA,MAClC;AAAA,IACF,CAAC;AAAA,EACH;AAAA,EAEA,MAAM,OAAO,IAAY,SAAyC;AAChE,UAAM,KAAK,KAAK,QAAc,KAAK,KAAK,cAAc,eAAe,EAAE,GAAG;AAAA,MACxE,GAAG;AAAA,MACH,QAAQ,KAAK,KAAK,gBAAgB;AAAA,IACpC,CAAC;AAAA,EACH;AAAA,EAEA,MAAM,MACJ,MACA,SACwB;AACxB,WAAO,KAAK,KAAK,KAAoB,qBAAqB,MAAM,OAAO;AAAA,EACzE;AACF;;;ACzDO,IAAM,eAAN,MAAmB;AAAA,EAGxB,YAAY,MAAkB;AAC5B,SAAK,OAAO;AAAA,EACd;AAAA,EAEA,MAAM,KACJ,OAAO,GACP,WAAW,IACX,SACgC;AAChC,WAAO,KAAK,KAAK,IAA2B,kBAAkB;AAAA,MAC5D,GAAG;AAAA,MACH,OAAO,EAAE,MAAM,OAAO,IAAI,GAAG,WAAW,OAAO,QAAQ,EAAE;AAAA,IAC3D,CAAC;AAAA,EACH;AAAA,EAEA,MAAM,IAAI,IAAY,SAA2C;AAC/D,WAAO,KAAK,KAAK,IAAY,kBAAkB,EAAE,IAAI,OAAO;AAAA,EAC9D;AAAA,EAEA,MAAM,OACJ,MACA,SACiB;AACjB,WAAO,KAAK,KAAK,QAAgB,KAAK,KAAK,cAAc,gBAAgB,GAAG;AAAA,MAC1E,GAAG;AAAA,MACH,QAAQ,KAAK,KAAK,gBAAgB;AAAA,MAClC,MAAM;AAAA,IACR,CAAC;AAAA,EACH;AAAA,EAEA,MAAM,OACJ,IACA,MACA,SACiB;AACjB,WAAO,KAAK,KAAK,QAAgB,KAAK,KAAK,cAAc,kBAAkB,EAAE,GAAG;AAAA,MAC9E,GAAG;AAAA,MACH,QAAQ,KAAK,KAAK,gBAAgB;AAAA,MAClC,MAAM;AAAA,IACR,CAAC;AAAA,EACH;AAAA,EAEA,MAAM,OAAO,IAAY,SAAyC;AAChE,UAAM,KAAK,KAAK,QAAc,KAAK,KAAK,cAAc,kBAAkB,EAAE,GAAG;AAAA,MAC3E,GAAG;AAAA,MACH,QAAQ,KAAK,KAAK,gBAAgB;AAAA,IACpC,CAAC;AAAA,EACH;AAAA,EAEA,MAAM,MACJ,MACA,SACwB;AACxB,WAAO,KAAK,KAAK,KAAK,wBAAwB,MAAM,OAAO;AAAA,EAC7D;AACF;;;AC/DO,IAAM,cAAN,MAAkB;AAAA,EAGvB,YAAY,MAAkB;AAC5B,SAAK,OAAO;AAAA,EACd;AAAA,EAEA,MAAM,KAAK,SAA+C;AACxD,WAAO,KAAK,KAAK,IAAgB,WAAW,OAAO;AAAA,EACrD;AAAA,EAEA,MAAM,OACJ,MACA,SACuC;AACvC,WAAO,KAAK,KAAK,QAAsC,KAAK,KAAK,cAAc,SAAS,GAAG;AAAA,MACzF,GAAG;AAAA,MACH,QAAQ,KAAK,KAAK,gBAAgB;AAAA,MAClC,MAAM;AAAA,IACR,CAAC;AAAA,EACH;AAAA,EAEA,MAAM,OAAO,IAAY,SAAyC;AAChE,UAAM,KAAK,KAAK,QAAc,KAAK,KAAK,cAAc,WAAW,EAAE,GAAG;AAAA,MACpE,GAAG;AAAA,MACH,QAAQ,KAAK,KAAK,gBAAgB;AAAA,IACpC,CAAC;AAAA,EACH;AACF;;;ACrBO,IAAM,aAAN,MAAiB;AAAA,EAGtB,YAAY,MAAkB;AAC5B,SAAK,OAAO;AAAA,EACd;AAAA,EAEA,MAAM,KACJ,OAAO,GACP,WAAW,IACX,SACsC;AACtC,WAAO,KAAK,KAAK,IAAiC,gBAAgB;AAAA,MAChE,GAAG;AAAA,MACH,OAAO,EAAE,MAAM,OAAO,IAAI,GAAG,WAAW,OAAO,QAAQ,EAAE;AAAA,IAC3D,CAAC;AAAA,EACH;AAAA,EAEA,MAAM,IAAI,IAAY,SAAiD;AACrE,WAAO,KAAK,KAAK,IAAkB,gBAAgB,EAAE,IAAI,OAAO;AAAA,EAClE;AAAA,EAEA,MAAM,OACJ,IACA,MACA,SACuB;AACvB,WAAO,KAAK,KAAK,QAAsB,KAAK,KAAK,cAAc,gBAAgB,EAAE,GAAG;AAAA,MAClF,GAAG;AAAA,MACH,QAAQ,KAAK,KAAK,gBAAgB;AAAA,MAClC,MAAM;AAAA,IACR,CAAC;AAAA,EACH;AAAA,EAEA,MAAM,OAAO,IAAY,SAAyC;AAChE,UAAM,KAAK,KAAK,QAAc,KAAK,KAAK,cAAc,gBAAgB,EAAE,GAAG;AAAA,MACzE,GAAG;AAAA,MACH,QAAQ,KAAK,KAAK,gBAAgB;AAAA,IACpC,CAAC;AAAA,EACH;AAAA,EAEA,MAAM,MACJ,MACA,SACwB;AACxB,WAAO,KAAK,KAAK,KAAoB,sBAAsB,MAAM,OAAO;AAAA,EAC1E;AACF;;;AC9CO,IAAM,eAAN,MAAmB;AAAA,EAGxB,YAAY,MAAkB;AAC5B,SAAK,OAAO;AAAA,EACd;AAAA,EAEA,MAAM,YACJ,OACA,SACwC;AACxC,WAAO,KAAK,KAAK,IAAmC,kBAAkB;AAAA,MACpE,GAAG;AAAA,MACH,OAAO,cAAc,KAAK;AAAA,IAC5B,CAAC;AAAA,EACH;AAAA,EAEA,MAAM,iBACJ,OACA,SACmD;AACnD,WAAO,KAAK,KAAK;AAAA,MACf;AAAA,MACA,EAAE,GAAG,SAAS,OAAO,cAAc,KAAK,EAAE;AAAA,IAC5C;AAAA,EACF;AAAA,EAEA,MAAM,OACJ,MACA,SACoC;AACpC,WAAO,KAAK,KAAK;AAAA,MACf;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAAA,EAEA,MAAM,MACJ,MACA,SACoC;AACpC,WAAO,KAAK,KAAK;AAAA,MACf;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAAA,EAEA,MAAM,iBACJ,QACA,OACA,SACmD;AACnD,WAAO,KAAK,KAAK;AAAA,MACf,kBAAkB,MAAM;AAAA,MACxB,EAAE,GAAG,SAAS,OAAO,cAAc,KAAK,EAAE;AAAA,IAC5C;AAAA,EACF;AAAA,EAEA,MAAM,yBACJ,QACA,UACA,OACA,SACmD;AACnD,WAAO,KAAK,KAAK;AAAA,MACf,kBAAkB,MAAM,IAAI,QAAQ;AAAA,MACpC,EAAE,GAAG,SAAS,OAAO,cAAc,KAAK,EAAE;AAAA,IAC5C;AAAA,EACF;AAAA,EAEA,MAAM,SACJ,SACA,MACA,SACoC;AACpC,WAAO,KAAK,KAAK;AAAA,MACf,kBAAkB,OAAO;AAAA,MACzB;AAAA,MACA;AAAA,IACF;AAAA,EACF;AACF;;;AC3FO,IAAM,gBAAN,MAAoB;AAAA,EAGzB,YAAY,MAAkB;AAC5B,SAAK,OAAO;AAAA,EACd;AAAA,EAEA,MAAM,KACJ,OAAO,GACP,WAAW,IACX,SACiC;AACjC,WAAO,KAAK,KAAK,IAA4B,mBAAmB;AAAA,MAC9D,GAAG;AAAA,MACH,OAAO,EAAE,MAAM,OAAO,IAAI,GAAG,WAAW,OAAO,QAAQ,EAAE;AAAA,IAC3D,CAAC;AAAA,EACH;AAAA,EAEA,MAAM,OACJ,MACA,SACkB;AAClB,WAAO,KAAK,KAAK,QAAiB,KAAK,KAAK,cAAc,iBAAiB,GAAG;AAAA,MAC5E,GAAG;AAAA,MACH,QAAQ,KAAK,KAAK,gBAAgB;AAAA,MAClC,MAAM;AAAA,IACR,CAAC;AAAA,EACH;AAAA,EAEA,MAAM,IAAI,IAAY,SAA4C;AAChE,WAAO,KAAK,KAAK,IAAa,mBAAmB,EAAE,IAAI,OAAO;AAAA,EAChE;AAAA,EAEA,MAAM,OACJ,IACA,MACA,SACkB;AAClB,WAAO,KAAK,KAAK,QAAiB,KAAK,KAAK,cAAc,mBAAmB,EAAE,GAAG;AAAA,MAChF,GAAG;AAAA,MACH,QAAQ,KAAK,KAAK,gBAAgB;AAAA,MAClC,MAAM;AAAA,IACR,CAAC;AAAA,EACH;AAAA,EAEA,MAAM,OAAO,IAAY,SAAyC;AAChE,UAAM,KAAK,KAAK,QAAc,KAAK,KAAK,cAAc,mBAAmB,EAAE,GAAG;AAAA,MAC5E,GAAG;AAAA,MACH,QAAQ,KAAK,KAAK,gBAAgB;AAAA,IACpC,CAAC;AAAA,EACH;AAAA,EAEA,MAAM,MACJ,MACA,SACwB;AACxB,WAAO,KAAK,KAAK,KAAK,yBAAyB,MAAM,OAAO;AAAA,EAC9D;AACF;;;ACpDO,IAAM,iBAAN,MAAqB;AAAA,EAG1B,YAAY,MAAkB;AAC5B,SAAK,OAAO;AAAA,EACd;AAAA,EAEA,MAAM,KAAK,SAA+C;AACxD,WAAO,KAAK,KAAK,IAAgB,oBAAoB,OAAO;AAAA,EAC9D;AAAA,EAEA,MAAM,OACJ,MACA,SACmB;AACnB,WAAO,KAAK,KAAK,QAAkB,KAAK,KAAK,cAAc,kBAAkB,GAAG;AAAA,MAC9E,GAAG;AAAA,MACH,QAAQ,KAAK,KAAK,gBAAgB;AAAA,MAClC,MAAM;AAAA,IACR,CAAC;AAAA,EACH;AAAA,EAEA,MAAM,IAAI,IAAY,SAA6C;AACjE,WAAO,KAAK,KAAK,IAAc,oBAAoB,EAAE,IAAI,OAAO;AAAA,EAClE;AAAA,EAEA,MAAM,OAAO,IAAY,SAAyC;AAChE,UAAM,KAAK,KAAK,QAAc,KAAK,KAAK,cAAc,oBAAoB,EAAE,GAAG;AAAA,MAC7E,GAAG;AAAA,MACH,QAAQ,KAAK,KAAK,gBAAgB;AAAA,IACpC,CAAC;AAAA,EACH;AAAA,EAEA,MAAM,MACJ,IACA,SACA,SAC2B;AAC3B,WAAO,KAAK,KAAK;AAAA,MACf,oBAAoB,EAAE;AAAA,MACtB,WAAW,CAAC;AAAA,MACZ;AAAA,IACF;AAAA,EACF;AAAA,EAEA,MAAM,cACJ,OAAO,GACP,WAAW,IACX,SAC0C;AAC1C,WAAO,KAAK,KAAK;AAAA,MACf;AAAA,MACA,EAAE,GAAG,SAAS,OAAO,EAAE,MAAM,OAAO,IAAI,GAAG,WAAW,OAAO,QAAQ,EAAE,EAAE;AAAA,IAC3E;AAAA,EACF;AAAA,EAEA,MAAM,YACJ,IACA,SAC2B;AAC3B,WAAO,KAAK,KAAK;AAAA,MACf,8BAA8B,EAAE;AAAA,MAChC;AAAA,IACF;AAAA,EACF;AAAA,EAEA,MAAM,YACJ,YACA,MACA,SAC2B;AAC3B,WAAO,KAAK,KAAK;AAAA,MACf,8BAA8B,UAAU;AAAA,MACxC;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAAA,EAEA,MAAM,eACJ,YACA,SACe;AACf,UAAM,KAAK,KAAK;AAAA,MACd,8BAA8B,UAAU;AAAA,MACxC,CAAC;AAAA,MACD;AAAA,IACF;AAAA,EACF;AAAA,EAEA,MAAM,YACJ,YACA,SACoB;AACpB,WAAO,KAAK,KAAK;AAAA,MACf,8BAA8B,UAAU;AAAA,MACxC;AAAA,IACF;AAAA,EACF;AACF;;;AChFO,IAAM,QAAN,MAAY;AAAA,EA4BjB,YAAY,MAAkB;AAC5B,SAAK,OAAO;AACZ,SAAK,QAAQ,IAAI,WAAW,IAAI;AAChC,SAAK,QAAQ,IAAI,WAAW,IAAI;AAChC,SAAK,QAAQ,IAAI,WAAW,IAAI;AAChC,SAAK,WAAW,IAAI,cAAc,IAAI;AACtC,SAAK,aAAa,IAAI,gBAAgB,IAAI;AAC1C,SAAK,OAAO,IAAI,UAAU,IAAI;AAC9B,SAAK,QAAQ,IAAI,WAAW,IAAI;AAChC,SAAK,iBAAiB,IAAI,oBAAoB,IAAI;AAClD,SAAK,UAAU,IAAI,aAAa,IAAI;AACpC,SAAK,aAAa,IAAI,gBAAgB,IAAI;AAC1C,SAAK,UAAU,IAAI,aAAa,IAAI;AACpC,SAAK,eAAe,IAAI,kBAAkB,IAAI;AAC9C,SAAK,UAAU,IAAI,aAAa,IAAI;AACpC,SAAK,OAAO,IAAI,UAAU,IAAI;AAC9B,SAAK,UAAU,IAAI,aAAa,IAAI;AACpC,SAAK,WAAW,IAAI,cAAc,IAAI;AACtC,SAAK,QAAQ,IAAI,WAAW,IAAI;AAChC,SAAK,QAAQ,IAAI,WAAW,IAAI;AAChC,SAAK,SAAS,IAAI,YAAY,IAAI;AAClC,SAAK,YAAY,IAAI,eAAe,IAAI;AACxC,SAAK,QAAQ,IAAI,WAAW,IAAI;AAChC,SAAK,SAAS,IAAI,YAAY,IAAI;AAClC,SAAK,UAAU,IAAI,aAAa,IAAI;AACpC,SAAK,WAAW,IAAI,cAAc,IAAI;AAAA,EACxC;AAAA,EAEA,MAAM,WAAW,SAAgD;AAC/D,WAAO,KAAK,KAAK,IAAiB,WAAW,OAAO;AAAA,EACtD;AACF;;;AC5EO,IAAM,aAAN,MAA8C;AAAA,EAKnD,YAAY,MAAkB,MAAc,QAAQ,OAAO;AACzD,SAAK,OAAO;AACZ,SAAK,OAAO;AACZ,SAAK,SAAS,QAAQ,cAAc,IAAI,KAAK,QAAQ,IAAI;AAAA,EAC3D;AAAA,EAEA,MAAM,QACJ,OAAO,GACP,WAAW,IACX,SAC2B;AAC3B,UAAM,QAAgC;AAAA,MACpC,MAAM,OAAO,IAAI;AAAA,MACjB,WAAW,OAAO,QAAQ;AAAA,IAC5B;AACA,QAAI,SAAS,KAAM,OAAM,OAAO,QAAQ;AACxC,QAAI,SAAS,OAAQ,OAAM,SAAS,QAAQ;AAC5C,QAAI,SAAS,OAAQ,OAAM,SAAS,QAAQ;AAC5C,QAAI,SAAS,OAAQ,OAAM,SAAS,QAAQ;AAC5C,QAAI,SAAS,OAAQ,OAAM,SAAS,QAAQ;AAC5C,QAAI,SAAS,OAAQ,OAAM,SAAS,QAAQ;AAE5C,WAAO,KAAK,KAAK,IAAsB,KAAK,QAAQ,EAAE,GAAG,SAAS,MAAM,CAAC;AAAA,EAC3E;AAAA,EAEA,MAAM,YAAY,SAAqC;AACrD,UAAM,MAAW,CAAC;AAClB,QAAI,OAAO;AACX,WAAO,MAAM;AACX,YAAM,SAAS,MAAM,KAAK,QAAQ,MAAM,KAAK,OAAO;AACpD,UAAI,KAAK,GAAG,OAAO,KAAK;AACxB,UAAI,IAAI,UAAU,OAAO,MAAO;AAChC;AAAA,IACF;AACA,WAAO;AAAA,EACT;AAAA,EAEA,MAAM,OAAO,UAAkB,SAAsC;AACnE,WAAO,KAAK,KAAK,IAAO,GAAG,KAAK,MAAM,IAAI,QAAQ,IAAI,OAAO;AAAA,EAC/D;AAAA,EAEA,MAAM,iBACJ,QACA,SACY;AACZ,UAAM,SAAS,MAAM,KAAK,QAAQ,GAAG,GAAG,EAAE,GAAG,SAAS,OAAO,CAAC;AAC9D,QAAI,OAAO,MAAM,WAAW,GAAG;AAC7B,YAAM,IAAI;AAAA,QACR;AAAA,QACA,kCAAkC,MAAM;AAAA,QACxC;AAAA,MACF;AAAA,IACF;AACA,WAAO,OAAO,MAAM,CAAC;AAAA,EACvB;AAAA,EAEA,MAAM,OAAO,MAAkB,SAAqC;AAClE,WAAO,KAAK,KAAK,QAAW,KAAK,KAAK,cAAc,KAAK,MAAM,GAAG;AAAA,MAChE,GAAG;AAAA,MACH,QAAQ,KAAK,KAAK,gBAAgB;AAAA,MAClC,MAAM;AAAA,IACR,CAAC;AAAA,EACH;AAAA,EAEA,MAAM,OACJ,IACA,MACA,SACY;AACZ,WAAO,KAAK,KAAK,QAAW,KAAK,KAAK,cAAc,KAAK,QAAQ,EAAE,GAAG;AAAA,MACpE,GAAG;AAAA,MACH,QAAQ,KAAK,KAAK,gBAAgB;AAAA,MAClC,MAAM;AAAA,IACR,CAAC;AAAA,EACH;AAAA,EAEA,MAAM,OAAO,IAAY,SAAyC;AAChE,UAAM,KAAK,KAAK,QAAc,KAAK,KAAK,cAAc,KAAK,QAAQ,EAAE,GAAG;AAAA,MACtE,GAAG;AAAA,MACH,QAAQ,KAAK,KAAK,gBAAgB;AAAA,IACpC,CAAC;AAAA,EACH;AAAA,EAEA,MAAM,OACJ,IACA,MACA,YAAY,QACZ,SACY;AACZ,UAAM,WAAW,IAAI,SAAS;AAC9B,aAAS,OAAO,WAAW,IAAI;AAC/B,WAAO,KAAK,KAAK,QAAW,GAAG,KAAK,MAAM,IAAI,EAAE,IAAI;AAAA,MAClD,GAAG;AAAA,MACH,QAAQ;AAAA,MACR,MAAM;AAAA,IACR,CAAC;AAAA,EACH;AAAA;AAAA,EAIA,MAAM,cACJ,IACA,OAAO,GACP,WAAW,IACX,SACkC;AAClC,WAAO,KAAK,KAAK;AAAA,MACf,cAAc,KAAK,IAAI,IAAI,EAAE;AAAA,MAC7B,EAAE,GAAG,SAAS,OAAO,EAAE,MAAM,OAAO,IAAI,GAAG,WAAW,OAAO,QAAQ,EAAE,EAAE;AAAA,IAC3E;AAAA,EACF;AAAA,EAEA,MAAM,YACJ,IACA,YACA,SACmB;AACnB,WAAO,KAAK,KAAK;AAAA,MACf,cAAc,KAAK,IAAI,IAAI,EAAE,cAAc,UAAU;AAAA,MACrD;AAAA,IACF;AAAA,EACF;AAAA,EAEA,MAAM,gBACJ,IACA,YACA,SACY;AACZ,WAAO,KAAK,KAAK;AAAA,MACf,cAAc,KAAK,IAAI,IAAI,EAAE,cAAc,UAAU;AAAA,MACrD,CAAC;AAAA,MACD;AAAA,IACF;AAAA,EACF;AAAA,EAEA,MAAM,cACJ,IACA,MACA,MACA,SACkC;AAClC,WAAO,KAAK,KAAK;AAAA,MACf,cAAc,KAAK,IAAI,IAAI,EAAE,cAAc,IAAI,SAAS,IAAI;AAAA,MAC5D;AAAA,IACF;AAAA,EACF;AACF;;;AC/HO,IAAM,WAAN,MAAe;AAAA,EAoBpB,YACE,SACA,SACA;AACA,SAAK,YAAY,SAAS,aAAa,IAAI,eAAe;AAC1D,SAAK,OAAO,IAAI,WAAW,SAAS,KAAK,SAAS;AAClD,SAAK,OAAO,IAAI,KAAK,KAAK,MAAM,KAAK,SAAS;AAC9C,SAAK,QAAQ,IAAI,MAAM,KAAK,IAAI;AAChC,SAAK,QAAQ,IAAI,MAAM,KAAK,IAAI;AAChC,SAAK,QAAQ,IAAI,MAAM,KAAK,IAAI;AAChC,SAAK,SAAS,IAAI,OAAO,KAAK,IAAI;AAClC,SAAK,QAAQ,IAAI,MAAM,KAAK,IAAI;AAChC,SAAK,aAAa,IAAI,WAAW,KAAK,IAAI;AAC1C,SAAK,OAAO,IAAI,KAAK,KAAK,IAAI;AAC9B,SAAK,WAAW,IAAI,SAAS,KAAK,IAAI;AACtC,SAAK,QAAQ,IAAI,MAAM,KAAK,IAAI;AAChC,SAAK,UAAU,IAAI,QAAQ,KAAK,IAAI;AACpC,SAAK,SAAS,IAAI,OAAO,KAAK,KAAK,OAAO;AAC1C,SAAK,SAAS,IAAI,OAAO,KAAK,IAAI;AAClC,SAAK,UAAU,IAAI,QAAQ,KAAK,IAAI;AACpC,SAAK,WAAW,IAAI,SAAS,KAAK,IAAI;AACtC,SAAK,OAAO,IAAI,KAAK,KAAK,IAAI;AAAA,EAChC;AAAA,EAEA,MAAM,OAAsB;AAC1B,QAAI;AACF,YAAM,MAAM,MAAM,MAAM,GAAG,KAAK,KAAK,OAAO,OAAO;AACnD,YAAM,OAAQ,MAAM,IAAI,KAAK;AAC7B,UAAI,KAAK,SAAS,KAAK,KAAK,MAAM,WAAW;AAC3C,aAAK,KAAK,WAAW,KAAK,KAAK;AAAA,MACjC;AAAA,IACF,QAAQ;AAAA,IAER;AAAA,EACF;AAAA,EAEA,WAAwC,MAA6B;AACnE,WAAO,IAAI,WAAc,KAAK,MAAM,IAAI;AAAA,EAC1C;AAAA,EAEA,gBAA6C,MAA6B;AACxE,WAAO,IAAI,WAAc,KAAK,MAAM,MAAM,IAAI;AAAA,EAChD;AAAA,EAEA,YAAY,UAA+B;AACzC,SAAK,KAAK,YAAY,QAAQ;AAAA,EAChC;AAAA,EAEA,IAAI,WAAW,MAA6B;AAC1C,SAAK,KAAK,aAAa;AAAA,EACzB;AAAA,EAEA,IAAI,UAAU,MAA4B;AACxC,SAAK,KAAK,YAAY;AAAA,EACxB;AAAA,EAEA,cAAc,KAAmB;AAC/B,SAAK,KAAK,cAAc,GAAG;AAAA,EAC7B;AAAA,EAEA,oBAA0B;AACxB,SAAK,KAAK,kBAAkB;AAAA,EAC9B;AAAA,EAEA,MAAM,KAAQ,MAAc,SAAmC;AAC7D,WAAO,KAAK,KAAK,QAAW,MAAM,OAAO;AAAA,EAC3C;AAAA,EAEA,MAAM,OACJ,gBACA,SACY;AACZ,UAAM,MAAM,KAAK,WAAc,cAAc;AAC7C,UAAM,SAAS,MAAM,IAAI,QAAQ,GAAG,GAAG,OAAO;AAC9C,QAAI,OAAO,MAAM,WAAW,GAAG;AAC7B,YAAM,IAAI;AAAA,QACR;AAAA,QACA,MAAM,cAAc;AAAA,QACpB;AAAA,MACF;AAAA,IACF;AACA,WAAO,OAAO,MAAM,CAAC;AAAA,EACvB;AAAA,EAEA,gBAAwB;AACtB,UAAM,OAAO,KAAK,KAAK,QAAQ,QAAQ,WAAW,EAAE;AACpD,WAAO,GAAG,IAAI;AAAA,EAChB;AACF;;;ACxGO,IAAM,YAAY;AAAA,EACvB,MAAM;AAAA,EACN,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,OAAO;AACT;AAiFO,IAAM,WAAW;AAAA,EACtB,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AACT;AAsDO,IAAM,oBAAoB;AAAA,EAC/B,MAAM;AAAA,EACN,QAAQ;AACV;AAeO,IAAM,gBAAgB;AAAA,EAC3B,SAAS;AAAA,EACT,UAAU;AAAA,EACV,MAAM;AACR;AAGO,IAAM,cAAc;AAAA,EACzB,YAAY;AAAA,EACZ,QAAQ;AACV;AA2IO,IAAM,iBAAiB;AAAA,EAC5B,SAAS;AAAA,EACT,WAAW;AAAA,EACX,QAAQ;AACV;AAkHO,IAAM,YAAY;AAAA,EACvB,MAAM;AAAA,EACN,WAAW;AAAA,EACX,SAAS;AAAA,EACT,SAAS;AAAA,EACT,SAAS;AAAA,EACT,OAAO;AAAA,EACP,SAAS;AAAA,EACT,MAAM;AAAA,EACN,WAAW;AAAA,EACX,MAAM;AAAA,EACN,OAAO;AAAA,EACP,UAAU;AAAA,EACV,MAAM;AAAA,EACN,KAAK;AAAA,EACL,MAAM;AAAA,EACN,OAAO;AAAA,EACP,UAAU;AACZ;AAwCO,IAAM,YAAY;AAAA,EACvB,SAAS;AAAA,EACT,SAAS;AAAA,EACT,WAAW;AAAA,EACX,QAAQ;AAAA,EACR,MAAM;AACR;AA8EO,IAAM,aAAa;AAAA,EACxB,MAAM;AAAA,EACN,KAAK;AAAA,EACL,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,SAAS;AAAA,EACT,SAAS;AACX;AA6JO,IAAM,aAAa;AAAA,EACxB,OAAO;AAAA,EACP,WAAW;AACb;AAkGO,IAAM,aAAa;AAAA,EACxB,OAAO;AAAA,EACP,WAAW;AACb;AA4BO,IAAM,gBAAgB;AAAA,EAC3B,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AACT;AAmBO,IAAM,eAAe;AAAA,EAC1B,YAAY;AAAA,EACZ,aAAa;AAAA,EACb,aAAa;AAAA,EACb,cAAc;AAAA,EACd,SAAS;AAAA,EACT,UAAU;AACZ;AA6GO,IAAM,WAAW;AAAA,EACtB,MAAM;AAAA,EACN,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,UAAU;AAAA,EACV,OAAO;AACT;AA6CO,IAAM,eAAe;AAAA,EAC1B,QAAQ;AAAA,EACR,UAAU;AACZ;AAwGO,IAAM,WAAW;AAAA,EACtB,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,QAAQ;AACV;AAGO,IAAM,aAAa;AAAA,EACxB,QAAQ;AAAA,EACR,WAAW;AAAA,EACX,QAAQ;AACV;AAaO,IAAM,kBAAkB;AAAA,EAC7B,QAAQ;AAAA,EACR,OAAO;AACT;AAGO,IAAM,sBAAsB;AAAA,EACjC,OAAO;AAAA,EACP,SAAS;AAAA,EACT,cAAc;AAAA,EACd,WAAW;AAAA,EACX,aAAa;AAAA,EACb,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,SAAS;AAAA,EACT,gBAAgB;AAClB;AAYO,IAAM,eAAe;AAAA,EAC1B,QAAQ;AAAA,EACR,QAAQ;AACV;AAkBO,IAAM,eAAe;AAAA,EAC1B,UAAU;AAAA,EACV,SAAS;AAAA,EACT,QAAQ;AAAA,EACR,cAAc;AAAA,EACd,aAAa;AACf;AAuCO,IAAM,yBAAyB;AAAA,EACpC,SAAS;AAAA,EACT,WAAW;AAAA,EACX,QAAQ;AAAA,EACR,WAAW;AAAA,EACX,QAAQ;AACV;AAGO,IAAM,qBAAqB;AAAA,EAChC,SAAS;AAAA,EACT,WAAW;AAAA,EACX,QAAQ;AACV;","names":[]}