@banata-auth/sdk 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/resources/api-keys.ts","../src/resources/audit-logs.ts","../src/resources/directory-sync.ts","../src/resources/domains.ts","../src/resources/emails.ts","../src/resources/events.ts","../src/resources/organizations.ts","../src/resources/portal.ts","../src/resources/projects.ts","../src/resources/rbac.ts","../src/resources/sso.ts","../src/resources/user-management.ts","../src/resources/vault.ts","../src/resources/webhooks.ts","../src/client.ts"],"names":["createErrorFromStatus"],"mappings":"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","file":"index.cjs","sourcesContent":["import type { ApiKey } from \"@banata-auth/shared\";\nimport type { HttpClient } from \"../client\";\n\n/**\n * API Keys resource.\n * Manages API key lifecycle — creation, listing, and deletion.\n */\nexport class ApiKeys {\n\tconstructor(private readonly http: HttpClient) {}\n\n\t/**\n\t * Create a new API key.\n\t *\n\t * @returns The created key metadata **plus** the raw `key` value.\n\t * The raw key is only returned at creation time and cannot be retrieved later.\n\t */\n\tasync create(options: {\n\t\tname: string;\n\t\t/** Restrict the key to a specific organization. */\n\t\torganizationId?: string;\n\t\t/** Scoped permissions for this key. */\n\t\tpermissions?: string[];\n\t\t/** When the key should expire (ISO 8601 or Date). */\n\t\texpiresAt?: Date | string;\n\t}): Promise<ApiKey & { key: string }> {\n\t\treturn this.http.post<ApiKey & { key: string }>(\"/api/auth/api-key/create\", {\n\t\t\tname: options.name,\n\t\t\torganizationId: options.organizationId,\n\t\t\tpermissions: options.permissions,\n\t\t\texpiresAt:\n\t\t\t\toptions.expiresAt instanceof Date ? options.expiresAt.toISOString() : options.expiresAt,\n\t\t});\n\t}\n\n\t/**\n\t * List all API keys. The raw key value is **not** included.\n\t */\n\tasync list(): Promise<ApiKey[]> {\n\t\treturn this.http.get<ApiKey[]>(\"/api/auth/api-key/list\");\n\t}\n\n\t/**\n\t * Delete (revoke) an API key by its ID.\n\t */\n\tasync delete(keyId: string): Promise<void> {\n\t\treturn this.http.post<void>(\"/api/auth/api-key/delete\", { keyId });\n\t}\n}\n","import type { AuditEvent, PaginatedResult } from \"@banata-auth/shared\";\nimport type { HttpClient } from \"../client\";\n\nexport interface CreateAuditEventOptions {\n\taction: string;\n\tactorType: AuditEvent[\"actor\"][\"type\"];\n\tactorId: string;\n\tactorName?: string;\n\tactorEmail?: string;\n\ttargets?: AuditEvent[\"targets\"];\n\torganizationId?: string;\n\tipAddress?: string;\n\tuserAgent?: string;\n\tchanges?: AuditEvent[\"changes\"];\n\tidempotencyKey?: string;\n\tmetadata?: Record<string, string>;\n\toccurredAt?: Date;\n}\n\nexport interface ListAuditEventsOptions {\n\torganizationId?: string;\n\t/** Filter by a single action string. */\n\taction?: string;\n\tactorId?: string;\n\tafter?: string;\n\tbefore?: string;\n\tlimit?: number;\n}\n\nexport interface ExportAuditEventsOptions {\n\torganizationId?: string;\n\tformat: \"csv\" | \"json\";\n\t/** Start of the date range (converted to epoch ms). */\n\tstartDate?: Date;\n\t/** End of the date range (converted to epoch ms). */\n\tendDate?: Date;\n\t/** Filter by a single action string. */\n\taction?: string;\n\tlimit?: number;\n\t/** Cursor for pagination (epoch ms number from the backend). */\n\tcursor?: number;\n}\n\nexport interface ExportAuditEventsResult {\n\tdata: AuditEvent[];\n\tcount: number;\n\t/** Cursor for next page (epoch ms number). */\n\tnextCursor?: number;\n}\n\nexport class AuditLogs {\n\tconstructor(private readonly http: HttpClient) {}\n\n\tasync createEvent(options: CreateAuditEventOptions): Promise<AuditEvent> {\n\t\treturn this.http.post<AuditEvent>(\"/api/auth/banata/audit-logs/create\", {\n\t\t\taction: options.action,\n\t\t\tactorType: options.actorType,\n\t\t\tactorId: options.actorId,\n\t\t\tactorName: options.actorName,\n\t\t\tactorEmail: options.actorEmail,\n\t\t\ttargets: options.targets ? JSON.stringify(options.targets) : undefined,\n\t\t\torganizationId: options.organizationId,\n\t\t\tipAddress: options.ipAddress,\n\t\t\tuserAgent: options.userAgent,\n\t\t\tchanges: options.changes ? JSON.stringify(options.changes) : undefined,\n\t\t\tidempotencyKey: options.idempotencyKey,\n\t\t\tmetadata: options.metadata ? JSON.stringify(options.metadata) : undefined,\n\t\t\toccurredAt: options.occurredAt?.getTime(),\n\t\t});\n\t}\n\n\tasync listEvents(options?: ListAuditEventsOptions): Promise<PaginatedResult<AuditEvent>> {\n\t\treturn this.http.post<PaginatedResult<AuditEvent>>(\"/api/auth/banata/audit-logs/list\", {\n\t\t\torganizationId: options?.organizationId,\n\t\t\taction: options?.action,\n\t\t\tactorId: options?.actorId,\n\t\t\tafter: options?.after,\n\t\t\tbefore: options?.before,\n\t\t\tlimit: options?.limit,\n\t\t});\n\t}\n\n\tasync exportEvents(options: ExportAuditEventsOptions): Promise<ExportAuditEventsResult> {\n\t\treturn this.http.post<ExportAuditEventsResult>(\"/api/auth/banata/audit-logs/export\", {\n\t\t\torganizationId: options.organizationId,\n\t\t\tformat: options.format,\n\t\t\tstartDate: options.startDate?.getTime(),\n\t\t\tendDate: options.endDate?.getTime(),\n\t\t\taction: options.action,\n\t\t\tlimit: options.limit,\n\t\t\tcursor: options.cursor,\n\t\t});\n\t}\n}\n","import type {\n\tDirectory,\n\tDirectoryUser,\n\tDirectoryGroup,\n\tDirectoryProvider,\n\tPaginatedResult,\n} from \"@banata-auth/shared\";\nimport type { HttpClient } from \"../client\";\n\nexport class DirectorySync {\n\tconstructor(private readonly http: HttpClient) {}\n\n\tasync listDirectories(options?: {\n\t\torganizationId?: string;\n\t\tlimit?: number;\n\t\tbefore?: string;\n\t\tafter?: string;\n\t\tprojectId?: string;\n\t}): Promise<PaginatedResult<Directory>> {\n\t\treturn this.http.post<PaginatedResult<Directory>>(\n\t\t\t\"/api/auth/banata/scim/list-providers\",\n\t\t\tthis.http.withProjectScope(\n\t\t\t\t{\n\t\t\t\t\torganizationId: options?.organizationId,\n\t\t\t\t\tlimit: options?.limit,\n\t\t\t\t\tbefore: options?.before,\n\t\t\t\t\tafter: options?.after,\n\t\t\t\t},\n\t\t\t\toptions?.projectId,\n\t\t\t),\n\t\t);\n\t}\n\n\tasync getDirectory(directoryId: string, options?: { projectId?: string }): Promise<Directory> {\n\t\treturn this.http.post<Directory>(\n\t\t\t\"/api/auth/banata/scim/get-provider\",\n\t\t\tthis.http.withProjectScope(\n\t\t\t\t{\n\t\t\t\t\tproviderId: directoryId,\n\t\t\t\t},\n\t\t\t\toptions?.projectId,\n\t\t\t),\n\t\t);\n\t}\n\n\tasync createDirectory(options: {\n\t\torganizationId: string;\n\t\tname: string;\n\t\tprovider: DirectoryProvider;\n\t\tprojectId?: string;\n\t}): Promise<Directory & { scimConfig: { baseUrl: string; bearerToken: string } }> {\n\t\treturn this.http.post(\n\t\t\t\"/api/auth/banata/scim/register\",\n\t\t\tthis.http.withProjectScope(\n\t\t\t\t{\n\t\t\t\t\torganizationId: options.organizationId,\n\t\t\t\t\tname: options.name,\n\t\t\t\t\tprovider: options.provider,\n\t\t\t\t},\n\t\t\t\toptions.projectId,\n\t\t\t),\n\t\t);\n\t}\n\n\tasync deleteDirectory(directoryId: string, options?: { projectId?: string }): Promise<void> {\n\t\treturn this.http.post<void>(\n\t\t\t\"/api/auth/banata/scim/delete-provider\",\n\t\t\tthis.http.withProjectScope(\n\t\t\t\t{\n\t\t\t\t\tproviderId: directoryId,\n\t\t\t\t},\n\t\t\t\toptions?.projectId,\n\t\t\t),\n\t\t);\n\t}\n\n\tasync listUsers(options: {\n\t\tdirectoryId: string;\n\t\tstate?: \"active\" | \"suspended\" | \"deprovisioned\";\n\t\tlimit?: number;\n\t\tbefore?: string;\n\t\tafter?: string;\n\t\tprojectId?: string;\n\t}): Promise<PaginatedResult<DirectoryUser>> {\n\t\treturn this.http.post<PaginatedResult<DirectoryUser>>(\n\t\t\t\"/api/auth/banata/scim/list-users\",\n\t\t\tthis.http.withProjectScope(\n\t\t\t\t{\n\t\t\t\t\tproviderId: options.directoryId,\n\t\t\t\t\tstate: options.state,\n\t\t\t\t\tlimit: options.limit,\n\t\t\t\t\tbefore: options.before,\n\t\t\t\t\tafter: options.after,\n\t\t\t\t},\n\t\t\t\toptions.projectId,\n\t\t\t),\n\t\t);\n\t}\n\n\tasync getUser(directoryUserId: string, options?: { projectId?: string }): Promise<DirectoryUser> {\n\t\treturn this.http.post<DirectoryUser>(\n\t\t\t\"/api/auth/banata/scim/get-user\",\n\t\t\tthis.http.withProjectScope(\n\t\t\t\t{\n\t\t\t\t\tuserId: directoryUserId,\n\t\t\t\t},\n\t\t\t\toptions?.projectId,\n\t\t\t),\n\t\t);\n\t}\n\n\tasync listGroups(options: {\n\t\tdirectoryId: string;\n\t\tlimit?: number;\n\t\tbefore?: string;\n\t\tafter?: string;\n\t\tprojectId?: string;\n\t}): Promise<PaginatedResult<DirectoryGroup>> {\n\t\treturn this.http.post<PaginatedResult<DirectoryGroup>>(\n\t\t\t\"/api/auth/banata/scim/list-groups\",\n\t\t\tthis.http.withProjectScope(\n\t\t\t\t{\n\t\t\t\t\tproviderId: options.directoryId,\n\t\t\t\t\tlimit: options.limit,\n\t\t\t\t\tbefore: options.before,\n\t\t\t\t\tafter: options.after,\n\t\t\t\t},\n\t\t\t\toptions.projectId,\n\t\t\t),\n\t\t);\n\t}\n\n\tasync getGroup(directoryGroupId: string, options?: { projectId?: string }): Promise<DirectoryGroup> {\n\t\treturn this.http.post<DirectoryGroup>(\n\t\t\t\"/api/auth/banata/scim/get-group\",\n\t\t\tthis.http.withProjectScope(\n\t\t\t\t{\n\t\t\t\t\tgroupId: directoryGroupId,\n\t\t\t\t},\n\t\t\t\toptions?.projectId,\n\t\t\t),\n\t\t);\n\t}\n}\n","import type { DomainVerification, PaginatedResult } from \"@banata-auth/shared\";\nimport type { HttpClient } from \"../client\";\n\nexport class Domains {\n\tconstructor(private readonly http: HttpClient) {}\n\n\tasync createVerification(options: {\n\t\torganizationId: string;\n\t\tdomain: string;\n\t\tprojectId?: string;\n\t}): Promise<DomainVerification> {\n\t\treturn this.http.post<DomainVerification>(\n\t\t\t\"/api/auth/banata/domains/create\",\n\t\t\tthis.http.withProjectScope(\n\t\t\t\t{\n\t\t\t\t\torganizationId: options.organizationId,\n\t\t\t\t\tdomain: options.domain,\n\t\t\t\t},\n\t\t\t\toptions.projectId,\n\t\t\t),\n\t\t);\n\t}\n\n\tasync getVerification(verificationId: string, options?: { projectId?: string }): Promise<DomainVerification> {\n\t\treturn this.http.post<DomainVerification>(\n\t\t\t\"/api/auth/banata/domains/get\",\n\t\t\tthis.http.withProjectScope(\n\t\t\t\t{\n\t\t\t\t\tid: verificationId,\n\t\t\t\t},\n\t\t\t\toptions?.projectId,\n\t\t\t),\n\t\t);\n\t}\n\n\tasync verify(verificationId: string, options?: { projectId?: string }): Promise<DomainVerification> {\n\t\treturn this.http.post<DomainVerification>(\n\t\t\t\"/api/auth/banata/domains/verify\",\n\t\t\tthis.http.withProjectScope(\n\t\t\t\t{\n\t\t\t\t\tid: verificationId,\n\t\t\t\t},\n\t\t\t\toptions?.projectId,\n\t\t\t),\n\t\t);\n\t}\n\n\tasync list(options: {\n\t\torganizationId: string;\n\t\tlimit?: number;\n\t\tbefore?: string;\n\t\tafter?: string;\n\t\tprojectId?: string;\n\t}): Promise<PaginatedResult<DomainVerification>> {\n\t\treturn this.http.post<PaginatedResult<DomainVerification>>(\n\t\t\t\"/api/auth/banata/domains/list\",\n\t\t\tthis.http.withProjectScope(\n\t\t\t\t{\n\t\t\t\t\torganizationId: options.organizationId,\n\t\t\t\t\tlimit: options.limit,\n\t\t\t\t\tbefore: options.before,\n\t\t\t\t\tafter: options.after,\n\t\t\t\t},\n\t\t\t\toptions.projectId,\n\t\t\t),\n\t\t);\n\t}\n\n\tasync delete(verificationId: string, options?: { projectId?: string }): Promise<void> {\n\t\treturn this.http.post<void>(\n\t\t\t\"/api/auth/banata/domains/delete\",\n\t\t\tthis.http.withProjectScope(\n\t\t\t\t{\n\t\t\t\t\tid: verificationId,\n\t\t\t\t},\n\t\t\t\toptions?.projectId,\n\t\t\t),\n\t\t);\n\t}\n}\n","import type { HttpClient } from \"../client\";\n\n/**\n * Built-in email template types supported by Banata Auth.\n */\nexport type BuiltInEmailTemplateType =\n\t| \"verification\"\n\t| \"password-reset\"\n\t| \"magic-link\"\n\t| \"email-otp\"\n\t| \"invitation\"\n\t| \"welcome\";\n\n/**\n * Options for sending an email via the SDK.\n */\nexport interface SendEmailOptions {\n\t/** Recipient email address. */\n\tto: string;\n\t/**\n\t * Template to render.\n\t * Can be a built-in type (e.g. \"verification\") or a custom template slug\n\t * (e.g. \"marketing-welcome\", \"onboarding-day-3\").\n\t */\n\ttemplate: string;\n\t/**\n\t * Data/variables for the template. Shape depends on the template:\n\t *\n\t * Built-in templates:\n\t * - `verification`: `{ userName, verificationUrl, token }`\n\t * - `password-reset`: `{ userName, resetUrl, token }`\n\t * - `magic-link`: `{ email, magicLinkUrl, token }`\n\t * - `email-otp`: `{ email, otp }`\n\t * - `invitation`: `{ email, invitationId, organizationName, inviterName, acceptUrl? }`\n\t * - `welcome`: `{ userName, dashboardUrl? }`\n\t *\n\t * Custom templates: Keys match `{{variable}}` placeholders in the template blocks.\n\t */\n\tdata: Record<string, unknown>;\n}\n\n/**\n * Result of sending an email.\n */\nexport interface SendEmailResult {\n\tsuccess: boolean;\n\tmessageId?: string;\n\terror?: string;\n}\n\n/**\n * Preview of a rendered email template.\n */\nexport interface EmailPreview {\n\tsubject: string;\n\thtml: string;\n\ttext: string;\n}\n\n/**\n * Email template category.\n */\nexport type EmailTemplateCategory =\n\t| \"auth\"\n\t| \"marketing\"\n\t| \"transactional\"\n\t| \"onboarding\"\n\t| \"notification\"\n\t| \"custom\";\n\n/**\n * An email template definition (returned by the API).\n */\nexport interface EmailTemplate {\n\tid: string;\n\tname: string;\n\tslug: string;\n\tsubject: string;\n\tpreviewText?: string | null;\n\tcategory: string;\n\tdescription?: string | null;\n\tblocksJson: string;\n\tvariablesJson?: string | null;\n\tbuiltIn: boolean;\n\tbuiltInType?: string | null;\n\tcreatedAt: number;\n\tupdatedAt: number;\n}\n\n/**\n * Options for creating a new email template.\n */\nexport interface CreateEmailTemplateOptions {\n\tname: string;\n\tslug: string;\n\tsubject: string;\n\tpreviewText?: string;\n\tcategory: EmailTemplateCategory;\n\tdescription?: string;\n\t/** JSON-serialized EmailBlock[] array. */\n\tblocksJson: string;\n\t/** JSON-serialized EmailTemplateVariable[] array. */\n\tvariablesJson?: string;\n}\n\n/**\n * Options for updating an existing email template.\n */\nexport interface UpdateEmailTemplateOptions {\n\tname?: string;\n\tslug?: string;\n\tsubject?: string;\n\tpreviewText?: string;\n\tcategory?: EmailTemplateCategory;\n\tdescription?: string;\n\tblocksJson?: string;\n\tvariablesJson?: string;\n}\n\n/**\n * Emails resource.\n * Send transactional emails, manage custom email templates, and preview\n * templates using the configured email provider.\n *\n * @example\n * ```ts\n * const banataAuth = new BanataAuth({ apiKey: \"sk_live_...\" });\n *\n * // Send a built-in welcome email\n * await banataAuth.emails.send({\n * to: \"user@example.com\",\n * template: \"welcome\",\n * data: { userName: \"Jane Doe\", dashboardUrl: \"https://app.example.com\" },\n * });\n *\n * // Send a custom template\n * await banataAuth.emails.send({\n * to: \"user@example.com\",\n * template: \"marketing-welcome\",\n * data: { userName: \"Jane\", promoCode: \"WELCOME10\" },\n * });\n *\n * // List all templates\n * const templates = await banataAuth.emails.templates.list();\n *\n * // Create a custom template\n * await banataAuth.emails.templates.create({\n * name: \"Marketing Welcome\",\n * slug: \"marketing-welcome\",\n * subject: \"Welcome, {{userName}}!\",\n * category: \"marketing\",\n * blocksJson: JSON.stringify([...blocks]),\n * });\n * ```\n */\nexport class Emails {\n\tpublic readonly templates: EmailTemplates;\n\n\tconstructor(private readonly http: HttpClient) {\n\t\tthis.templates = new EmailTemplates(http);\n\t}\n\n\t/**\n\t * Send a transactional email using a built-in or custom template.\n\t *\n\t * The email is rendered using the configured branding (colors, logo,\n\t * app name) and sent via the active email provider configured in the\n\t * dashboard.\n\t */\n\tasync send(options: SendEmailOptions): Promise<SendEmailResult> {\n\t\treturn this.http.post<SendEmailResult>(\"/api/auth/banata/emails/send\", {\n\t\t\tto: options.to,\n\t\t\ttemplate: options.template,\n\t\t\tdata: options.data,\n\t\t});\n\t}\n\n\t/**\n\t * Preview a rendered email template.\n\t *\n\t * Returns the subject, HTML, and plain text of the template with\n\t * the current branding applied. Uses sample data if none provided.\n\t */\n\tasync preview(template: string, data?: Record<string, unknown>): Promise<EmailPreview> {\n\t\treturn this.http.post<EmailPreview>(\"/api/auth/banata/emails/preview\", {\n\t\t\ttemplate,\n\t\t\tdata,\n\t\t});\n\t}\n\n\t/**\n\t * Send a test email to verify the email provider configuration.\n\t *\n\t * Uses the \"welcome\" template by default with sample data.\n\t */\n\tasync sendTest(to: string, template?: string): Promise<{ success: boolean; message?: string }> {\n\t\treturn this.http.post<{ success: boolean; message?: string }>(\"/api/auth/banata/test-email\", {\n\t\t\tto,\n\t\t\ttemplate,\n\t\t});\n\t}\n}\n\n/**\n * Email templates sub-resource for CRUD operations on custom email templates.\n */\nclass EmailTemplates {\n\tconstructor(private readonly http: HttpClient) {}\n\n\t/**\n\t * List all email templates, optionally filtered by category.\n\t */\n\tasync list(category?: EmailTemplateCategory): Promise<EmailTemplate[]> {\n\t\tconst payload = await this.http.post<{ templates: EmailTemplate[] }>(\n\t\t\t\"/api/auth/banata/emails/templates/list\",\n\t\t\t{ category },\n\t\t);\n\t\treturn payload.templates ?? [];\n\t}\n\n\t/**\n\t * Get a single email template by ID or slug.\n\t */\n\tasync get(idOrSlug: string): Promise<EmailTemplate | null> {\n\t\tconst payload = await this.http.post<{ template: EmailTemplate | null }>(\n\t\t\t\"/api/auth/banata/emails/templates/get\",\n\t\t\t{ idOrSlug },\n\t\t);\n\t\treturn payload.template ?? null;\n\t}\n\n\t/**\n\t * Create a new custom email template.\n\t */\n\tasync create(options: CreateEmailTemplateOptions): Promise<EmailTemplate> {\n\t\tconst payload = await this.http.post<{\n\t\t\tsuccess: boolean;\n\t\t\ttemplate: EmailTemplate;\n\t\t\terror?: string;\n\t\t}>(\"/api/auth/banata/emails/templates/create\", options);\n\t\tif (!payload.success) {\n\t\t\tthrow new Error(payload.error ?? \"Failed to create template\");\n\t\t}\n\t\treturn payload.template;\n\t}\n\n\t/**\n\t * Update an existing email template.\n\t */\n\tasync update(id: string, options: UpdateEmailTemplateOptions): Promise<EmailTemplate> {\n\t\tconst payload = await this.http.post<{\n\t\t\tsuccess: boolean;\n\t\t\ttemplate: EmailTemplate;\n\t\t\terror?: string;\n\t\t}>(\"/api/auth/banata/emails/templates/update\", { id, ...options });\n\t\tif (!payload.success) {\n\t\t\tthrow new Error(payload.error ?? \"Failed to update template\");\n\t\t}\n\t\treturn payload.template;\n\t}\n\n\t/**\n\t * Delete a custom email template.\n\t * Built-in templates cannot be deleted.\n\t */\n\tasync delete(id: string): Promise<void> {\n\t\tconst payload = await this.http.post<{ success: boolean; error?: string }>(\n\t\t\t\"/api/auth/banata/emails/templates/delete\",\n\t\t\t{ id },\n\t\t);\n\t\tif (!payload.success) {\n\t\t\tthrow new Error(payload.error ?? \"Failed to delete template\");\n\t\t}\n\t}\n}\n","import type { HttpClient } from \"../client\";\n\nexport interface ListEventsOptions {\n\t/** Filter by one or more event types (action strings). */\n\teventTypes?: string[];\n\t/** Cursor for forward pagination. */\n\tafter?: string;\n\t/** Maximum number of events to return. Default: 50, max: 200. */\n\tlimit?: number;\n\t/** Filter by organization. */\n\torganizationId?: string;\n\t/** Range start date. */\n\trangeStart?: Date;\n\t/** Range end date. */\n\trangeEnd?: Date;\n}\n\nexport interface EventPayload {\n\tid: string;\n\ttype: string;\n\tdata: Record<string, unknown>;\n\tcreatedAt: number;\n}\n\nexport interface ListEventsResult {\n\tdata: EventPayload[];\n\tcursor?: string;\n\thasMore: boolean;\n}\n\n/**\n * Events resource.\n *\n * Provides a pollable, unified event stream sourced from audit log records.\n * Use this as an alternative to webhooks for consuming auth events.\n */\nexport class Events {\n\tconstructor(private readonly http: HttpClient) {}\n\n\t/**\n\t * List events with optional filters and cursor-based pagination.\n\t */\n\tasync listEvents(options?: ListEventsOptions): Promise<ListEventsResult> {\n\t\treturn this.http.post<ListEventsResult>(\"/api/auth/banata/events/list\", {\n\t\t\teventTypes: options?.eventTypes,\n\t\t\tafter: options?.after,\n\t\t\tlimit: options?.limit,\n\t\t\torganizationId: options?.organizationId,\n\t\t\trangeStart: options?.rangeStart?.getTime(),\n\t\t\trangeEnd: options?.rangeEnd?.getTime(),\n\t\t});\n\t}\n}\n","import type {\n\tOrganization,\n\tOrganizationInvitation,\n\tOrganizationMember,\n\tPaginatedResult,\n} from \"@banata-auth/shared\";\nimport type { HttpClient } from \"../client\";\n\nexport interface ListOrganizationsOptions {\n\tlimit?: number;\n\tbefore?: string;\n\tafter?: string;\n\torder?: \"asc\" | \"desc\";\n}\n\nexport interface CreateOrganizationOptions {\n\tname: string;\n\tslug?: string;\n\tlogo?: string;\n\tmetadata?: Record<string, unknown>;\n\trequireMfa?: boolean;\n\tallowedEmailDomains?: string[];\n\tmaxMembers?: number;\n}\n\nexport interface UpdateOrganizationOptions {\n\torganizationId: string;\n\tname?: string;\n\tslug?: string;\n\tlogo?: string | null;\n\tmetadata?: Record<string, unknown>;\n\trequireMfa?: boolean;\n\tssoEnforced?: boolean;\n\tallowedEmailDomains?: string[] | null;\n\tmaxMembers?: number | null;\n}\n\nexport interface ListMembersOptions {\n\torganizationId: string;\n\trole?: string;\n\tlimit?: number;\n\tbefore?: string;\n\tafter?: string;\n}\n\nexport interface SendInvitationOptions {\n\torganizationId: string;\n\temail: string;\n\trole: string;\n}\n\n/**\n * Organizations resource.\n * Handles organization CRUD, member management, and invitations.\n */\nexport class Organizations {\n\tconstructor(private readonly http: HttpClient) {}\n\n\tasync listOrganizations(\n\t\toptions?: ListOrganizationsOptions,\n\t): Promise<PaginatedResult<Organization>> {\n\t\treturn this.http.post<PaginatedResult<Organization>>(\"/api/auth/organization/list\", {\n\t\t\tlimit: options?.limit,\n\t\t\tbefore: options?.before,\n\t\t\tafter: options?.after,\n\t\t\torder: options?.order,\n\t\t});\n\t}\n\n\tasync getOrganization(organizationId: string): Promise<Organization> {\n\t\treturn this.http.post<Organization>(\"/api/auth/organization/get-full-organization\", {\n\t\t\torganizationId,\n\t\t});\n\t}\n\n\tasync createOrganization(options: CreateOrganizationOptions): Promise<Organization> {\n\t\treturn this.http.post<Organization>(\"/api/auth/organization/create\", options);\n\t}\n\n\tasync updateOrganization(options: UpdateOrganizationOptions): Promise<Organization> {\n\t\tconst { organizationId, ...data } = options;\n\t\treturn this.http.post<Organization>(\"/api/auth/organization/update\", {\n\t\t\torganizationId,\n\t\t\tdata,\n\t\t});\n\t}\n\n\tasync deleteOrganization(organizationId: string): Promise<void> {\n\t\treturn this.http.post<void>(\"/api/auth/organization/delete\", {\n\t\t\torganizationId,\n\t\t});\n\t}\n\n\t// ─── Members ───────────────────────────────────────────────────────────\n\n\tasync listMembers(options: ListMembersOptions): Promise<PaginatedResult<OrganizationMember>> {\n\t\treturn this.http.post<PaginatedResult<OrganizationMember>>(\n\t\t\t\"/api/auth/organization/list-members\",\n\t\t\t{\n\t\t\t\torganizationId: options.organizationId,\n\t\t\t\trole: options.role,\n\t\t\t\tlimit: options.limit,\n\t\t\t\tbefore: options.before,\n\t\t\t\tafter: options.after,\n\t\t\t},\n\t\t);\n\t}\n\n\tasync removeMember(options: {\n\t\torganizationId: string;\n\t\tmemberIdOrUserId: string;\n\t}): Promise<void> {\n\t\treturn this.http.post<void>(\"/api/auth/organization/remove-member\", options);\n\t}\n\n\tasync updateMemberRole(options: {\n\t\torganizationId: string;\n\t\tmemberIdOrUserId: string;\n\t\trole: string;\n\t}): Promise<OrganizationMember> {\n\t\treturn this.http.post<OrganizationMember>(\"/api/auth/organization/update-member-role\", options);\n\t}\n\n\t// ─── Invitations ───────────────────────────────────────────────────────\n\n\tasync sendInvitation(options: SendInvitationOptions): Promise<OrganizationInvitation> {\n\t\treturn this.http.post<OrganizationInvitation>(\"/api/auth/organization/invite-member\", options);\n\t}\n\n\tasync revokeInvitation(invitationId: string): Promise<void> {\n\t\treturn this.http.post<void>(\"/api/auth/organization/cancel-invitation\", {\n\t\t\tinvitationId,\n\t\t});\n\t}\n\n\tasync listInvitations(options: {\n\t\torganizationId: string;\n\t\tstatus?: string;\n\t\tlimit?: number;\n\t\tbefore?: string;\n\t\tafter?: string;\n\t}): Promise<PaginatedResult<OrganizationInvitation>> {\n\t\treturn this.http.post<PaginatedResult<OrganizationInvitation>>(\n\t\t\t\"/api/auth/organization/list-invitations\",\n\t\t\t{\n\t\t\t\torganizationId: options.organizationId,\n\t\t\t\tstatus: options.status,\n\t\t\t\tlimit: options.limit,\n\t\t\t\tbefore: options.before,\n\t\t\t\tafter: options.after,\n\t\t\t},\n\t\t);\n\t}\n}\n","import type { HttpClient } from \"../client\";\n\nexport type PortalIntent =\n\t| \"sso\"\n\t| \"dsync\"\n\t| \"domain_verification\"\n\t| \"audit_logs\"\n\t| \"log_streams\"\n\t| \"users\";\n\nexport interface GeneratePortalLinkOptions {\n\t/** The organization to generate a portal link for. */\n\torganizationId: string;\n\t/** The portal section to open. */\n\tintent: PortalIntent;\n\t/** URL to redirect the admin back to after completing the portal flow. */\n\treturnUrl?: string;\n\t/** Session lifetime in seconds. Default: 300 (5 minutes). Max: 3600 (1 hour). */\n\texpiresIn?: number;\n}\n\nexport interface PortalLinkResult {\n\t/** The generated portal URL with embedded session token. */\n\tlink: string;\n\t/** The portal session ID. */\n\tsessionId: string;\n\t/** The portal intent. */\n\tintent: PortalIntent;\n\t/** The organization ID. */\n\torganizationId: string;\n\t/** ISO 8601 expiration timestamp. */\n\texpiresAt: string;\n}\n\n/**\n * Portal resource.\n *\n * Generates short-lived admin portal links for organization IT admins.\n * Each link grants access to a specific portal section (SSO config,\n * Directory Sync, Audit Logs, etc.) within an organization context.\n */\nexport class Portal {\n\tconstructor(private readonly http: HttpClient) {}\n\n\t/**\n\t * Generate a short-lived admin portal link for an organization's IT admin.\n\t *\n\t * @param options - Portal link generation options\n\t * @returns The generated portal link and session metadata\n\t */\n\tasync generateLink(options: GeneratePortalLinkOptions): Promise<PortalLinkResult> {\n\t\treturn this.http.post<PortalLinkResult>(\"/banata/portal/generate-link\", options);\n\t}\n}\n","import type { HttpClient } from \"../client\";\n\n// ---------------------------------------------------------------------------\n// Types\n// ---------------------------------------------------------------------------\n\nexport interface SdkProject {\n\tid: string;\n\tname: string;\n\tslug: string;\n\tdescription?: string;\n\tlogoUrl?: string;\n\townerId: string;\n\tcreatedAt: number;\n\tupdatedAt: number;\n}\n\nexport interface CreateProjectOptions {\n\tname: string;\n\tslug: string;\n\tdescription?: string;\n\tlogoUrl?: string;\n}\n\nexport interface UpdateProjectOptions {\n\tname?: string;\n\tslug?: string;\n\tdescription?: string;\n\tlogoUrl?: string;\n}\n\n// ---------------------------------------------------------------------------\n// Projects Resource\n// ---------------------------------------------------------------------------\n\n/**\n * Manage projects.\n *\n * Each project is a fully isolated auth tenant with its own users, sessions,\n * organizations, branding, email templates, API keys, webhooks, etc.\n */\nexport class Projects {\n\tconstructor(private readonly http: HttpClient) {}\n\n\t/**\n\t * List all projects.\n\t */\n\tasync listProjects(): Promise<SdkProject[]> {\n\t\tconst res = await this.http.post<{ projects: SdkProject[] }>(\"/api/auth/banata/projects/list\");\n\t\treturn res.projects;\n\t}\n\n\t/**\n\t * Get a single project by ID.\n\t */\n\tasync getProject(id: string): Promise<SdkProject | null> {\n\t\tconst res = await this.http.post<{ project: SdkProject | null }>(\n\t\t\t\"/api/auth/banata/projects/get\",\n\t\t\t{ id },\n\t\t);\n\t\treturn res.project;\n\t}\n\n\t/**\n\t * Create a new project.\n\t * Returns the project and seeds RBAC permissions + super_admin role.\n\t */\n\tasync createProject(data: CreateProjectOptions): Promise<{\n\t\tsuccess: boolean;\n\t\tproject?: SdkProject;\n\t\terror?: string;\n\t}> {\n\t\treturn this.http.post(\"/api/auth/banata/projects/create\", data);\n\t}\n\n\t/**\n\t * Update a project's metadata.\n\t */\n\tasync updateProject(\n\t\tid: string,\n\t\tupdate: UpdateProjectOptions,\n\t): Promise<{ success: boolean; project?: SdkProject; error?: string }> {\n\t\treturn this.http.post(\"/api/auth/banata/projects/update\", { id, ...update });\n\t}\n\n\t/**\n\t * Delete a project.\n\t *\n\t * Note: This deletes the project record only. Project-scoped data (users,\n\t * organizations, etc.) is not automatically cascade-deleted. Use the\n\t * `clearAllData` migration for a full reset.\n\t */\n\tasync deleteProject(id: string): Promise<{ success: boolean }> {\n\t\treturn this.http.post(\"/api/auth/banata/projects/delete\", { id });\n\t}\n\n\t/**\n\t * Ensure at least one project exists. If none exist, creates a\n\t * \"Default Project\" with seeded RBAC permissions.\n\t */\n\tasync ensureDefaultProject(): Promise<{\n\t\tcreated: boolean;\n\t\tproject: SdkProject | null;\n\t}> {\n\t\treturn this.http.post(\"/api/auth/banata/projects/ensure-default\");\n\t}\n}\n","import type { HttpClient } from \"../client\";\n\nexport interface RoleDefinition {\n\tid: string;\n\tname: string;\n\tslug: string;\n\tdescription: string;\n\tpermissions: string[];\n\tisDefault: boolean;\n\tcreatedAt: string;\n}\n\nexport interface PermissionDefinition {\n\tid: string;\n\tname: string;\n\tslug: string;\n\tdescription: string;\n\tcreatedAt: string;\n}\n\nexport interface CreateRoleOptions {\n\tname: string;\n\tslug: string;\n\tdescription?: string;\n}\n\nexport interface CreatePermissionOptions {\n\tname: string;\n\tslug: string;\n\tdescription?: string;\n}\n\nexport interface AssignRoleOptions {\n\torganizationId: string;\n\tuserId: string;\n\trole: string;\n}\n\nexport interface PermissionCheck {\n\tresource: string;\n\taction: string;\n}\n\nexport interface CheckPermissionOptions {\n\tprojectId: string;\n\tpermission: string | PermissionCheck;\n}\n\nexport interface CheckPermissionsOptions {\n\tprojectId: string;\n\tpermissions: Array<string | PermissionCheck>;\n\toperator?: \"all\" | \"any\";\n}\n\nfunction normalizePermission(permission: string | PermissionCheck): string {\n\tif (typeof permission === \"string\") return permission;\n\treturn `${permission.resource}.${permission.action}`;\n}\n\nexport class Rbac {\n\tconstructor(private readonly http: HttpClient) {}\n\n\tasync listRoles(): Promise<RoleDefinition[]> {\n\t\tconst result = await this.http.post<{ roles: RoleDefinition[] }>(\n\t\t\t\"/api/auth/banata/config/roles/list\",\n\t\t\t{},\n\t\t);\n\t\treturn result.roles ?? [];\n\t}\n\n\tasync createRole(options: CreateRoleOptions): Promise<RoleDefinition> {\n\t\tconst result = await this.http.post<{ role: RoleDefinition }>(\n\t\t\t\"/api/auth/banata/config/roles/create\",\n\t\t\toptions,\n\t\t);\n\t\treturn result.role;\n\t}\n\n\tasync deleteRole(id: string): Promise<void> {\n\t\tawait this.http.post<void>(\"/api/auth/banata/config/roles/delete\", { id });\n\t}\n\n\tasync listPermissions(): Promise<PermissionDefinition[]> {\n\t\tconst result = await this.http.post<{ permissions: PermissionDefinition[] }>(\n\t\t\t\"/api/auth/banata/config/permissions/list\",\n\t\t\t{},\n\t\t);\n\t\treturn result.permissions ?? [];\n\t}\n\n\tasync createPermission(options: CreatePermissionOptions): Promise<PermissionDefinition> {\n\t\tconst result = await this.http.post<{ permission: PermissionDefinition }>(\n\t\t\t\"/api/auth/banata/config/permissions/create\",\n\t\t\toptions,\n\t\t);\n\t\treturn result.permission;\n\t}\n\n\tasync deletePermission(id: string): Promise<void> {\n\t\tawait this.http.post<void>(\"/api/auth/banata/config/permissions/delete\", { id });\n\t}\n\n\tasync assignRole(options: AssignRoleOptions): Promise<void> {\n\t\tawait this.http.post<void>(\"/api/auth/organization/update-member-role\", {\n\t\t\tmemberIdOrUserId: options.userId,\n\t\t\trole: options.role,\n\t\t\torganizationId: options.organizationId,\n\t\t});\n\t}\n\n\tasync checkPermission(options: CheckPermissionOptions): Promise<{ allowed: boolean }> {\n\t\treturn this.http.post<{ allowed: boolean }>(\"/api/auth/banata/rbac/check-permission\", {\n\t\t\tprojectId: options.projectId,\n\t\t\tpermission: normalizePermission(options.permission),\n\t\t});\n\t}\n\n\tasync checkPermissions(options: CheckPermissionsOptions): Promise<{ allowed: boolean }> {\n\t\treturn this.http.post<{ allowed: boolean }>(\"/api/auth/banata/rbac/check-permissions\", {\n\t\t\tprojectId: options.projectId,\n\t\t\tpermissions: options.permissions.map(normalizePermission),\n\t\t\toperator: options.operator ?? \"all\",\n\t\t});\n\t}\n\n\tasync getMyPermissions(projectId: string): Promise<string[]> {\n\t\tconst result = await this.http.post<{ permissions: string[] }>(\n\t\t\t\"/api/auth/banata/rbac/my-permissions\",\n\t\t\t{\n\t\t\t\tprojectId,\n\t\t\t},\n\t\t);\n\t\treturn result.permissions ?? [];\n\t}\n\n\tasync hasPermission(projectId: string, permission: string | PermissionCheck): Promise<boolean> {\n\t\tconst result = await this.checkPermission({\n\t\t\tprojectId,\n\t\t\tpermission,\n\t\t});\n\t\treturn result.allowed;\n\t}\n\n\tasync requirePermission(projectId: string, permission: string | PermissionCheck): Promise<void> {\n\t\tconst allowed = await this.hasPermission(projectId, permission);\n\t\tif (!allowed) {\n\t\t\tthrow new Error(`Missing permission: ${normalizePermission(permission)}`);\n\t\t}\n\t}\n\n\tasync revokeRole(options: {\n\t\torganizationId: string;\n\t\tuserId: string;\n\t\tfallbackRole?: string;\n\t}): Promise<void> {\n\t\tawait this.http.post<void>(\"/api/auth/organization/update-member-role\", {\n\t\t\tmemberIdOrUserId: options.userId,\n\t\t\trole: options.fallbackRole ?? \"super_admin\",\n\t\t\torganizationId: options.organizationId,\n\t\t});\n\t}\n}\n","import type { SsoConnection, SsoProfile, PaginatedResult } from \"@banata-auth/shared\";\nimport type { HttpClient } from \"../client\";\n\nexport interface GetAuthorizationUrlOptions {\n\tconnectionId?: string;\n\torganizationId?: string;\n\tprovider?: string;\n\tloginHint?: string;\n\tredirectUri: string;\n\tstate?: string;\n\tdomainHint?: string;\n\tprojectId?: string;\n}\n\nexport interface GetProfileAndTokenOptions {\n\tcode: string;\n}\n\nexport interface CreateConnectionOptions {\n\torganizationId: string;\n\ttype: \"saml\" | \"oidc\";\n\tname: string;\n\tdomains: string[];\n\tprojectId?: string;\n\tsamlConfig?: {\n\t\tidpEntityId: string;\n\t\tidpSsoUrl: string;\n\t\tidpCertificate: string;\n\t\tnameIdFormat?: string;\n\t\tsignRequest?: boolean;\n\t\tallowIdpInitiated?: boolean;\n\t\tattributeMapping?: Record<string, string>;\n\t};\n\toidcConfig?: {\n\t\tissuer: string;\n\t\tclientId: string;\n\t\tclientSecret: string;\n\t\tscopes?: string[];\n\t};\n}\n\nexport interface ListConnectionsOptions {\n\torganizationId?: string;\n\tconnectionType?: \"saml\" | \"oidc\";\n\tlimit?: number;\n\tbefore?: string;\n\tafter?: string;\n\tprojectId?: string;\n}\n\n/**\n * SSO resource.\n * Handles SSO connection management and authentication flows.\n */\nexport class SSO {\n\tconstructor(private readonly http: HttpClient) {}\n\n\t/**\n\t * Get the authorization URL to redirect the user to for SSO.\n\t * Supports routing by organization ID or callback URL.\n\t */\n\tasync getAuthorizationUrl(\n\t\toptions: GetAuthorizationUrlOptions,\n\t): Promise<{ url: string }> {\n\t\treturn this.http.post<{ url: string }>(\"/api/auth/sign-in/sso\", {\n\t\t\tproviderId: options.connectionId,\n\t\t\torganizationId: options.organizationId,\n\t\t\tissuer: options.provider,\n\t\t\tloginHint: options.loginHint,\n\t\t\tdomain: options.domainHint,\n\t\t\tcallbackURL: options.redirectUri,\n\t\t});\n\t}\n\n\t/**\n\t * @deprecated Better Auth handles SSO token exchange internally via callback.\n\t * This method is kept for backward compatibility but will throw.\n\t */\n\tasync getProfileAndToken(\n\t\t_options: GetProfileAndTokenOptions,\n\t): Promise<{ profile: SsoProfile; accessToken: string }> {\n\t\tthrow new Error(\n\t\t\t\"getProfileAndToken() is not supported with Better Auth. \" +\n\t\t\t\"SSO token exchange is handled internally via the callback URL.\",\n\t\t);\n\t}\n\n\t// ─── Connection Management ─────────────────────────────────────────────\n\n\tasync listConnections(\n\t\toptions?: ListConnectionsOptions,\n\t): Promise<PaginatedResult<SsoConnection>> {\n\t\treturn this.http.post<PaginatedResult<SsoConnection>>(\n\t\t\t\"/api/auth/banata/sso/list-providers\",\n\t\t\tthis.http.withProjectScope(\n\t\t\t\t{\n\t\t\t\t\torganizationId: options?.organizationId,\n\t\t\t\t\tconnectionType: options?.connectionType,\n\t\t\t\t\tlimit: options?.limit,\n\t\t\t\t\tbefore: options?.before,\n\t\t\t\t\tafter: options?.after,\n\t\t\t\t},\n\t\t\t\toptions?.projectId,\n\t\t\t),\n\t\t);\n\t}\n\n\tasync getConnection(connectionId: string, options?: { projectId?: string }): Promise<SsoConnection> {\n\t\treturn this.http.post<SsoConnection>(\n\t\t\t\"/api/auth/banata/sso/get-provider\",\n\t\t\tthis.http.withProjectScope(\n\t\t\t\t{\n\t\t\t\t\tproviderId: connectionId,\n\t\t\t\t},\n\t\t\t\toptions?.projectId,\n\t\t\t),\n\t\t);\n\t}\n\n\tasync createConnection(options: CreateConnectionOptions): Promise<SsoConnection> {\n\t\treturn this.http.post<SsoConnection>(\n\t\t\t\"/api/auth/banata/sso/register\",\n\t\t\tthis.http.withProjectScope(\n\t\t\t\t{\n\t\t\t\t\torganizationId: options.organizationId,\n\t\t\t\t\ttype: options.type,\n\t\t\t\t\tdomain: options.domains?.[0],\n\t\t\t\t\tname: options.name,\n\t\t\t\t\tdomains: options.domains,\n\t\t\t\t\tsamlConfig: options.samlConfig,\n\t\t\t\t\toidcConfig: options.oidcConfig,\n\t\t\t\t},\n\t\t\t\toptions.projectId,\n\t\t\t),\n\t\t);\n\t}\n\n\tasync updateConnection(options: {\n\t\tconnectionId: string;\n\t\tname?: string;\n\t\tdomains?: string[];\n\t\tsamlConfig?: Partial<CreateConnectionOptions[\"samlConfig\"]>;\n\t\toidcConfig?: Partial<CreateConnectionOptions[\"oidcConfig\"]>;\n\t\tprojectId?: string;\n\t}): Promise<SsoConnection> {\n\t\tconst { connectionId, projectId, ...body } = options;\n\t\treturn this.http.post<SsoConnection>(\n\t\t\t\"/api/auth/banata/sso/update-provider\",\n\t\t\tthis.http.withProjectScope(\n\t\t\t\t{\n\t\t\t\t\tproviderId: connectionId,\n\t\t\t\t\t...body,\n\t\t\t\t},\n\t\t\t\tprojectId,\n\t\t\t),\n\t\t);\n\t}\n\n\tasync deleteConnection(connectionId: string, options?: { projectId?: string }): Promise<void> {\n\t\treturn this.http.post<void>(\n\t\t\t\"/api/auth/banata/sso/delete-provider\",\n\t\t\tthis.http.withProjectScope(\n\t\t\t\t{\n\t\t\t\t\tproviderId: connectionId,\n\t\t\t\t},\n\t\t\t\toptions?.projectId,\n\t\t\t),\n\t\t);\n\t}\n\n\tasync activateConnection(connectionId: string, options?: { projectId?: string }): Promise<SsoConnection> {\n\t\treturn this.http.post<SsoConnection>(\n\t\t\t\"/api/auth/banata/sso/update-provider\",\n\t\t\tthis.http.withProjectScope(\n\t\t\t\t{\n\t\t\t\t\tproviderId: connectionId,\n\t\t\t\t\tactive: true,\n\t\t\t\t},\n\t\t\t\toptions?.projectId,\n\t\t\t),\n\t\t);\n\t}\n\n\tasync deactivateConnection(connectionId: string, options?: { projectId?: string }): Promise<SsoConnection> {\n\t\treturn this.http.post<SsoConnection>(\n\t\t\t\"/api/auth/banata/sso/update-provider\",\n\t\t\tthis.http.withProjectScope(\n\t\t\t\t{\n\t\t\t\t\tproviderId: connectionId,\n\t\t\t\t\tactive: false,\n\t\t\t\t},\n\t\t\t\toptions?.projectId,\n\t\t\t),\n\t\t);\n\t}\n}\n","import type { PaginatedResult, Session, User } from \"@banata-auth/shared\";\nimport type { HttpClient } from \"../client\";\n\nexport interface ListUsersOptions {\n\tprojectId?: string;\n\temail?: string;\n\torganizationId?: string;\n\trole?: string;\n\tlimit?: number;\n\tbefore?: string;\n\tafter?: string;\n\torder?: \"asc\" | \"desc\";\n}\n\nexport interface CreateUserOptions {\n\tprojectId?: string;\n\temail: string;\n\tpassword?: string;\n\tname: string;\n\timage?: string;\n\tusername?: string;\n\tphoneNumber?: string;\n\temailVerified?: boolean;\n\trole?: string | string[];\n\tmetadata?: Record<string, unknown>;\n\tdata?: Record<string, unknown>;\n}\n\nexport interface UpdateUserOptions {\n\tuserId: string;\n\tprojectId?: string;\n\tname?: string;\n\timage?: string | null;\n\tusername?: string;\n\tphoneNumber?: string | null;\n\temailVerified?: boolean;\n\tpassword?: string;\n\trole?: string | string[];\n\tmetadata?: Record<string, unknown>;\n\tdata?: Record<string, unknown>;\n}\n\nexport interface AdminPermissionStatements {\n\t[resource: string]: string[];\n}\n\nexport type AdminPermissionCheckInput =\n\t| string\n\t| string[]\n\t| AdminPermissionStatements;\n\nexport type AdminPermissionCheckOptions =\n\t| {\n\t\t\tprojectId?: string;\n\t\t\tuserId?: string;\n\t\t\trole?: string | string[];\n\t\t\tpermission: AdminPermissionCheckInput;\n\t }\n\t| {\n\t\t\tprojectId?: string;\n\t\t\tuserId?: string;\n\t\t\trole?: string | string[];\n\t\t\tpermissions: AdminPermissionCheckInput;\n\t };\n\ninterface ListUsersResponse {\n\tusers?: User[];\n\tdata?: User[];\n}\n\ninterface ListUserSessionsResponse {\n\tsessions?: Session[];\n\tdata?: Session[];\n}\n\ninterface WrappedUserResponse {\n\tuser: User;\n}\n\nexport interface AdminSessionResponse {\n\tsession: Session;\n\tuser: User;\n}\n\nfunction emptyListMetadata() {\n\treturn {\n\t\tbefore: null,\n\t\tafter: null,\n\t};\n}\n\n/**\n * User Management resource.\n * Handles user CRUD, session management, and account operations.\n */\nexport class UserManagement {\n\tconstructor(private readonly http: HttpClient) {}\n\n\t/**\n\t * List users with optional filtering and pagination.\n\t */\n\tasync listUsers(options?: ListUsersOptions): Promise<PaginatedResult<User>> {\n\t\tconst payload = await this.http.post<ListUsersResponse>(\"/api/auth/admin/list-users\", {\n\t\t\tprojectId: options?.projectId,\n\t\t\temail: options?.email,\n\t\t\torganizationId: options?.organizationId,\n\t\t\trole: options?.role,\n\t\t\tlimit: options?.limit,\n\t\t\tbefore: options?.before,\n\t\t\tafter: options?.after,\n\t\t\torder: options?.order,\n\t\t});\n\t\treturn {\n\t\t\tdata: payload.data ?? payload.users ?? [],\n\t\t\tlistMetadata: emptyListMetadata(),\n\t\t};\n\t}\n\n\t/**\n\t * Get a user by ID.\n\t */\n\tasync getUser(userId: string, options?: { projectId?: string }): Promise<User> {\n\t\treturn this.http.post<User>(\"/api/auth/admin/get-user\", {\n\t\t\tuserId,\n\t\t\tprojectId: options?.projectId,\n\t\t});\n\t}\n\n\t/**\n\t * Create a new user.\n\t */\n\tasync createUser(options: CreateUserOptions): Promise<User> {\n\t\tconst payload = await this.http.post<WrappedUserResponse>(\"/api/auth/admin/create-user\", {\n\t\t\tprojectId: options.projectId,\n\t\t\temail: options.email,\n\t\t\tpassword: options.password,\n\t\t\tname: options.name,\n\t\t\timage: options.image,\n\t\t\tusername: options.username,\n\t\t\tphoneNumber: options.phoneNumber,\n\t\t\temailVerified: options.emailVerified,\n\t\t\trole: options.role ?? \"user\",\n\t\t\tmetadata: options.metadata,\n\t\t\tdata: options.data,\n\t\t});\n\t\treturn payload.user;\n\t}\n\n\t/**\n\t * Update an existing user.\n\t */\n\tasync updateUser(options: UpdateUserOptions): Promise<User> {\n\t\tconst { userId, ...body } = options;\n\t\treturn this.http.post<User>(\"/api/auth/admin/update-user\", {\n\t\t\tuserId,\n\t\t\t...body,\n\t\t});\n\t}\n\n\t/**\n\t * Delete a user.\n\t */\n\tasync deleteUser(userId: string, options?: { projectId?: string }): Promise<void> {\n\t\treturn this.http.post<void>(\"/api/auth/admin/remove-user\", {\n\t\t\tuserId,\n\t\t\tprojectId: options?.projectId,\n\t\t});\n\t}\n\n\t/**\n\t * Ban a user.\n\t */\n\tasync banUser(options: {\n\t\tuserId: string;\n\t\tprojectId?: string;\n\t\treason?: string;\n\t\texpiresAt?: Date;\n\t}): Promise<User> {\n\t\tconst payload = await this.http.post<WrappedUserResponse>(\"/api/auth/admin/ban-user\", {\n\t\t\tuserId: options.userId,\n\t\t\tprojectId: options.projectId,\n\t\t\tbanReason: options.reason,\n\t\t\tbanExpires: options.expiresAt?.getTime(),\n\t\t});\n\t\treturn payload.user;\n\t}\n\n\t/**\n\t * Unban a user.\n\t */\n\tasync unbanUser(userId: string, options?: { projectId?: string }): Promise<User> {\n\t\tconst payload = await this.http.post<WrappedUserResponse>(\"/api/auth/admin/unban-user\", {\n\t\t\tuserId,\n\t\t\tprojectId: options?.projectId,\n\t\t});\n\t\treturn payload.user;\n\t}\n\n\t/**\n\t * List active sessions for a user.\n\t */\n\tasync listUserSessions(\n\t\tuserId: string,\n\t\toptions?: { projectId?: string },\n\t): Promise<PaginatedResult<Session>> {\n\t\tconst payload = await this.http.post<ListUserSessionsResponse>(\n\t\t\t\"/api/auth/admin/list-user-sessions\",\n\t\t\t{\n\t\t\t\tuserId,\n\t\t\t\tprojectId: options?.projectId,\n\t\t\t},\n\t\t);\n\t\treturn {\n\t\t\tdata: payload.data ?? payload.sessions ?? [],\n\t\t\tlistMetadata: emptyListMetadata(),\n\t\t};\n\t}\n\n\t/**\n\t * Start impersonating a user.\n\t */\n\tasync impersonateUser(\n\t\tuserId: string,\n\t\toptions?: { projectId?: string },\n\t): Promise<AdminSessionResponse> {\n\t\treturn this.http.post<AdminSessionResponse>(\"/api/auth/admin/impersonate-user\", {\n\t\t\tuserId,\n\t\t\tprojectId: options?.projectId,\n\t\t});\n\t}\n\n\t/**\n\t * Stop impersonating the current user.\n\t */\n\tasync stopImpersonating(): Promise<AdminSessionResponse> {\n\t\treturn this.http.post<AdminSessionResponse>(\"/api/auth/admin/stop-impersonating\");\n\t}\n\n\t/**\n\t * Revoke a specific session.\n\t */\n\tasync revokeSession(sessionId: string, options?: { projectId?: string }): Promise<void> {\n\t\treturn this.http.post<void>(\"/api/auth/admin/revoke-user-session\", {\n\t\t\tsessionId,\n\t\t\tprojectId: options?.projectId,\n\t\t});\n\t}\n\n\t/**\n\t * Revoke all sessions for a user.\n\t */\n\tasync revokeAllSessions(userId: string, options?: { projectId?: string }): Promise<void> {\n\t\treturn this.http.post<void>(\"/api/auth/admin/revoke-user-sessions\", {\n\t\t\tuserId,\n\t\t\tprojectId: options?.projectId,\n\t\t});\n\t}\n\n\t/**\n\t * Set a user's global role.\n\t */\n\tasync setRole(\n\t\tuserId: string,\n\t\trole: string | string[],\n\t\toptions?: { projectId?: string },\n\t): Promise<User> {\n\t\tconst payload = await this.http.post<WrappedUserResponse>(\"/api/auth/admin/set-role\", {\n\t\t\tuserId,\n\t\t\trole,\n\t\t\tprojectId: options?.projectId,\n\t\t});\n\t\treturn payload.user;\n\t}\n\n\t/**\n\t * Force-set a user's password.\n\t */\n\tasync setUserPassword(\n\t\tuserId: string,\n\t\tnewPassword: string,\n\t\toptions?: { projectId?: string },\n\t): Promise<boolean> {\n\t\tconst payload = await this.http.post<{ status?: boolean }>(\"/api/auth/admin/set-user-password\", {\n\t\t\tuserId,\n\t\t\tnewPassword,\n\t\t\tprojectId: options?.projectId,\n\t\t});\n\t\treturn payload.status === true;\n\t}\n\n\t/**\n\t * Check whether a user or role has the requested permissions.\n\t */\n\tasync hasPermission(options: AdminPermissionCheckOptions): Promise<boolean> {\n\t\tconst payload = await this.http.post<{ success?: boolean }>(\"/api/auth/admin/has-permission\", {\n\t\t\t...options,\n\t\t});\n\t\treturn payload.success === true;\n\t}\n}\n","import type { PaginatedResult, VaultSecret } from \"@banata-auth/shared\";\nimport type { HttpClient } from \"../client\";\n\n/**\n * Vault resource.\n *\n * Provides envelope encryption for secrets using AES-256-GCM.\n * Secrets are encrypted at rest and can be decrypted by providing\n * the correct context.\n */\nexport class Vault {\n\tconstructor(private readonly http: HttpClient) {}\n\n\t/**\n\t * Encrypt and store a secret.\n\t *\n\t * @returns The ID of the stored secret.\n\t */\n\tasync encrypt(options: {\n\t\tname: string;\n\t\tdata: string;\n\t\tcontext?: string;\n\t\torganizationId?: string;\n\t\tmetadata?: Record<string, string>;\n\t}): Promise<{ id: string }> {\n\t\treturn this.http.post<{ id: string }>(\"/api/auth/banata/vault/encrypt\", options);\n\t}\n\n\t/**\n\t * Decrypt and return a secret by ID.\n\t *\n\t * @param options.context - Must match the context used during encryption.\n\t */\n\tasync decrypt(options: {\n\t\tsecretId: string;\n\t\tcontext?: string;\n\t}): Promise<{ data: string }> {\n\t\treturn this.http.post<{ data: string }>(\"/api/auth/banata/vault/decrypt\", options);\n\t}\n\n\t/**\n\t * List vault secrets (metadata only — decrypted values are never returned).\n\t */\n\tasync list(options?: {\n\t\torganizationId?: string;\n\t\tlimit?: number;\n\t\tbefore?: string;\n\t\tafter?: string;\n\t}): Promise<PaginatedResult<VaultSecret>> {\n\t\treturn this.http.post<PaginatedResult<VaultSecret>>(\"/api/auth/banata/vault/list\", {\n\t\t\torganizationId: options?.organizationId,\n\t\t\tlimit: options?.limit,\n\t\t\tbefore: options?.before,\n\t\t\tafter: options?.after,\n\t\t});\n\t}\n\n\t/**\n\t * Delete a vault secret by ID.\n\t */\n\tasync delete(options: { secretId: string }): Promise<{ status: string }> {\n\t\treturn this.http.post<{ status: string }>(\"/api/auth/banata/vault/delete\", {\n\t\t\tid: options.secretId,\n\t\t});\n\t}\n\n\t/**\n\t * Rotate the encryption key by re-encrypting all secrets\n\t * with the next version's derived key.\n\t *\n\t * @returns Status and count of rotated/failed secrets.\n\t */\n\tasync rotateKey(options?: {\n\t\tbatchSize?: number;\n\t}): Promise<{ status: string; rotated: number; failed: number; remaining: number }> {\n\t\treturn this.http.post<{\n\t\t\tstatus: string;\n\t\t\trotated: number;\n\t\t\tfailed: number;\n\t\t\tremaining: number;\n\t\t}>(\"/api/auth/banata/vault/rotate-key\", {\n\t\t\tbatchSize: options?.batchSize,\n\t\t});\n\t}\n}\n","import type { WebhookEndpoint, WebhookEvent, PaginatedResult } from \"@banata-auth/shared\";\nimport type { HttpClient } from \"../client\";\n\n/**\n * Webhooks resource.\n * Handles webhook endpoint management and signature verification.\n */\nexport class Webhooks {\n\tconstructor(private readonly http: HttpClient) {}\n\n\t// ─── Endpoint Management ───────────────────────────────────────────────\n\n\tasync listEndpoints(options?: {\n\t\tlimit?: number;\n\t\tbefore?: string;\n\t\tafter?: string;\n\t}): Promise<PaginatedResult<WebhookEndpoint>> {\n\t\treturn this.http.post<PaginatedResult<WebhookEndpoint>>(\"/api/auth/banata/webhooks/list\", {\n\t\t\tlimit: options?.limit,\n\t\t\tbefore: options?.before,\n\t\t\tafter: options?.after,\n\t\t});\n\t}\n\n\tasync createEndpoint(options: {\n\t\turl: string;\n\t\teventTypes?: string[];\n\t\tenabled?: boolean;\n\t}): Promise<WebhookEndpoint & { secret: string }> {\n\t\treturn this.http.post(\"/api/auth/banata/webhooks/create\", options);\n\t}\n\n\tasync updateEndpoint(options: {\n\t\tendpointId: string;\n\t\turl?: string;\n\t\teventTypes?: string[];\n\t\tenabled?: boolean;\n\t}): Promise<WebhookEndpoint> {\n\t\tconst { endpointId, ...body } = options;\n\t\treturn this.http.post<WebhookEndpoint>(\"/api/auth/banata/webhooks/update\", {\n\t\t\tid: endpointId,\n\t\t\t...body,\n\t\t});\n\t}\n\n\tasync deleteEndpoint(endpointId: string): Promise<void> {\n\t\treturn this.http.post<void>(\"/api/auth/banata/webhooks/delete\", {\n\t\t\tid: endpointId,\n\t\t});\n\t}\n\n\t// ─── Signature Verification ────────────────────────────────────────────\n\n\t/**\n\t * Verify a webhook signature and construct the event payload.\n\t * Uses the Web Crypto API for HMAC-SHA256 signature verification.\n\t *\n\t * @example\n\t * ```ts\n\t * const event = await banataAuth.webhooks.constructEvent({\n\t * payload: req.body,\n\t * sigHeader: req.headers[\"x-banataauth-signature\"],\n\t * secret: webhookSecret,\n\t * });\n\t * ```\n\t */\n\tasync constructEvent(options: {\n\t\tpayload: string;\n\t\tsigHeader: string;\n\t\tsecret: string;\n\t\ttolerance?: number;\n\t}): Promise<WebhookEvent> {\n\t\tconst { payload, sigHeader, secret, tolerance = 300 } = options;\n\n\t\tif (!(await this.verifySignature({ payload, sigHeader, secret, tolerance }))) {\n\t\t\tthrow new Error(\"Invalid webhook signature\");\n\t\t}\n\n\t\treturn JSON.parse(payload) as WebhookEvent;\n\t}\n\n\t/**\n\t * Verify a webhook signature using the Web Crypto API (HMAC-SHA256).\n\t */\n\tasync verifySignature(options: {\n\t\tpayload: string;\n\t\tsigHeader: string;\n\t\tsecret: string;\n\t\ttolerance?: number;\n\t}): Promise<boolean> {\n\t\tconst { payload, sigHeader, secret, tolerance = 300 } = options;\n\n\t\t// Parse signature header: t=timestamp,v1=signature\n\t\tconst parts = sigHeader.split(\",\");\n\t\tconst timestampPart = parts.find((p) => p.startsWith(\"t=\"));\n\t\tconst signaturePart = parts.find((p) => p.startsWith(\"v1=\"));\n\n\t\tif (!timestampPart || !signaturePart) {\n\t\t\treturn false;\n\t\t}\n\n\t\tconst timestamp = Number.parseInt(timestampPart.slice(2), 10);\n\t\tconst signature = signaturePart.slice(3);\n\n\t\t// Check timestamp tolerance\n\t\tconst now = Math.floor(Date.now() / 1000);\n\t\tif (Math.abs(now - timestamp) > tolerance) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Compute expected signature using Web Crypto API\n\t\tconst signedPayload = `${timestamp}.${payload}`;\n\t\tconst expectedSignature = await this.computeHmacAsync(secret, signedPayload);\n\n\t\t// Constant-time comparison\n\t\treturn this.timingSafeEqual(signature, expectedSignature);\n\t}\n\n\tprivate async computeHmacAsync(secret: string, payload: string): Promise<string> {\n\t\tconst encoder = new TextEncoder();\n\n\t\tconst key = await crypto.subtle.importKey(\n\t\t\t\"raw\",\n\t\t\tencoder.encode(secret),\n\t\t\t{ name: \"HMAC\", hash: \"SHA-256\" },\n\t\t\tfalse,\n\t\t\t[\"sign\"],\n\t\t);\n\n\t\tconst signatureBuffer = await crypto.subtle.sign(\"HMAC\", key, encoder.encode(payload));\n\n\t\treturn Array.from(new Uint8Array(signatureBuffer))\n\t\t\t.map((b) => b.toString(16).padStart(2, \"0\"))\n\t\t\t.join(\"\");\n\t}\n\n\tprivate timingSafeEqual(a: string, b: string): boolean {\n\t\tif (a.length !== b.length) return false;\n\t\tlet result = 0;\n\t\tfor (let i = 0; i < a.length; i++) {\n\t\t\tresult |= a.charCodeAt(i) ^ b.charCodeAt(i);\n\t\t}\n\t\treturn result === 0;\n\t}\n}\n","import { createErrorFromStatus } from \"@banata-auth/shared\";\nimport { ApiKeys } from \"./resources/api-keys\";\nimport { AuditLogs } from \"./resources/audit-logs\";\nimport { DirectorySync } from \"./resources/directory-sync\";\nimport { Domains } from \"./resources/domains\";\nimport { Emails } from \"./resources/emails\";\nimport { Events } from \"./resources/events\";\nimport { Organizations } from \"./resources/organizations\";\nimport { Portal } from \"./resources/portal\";\nimport { Projects } from \"./resources/projects\";\nimport { Rbac } from \"./resources/rbac\";\nimport { SSO } from \"./resources/sso\";\nimport { UserManagement } from \"./resources/user-management\";\nimport { Vault } from \"./resources/vault\";\nimport { Webhooks } from \"./resources/webhooks\";\n\nexport interface BanataAuthOptions {\n\t/** API key for authentication. */\n\tapiKey: string;\n\t/** Base URL for the Banata Auth API. Defaults to Convex site URL. */\n\tbaseUrl?: string;\n\t/** Request timeout in milliseconds. Default: 30000. */\n\ttimeout?: number;\n\t/** Number of retries on 5xx errors. Default: 3. */\n\tretries?: number;\n\t/** Project ID to scope all operations to. */\n\tprojectId?: string;\n\t/** Environment ID to scope all operations to. */\n\tenvironmentId?: string;\n}\n\n/**\n * Internal HTTP client used by all resource classes.\n */\nexport class HttpClient {\n\tprivate readonly apiKey: string;\n\tprivate readonly baseUrl: string;\n\tprivate readonly timeout: number;\n\tprivate readonly maxRetries: number;\n\tprivate readonly projectId?: string;\n\n\tconstructor(options: BanataAuthOptions) {\n\t\tthis.apiKey = options.apiKey;\n\t\tthis.baseUrl = (options.baseUrl ?? \"\").replace(/\\/$/, \"\");\n\t\tthis.timeout = options.timeout ?? 30_000;\n\t\tthis.maxRetries = options.retries ?? 3;\n\t\tthis.projectId = options.projectId;\n\n\t\t// Warn if API key is being sent over non-HTTPS in production\n\t\tif (\n\t\t\tthis.baseUrl &&\n\t\t\t!this.baseUrl.startsWith(\"https://\") &&\n\t\t\t!this.baseUrl.startsWith(\"http://localhost\") &&\n\t\t\t!this.baseUrl.startsWith(\"http://127.0.0.1\")\n\t\t) {\n\t\t\tconsole.warn(\n\t\t\t\t\"[BanataAuth SDK] WARNING: baseUrl does not use HTTPS. \" +\n\t\t\t\t\t\"API keys will be transmitted in plaintext. \" +\n\t\t\t\t\t\"Use HTTPS in production to protect your credentials.\",\n\t\t\t);\n\t\t}\n\t}\n\n\twithProjectScope<T extends Record<string, unknown>>(\n\t\tbody: T,\n\t\tprojectId?: string,\n\t): T & {\n\t\tprojectId?: string;\n\t} {\n\t\tconst resolvedProjectId = projectId ?? this.projectId;\n\t\tif (!resolvedProjectId) {\n\t\t\treturn body;\n\t\t}\n\t\treturn {\n\t\t\t...body,\n\t\t\tprojectId: resolvedProjectId,\n\t\t};\n\t}\n\n\tasync request<T>(\n\t\tmethod: string,\n\t\tpath: string,\n\t\toptions?: {\n\t\t\tbody?: unknown;\n\t\t\tquery?: Record<string, string | number | boolean | undefined>;\n\t\t\theaders?: Record<string, string>;\n\t\t},\n\t): Promise<T> {\n\t\tconst url = new URL(`${this.baseUrl}${path}`);\n\n\t\tif (options?.query) {\n\t\t\tfor (const [key, value] of Object.entries(options.query)) {\n\t\t\t\tif (value !== undefined) {\n\t\t\t\t\turl.searchParams.set(key, String(value));\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tconst headers: Record<string, string> = {\n\t\t\tAuthorization: `Bearer ${this.apiKey}`,\n\t\t\t\"Content-Type\": \"application/json\",\n\t\t\t\"User-Agent\": \"banata-auth-sdk/0.1.0\",\n\t\t\t...options?.headers,\n\t\t};\n\n\t\tlet lastError: Error | null = null;\n\n\t\tfor (let attempt = 0; attempt <= this.maxRetries; attempt++) {\n\t\t\ttry {\n\t\t\t\tconst controller = new AbortController();\n\t\t\t\tconst timeoutId = setTimeout(() => controller.abort(), this.timeout);\n\n\t\t\t\tconst response = await fetch(url.toString(), {\n\t\t\t\t\tmethod,\n\t\t\t\t\theaders,\n\t\t\t\t\tbody: options?.body ? JSON.stringify(options.body) : undefined,\n\t\t\t\t\tsignal: controller.signal,\n\t\t\t\t});\n\n\t\t\t\tclearTimeout(timeoutId);\n\n\t\t\t\tconst requestId = response.headers.get(\"x-request-id\") ?? \"\";\n\n\t\t\t\tif (response.ok) {\n\t\t\t\t\tif (response.status === 204) {\n\t\t\t\t\t\treturn undefined as T;\n\t\t\t\t\t}\n\t\t\t\t\treturn (await response.json()) as T;\n\t\t\t\t}\n\n\t\t\t\tconst errorBody = await response.json().catch(() => ({}));\n\t\t\t\tconst error = createErrorFromStatus(\n\t\t\t\t\tresponse.status,\n\t\t\t\t\terrorBody as { message?: string; code?: string },\n\t\t\t\t\trequestId,\n\t\t\t\t);\n\n\t\t\t\t// Retry on 5xx errors and 429 (rate limited)\n\t\t\t\tif ((response.status >= 500 || response.status === 429) && attempt < this.maxRetries) {\n\t\t\t\t\tlastError = error;\n\n\t\t\t\t\t// Respect Retry-After header on 429, otherwise exponential backoff\n\t\t\t\t\tlet delayMs = 200 * 2 ** attempt;\n\t\t\t\t\tif (response.status === 429) {\n\t\t\t\t\t\tconst retryAfter = response.headers.get(\"retry-after\");\n\t\t\t\t\t\tif (retryAfter) {\n\t\t\t\t\t\t\tconst parsed = Number(retryAfter);\n\t\t\t\t\t\t\t// Retry-After can be seconds (number) or HTTP-date\n\t\t\t\t\t\t\tdelayMs = Number.isNaN(parsed)\n\t\t\t\t\t\t\t\t? Math.max(0, new Date(retryAfter).getTime() - Date.now())\n\t\t\t\t\t\t\t\t: parsed * 1000;\n\t\t\t\t\t\t\t// Clamp to a reasonable max (60s) to avoid infinite waits\n\t\t\t\t\t\t\tdelayMs = Math.min(delayMs, 60_000);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tawait new Promise((resolve) => setTimeout(resolve, delayMs));\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tthrow error;\n\t\t\t} catch (error) {\n\t\t\t\tif (error instanceof Error && error.name === \"AbortError\") {\n\t\t\t\t\tlastError = new Error(`Request timed out after ${this.timeout}ms`);\n\t\t\t\t\tif (attempt < this.maxRetries) {\n\t\t\t\t\t\tawait new Promise((resolve) => setTimeout(resolve, 200 * 2 ** attempt));\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthrow error;\n\t\t\t}\n\t\t}\n\n\t\tthrow lastError ?? new Error(\"Request failed after all retries\");\n\t}\n\n\tget<T>(path: string, query?: Record<string, string | number | boolean | undefined>): Promise<T> {\n\t\treturn this.request<T>(\"GET\", path, { query });\n\t}\n\n\tpost<T>(path: string, body?: unknown): Promise<T> {\n\t\treturn this.request<T>(\"POST\", path, { body });\n\t}\n\n\tput<T>(path: string, body?: unknown): Promise<T> {\n\t\treturn this.request<T>(\"PUT\", path, { body });\n\t}\n\n\tpatch<T>(path: string, body?: unknown): Promise<T> {\n\t\treturn this.request<T>(\"PATCH\", path, { body });\n\t}\n\n\tdelete<T>(path: string): Promise<T> {\n\t\treturn this.request<T>(\"DELETE\", path);\n\t}\n}\n\n/**\n * Main Banata Auth SDK client.\n *\n * @example\n * ```ts\n * import { BanataAuth } from \"@banata-auth/sdk\";\n *\n * const banataAuth = new BanataAuth({ apiKey: \"sk_live_...\" });\n *\n * // List users\n * const users = await banataAuth.userManagement.listUsers();\n *\n * // Create organization\n * const org = await banataAuth.organizations.createOrganization({\n * name: \"Acme Corp\",\n * });\n * ```\n */\nexport class BanataAuth {\n\tprivate readonly httpClient: HttpClient;\n\n\treadonly apiKeys: ApiKeys;\n\treadonly userManagement: UserManagement;\n\treadonly organizations: Organizations;\n\treadonly sso: SSO;\n\treadonly directorySync: DirectorySync;\n\treadonly auditLogs: AuditLogs;\n\treadonly emails: Emails;\n\treadonly events: Events;\n\treadonly webhooks: Webhooks;\n\treadonly portal: Portal;\n\treadonly vault: Vault;\n\treadonly domains: Domains;\n\treadonly rbac: Rbac;\n\treadonly projects: Projects;\n\n\tconstructor(options: string | BanataAuthOptions) {\n\t\tconst opts: BanataAuthOptions = typeof options === \"string\" ? { apiKey: options } : options;\n\n\t\tif (!opts.apiKey) {\n\t\t\tthrow new Error(\n\t\t\t\t\"Banata Auth API key is required. Pass it as a string or as { apiKey: '...' }\",\n\t\t\t);\n\t\t}\n\n\t\tthis.httpClient = new HttpClient(opts);\n\n\t\tthis.apiKeys = new ApiKeys(this.httpClient);\n\t\tthis.userManagement = new UserManagement(this.httpClient);\n\t\tthis.organizations = new Organizations(this.httpClient);\n\t\tthis.sso = new SSO(this.httpClient);\n\t\tthis.directorySync = new DirectorySync(this.httpClient);\n\t\tthis.auditLogs = new AuditLogs(this.httpClient);\n\t\tthis.emails = new Emails(this.httpClient);\n\t\tthis.events = new Events(this.httpClient);\n\t\tthis.webhooks = new Webhooks(this.httpClient);\n\t\tthis.portal = new Portal(this.httpClient);\n\t\tthis.vault = new Vault(this.httpClient);\n\t\tthis.domains = new Domains(this.httpClient);\n\t\tthis.rbac = new Rbac(this.httpClient);\n\t\tthis.projects = new Projects(this.httpClient);\n\t}\n\n\t// Convenience aliases (WorkOS-compatible)\n\tget users(): UserManagement {\n\t\treturn this.userManagement;\n\t}\n\tget directories(): DirectorySync {\n\t\treturn this.directorySync;\n\t}\n\tget orgs(): Organizations {\n\t\treturn this.organizations;\n\t}\n}\n"]}