UNPKG

@speckle/shared

Version:

Shared code between various Speckle JS packages

82 lines 3.74 kB
import { WorkspaceRoles } from '../../core/constants.js'; import { WorkspaceLimits } from './limits.js'; import { PaidWorkspacePlans, UnpaidWorkspacePlans, WorkspacePlanBillingIntervals, WorkspacePlans } from './plans.js'; import type { MaybeNullOrUndefined } from '../../core/helpers/utilityTypes.js'; /** * WORKSPACE FEATURES */ export declare const WorkspacePlanFeatures: { readonly AutomateBeta: "automateBeta"; readonly DomainDiscoverability: "domainDiscoverability"; readonly DomainSecurity: "domainBasedSecurityPolicies"; readonly SSO: "oidcSso"; readonly CustomDataRegion: "workspaceDataRegionSpecificity"; readonly HideSpeckleBranding: "hideSpeckleBranding"; }; export type WorkspacePlanFeatures = (typeof WorkspacePlanFeatures)[keyof typeof WorkspacePlanFeatures]; export declare const WorkspacePlanFeaturesMetadata: { readonly automateBeta: { readonly displayName: "Automate beta access"; readonly description: "Run custom automations on every new model version"; }; readonly domainDiscoverability: { readonly displayName: "Domain discoverability"; readonly description: "Allow people to discover your workspace if they use a verified company email"; }; readonly domainBasedSecurityPolicies: { readonly displayName: "Domain protection"; readonly description: "Require workspace members to use a verified company email"; }; readonly oidcSso: { readonly displayName: "Single Sign-On (SSO)"; readonly description: "Require workspace members to authenticate with your SSO provider"; }; readonly workspaceDataRegionSpecificity: { readonly displayName: "Custom data residency"; readonly description: "Store your data in EU, UK, North America, or Asia Pacific"; }; readonly hideSpeckleBranding: { readonly displayName: "Customised viewer"; readonly description: "Hide the Speckle branding in embedded viewer"; }; }; /** * PLAN CONFIG - PRICES & FEATURES */ export type WorkspacePlanPriceStructure = { [interval in WorkspacePlanBillingIntervals]: { [role in WorkspaceRoles]: number; }; }; export type WorkspacePlanConfig<Plan extends WorkspacePlans = WorkspacePlans> = { plan: Plan; features: readonly WorkspacePlanFeatures[]; limits: WorkspaceLimits; }; export declare const WorkspacePaidPlanConfigs: { [plan in PaidWorkspacePlans]: WorkspacePlanConfig<plan>; }; export declare const WorkspaceUnpaidPlanConfigs: { [plan in UnpaidWorkspacePlans]: WorkspacePlanConfig<plan>; }; export declare const WorkspacePlanConfigs: { teamUnlimitedInvoiced: WorkspacePlanConfig<"teamUnlimitedInvoiced">; proUnlimitedInvoiced: WorkspacePlanConfig<"proUnlimitedInvoiced">; enterprise: WorkspacePlanConfig<"enterprise">; unlimited: WorkspacePlanConfig<"unlimited">; academia: WorkspacePlanConfig<"academia">; free: WorkspacePlanConfig<"free">; team: WorkspacePlanConfig<"team">; teamUnlimited: WorkspacePlanConfig<"teamUnlimited">; pro: WorkspacePlanConfig<"pro">; proUnlimited: WorkspacePlanConfig<"proUnlimited">; }; /** * Checks if a workspace exceeds its plan limits for projects and models */ export declare const workspaceExceedsPlanLimit: (plan: MaybeNullOrUndefined<WorkspacePlans>, projectCount: MaybeNullOrUndefined<number>, modelCount: MaybeNullOrUndefined<number>) => boolean; /** * Checks if a workspace reached its plan limits for projects and models */ export declare const workspaceReachedPlanLimit: (plan: MaybeNullOrUndefined<WorkspacePlans>, projectCount: MaybeNullOrUndefined<number>, modelCount: MaybeNullOrUndefined<number>) => boolean; //# sourceMappingURL=features.d.ts.map