//=========================================== // THIS FILE IS AUTO-GENERATED FROM TEMPLATE. DO NOT EDIT IT DIRECTLY UNLESS YOU ALSO EDIT THE CORRESPONDING FILE IN packages/template //=========================================== import type { AnalyticsClickmapOptions, AnalyticsClickmapResponse, AnalyticsClickmapTokenResponse } from "@hexclave/shared/dist/interface/admin-metrics"; import type { AdminGetSessionReplayChunkEventsResponse, AdminGetSessionReplayAllEventsResponse } from "@hexclave/shared/dist/interface/crud/session-replays"; import type { Transaction, TransactionType } from "@hexclave/shared/dist/interface/crud/transactions"; import { InternalSession } from "@hexclave/shared/dist/sessions"; import type { MoneyAmount } from "@hexclave/shared/dist/utils/currency-constants"; import { Result } from "@hexclave/shared/dist/utils/results"; import { AsyncStoreProperty, EmailConfig } from "../../common"; import { AdminEmailOutbox, AdminSentEmail } from "../../email"; import { InternalApiKey, InternalApiKeyCreateOptions, InternalApiKeyFirstView } from "../../internal-api-keys"; import { AdminProjectPermission, AdminProjectPermissionDefinition, AdminProjectPermissionDefinitionCreateOptions, AdminProjectPermissionDefinitionUpdateOptions, AdminTeamPermission, AdminTeamPermissionDefinition, AdminTeamPermissionDefinitionCreateOptions, AdminTeamPermissionDefinitionUpdateOptions } from "../../permissions"; import type { PlanUsage } from "../../plan-usage"; import { AdminProject } from "../../projects"; import type { AdminWorkflow, AdminWorkflowRun, AdminWorkflowRunDetails, AdminWorkflowRunsFilter, AdminWorkflowSyncResult, AdminWorkflowUpgradeResult, AdminWorkflowVersion } from "../../workflows"; import { _HexclaveAdminAppImpl } from "../implementations"; import { StackServerApp, StackServerAppConstructorOptions } from "./server-app"; export type EmailOutboxListOptions = { status?: string, simpleStatus?: string, userId?: string, limit?: number, cursor?: string, }; export type EmailOutboxListResult = { items: AdminEmailOutbox[], nextCursor: string | null, }; export type EmailOutboxUpdateOptions = { isPaused?: boolean, scheduledAtMillis?: number, cancel?: boolean, tsxSource?: string, themeId?: string | null, }; export type ManagedEmailProviderSetupResult = { domainId: string, subdomain: string, senderLocalPart: string, nameServerRecords: string[], status: ManagedEmailProviderStatus["status"], }; export type ManagedEmailProviderStatus = { status: "pending_dns" | "pending_verification" | "verified" | "applied" | "failed", }; export type ManagedEmailProviderListItem = { domainId: string, subdomain: string, senderLocalPart: string, status: ManagedEmailProviderStatus["status"], nameServerRecords: string[], }; import type { AdminSessionReplay, ListSessionReplayChunksOptions, ListSessionReplayChunksResult, ListSessionReplaysOptions, ListSessionReplaysResult, SessionReplayAllEventsResult } from "../../session-replays"; export type { AdminSessionReplay, AdminSessionReplayChunk, ListSessionReplaysOptions, ListSessionReplaysResult, ListSessionReplayChunksOptions, ListSessionReplayChunksResult, SessionReplayAllEventsResult } from "../../session-replays"; export type { AdminWorkflow, AdminWorkflowDivergenceDiagnostic, AdminWorkflowRun, AdminWorkflowRunDetails, AdminWorkflowRunsFilter, AdminWorkflowRunState, AdminWorkflowStep, AdminWorkflowStepAttempt, AdminWorkflowSyncResult, AdminWorkflowTrigger, AdminWorkflowUpgradeResult, AdminWorkflowVersion } from "../../workflows"; /** @deprecated Use `HexclaveAdminAppConstructorOptions` from the `@hexclave/*` package instead — same symbol, new brand name. See https://docs.hexclave.com/migration. */ export type StackAdminAppConstructorOptions = ( & StackServerAppConstructorOptions & { superSecretAdminKey?: string, projectOwnerSession?: InternalSession | (() => Promise), } ); /** @deprecated Use `HexclaveAdminApp` from the `@hexclave/*` package instead — same symbol, new brand name. See https://docs.hexclave.com/migration. */ export type StackAdminApp = ( & AsyncStoreProperty<"project", [], AdminProject, false> & AsyncStoreProperty<"planUsage", [], PlanUsage, false> & AsyncStoreProperty<"internalApiKeys", [], InternalApiKey[], true> & AsyncStoreProperty<"teamPermissionDefinitions", [], AdminTeamPermissionDefinition[], true> & AsyncStoreProperty<"projectPermissionDefinitions", [], AdminProjectPermissionDefinition[], true> & AsyncStoreProperty<"emailThemes", [], { id: string, displayName: string }[], true> & AsyncStoreProperty<"emailPreview", [{ themeId?: string | null | false, themeTsxSource?: string, templateId?: string, templateTsxSource?: string }], string, false> & AsyncStoreProperty<"emailTemplates", [], { id: string, displayName: string, themeId?: string, tsxSource: string }[], true> & AsyncStoreProperty<"emailDrafts", [], { id: string, displayName: string, themeId: string | undefined | false, tsxSource: string, sentAt: Date | null }[], true> & AsyncStoreProperty<"workflows", [], AdminWorkflow[], true> & AsyncStoreProperty<"stripeAccountInfo", [], { account_id: string, charges_enabled: boolean, details_submitted: boolean, payouts_enabled: boolean } | null, false> & AsyncStoreProperty< "transactions", [{ cursor?: string, limit?: number, type?: TransactionType, customerType?: 'user' | 'team' | 'custom', customerId?: string, }], { transactions: Transaction[], nextCursor: string | null }, true > & { createInternalApiKey(options: InternalApiKeyCreateOptions): Promise, createTeamPermissionDefinition(data: AdminTeamPermissionDefinitionCreateOptions): Promise, updateTeamPermissionDefinition(permissionId: string, data: AdminTeamPermissionDefinitionUpdateOptions): Promise, deleteTeamPermissionDefinition(permissionId: string): Promise, /** * @param options.query Free-text search; matches against permission ID and description. */ listTeamPermissionDefinitionsPaginated(options: { limit: number, cursor?: string, query?: string }): Promise<{ items: AdminTeamPermissionDefinition[], nextCursor: string | null }>, createProjectPermissionDefinition(data: AdminProjectPermissionDefinitionCreateOptions): Promise, updateProjectPermissionDefinition(permissionId: string, data: AdminProjectPermissionDefinitionUpdateOptions): Promise, deleteProjectPermissionDefinition(permissionId: string): Promise, sendTestEmail(options: { recipientEmail: string, emailConfig: EmailConfig, }): Promise>, sendTestWebhook(options: { endpointId: string }): Promise>, sendSignInInvitationEmail(email: string, callbackUrl: string): Promise, listSentEmails(): Promise, setupManagedEmailProvider(options: { subdomain: string, senderLocalPart: string }): Promise, checkManagedEmailStatus(options: { domainId: string, subdomain: string, senderLocalPart: string }): Promise, listManagedEmailDomains(): Promise, applyManagedEmailProvider(options: { domainId: string }): Promise<{ status: "applied" }>, deleteManagedEmailDomain(options: { resendDomainId: string }): Promise<{ status: "deleted" }>, createEmailTheme(displayName: string): Promise<{ id: string }>, updateEmailTheme(id: string, tsxSource: string): Promise, deleteEmailTheme(id: string): Promise, saveChatMessage(threadId: string, message: any): Promise, listChatMessages(threadId: string): Promise<{ messages: Array }>, rewriteTemplateSourceWithAI(templateTsxSource: string): Promise<{ tsxSource: string }>, updateEmailTemplate(id: string, tsxSource: string, themeId: string | null | false): Promise<{ renderedHtml: string }>, createEmailTemplate(displayName: string): Promise<{ id: string }>, deleteEmailTemplate(id: string): Promise, // Workflows (internal-project gated; see the Workflows v1 spec). The // management verbs live on the admin app only in v1. createWorkflow(options: { id: string, displayName?: string, source: string }): Promise, updateWorkflowSource(workflowId: string, source: string): Promise, deleteWorkflow(workflowId: string): Promise, /** Pauses/resumes run creation. In-flight runs are unaffected. */ setWorkflowPaused(workflowId: string, isPaused: boolean): Promise, listWorkflowVersions(workflowId: string): Promise, listWorkflowRuns: { (workflowId: string, filter: AdminWorkflowRunsFilter & { includeState: true }): Promise<{ runs: AdminWorkflowRunDetails[], nextCursor: string | null }>, (workflowId: string, filter?: AdminWorkflowRunsFilter): Promise<{ runs: AdminWorkflowRun[], nextCursor: string | null }>, }, getWorkflowRun(runId: string): Promise, cancelWorkflowRuns(workflowId: string, filter?: { runKey?: string, runId?: string, state?: "queued" | "running" | "sleeping", version?: number }): Promise<{ canceledCount: number }>, upgradeWorkflowRuns(workflowId: string, options: { toVersion: number, runKey?: string, fromVersion?: number }): Promise, retryWorkflowRun(runId: string): Promise, sendWorkflowEvent(name: string, data?: unknown): Promise<{ eventId: string }>, setupPayments(): Promise<{ url: string }>, createStripeWidgetAccountSession(): Promise<{ client_secret: string }>, getPaymentMethodConfigs(): Promise<{ configId: string, methods: Array<{ id: string, name: string, enabled: boolean, available: boolean, overridable: boolean }> } | null>, updatePaymentMethodConfigs(configId: string, updates: Record): Promise, createEmailDraft(options: { displayName: string, themeId?: string | undefined | false, tsxSource?: string }): Promise<{ id: string }>, updateEmailDraft(id: string, data: { displayName?: string, themeId?: string | undefined | false, tsxSource?: string }): Promise, deleteEmailDraft(id: string): Promise, refreshEmailDrafts(): Promise, createItemQuantityChange(options: ( { userId: string, itemId: string, quantity: number, expiresAt?: string, description?: string } | { teamId: string, itemId: string, quantity: number, expiresAt?: string, description?: string } | { customCustomerId: string, itemId: string, quantity: number, expiresAt?: string, description?: string } )): Promise, refundTransaction(options: { type: "subscription" | "one-time-purchase", id: string, invoiceId?: string, amountUsd: MoneyAmount, endAction?: "now" | "at-period-end", }): Promise<{ refundTransactionId: string }>, getAnalyticsClickmap(options: AnalyticsClickmapOptions): Promise, createAnalyticsClickmapToken(options: { origin: string }): Promise, listSessionReplays(options?: ListSessionReplaysOptions): Promise, getSessionReplay(sessionReplayId: string): Promise, listSessionReplayChunks(sessionReplayId: string, options?: ListSessionReplayChunksOptions): Promise, getSessionReplayChunkEvents(sessionReplayId: string, chunkId: string): Promise, getSessionReplayEvents(sessionReplayId: string, options?: { offset?: number, limit?: number }): Promise, // Email Outbox methods listOutboxEmails(options?: EmailOutboxListOptions): Promise, getOutboxEmail(id: string): Promise, updateOutboxEmail(id: string, options: EmailOutboxUpdateOptions): Promise, pauseOutboxEmail(id: string): Promise, unpauseOutboxEmail(id: string): Promise, cancelOutboxEmail(id: string): Promise, } & StackServerApp ); /** @deprecated Use `HexclaveAdminAppConstructor` from the `@hexclave/*` package instead — same symbol, new brand name. See https://docs.hexclave.com/migration. */ export type StackAdminAppConstructor = { new < HasTokenStore extends boolean, ProjectId extends string >(options: StackAdminAppConstructorOptions): StackAdminApp, new(options: StackAdminAppConstructorOptions): StackAdminApp, }; export type HexclaveAdminAppConstructorOptions = StackAdminAppConstructorOptions; export type HexclaveAdminApp = StackAdminApp; export type HexclaveAdminAppConstructor = StackAdminAppConstructor; export const HexclaveAdminApp: HexclaveAdminAppConstructor = _HexclaveAdminAppImpl; /** @deprecated Use `HexclaveAdminApp` from the `@hexclave/*` package instead — same symbol, new brand name. See https://docs.hexclave.com/migration. */ export const StackAdminApp: StackAdminAppConstructor = HexclaveAdminApp;