// Type definitions for the application export enum ECivility { MALE = 'MALE', FEMALE = 'FEMALE', OTHERS = 'OTHERS' } export enum EOfficeStatus { ACTIVATED = 'ACTIVATED', DESACTIVATED = 'DESACTIVATED' } export enum EIdnotRole { DIRECTEUR = "Directeur général du CSN", NOTAIRE_TITULAIRE = "Notaire titulaire", NOTAIRE_ASSOCIE = "Notaire associé", NOTAIRE_SALARIE = "Notaire salarié", COLLABORATEUR = "Collaborateur", SECRETAIRE_GENERAL = "Secrétaire général", SUPPLEANT = "Suppléant", ADMINISTRATEUR = "Administrateur", RESPONSABLE = "Responsable", CURATEUR = "Curateur", } export enum ETemplates { DOCUMENT_ASKED = "DOCUMENT_ASKED", DOCUMENT_REFUSED = "DOCUMENT_REFUSED", DOCUMENT_RECAP = "DOCUMENT_RECAP", SUBSCRIPTION_INVITATION = "SUBSCRIPTION_INVITATION", DOCUMENT_REMINDER = "DOCUMENT_REMINDER", DOCUMENT_SEND = "DOCUMENT_SEND", } export interface Address { address: string; city: string; zip_code: number; } export interface Office { idNot: string; name: string; crpcen: string; office_status: EOfficeStatus; address: Address; status: string; } export interface Contact { first_name: string; last_name: string; email: string; phone_number: string; cell_phone_number: string; civility: ECivility; } export interface Role { name: string; } export interface OfficeRole { name: string; } export interface IdNotUser { idNot: string; office: Office; role: Role; contact: Contact; office_role: OfficeRole | null; } export interface AuthToken { idNot: string; authToken: string; idNotUser: IdNotUser; pairingId: string | null; defaultStorage: string | null; createdAt: number; expiresAt: number; } export interface Session { id: string; phoneNumber: string; userData: any; createdAt: number; expiresAt: number; } export interface VerificationCode { code: number; timestamp: number; attempts: number; } export interface SmsConfig { OVH_APP_KEY?: string; OVH_APP_SECRET?: string; OVH_CONSUMER_KEY?: string; OVH_SMS_SERVICE_NAME?: string; SMS_FACTOR_TOKEN?: string; PORT: number; } export interface EmailConfig { MAILCHIMP_API_KEY?: string; MAILCHIMP_KEY?: string; MAILCHIMP_LIST_ID?: string; PORT: number; FROM_EMAIL: string; FROM_NAME: string; } export interface StripeConfig { STRIPE_SECRET_KEY?: string; STRIPE_WEBHOOK_SECRET?: string; APP_HOST: string; } // SignerConfig is now imported from sdk-signer-client as ClientConfig export interface Subscription { type: 'STANDARD' | 'UNLIMITED'; seats?: number; } export interface PendingEmail { to: string; templateName: string; subject: string; templateVariables: Record; attempts: number; lastAttempt: number; } export interface ProcessInfo { processId: string; processData: any; } export interface ValidationRule { quorum: number; fields: string[]; min_sig_member: number; } export interface ProcessRole { members: string[]; validation_rules: ValidationRule[]; storages: string[]; } export interface ProcessRoles { owner: ProcessRole; apophis: ProcessRole; [key: string]: ProcessRole; } export interface ProcessData { uid: string; utype: string; [key: string]: any; } // Express Request extensions declare global { namespace Express { interface Request { session?: Session; idNotUser?: { idNot: string; authToken: string; }; } } }