emr-types
Version:
Comprehensive TypeScript Types Library for Electronic Medical Record (EMR) Applications - Domain-Driven Design with Zod Validation
1,463 lines • 237 kB
TypeScript
import { z } from 'zod';
import { TenantStatus, TenantType } from '../domains/tenant';
export declare const TenantIdSchema: z.ZodBranded<z.ZodString, "TenantId">;
export declare const DomainNameSchema: z.ZodBranded<z.ZodString, "DomainName">;
export declare const TenantStatusSchema: z.ZodNativeEnum<typeof TenantStatus>;
export declare const TenantTypeSchema: z.ZodNativeEnum<typeof TenantType>;
export declare const TenantIdValueObjectSchema: z.ZodObject<{
value: z.ZodBranded<z.ZodString, "TenantId">;
format: z.ZodEnum<["uuid", "auto-increment", "custom"]>;
createdAt: z.ZodDate;
metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
}, "strip", z.ZodTypeAny, {
value: string & z.BRAND<"TenantId">;
createdAt: Date;
format: "uuid" | "custom" | "auto-increment";
metadata?: Record<string, unknown> | undefined;
}, {
value: string;
createdAt: Date;
format: "uuid" | "custom" | "auto-increment";
metadata?: Record<string, unknown> | undefined;
}>;
export declare const DomainNameValueObjectSchema: z.ZodObject<{
value: z.ZodBranded<z.ZodString, "DomainName">;
isVerified: z.ZodBoolean;
verifiedAt: z.ZodOptional<z.ZodDate>;
sslCertificate: z.ZodOptional<z.ZodObject<{
issuer: z.ZodString;
validFrom: z.ZodDate;
validTo: z.ZodDate;
serialNumber: z.ZodString;
}, "strip", z.ZodTypeAny, {
issuer: string;
validFrom: Date;
validTo: Date;
serialNumber: string;
}, {
issuer: string;
validFrom: Date;
validTo: Date;
serialNumber: string;
}>>;
createdAt: z.ZodDate;
}, "strip", z.ZodTypeAny, {
value: string & z.BRAND<"DomainName">;
createdAt: Date;
isVerified: boolean;
verifiedAt?: Date | undefined;
sslCertificate?: {
issuer: string;
validFrom: Date;
validTo: Date;
serialNumber: string;
} | undefined;
}, {
value: string;
createdAt: Date;
isVerified: boolean;
verifiedAt?: Date | undefined;
sslCertificate?: {
issuer: string;
validFrom: Date;
validTo: Date;
serialNumber: string;
} | undefined;
}>;
export declare const TenantConfigSchema: z.ZodObject<{
id: z.ZodBranded<z.ZodString, "TenantId">;
features: z.ZodObject<{
multiTenancy: z.ZodBoolean;
sso: z.ZodBoolean;
auditLogging: z.ZodBoolean;
backup: z.ZodBoolean;
customBranding: z.ZodBoolean;
apiAccess: z.ZodBoolean;
webhookSupport: z.ZodBoolean;
advancedAnalytics: z.ZodBoolean;
}, "strip", z.ZodTypeAny, {
multiTenancy: boolean;
sso: boolean;
auditLogging: boolean;
backup: boolean;
customBranding: boolean;
apiAccess: boolean;
webhookSupport: boolean;
advancedAnalytics: boolean;
}, {
multiTenancy: boolean;
sso: boolean;
auditLogging: boolean;
backup: boolean;
customBranding: boolean;
apiAccess: boolean;
webhookSupport: boolean;
advancedAnalytics: boolean;
}>;
limits: z.ZodObject<{
maxUsers: z.ZodNumber;
maxStorage: z.ZodNumber;
maxApiCalls: z.ZodNumber;
maxBackups: z.ZodNumber;
maxCustomDomains: z.ZodNumber;
}, "strip", z.ZodTypeAny, {
maxUsers: number;
maxStorage: number;
maxApiCalls: number;
maxBackups: number;
maxCustomDomains: number;
}, {
maxUsers: number;
maxStorage: number;
maxApiCalls: number;
maxBackups: number;
maxCustomDomains: number;
}>;
settings: z.ZodObject<{
timezone: z.ZodString;
locale: z.ZodString;
dateFormat: z.ZodString;
timeFormat: z.ZodString;
currency: z.ZodString;
theme: z.ZodOptional<z.ZodObject<{
primaryColor: z.ZodString;
secondaryColor: z.ZodString;
logo: z.ZodOptional<z.ZodString>;
favicon: z.ZodOptional<z.ZodString>;
}, "strip", z.ZodTypeAny, {
primaryColor: string;
secondaryColor: string;
logo?: string | undefined;
favicon?: string | undefined;
}, {
primaryColor: string;
secondaryColor: string;
logo?: string | undefined;
favicon?: string | undefined;
}>>;
notifications: z.ZodObject<{
email: z.ZodBoolean;
sms: z.ZodBoolean;
push: z.ZodBoolean;
webhook: z.ZodBoolean;
}, "strip", z.ZodTypeAny, {
push: boolean;
sms: boolean;
email: boolean;
webhook: boolean;
}, {
push: boolean;
sms: boolean;
email: boolean;
webhook: boolean;
}>;
security: z.ZodObject<{
passwordPolicy: z.ZodObject<{
minLength: z.ZodNumber;
requireUppercase: z.ZodBoolean;
requireLowercase: z.ZodBoolean;
requireNumbers: z.ZodBoolean;
requireSpecialChars: z.ZodBoolean;
maxAge: z.ZodNumber;
}, "strip", z.ZodTypeAny, {
minLength: number;
requireUppercase: boolean;
requireLowercase: boolean;
requireNumbers: boolean;
requireSpecialChars: boolean;
maxAge: number;
}, {
minLength: number;
requireUppercase: boolean;
requireLowercase: boolean;
requireNumbers: boolean;
requireSpecialChars: boolean;
maxAge: number;
}>;
sessionTimeout: z.ZodNumber;
maxLoginAttempts: z.ZodNumber;
twoFactorRequired: z.ZodBoolean;
ipWhitelist: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
}, "strip", z.ZodTypeAny, {
passwordPolicy: {
minLength: number;
requireUppercase: boolean;
requireLowercase: boolean;
requireNumbers: boolean;
requireSpecialChars: boolean;
maxAge: number;
};
sessionTimeout: number;
maxLoginAttempts: number;
twoFactorRequired: boolean;
ipWhitelist?: string[] | undefined;
}, {
passwordPolicy: {
minLength: number;
requireUppercase: boolean;
requireLowercase: boolean;
requireNumbers: boolean;
requireSpecialChars: boolean;
maxAge: number;
};
sessionTimeout: number;
maxLoginAttempts: number;
twoFactorRequired: boolean;
ipWhitelist?: string[] | undefined;
}>;
integrations: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
enabled: z.ZodBoolean;
apiKey: z.ZodOptional<z.ZodString>;
webhookUrl: z.ZodOptional<z.ZodString>;
settings: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
}, "strip", z.ZodTypeAny, {
enabled: boolean;
settings?: Record<string, unknown> | undefined;
apiKey?: string | undefined;
webhookUrl?: string | undefined;
}, {
enabled: boolean;
settings?: Record<string, unknown> | undefined;
apiKey?: string | undefined;
webhookUrl?: string | undefined;
}>>>;
}, "strip", z.ZodTypeAny, {
security: {
passwordPolicy: {
minLength: number;
requireUppercase: boolean;
requireLowercase: boolean;
requireNumbers: boolean;
requireSpecialChars: boolean;
maxAge: number;
};
sessionTimeout: number;
maxLoginAttempts: number;
twoFactorRequired: boolean;
ipWhitelist?: string[] | undefined;
};
currency: string;
timezone: string;
locale: string;
dateFormat: string;
timeFormat: string;
notifications: {
push: boolean;
sms: boolean;
email: boolean;
webhook: boolean;
};
theme?: {
primaryColor: string;
secondaryColor: string;
logo?: string | undefined;
favicon?: string | undefined;
} | undefined;
integrations?: Record<string, {
enabled: boolean;
settings?: Record<string, unknown> | undefined;
apiKey?: string | undefined;
webhookUrl?: string | undefined;
}> | undefined;
}, {
security: {
passwordPolicy: {
minLength: number;
requireUppercase: boolean;
requireLowercase: boolean;
requireNumbers: boolean;
requireSpecialChars: boolean;
maxAge: number;
};
sessionTimeout: number;
maxLoginAttempts: number;
twoFactorRequired: boolean;
ipWhitelist?: string[] | undefined;
};
currency: string;
timezone: string;
locale: string;
dateFormat: string;
timeFormat: string;
notifications: {
push: boolean;
sms: boolean;
email: boolean;
webhook: boolean;
};
theme?: {
primaryColor: string;
secondaryColor: string;
logo?: string | undefined;
favicon?: string | undefined;
} | undefined;
integrations?: Record<string, {
enabled: boolean;
settings?: Record<string, unknown> | undefined;
apiKey?: string | undefined;
webhookUrl?: string | undefined;
}> | undefined;
}>;
createdAt: z.ZodDate;
updatedAt: z.ZodDate;
createdBy: z.ZodOptional<z.ZodString>;
updatedBy: z.ZodOptional<z.ZodString>;
}, "strip", z.ZodTypeAny, {
id: string & z.BRAND<"TenantId">;
createdAt: Date;
updatedAt: Date;
features: {
multiTenancy: boolean;
sso: boolean;
auditLogging: boolean;
backup: boolean;
customBranding: boolean;
apiAccess: boolean;
webhookSupport: boolean;
advancedAnalytics: boolean;
};
limits: {
maxUsers: number;
maxStorage: number;
maxApiCalls: number;
maxBackups: number;
maxCustomDomains: number;
};
settings: {
security: {
passwordPolicy: {
minLength: number;
requireUppercase: boolean;
requireLowercase: boolean;
requireNumbers: boolean;
requireSpecialChars: boolean;
maxAge: number;
};
sessionTimeout: number;
maxLoginAttempts: number;
twoFactorRequired: boolean;
ipWhitelist?: string[] | undefined;
};
currency: string;
timezone: string;
locale: string;
dateFormat: string;
timeFormat: string;
notifications: {
push: boolean;
sms: boolean;
email: boolean;
webhook: boolean;
};
theme?: {
primaryColor: string;
secondaryColor: string;
logo?: string | undefined;
favicon?: string | undefined;
} | undefined;
integrations?: Record<string, {
enabled: boolean;
settings?: Record<string, unknown> | undefined;
apiKey?: string | undefined;
webhookUrl?: string | undefined;
}> | undefined;
};
createdBy?: string | undefined;
updatedBy?: string | undefined;
}, {
id: string;
createdAt: Date;
updatedAt: Date;
features: {
multiTenancy: boolean;
sso: boolean;
auditLogging: boolean;
backup: boolean;
customBranding: boolean;
apiAccess: boolean;
webhookSupport: boolean;
advancedAnalytics: boolean;
};
limits: {
maxUsers: number;
maxStorage: number;
maxApiCalls: number;
maxBackups: number;
maxCustomDomains: number;
};
settings: {
security: {
passwordPolicy: {
minLength: number;
requireUppercase: boolean;
requireLowercase: boolean;
requireNumbers: boolean;
requireSpecialChars: boolean;
maxAge: number;
};
sessionTimeout: number;
maxLoginAttempts: number;
twoFactorRequired: boolean;
ipWhitelist?: string[] | undefined;
};
currency: string;
timezone: string;
locale: string;
dateFormat: string;
timeFormat: string;
notifications: {
push: boolean;
sms: boolean;
email: boolean;
webhook: boolean;
};
theme?: {
primaryColor: string;
secondaryColor: string;
logo?: string | undefined;
favicon?: string | undefined;
} | undefined;
integrations?: Record<string, {
enabled: boolean;
settings?: Record<string, unknown> | undefined;
apiKey?: string | undefined;
webhookUrl?: string | undefined;
}> | undefined;
};
createdBy?: string | undefined;
updatedBy?: string | undefined;
}>;
export declare const TenantSchema: z.ZodObject<{
id: z.ZodBranded<z.ZodString, "TenantId">;
name: z.ZodString;
slug: z.ZodString;
domain: z.ZodObject<{
value: z.ZodBranded<z.ZodString, "DomainName">;
isVerified: z.ZodBoolean;
verifiedAt: z.ZodOptional<z.ZodDate>;
sslCertificate: z.ZodOptional<z.ZodObject<{
issuer: z.ZodString;
validFrom: z.ZodDate;
validTo: z.ZodDate;
serialNumber: z.ZodString;
}, "strip", z.ZodTypeAny, {
issuer: string;
validFrom: Date;
validTo: Date;
serialNumber: string;
}, {
issuer: string;
validFrom: Date;
validTo: Date;
serialNumber: string;
}>>;
createdAt: z.ZodDate;
}, "strip", z.ZodTypeAny, {
value: string & z.BRAND<"DomainName">;
createdAt: Date;
isVerified: boolean;
verifiedAt?: Date | undefined;
sslCertificate?: {
issuer: string;
validFrom: Date;
validTo: Date;
serialNumber: string;
} | undefined;
}, {
value: string;
createdAt: Date;
isVerified: boolean;
verifiedAt?: Date | undefined;
sslCertificate?: {
issuer: string;
validFrom: Date;
validTo: Date;
serialNumber: string;
} | undefined;
}>;
type: z.ZodNativeEnum<typeof TenantType>;
status: z.ZodNativeEnum<typeof TenantStatus>;
config: z.ZodObject<{
id: z.ZodBranded<z.ZodString, "TenantId">;
features: z.ZodObject<{
multiTenancy: z.ZodBoolean;
sso: z.ZodBoolean;
auditLogging: z.ZodBoolean;
backup: z.ZodBoolean;
customBranding: z.ZodBoolean;
apiAccess: z.ZodBoolean;
webhookSupport: z.ZodBoolean;
advancedAnalytics: z.ZodBoolean;
}, "strip", z.ZodTypeAny, {
multiTenancy: boolean;
sso: boolean;
auditLogging: boolean;
backup: boolean;
customBranding: boolean;
apiAccess: boolean;
webhookSupport: boolean;
advancedAnalytics: boolean;
}, {
multiTenancy: boolean;
sso: boolean;
auditLogging: boolean;
backup: boolean;
customBranding: boolean;
apiAccess: boolean;
webhookSupport: boolean;
advancedAnalytics: boolean;
}>;
limits: z.ZodObject<{
maxUsers: z.ZodNumber;
maxStorage: z.ZodNumber;
maxApiCalls: z.ZodNumber;
maxBackups: z.ZodNumber;
maxCustomDomains: z.ZodNumber;
}, "strip", z.ZodTypeAny, {
maxUsers: number;
maxStorage: number;
maxApiCalls: number;
maxBackups: number;
maxCustomDomains: number;
}, {
maxUsers: number;
maxStorage: number;
maxApiCalls: number;
maxBackups: number;
maxCustomDomains: number;
}>;
settings: z.ZodObject<{
timezone: z.ZodString;
locale: z.ZodString;
dateFormat: z.ZodString;
timeFormat: z.ZodString;
currency: z.ZodString;
theme: z.ZodOptional<z.ZodObject<{
primaryColor: z.ZodString;
secondaryColor: z.ZodString;
logo: z.ZodOptional<z.ZodString>;
favicon: z.ZodOptional<z.ZodString>;
}, "strip", z.ZodTypeAny, {
primaryColor: string;
secondaryColor: string;
logo?: string | undefined;
favicon?: string | undefined;
}, {
primaryColor: string;
secondaryColor: string;
logo?: string | undefined;
favicon?: string | undefined;
}>>;
notifications: z.ZodObject<{
email: z.ZodBoolean;
sms: z.ZodBoolean;
push: z.ZodBoolean;
webhook: z.ZodBoolean;
}, "strip", z.ZodTypeAny, {
push: boolean;
sms: boolean;
email: boolean;
webhook: boolean;
}, {
push: boolean;
sms: boolean;
email: boolean;
webhook: boolean;
}>;
security: z.ZodObject<{
passwordPolicy: z.ZodObject<{
minLength: z.ZodNumber;
requireUppercase: z.ZodBoolean;
requireLowercase: z.ZodBoolean;
requireNumbers: z.ZodBoolean;
requireSpecialChars: z.ZodBoolean;
maxAge: z.ZodNumber;
}, "strip", z.ZodTypeAny, {
minLength: number;
requireUppercase: boolean;
requireLowercase: boolean;
requireNumbers: boolean;
requireSpecialChars: boolean;
maxAge: number;
}, {
minLength: number;
requireUppercase: boolean;
requireLowercase: boolean;
requireNumbers: boolean;
requireSpecialChars: boolean;
maxAge: number;
}>;
sessionTimeout: z.ZodNumber;
maxLoginAttempts: z.ZodNumber;
twoFactorRequired: z.ZodBoolean;
ipWhitelist: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
}, "strip", z.ZodTypeAny, {
passwordPolicy: {
minLength: number;
requireUppercase: boolean;
requireLowercase: boolean;
requireNumbers: boolean;
requireSpecialChars: boolean;
maxAge: number;
};
sessionTimeout: number;
maxLoginAttempts: number;
twoFactorRequired: boolean;
ipWhitelist?: string[] | undefined;
}, {
passwordPolicy: {
minLength: number;
requireUppercase: boolean;
requireLowercase: boolean;
requireNumbers: boolean;
requireSpecialChars: boolean;
maxAge: number;
};
sessionTimeout: number;
maxLoginAttempts: number;
twoFactorRequired: boolean;
ipWhitelist?: string[] | undefined;
}>;
integrations: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
enabled: z.ZodBoolean;
apiKey: z.ZodOptional<z.ZodString>;
webhookUrl: z.ZodOptional<z.ZodString>;
settings: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
}, "strip", z.ZodTypeAny, {
enabled: boolean;
settings?: Record<string, unknown> | undefined;
apiKey?: string | undefined;
webhookUrl?: string | undefined;
}, {
enabled: boolean;
settings?: Record<string, unknown> | undefined;
apiKey?: string | undefined;
webhookUrl?: string | undefined;
}>>>;
}, "strip", z.ZodTypeAny, {
security: {
passwordPolicy: {
minLength: number;
requireUppercase: boolean;
requireLowercase: boolean;
requireNumbers: boolean;
requireSpecialChars: boolean;
maxAge: number;
};
sessionTimeout: number;
maxLoginAttempts: number;
twoFactorRequired: boolean;
ipWhitelist?: string[] | undefined;
};
currency: string;
timezone: string;
locale: string;
dateFormat: string;
timeFormat: string;
notifications: {
push: boolean;
sms: boolean;
email: boolean;
webhook: boolean;
};
theme?: {
primaryColor: string;
secondaryColor: string;
logo?: string | undefined;
favicon?: string | undefined;
} | undefined;
integrations?: Record<string, {
enabled: boolean;
settings?: Record<string, unknown> | undefined;
apiKey?: string | undefined;
webhookUrl?: string | undefined;
}> | undefined;
}, {
security: {
passwordPolicy: {
minLength: number;
requireUppercase: boolean;
requireLowercase: boolean;
requireNumbers: boolean;
requireSpecialChars: boolean;
maxAge: number;
};
sessionTimeout: number;
maxLoginAttempts: number;
twoFactorRequired: boolean;
ipWhitelist?: string[] | undefined;
};
currency: string;
timezone: string;
locale: string;
dateFormat: string;
timeFormat: string;
notifications: {
push: boolean;
sms: boolean;
email: boolean;
webhook: boolean;
};
theme?: {
primaryColor: string;
secondaryColor: string;
logo?: string | undefined;
favicon?: string | undefined;
} | undefined;
integrations?: Record<string, {
enabled: boolean;
settings?: Record<string, unknown> | undefined;
apiKey?: string | undefined;
webhookUrl?: string | undefined;
}> | undefined;
}>;
createdAt: z.ZodDate;
updatedAt: z.ZodDate;
createdBy: z.ZodOptional<z.ZodString>;
updatedBy: z.ZodOptional<z.ZodString>;
}, "strip", z.ZodTypeAny, {
id: string & z.BRAND<"TenantId">;
createdAt: Date;
updatedAt: Date;
features: {
multiTenancy: boolean;
sso: boolean;
auditLogging: boolean;
backup: boolean;
customBranding: boolean;
apiAccess: boolean;
webhookSupport: boolean;
advancedAnalytics: boolean;
};
limits: {
maxUsers: number;
maxStorage: number;
maxApiCalls: number;
maxBackups: number;
maxCustomDomains: number;
};
settings: {
security: {
passwordPolicy: {
minLength: number;
requireUppercase: boolean;
requireLowercase: boolean;
requireNumbers: boolean;
requireSpecialChars: boolean;
maxAge: number;
};
sessionTimeout: number;
maxLoginAttempts: number;
twoFactorRequired: boolean;
ipWhitelist?: string[] | undefined;
};
currency: string;
timezone: string;
locale: string;
dateFormat: string;
timeFormat: string;
notifications: {
push: boolean;
sms: boolean;
email: boolean;
webhook: boolean;
};
theme?: {
primaryColor: string;
secondaryColor: string;
logo?: string | undefined;
favicon?: string | undefined;
} | undefined;
integrations?: Record<string, {
enabled: boolean;
settings?: Record<string, unknown> | undefined;
apiKey?: string | undefined;
webhookUrl?: string | undefined;
}> | undefined;
};
createdBy?: string | undefined;
updatedBy?: string | undefined;
}, {
id: string;
createdAt: Date;
updatedAt: Date;
features: {
multiTenancy: boolean;
sso: boolean;
auditLogging: boolean;
backup: boolean;
customBranding: boolean;
apiAccess: boolean;
webhookSupport: boolean;
advancedAnalytics: boolean;
};
limits: {
maxUsers: number;
maxStorage: number;
maxApiCalls: number;
maxBackups: number;
maxCustomDomains: number;
};
settings: {
security: {
passwordPolicy: {
minLength: number;
requireUppercase: boolean;
requireLowercase: boolean;
requireNumbers: boolean;
requireSpecialChars: boolean;
maxAge: number;
};
sessionTimeout: number;
maxLoginAttempts: number;
twoFactorRequired: boolean;
ipWhitelist?: string[] | undefined;
};
currency: string;
timezone: string;
locale: string;
dateFormat: string;
timeFormat: string;
notifications: {
push: boolean;
sms: boolean;
email: boolean;
webhook: boolean;
};
theme?: {
primaryColor: string;
secondaryColor: string;
logo?: string | undefined;
favicon?: string | undefined;
} | undefined;
integrations?: Record<string, {
enabled: boolean;
settings?: Record<string, unknown> | undefined;
apiKey?: string | undefined;
webhookUrl?: string | undefined;
}> | undefined;
};
createdBy?: string | undefined;
updatedBy?: string | undefined;
}>;
contact: z.ZodObject<{
email: z.ZodString;
phone: z.ZodOptional<z.ZodString>;
address: z.ZodOptional<z.ZodObject<{
street: z.ZodString;
city: z.ZodString;
state: z.ZodString;
postalCode: z.ZodString;
country: z.ZodString;
}, "strip", z.ZodTypeAny, {
street: string;
city: string;
country: string;
state: string;
postalCode: string;
}, {
street: string;
city: string;
country: string;
state: string;
postalCode: string;
}>>;
}, "strip", z.ZodTypeAny, {
email: string;
phone?: string | undefined;
address?: {
street: string;
city: string;
country: string;
state: string;
postalCode: string;
} | undefined;
}, {
email: string;
phone?: string | undefined;
address?: {
street: string;
city: string;
country: string;
state: string;
postalCode: string;
} | undefined;
}>;
billing: z.ZodObject<{
plan: z.ZodEnum<["free", "basic", "professional", "enterprise"]>;
billingCycle: z.ZodEnum<["monthly", "quarterly", "annually"]>;
nextBillingDate: z.ZodDate;
lastBillingDate: z.ZodOptional<z.ZodDate>;
totalAmount: z.ZodNumber;
currency: z.ZodString;
paymentMethod: z.ZodOptional<z.ZodObject<{
type: z.ZodEnum<["credit_card", "bank_transfer", "paypal"]>;
last4: z.ZodOptional<z.ZodString>;
expiryDate: z.ZodOptional<z.ZodString>;
}, "strip", z.ZodTypeAny, {
type: "paypal" | "credit_card" | "bank_transfer";
last4?: string | undefined;
expiryDate?: string | undefined;
}, {
type: "paypal" | "credit_card" | "bank_transfer";
last4?: string | undefined;
expiryDate?: string | undefined;
}>>;
invoices: z.ZodOptional<z.ZodArray<z.ZodObject<{
id: z.ZodString;
amount: z.ZodNumber;
currency: z.ZodString;
status: z.ZodEnum<["pending", "paid", "overdue", "cancelled"]>;
dueDate: z.ZodDate;
paidAt: z.ZodOptional<z.ZodDate>;
}, "strip", z.ZodTypeAny, {
id: string;
status: "pending" | "cancelled" | "paid" | "overdue";
amount: number;
currency: string;
dueDate: Date;
paidAt?: Date | undefined;
}, {
id: string;
status: "pending" | "cancelled" | "paid" | "overdue";
amount: number;
currency: string;
dueDate: Date;
paidAt?: Date | undefined;
}>, "many">>;
}, "strip", z.ZodTypeAny, {
plan: "basic" | "professional" | "enterprise" | "free";
currency: string;
billingCycle: "monthly" | "quarterly" | "annually";
nextBillingDate: Date;
totalAmount: number;
paymentMethod?: {
type: "paypal" | "credit_card" | "bank_transfer";
last4?: string | undefined;
expiryDate?: string | undefined;
} | undefined;
lastBillingDate?: Date | undefined;
invoices?: {
id: string;
status: "pending" | "cancelled" | "paid" | "overdue";
amount: number;
currency: string;
dueDate: Date;
paidAt?: Date | undefined;
}[] | undefined;
}, {
plan: "basic" | "professional" | "enterprise" | "free";
currency: string;
billingCycle: "monthly" | "quarterly" | "annually";
nextBillingDate: Date;
totalAmount: number;
paymentMethod?: {
type: "paypal" | "credit_card" | "bank_transfer";
last4?: string | undefined;
expiryDate?: string | undefined;
} | undefined;
lastBillingDate?: Date | undefined;
invoices?: {
id: string;
status: "pending" | "cancelled" | "paid" | "overdue";
amount: number;
currency: string;
dueDate: Date;
paidAt?: Date | undefined;
}[] | undefined;
}>;
subscription: z.ZodObject<{
startDate: z.ZodDate;
endDate: z.ZodOptional<z.ZodDate>;
isActive: z.ZodBoolean;
autoRenew: z.ZodBoolean;
trialEndsAt: z.ZodOptional<z.ZodDate>;
cancelledAt: z.ZodOptional<z.ZodDate>;
}, "strip", z.ZodTypeAny, {
startDate: Date;
isActive: boolean;
autoRenew: boolean;
endDate?: Date | undefined;
trialEndsAt?: Date | undefined;
cancelledAt?: Date | undefined;
}, {
startDate: Date;
isActive: boolean;
autoRenew: boolean;
endDate?: Date | undefined;
trialEndsAt?: Date | undefined;
cancelledAt?: Date | undefined;
}>;
usage: z.ZodObject<{
activeUsers: z.ZodNumber;
storageUsed: z.ZodNumber;
apiCallsThisMonth: z.ZodNumber;
lastActivityAt: z.ZodOptional<z.ZodDate>;
}, "strip", z.ZodTypeAny, {
activeUsers: number;
storageUsed: number;
apiCallsThisMonth: number;
lastActivityAt?: Date | undefined;
}, {
activeUsers: number;
storageUsed: number;
apiCallsThisMonth: number;
lastActivityAt?: Date | undefined;
}>;
createdAt: z.ZodDate;
updatedAt: z.ZodDate;
createdBy: z.ZodOptional<z.ZodString>;
updatedBy: z.ZodOptional<z.ZodString>;
deletedAt: z.ZodOptional<z.ZodDate>;
}, "strip", z.ZodTypeAny, {
type: TenantType;
id: string & z.BRAND<"TenantId">;
createdAt: Date;
updatedAt: Date;
status: TenantStatus;
name: string;
slug: string;
domain: {
value: string & z.BRAND<"DomainName">;
createdAt: Date;
isVerified: boolean;
verifiedAt?: Date | undefined;
sslCertificate?: {
issuer: string;
validFrom: Date;
validTo: Date;
serialNumber: string;
} | undefined;
};
config: {
id: string & z.BRAND<"TenantId">;
createdAt: Date;
updatedAt: Date;
features: {
multiTenancy: boolean;
sso: boolean;
auditLogging: boolean;
backup: boolean;
customBranding: boolean;
apiAccess: boolean;
webhookSupport: boolean;
advancedAnalytics: boolean;
};
limits: {
maxUsers: number;
maxStorage: number;
maxApiCalls: number;
maxBackups: number;
maxCustomDomains: number;
};
settings: {
security: {
passwordPolicy: {
minLength: number;
requireUppercase: boolean;
requireLowercase: boolean;
requireNumbers: boolean;
requireSpecialChars: boolean;
maxAge: number;
};
sessionTimeout: number;
maxLoginAttempts: number;
twoFactorRequired: boolean;
ipWhitelist?: string[] | undefined;
};
currency: string;
timezone: string;
locale: string;
dateFormat: string;
timeFormat: string;
notifications: {
push: boolean;
sms: boolean;
email: boolean;
webhook: boolean;
};
theme?: {
primaryColor: string;
secondaryColor: string;
logo?: string | undefined;
favicon?: string | undefined;
} | undefined;
integrations?: Record<string, {
enabled: boolean;
settings?: Record<string, unknown> | undefined;
apiKey?: string | undefined;
webhookUrl?: string | undefined;
}> | undefined;
};
createdBy?: string | undefined;
updatedBy?: string | undefined;
};
contact: {
email: string;
phone?: string | undefined;
address?: {
street: string;
city: string;
country: string;
state: string;
postalCode: string;
} | undefined;
};
billing: {
plan: "basic" | "professional" | "enterprise" | "free";
currency: string;
billingCycle: "monthly" | "quarterly" | "annually";
nextBillingDate: Date;
totalAmount: number;
paymentMethod?: {
type: "paypal" | "credit_card" | "bank_transfer";
last4?: string | undefined;
expiryDate?: string | undefined;
} | undefined;
lastBillingDate?: Date | undefined;
invoices?: {
id: string;
status: "pending" | "cancelled" | "paid" | "overdue";
amount: number;
currency: string;
dueDate: Date;
paidAt?: Date | undefined;
}[] | undefined;
};
subscription: {
startDate: Date;
isActive: boolean;
autoRenew: boolean;
endDate?: Date | undefined;
trialEndsAt?: Date | undefined;
cancelledAt?: Date | undefined;
};
usage: {
activeUsers: number;
storageUsed: number;
apiCallsThisMonth: number;
lastActivityAt?: Date | undefined;
};
createdBy?: string | undefined;
updatedBy?: string | undefined;
deletedAt?: Date | undefined;
}, {
type: TenantType;
id: string;
createdAt: Date;
updatedAt: Date;
status: TenantStatus;
name: string;
slug: string;
domain: {
value: string;
createdAt: Date;
isVerified: boolean;
verifiedAt?: Date | undefined;
sslCertificate?: {
issuer: string;
validFrom: Date;
validTo: Date;
serialNumber: string;
} | undefined;
};
config: {
id: string;
createdAt: Date;
updatedAt: Date;
features: {
multiTenancy: boolean;
sso: boolean;
auditLogging: boolean;
backup: boolean;
customBranding: boolean;
apiAccess: boolean;
webhookSupport: boolean;
advancedAnalytics: boolean;
};
limits: {
maxUsers: number;
maxStorage: number;
maxApiCalls: number;
maxBackups: number;
maxCustomDomains: number;
};
settings: {
security: {
passwordPolicy: {
minLength: number;
requireUppercase: boolean;
requireLowercase: boolean;
requireNumbers: boolean;
requireSpecialChars: boolean;
maxAge: number;
};
sessionTimeout: number;
maxLoginAttempts: number;
twoFactorRequired: boolean;
ipWhitelist?: string[] | undefined;
};
currency: string;
timezone: string;
locale: string;
dateFormat: string;
timeFormat: string;
notifications: {
push: boolean;
sms: boolean;
email: boolean;
webhook: boolean;
};
theme?: {
primaryColor: string;
secondaryColor: string;
logo?: string | undefined;
favicon?: string | undefined;
} | undefined;
integrations?: Record<string, {
enabled: boolean;
settings?: Record<string, unknown> | undefined;
apiKey?: string | undefined;
webhookUrl?: string | undefined;
}> | undefined;
};
createdBy?: string | undefined;
updatedBy?: string | undefined;
};
contact: {
email: string;
phone?: string | undefined;
address?: {
street: string;
city: string;
country: string;
state: string;
postalCode: string;
} | undefined;
};
billing: {
plan: "basic" | "professional" | "enterprise" | "free";
currency: string;
billingCycle: "monthly" | "quarterly" | "annually";
nextBillingDate: Date;
totalAmount: number;
paymentMethod?: {
type: "paypal" | "credit_card" | "bank_transfer";
last4?: string | undefined;
expiryDate?: string | undefined;
} | undefined;
lastBillingDate?: Date | undefined;
invoices?: {
id: string;
status: "pending" | "cancelled" | "paid" | "overdue";
amount: number;
currency: string;
dueDate: Date;
paidAt?: Date | undefined;
}[] | undefined;
};
subscription: {
startDate: Date;
isActive: boolean;
autoRenew: boolean;
endDate?: Date | undefined;
trialEndsAt?: Date | undefined;
cancelledAt?: Date | undefined;
};
usage: {
activeUsers: number;
storageUsed: number;
apiCallsThisMonth: number;
lastActivityAt?: Date | undefined;
};
createdBy?: string | undefined;
updatedBy?: string | undefined;
deletedAt?: Date | undefined;
}>;
export declare const CreateTenantRequestSchema: z.ZodObject<{
name: z.ZodString;
slug: z.ZodString;
domain: z.ZodString;
type: z.ZodNativeEnum<typeof TenantType>;
contact: z.ZodObject<{
email: z.ZodString;
phone: z.ZodOptional<z.ZodString>;
address: z.ZodOptional<z.ZodObject<{
street: z.ZodString;
city: z.ZodString;
state: z.ZodString;
postalCode: z.ZodString;
country: z.ZodString;
}, "strip", z.ZodTypeAny, {
street: string;
city: string;
country: string;
state: string;
postalCode: string;
}, {
street: string;
city: string;
country: string;
state: string;
postalCode: string;
}>>;
}, "strip", z.ZodTypeAny, {
email: string;
phone?: string | undefined;
address?: {
street: string;
city: string;
country: string;
state: string;
postalCode: string;
} | undefined;
}, {
email: string;
phone?: string | undefined;
address?: {
street: string;
city: string;
country: string;
state: string;
postalCode: string;
} | undefined;
}>;
billing: z.ZodObject<{
plan: z.ZodEnum<["free", "basic", "professional", "enterprise"]>;
billingCycle: z.ZodEnum<["monthly", "quarterly", "annually"]>;
paymentMethod: z.ZodOptional<z.ZodObject<{
type: z.ZodEnum<["credit_card", "bank_transfer", "paypal"]>;
token: z.ZodOptional<z.ZodString>;
}, "strip", z.ZodTypeAny, {
type: "paypal" | "credit_card" | "bank_transfer";
token?: string | undefined;
}, {
type: "paypal" | "credit_card" | "bank_transfer";
token?: string | undefined;
}>>;
}, "strip", z.ZodTypeAny, {
plan: "basic" | "professional" | "enterprise" | "free";
billingCycle: "monthly" | "quarterly" | "annually";
paymentMethod?: {
type: "paypal" | "credit_card" | "bank_transfer";
token?: string | undefined;
} | undefined;
}, {
plan: "basic" | "professional" | "enterprise" | "free";
billingCycle: "monthly" | "quarterly" | "annually";
paymentMethod?: {
type: "paypal" | "credit_card" | "bank_transfer";
token?: string | undefined;
} | undefined;
}>;
config: z.ZodOptional<z.ZodObject<{
features: z.ZodOptional<z.ZodObject<{
multiTenancy: z.ZodOptional<z.ZodBoolean>;
sso: z.ZodOptional<z.ZodBoolean>;
auditLogging: z.ZodOptional<z.ZodBoolean>;
backup: z.ZodOptional<z.ZodBoolean>;
customBranding: z.ZodOptional<z.ZodBoolean>;
apiAccess: z.ZodOptional<z.ZodBoolean>;
webhookSupport: z.ZodOptional<z.ZodBoolean>;
advancedAnalytics: z.ZodOptional<z.ZodBoolean>;
}, "strip", z.ZodTypeAny, {
multiTenancy?: boolean | undefined;
sso?: boolean | undefined;
auditLogging?: boolean | undefined;
backup?: boolean | undefined;
customBranding?: boolean | undefined;
apiAccess?: boolean | undefined;
webhookSupport?: boolean | undefined;
advancedAnalytics?: boolean | undefined;
}, {
multiTenancy?: boolean | undefined;
sso?: boolean | undefined;
auditLogging?: boolean | undefined;
backup?: boolean | undefined;
customBranding?: boolean | undefined;
apiAccess?: boolean | undefined;
webhookSupport?: boolean | undefined;
advancedAnalytics?: boolean | undefined;
}>>;
limits: z.ZodOptional<z.ZodObject<{
maxUsers: z.ZodOptional<z.ZodNumber>;
maxStorage: z.ZodOptional<z.ZodNumber>;
maxApiCalls: z.ZodOptional<z.ZodNumber>;
maxBackups: z.ZodOptional<z.ZodNumber>;
maxCustomDomains: z.ZodOptional<z.ZodNumber>;
}, "strip", z.ZodTypeAny, {
maxUsers?: number | undefined;
maxStorage?: number | undefined;
maxApiCalls?: number | undefined;
maxBackups?: number | undefined;
maxCustomDomains?: number | undefined;
}, {
maxUsers?: number | undefined;
maxStorage?: number | undefined;
maxApiCalls?: number | undefined;
maxBackups?: number | undefined;
maxCustomDomains?: number | undefined;
}>>;
settings: z.ZodOptional<z.ZodObject<{
timezone: z.ZodOptional<z.ZodString>;
locale: z.ZodOptional<z.ZodString>;
dateFormat: z.ZodOptional<z.ZodString>;
timeFormat: z.ZodOptional<z.ZodString>;
currency: z.ZodOptional<z.ZodString>;
theme: z.ZodOptional<z.ZodObject<{
primaryColor: z.ZodOptional<z.ZodString>;
secondaryColor: z.ZodOptional<z.ZodString>;
logo: z.ZodOptional<z.ZodString>;
favicon: z.ZodOptional<z.ZodString>;
}, "strip", z.ZodTypeAny, {
primaryColor?: string | undefined;
secondaryColor?: string | undefined;
logo?: string | undefined;
favicon?: string | undefined;
}, {
primaryColor?: string | undefined;
secondaryColor?: string | undefined;
logo?: string | undefined;
favicon?: string | undefined;
}>>;
notifications: z.ZodOptional<z.ZodObject<{
email: z.ZodOptional<z.ZodBoolean>;
sms: z.ZodOptional<z.ZodBoolean>;
push: z.ZodOptional<z.ZodBoolean>;
webhook: z.ZodOptional<z.ZodBoolean>;
}, "strip", z.ZodTypeAny, {
push?: boolean | undefined;
sms?: boolean | undefined;
email?: boolean | undefined;
webhook?: boolean | undefined;
}, {
push?: boolean | undefined;
sms?: boolean | undefined;
email?: boolean | undefined;
webhook?: boolean | undefined;
}>>;
security: z.ZodOptional<z.ZodObject<{
passwordPolicy: z.ZodOptional<z.ZodObject<{
minLength: z.ZodOptional<z.ZodNumber>;
requireUppercase: z.ZodOptional<z.ZodBoolean>;
requireLowercase: z.ZodOptional<z.ZodBoolean>;
requireNumbers: z.ZodOptional<z.ZodBoolean>;
requireSpecialChars: z.ZodOptional<z.ZodBoolean>;
maxAge: z.ZodOptional<z.ZodNumber>;
}, "strip", z.ZodTypeAny, {
minLength?: number | undefined;
requireUppercase?: boolean | undefined;
requireLowercase?: boolean | undefined;
requireNumbers?: boolean | undefined;
requireSpecialChars?: boolean | undefined;
maxAge?: number | undefined;
}, {
minLength?: number | undefined;
requireUppercase?: boolean | undefined;
requireLowercase?: boolean | undefined;
requireNumbers?: boolean | undefined;
requireSpecialChars?: boolean | undefined;
maxAge?: number | undefined;
}>>;
sessionTimeout: z.ZodOptional<z.ZodNumber>;
maxLoginAttemp