2025-09-07 15:30:32 +02:00

181 lines
3.4 KiB
TypeScript

// 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<string, string>;
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;
};
}
}
}