{"version":3,"file":"cloudPlans.mjs","names":[],"sources":["../src/api/cloudPlans.ts"],"sourcesContent":["import type { IRestApiContext } from '../types';\nimport { get, post } from '../utils';\n\nexport declare namespace Cloud {\n\texport interface PlanData {\n\t\tplanId: number;\n\t\tmonthlyExecutionsLimit: number;\n\t\tactiveWorkflowsLimit: number;\n\t\tcredentialsLimit: number;\n\t\tisActive: boolean;\n\t\tdisplayName: string;\n\t\texpirationDate: string;\n\t\tmetadata: PlanMetadata;\n\t\tuserIsTrialing?: boolean;\n\t\tbannerConfig?: BannerConfig;\n\t\tlicenseFeatures?: Record<string, number>;\n\t}\n\n\texport interface PlanMetadata {\n\t\tversion: 'v1';\n\t\tgroup: 'opt-out' | 'opt-in' | 'trial';\n\t\tslug: 'pro-1' | 'pro-2' | 'starter' | 'trial-1';\n\t\ttrial?: Trial;\n\t}\n\n\tinterface Trial {\n\t\tlength: number;\n\t\tgracePeriod: number;\n\t}\n\n\texport interface BannerConfig {\n\t\t// If set, show time left section\n\t\t// - If text provided, use it\n\t\t// - If text not provided, compute from expirationDate\n\t\ttimeLeft?: {\n\t\t\ttext?: string;\n\t\t};\n\n\t\t// If true, show executions section with progress bar and x/y text\n\t\tshowExecutions?: boolean;\n\n\t\t// CTA button configuration\n\t\tcta?: {\n\t\t\ttext?: string;\n\t\t\ticon?: string;\n\t\t\tsize?: 'small' | 'medium';\n\t\t\t/** @deprecated Use variant instead */\n\t\t\tstyle?: 'primary' | 'success' | 'warning' | 'danger';\n\t\t\tvariant?: 'solid' | 'subtle' | 'ghost' | 'outline' | 'destructive' | 'success';\n\t\t\thref?: string; // If provided, navigate to this URL; otherwise use upgrade flow\n\t\t};\n\n\t\t// Banner icon (left side) - if not set, no icon shown\n\t\ticon?: string;\n\n\t\tdismissible?: boolean;\n\t\tforceShow?: boolean; // Override localStorage dismissal\n\t}\n\n\texport interface UpgradeOffer {\n\t\tslug: string;\n\t\tquotas: { monthlyExecutionsLimit: number; instanceAiCredits: number };\n\t\tcurrency?: { code: string; symbol: string; position: 'prefix' | 'suffix' };\n\t\tprices?: {\n\t\t\tmonthly: number;\n\t\t\tyearlyPerMonth: number;\n\t\t\tdiscountPct: number;\n\t\t};\n\t}\n\n\texport type UserAccount = {\n\t\tconfirmed: boolean;\n\t\tusername: string;\n\t\temail: string;\n\t\thasEarlyAccess?: boolean;\n\t\trole?: string;\n\t\tselectedApps?: string[];\n\t\tinformation?: {\n\t\t\t[key: string]: string | string[];\n\t\t};\n\t};\n}\n\nexport interface InstanceUsage {\n\ttimeframe?: string;\n\texecutions: number;\n\tactiveWorkflows: number;\n}\n\nexport async function getCurrentPlan(context: IRestApiContext): Promise<Cloud.PlanData> {\n\treturn await get(context.baseUrl, '/admin/cloud-plan');\n}\n\nexport async function getCurrentUsage(context: IRestApiContext): Promise<InstanceUsage> {\n\treturn await get(context.baseUrl, '/cloud/limits');\n}\n\nexport async function getCloudUserInfo(context: IRestApiContext): Promise<Cloud.UserAccount> {\n\treturn await get(context.baseUrl, '/cloud/proxy/user/me');\n}\n\nexport async function getUpgradeOffer(\n\tcontext: IRestApiContext,\n): Promise<Cloud.UpgradeOffer | Record<string, never>> {\n\treturn await post(context.baseUrl, '/cloud/proxy/upgrade-offer');\n}\n\nexport async function sendConfirmationEmail(context: IRestApiContext): Promise<Cloud.UserAccount> {\n\treturn await post(context.baseUrl, '/cloud/proxy/user/resend-confirmation-email');\n}\n\nexport async function getAdminPanelLoginCode(context: IRestApiContext): Promise<{ code: string }> {\n\treturn await get(context.baseUrl, '/cloud/proxy/login/code');\n}\n\nexport interface DynamicNotification {\n\ttitle?: string;\n\tmessage?: string;\n}\n\nexport async function sendUserEvent(\n\tcontext: IRestApiContext,\n\teventData: { eventType: string; metadata?: Record<string, unknown> },\n): Promise<DynamicNotification> {\n\treturn await post(context.baseUrl, '/cloud/proxy/user/event', eventData);\n}\n"],"mappings":";;;AAyFA,eAAsB,eAAe,SAAmD;AACvF,QAAO,MAAM,IAAI,QAAQ,SAAS,oBAAoB;;AAGvD,eAAsB,gBAAgB,SAAkD;AACvF,QAAO,MAAM,IAAI,QAAQ,SAAS,gBAAgB;;AAGnD,eAAsB,iBAAiB,SAAsD;AAC5F,QAAO,MAAM,IAAI,QAAQ,SAAS,uBAAuB;;AAG1D,eAAsB,gBACrB,SACsD;AACtD,QAAO,MAAM,KAAK,QAAQ,SAAS,6BAA6B;;AAGjE,eAAsB,sBAAsB,SAAsD;AACjG,QAAO,MAAM,KAAK,QAAQ,SAAS,8CAA8C;;AAGlF,eAAsB,uBAAuB,SAAqD;AACjG,QAAO,MAAM,IAAI,QAAQ,SAAS,0BAA0B;;AAQ7D,eAAsB,cACrB,SACA,WAC+B;AAC/B,QAAO,MAAM,KAAK,QAAQ,SAAS,2BAA2B,UAAU"}