@jobsearch-works/firestore-models 2.0.4 → 2.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.mts CHANGED
@@ -1,244 +1,10 @@
1
- type AgentStatus = "active" | "inactive";
2
- interface Agent {
3
- readonly id?: string;
4
- readonly name: string;
5
- readonly email: string;
6
- readonly status: AgentStatus;
7
- readonly profilePicture?: string;
8
- readonly createdAt?: Date | string;
9
- readonly updatedAt?: Date | string;
10
- }
11
-
12
- declare const ApplicationStatus: {
13
- readonly New: "new";
14
- readonly Submitted: "submitted";
15
- readonly Interviewing: "interviewing";
16
- readonly Accepted: "accepted";
17
- readonly Rejected: "rejected";
18
- readonly Withdrawn: "withdrawn";
19
- readonly Applying: "applying";
20
- readonly Suggested: "suggested";
21
- readonly Approved: "approved";
22
- };
23
- type ApplicationStatus = (typeof ApplicationStatus)[keyof typeof ApplicationStatus];
24
- interface Application {
25
- id?: string;
26
- vacancyId: string;
27
- clientId: string;
28
- status: ApplicationStatus;
29
- assignedTo?: string;
30
- coverLetter?: string;
31
- resume?: string;
32
- submittedAt?: Date | string;
33
- interviewingAt?: Date | string;
34
- acceptedAt?: Date | string;
35
- rejectedAt?: Date | string;
36
- withdrawnAt?: Date | string;
37
- applyingAt?: Date | string;
38
- suggestedAt?: Date | string;
39
- approvedAt?: Date | string;
40
- company?: string;
41
- position?: string;
42
- location?: string;
43
- jobId?: string;
44
- advertisingUrl?: string;
45
- applicationUrl?: string;
46
- applicationDomain?: string;
47
- advertisingDomain?: string;
48
- description?: string;
49
- fullPageText?: string;
50
- createdAt?: Date | string;
51
- updatedAt?: Date | string;
52
- }
53
-
54
- type ApplicationQuestionType = "text" | "select";
55
- declare const ApplicationQuestionTypeOptions: readonly ApplicationQuestionType[];
56
- interface ApplicationQuestion {
57
- id?: string;
58
- questionText: string;
59
- answerText?: string;
60
- type: ApplicationQuestionType;
61
- createdAt?: Date | string;
62
- updatedAt?: Date | string;
63
- }
64
-
65
- interface AuthUser {
66
- id?: string;
67
- email: string;
68
- displayName?: string;
69
- photoURL?: string;
70
- lastSignIn?: string;
71
- emailVerified?: boolean;
72
- createdAt?: Date | string;
73
- updatedAt?: Date | string;
74
- }
75
-
76
- interface UserPublic {
77
- id?: string;
78
- displayName?: string;
79
- photoURL?: string;
80
- bio?: string;
81
- location?: string;
82
- website?: string;
83
- socialLinks?: {
84
- linkedin?: string;
85
- github?: string;
86
- twitter?: string;
87
- };
88
- createdAt?: Date | string;
89
- updatedAt?: Date | string;
90
- }
91
-
92
- declare const VacancyCategory: {
93
- readonly Accounting: "Accounting";
94
- readonly AdministrationAndOfficeSupport: "Administration & Office Support";
95
- readonly AdvertisingArtsAndMedia: "Advertising, Arts & Media";
96
- readonly BankingAndFinancialServices: "Banking & Financial Services";
97
- readonly CallCentreAndCustomerService: "Call Centre & Customer Service";
98
- readonly CEOAndGeneralManagement: "CEO & General Management";
99
- readonly CommunityServicesAndDevelopment: "Community Services & Development";
100
- readonly Construction: "Construction";
101
- readonly ConsultingAndStrategy: "Consulting & Strategy";
102
- readonly DesignAndArchitecture: "Design & Architecture";
103
- readonly EducationAndTraining: "Education & Training";
104
- readonly Engineering: "Engineering";
105
- readonly FarmingAnimalsAndConservation: "Farming, Animals & Conservation";
106
- readonly GovernmentAndDefence: "Government & Defence";
107
- readonly HealthcareAndMedical: "Healthcare & Medical";
108
- readonly HospitalityAndTourism: "Hospitality & Tourism";
109
- readonly HumanResourcesAndRecruitment: "Human Resources & Recruitment";
110
- readonly InformationAndCommunicationTechnology: "Information & Communication Technology";
111
- readonly InsuranceAndSuperannuation: "Insurance & Superannuation";
112
- readonly Legal: "Legal";
113
- readonly ManufacturingTransportAndLogistics: "Manufacturing, Transport & Logistics";
114
- readonly MarketingAndCommunications: "Marketing & Communications";
115
- readonly MiningResourcesAndEnergy: "Mining, Resources & Energy";
116
- readonly RealEstateAndProperty: "Real Estate & Property";
117
- readonly RetailAndConsumerProducts: "Retail & Consumer Products";
118
- readonly Sales: "Sales";
119
- readonly ScienceAndTechnology: "Science & Technology";
120
- readonly SelfEmployment: "Self Employment";
121
- readonly SportAndRecreation: "Sport & Recreation";
122
- readonly TradesAndServices: "Trades & Services";
123
- };
124
- type VacancyCategory = (typeof VacancyCategory)[keyof typeof VacancyCategory];
125
- interface Vacancy {
126
- id?: string;
127
- company: string;
128
- position: string;
129
- location: string;
130
- description: string;
131
- advertisingUrl: string;
132
- applicationUrl: string;
133
- applicationDomain: string;
134
- advertisingDomain: string;
135
- fullPageText: string;
136
- jobId: string;
137
- category: VacancyCategory;
138
- suggestedTo?: string[];
139
- createdAt?: Date | string;
140
- updatedAt?: Date | string;
141
- }
142
-
143
- interface VacancySuggestion {
144
- readonly id?: string;
145
- clientId: string;
146
- vacancyId: string;
147
- status: string;
148
- createdAt?: Date | string;
149
- }
150
-
151
- type ClientStatus = "active" | "inactive";
152
- interface Client {
153
- readonly id?: string;
154
- readonly name: string;
155
- readonly status: ClientStatus;
156
- readonly createdAt?: Date | string;
157
- }
158
-
159
- interface ClientEmail {
160
- id?: string;
161
- messageId: string;
162
- threadId?: string;
163
- labelIds?: string[];
164
- snippet?: string;
165
- internalDate?: string;
166
- payload?: {
167
- headers?: Array<{
168
- name: string;
169
- value: string;
170
- }>;
171
- body?: {
172
- data?: string;
173
- };
174
- parts?: Array<{
175
- mimeType?: string;
176
- body?: {
177
- data?: string;
178
- };
179
- }>;
180
- };
181
- createdAt?: Date | string;
182
- updatedAt?: Date | string;
183
- }
184
-
185
- interface ClientGmailToken {
186
- readonly id?: string;
187
- accessToken: string;
188
- refreshToken: string;
189
- email: string;
190
- useThisEmail: boolean;
191
- }
192
-
193
- interface ClientInitialQuestion {
194
- readonly id?: string;
195
- questionText: string;
196
- answerText: string;
197
- }
198
-
199
- interface ClientInterview {
200
- readonly id?: string;
201
- company: string;
202
- position: string;
203
- type: string;
204
- status: string;
205
- transcript: string;
206
- notes: string;
207
- summary: string;
1
+ interface Location {
2
+ id: string;
3
+ name: string;
4
+ country: string;
5
+ region: string;
6
+ tags: string[];
208
7
  }
209
-
210
- declare const jobClassifications: {
211
- readonly Accounting: readonly ["Accounts Officers/Clerks", "Analysis & Reporting", "Assistant Accountants", "Audit - External", "Audit - Internal", "Bookkeeping & Small Practice Accounting", "Business Services & Corporate Advisory", "Company Secretaries", "Cost Accounting", "Financial Accounting & Reporting", "Financial Managers & Controllers", "Forensic Accounting & Investigation", "Insolvency & Corporate Recovery", "Management Accounting & Budgeting", "Payroll", "Strategy & Planning", "Systems Accounting", "Taxation", "Other"];
212
- readonly "Administration & Office Support": readonly ["Administrative Assistants", "Client & Sales Administration", "Contracts Administration", "Data Entry & Word Processing", "Office Management", "PA, EA & Secretarial", "Receptionists", "Records Management & Document Control", "Other"];
213
- readonly "Advertising, Arts & Media": readonly ["Agency Account Management", "Art Direction", "Copywriting", "Editing & Publishing", "Event Management", "Journalism & Writing", "Media Buying, Planning & Strategy", "Photography", "Programming & Production", "Promotions", "Sales & Account Management", "Other"];
214
- readonly "Banking & Financial Services": readonly ["Analysis & Reporting", "Banking - Business", "Banking - Corporate & Institutional", "Banking - Retail/Branch", "Client Services", "Compliance & Risk", "Corporate Finance & Investment Banking", "Financial Planning", "Funds Management", "Investments", "Mortgages", "Settlements", "Stockbroking & Trading", "Treasury", "Other"];
215
- readonly "Call Centre & Customer Service": readonly ["Customer Service - Call Centre", "Customer Service - Customer Facing", "Customer Service - Manager", "Customer Service - Supervisor", "Customer Service - Team Leader", "Other"];
216
- readonly "Community Services & Development": readonly ["Aged & Disability Support", "Child Welfare, Youth & Family Services", "Community Development", "Employment Services", "Housing & Homelessness Services", "Indigenous & Multicultural Services", "Management", "Volunteer Coordination & Support", "Other"];
217
- readonly Construction: readonly ["Contracts Management", "Estimating", "Foreperson/Supervisors", "Health & Safety", "Project Management", "Site Management", "Surveying", "Other"];
218
- readonly "Consulting & Strategy": readonly ["Corporate Development", "Management & Change Consulting", "Policy & Planning", "Strategy & Planning", "Other"];
219
- readonly "Design & Architecture": readonly ["Architecture", "Fashion & Textile Design", "Graphic Design", "Illustration & Animation", "Industrial Design", "Interior Design", "Landscape Architecture", "Urban Design & Planning", "Other"];
220
- readonly "Education & Training": readonly ["Childcare & Outside School Hours Care", "Library Services & Information Management", "Management - Schools", "Management - Universities", "Management - Vocational", "Research & Fellowships", "Student Services", "Teaching - Early Childhood", "Teaching - Primary", "Teaching - Secondary", "Teaching - Tertiary", "Teaching - Vocational", "Teaching Aides & Special Needs", "Tutoring", "Workplace Training & Assessment", "Other"];
221
- readonly Engineering: readonly ["Aerospace Engineering", "Automotive Engineering", "Chemical Engineering", "Civil/Structural Engineering", "Electrical/Electronic Engineering", "Engineering Drafting", "Environmental Engineering", "Field Engineering", "Industrial Engineering", "Maintenance", "Mechanical Engineering", "Mining - Engineering & Maintenance", "Project Engineering", "Systems Engineering", "Other"];
222
- readonly "Farming, Animals & Conservation": readonly ["Agronomy & Farm Services", "Animal Welfare", "Conservation, Parks & Wildlife", "Farm Labour", "Fishing & Aquaculture", "Forestry & Logging", "Horticulture", "Veterinary Services & Animal Welfare", "Other"];
223
- readonly "Government & Defence": readonly ["Air Force", "Army", "Emergency Services", "Federal Government", "Government - Local", "Government - State", "Navy", "Police & Corrections", "Policy, Planning & Regulation", "Security & Intelligence", "Other"];
224
- readonly "Healthcare & Medical": readonly ["Aged Care Nursing", "Ambulance/Paramedics", "Chiropractic & Osteopathic", "Dental", "General Practitioners", "Medical Imaging", "Nursing - Aged Care", "Nursing - General Medical & Surgical", "Nursing - High Acuity", "Nursing - Management", "Nursing - Midwifery, Neo-Natal, SCN & NICU", "Nursing - Paediatric", "Nursing - Psych, Forensic & Correctional Health", "Nursing - Theatre & Recovery", "Nursing - Other", "Pharmacy", "Physiotherapy, OT & Rehabilitation", "Psychology, Counselling & Social Work", "Speech Therapy", "Other"];
225
- readonly "Hospitality & Tourism": readonly ["Bar & Beverage Staff", "Chefs/Cooks", "Front Office & Guest Services", "Gaming", "Housekeeping", "Kitchen & Sandwich Hands", "Management", "Reservations", "Tour Guides", "Travel Agents/Consultants", "Waiting Staff", "Other"];
226
- readonly "Human Resources & Recruitment": readonly ["Consulting & Generalist HR", "Industrial & Employee Relations", "Management - Agency", "Management - Internal", "Occupational Health & Safety", "Organisational Development", "Recruitment - Agency", "Recruitment - Internal", "Remuneration & Benefits", "Training & Development", "Other"];
227
- readonly "Information & Communication Technology": readonly ["Architects", "Business/Systems Analysts", "Consultants", "Database Development & Administration", "Developers/Programmers", "Engineering - Hardware", "Engineering - Network", "Help Desk & IT Support", "Management", "Networks & Systems Administration", "Product Management & Development", "Project Management", "Security", "Software Engineering", "Team Leaders", "Technical Writers", "Testing & Quality Assurance", "Web Development & Production", "Other"];
228
- readonly "Insurance & Superannuation": readonly ["Actuarial", "Brokerage", "Claims", "Fund Administration", "Investments", "Risk Consulting", "Superannuation", "Underwriting", "Other"];
229
- readonly Legal: readonly ["Generalists - In-house", "Generalists - Private Practice", "Law Clerks & Paralegals", "Legal Secretaries", "Litigation & Dispute Resolution", "Other"];
230
- readonly "Manufacturing, Transport & Logistics": readonly ["Assembly & Process Work", "Couriers, Drivers & Postal Services", "Fleet Management", "Import/Export & Customs", "Machine Operators", "Maintenance", "Pickers & Packers", "Plant & Machinery Operators", "Production, Planning & Scheduling", "Purchasing, Procurement & Inventory", "Rail & Maritime Transport", "Road Transport", "Warehousing, Storage & Distribution", "Other"];
231
- readonly "Marketing & Communications": readonly ["Brand Management", "Digital & Search Marketing", "Event Management", "Internal Communications", "Market Research & Analysis", "Marketing Assistants/Coordinators", "Marketing Communications", "Marketing Management", "Product Management & Development", "Public Relations & Corporate Affairs", "Other"];
232
- readonly "Mining, Resources & Energy": readonly ["Analysis & Reporting", "Engineering", "Health, Safety & Environment", "Maintenance", "Management", "Mining - Operations", "Oil & Gas - Engineering & Maintenance", "Oil & Gas - Operations", "Power Generation & Distribution", "Surveying", "Other"];
233
- readonly "Real Estate & Property": readonly ["Analysts", "Body Corporate & Facilities Management", "Commercial Sales, Leasing & Property Mgmt", "Residential Leasing & Property Management", "Residential Sales", "Retail & Property Development", "Valuation", "Other"];
234
- readonly "Retail & Consumer Products": readonly ["Buying", "Management - Department/Assistant", "Management - Store", "Merchandisers", "Retail Assistants", "Sales Representatives/Consultants", "Supervisors/Team Leaders", "Other"];
235
- readonly Sales: readonly ["Account & Relationship Management", "Business Development", "Direct Sales", "Sales Coordinators", "Sales Management", "Sales Representatives/Consultants", "Telesales & Internal Sales", "Other"];
236
- readonly "Science & Technology": readonly ["Biological & Biomedical Sciences", "Chemistry & Physics", "Environmental, Earth & Geosciences", "Food Technology & Safety", "Laboratory & Technical Services", "Mathematics, Statistics & Information Sciences", "Quality Assurance & Control", "Other"];
237
- readonly "Self Employment": readonly ["Contract/Temp", "Franchise", "Home Business", "Other"];
238
- readonly "Sport & Recreation": readonly ["Coaching & Instruction", "Fitness & Personal Training", "Management", "Other"];
239
- readonly "Trades & Services": readonly ["Air Conditioning & Refrigeration", "Automotive Trades", "Bakers & Pastry Chefs", "Building Trades", "Butchers", "Carpentry & Cabinet Making", "Cleaning Services", "Electricians", "Fitters, Turners & Machinists", "Floristry", "Gardening & Landscaping", "Hair & Beauty Services", "Labourers", "Locksmiths", "Maintenance & Handyperson Services", "Nannies & Babysitters", "Painters & Sign Writers", "Plumbers", "Printing & Publishing Services", "Security Services", "Tailors & Dressmakers", "Technicians", "Welders & Boilermakers", "Other"];
240
- };
241
-
242
8
  declare const locations: readonly [{
243
9
  readonly id: "remote-anywhere";
244
10
  readonly name: "Remote (Anywhere)";
@@ -727,35 +493,224 @@ declare const locations: readonly [{
727
493
  readonly tags: readonly ["major-city", "business-hub", "financial", "expat-friendly"];
728
494
  }];
729
495
 
730
- type JobCategory = keyof typeof jobClassifications;
731
- type JobTitle = (typeof jobClassifications)[JobCategory][number];
732
- type LocationId = (typeof locations)[number]["id"];
733
- interface ClientJobPreferences {
496
+ type AgentStatus = "active" | "inactive";
497
+ interface Agent {
734
498
  readonly id?: string;
735
- clientId: string;
736
- desiredPositions: JobTitle[];
737
- categories: JobCategory[];
738
- locations: LocationId[];
739
- minSalary: number;
740
- maxSalary?: number;
741
- currency: string;
742
- industries: string[];
743
- createdAt: Date;
744
- updatedAt: Date;
499
+ readonly name: string;
500
+ readonly email: string;
501
+ readonly status: AgentStatus;
502
+ readonly profilePicture?: string;
503
+ readonly createdAt?: Date | string;
504
+ readonly updatedAt?: Date | string;
745
505
  }
746
506
 
747
- interface ClientLogin {
507
+ declare const ApplicationStatus: {
508
+ readonly New: "new";
509
+ readonly Submitted: "submitted";
510
+ readonly Interviewing: "interviewing";
511
+ readonly Accepted: "accepted";
512
+ readonly Rejected: "rejected";
513
+ readonly Withdrawn: "withdrawn";
514
+ readonly Applying: "applying";
515
+ readonly Suggested: "suggested";
516
+ readonly Approved: "approved";
517
+ };
518
+ type ApplicationStatus = (typeof ApplicationStatus)[keyof typeof ApplicationStatus];
519
+ interface Application {
520
+ id?: string;
521
+ vacancyId: string;
522
+ clientId: string;
523
+ status: ApplicationStatus;
524
+ assignedTo?: string;
525
+ coverLetter?: string;
526
+ resume?: string;
527
+ submittedAt?: Date | string;
528
+ interviewingAt?: Date | string;
529
+ acceptedAt?: Date | string;
530
+ rejectedAt?: Date | string;
531
+ withdrawnAt?: Date | string;
532
+ applyingAt?: Date | string;
533
+ suggestedAt?: Date | string;
534
+ approvedAt?: Date | string;
535
+ company?: string;
536
+ position?: string;
537
+ location?: string;
538
+ jobId?: string;
539
+ advertisingUrl?: string;
540
+ applicationUrl?: string;
541
+ applicationDomain?: string;
542
+ advertisingDomain?: string;
543
+ description?: string;
544
+ fullPageText?: string;
545
+ createdAt?: Date | string;
546
+ updatedAt?: Date | string;
547
+ }
548
+
549
+ type ApplicationQuestionType = "text" | "select";
550
+ declare const ApplicationQuestionTypeOptions: readonly ApplicationQuestionType[];
551
+ interface ApplicationQuestion {
552
+ id?: string;
553
+ questionText: string;
554
+ answerText?: string;
555
+ type: ApplicationQuestionType;
556
+ createdAt?: Date | string;
557
+ updatedAt?: Date | string;
558
+ }
559
+
560
+ interface AuthUser {
561
+ id?: string;
562
+ email: string;
563
+ displayName?: string;
564
+ photoURL?: string;
565
+ lastSignIn?: string;
566
+ emailVerified?: boolean;
567
+ createdAt?: Date | string;
568
+ updatedAt?: Date | string;
569
+ }
570
+
571
+ interface UserPublic {
572
+ id?: string;
573
+ displayName?: string;
574
+ photoURL?: string;
575
+ bio?: string;
576
+ location?: string;
577
+ website?: string;
578
+ socialLinks?: {
579
+ linkedin?: string;
580
+ github?: string;
581
+ twitter?: string;
582
+ };
583
+ createdAt?: Date | string;
584
+ updatedAt?: Date | string;
585
+ }
586
+
587
+ declare const VacancyCategory: {
588
+ readonly Accounting: "Accounting";
589
+ readonly AdministrationAndOfficeSupport: "Administration & Office Support";
590
+ readonly AdvertisingArtsAndMedia: "Advertising, Arts & Media";
591
+ readonly BankingAndFinancialServices: "Banking & Financial Services";
592
+ readonly CallCentreAndCustomerService: "Call Centre & Customer Service";
593
+ readonly CEOAndGeneralManagement: "CEO & General Management";
594
+ readonly CommunityServicesAndDevelopment: "Community Services & Development";
595
+ readonly Construction: "Construction";
596
+ readonly ConsultingAndStrategy: "Consulting & Strategy";
597
+ readonly DesignAndArchitecture: "Design & Architecture";
598
+ readonly EducationAndTraining: "Education & Training";
599
+ readonly Engineering: "Engineering";
600
+ readonly FarmingAnimalsAndConservation: "Farming, Animals & Conservation";
601
+ readonly GovernmentAndDefence: "Government & Defence";
602
+ readonly HealthcareAndMedical: "Healthcare & Medical";
603
+ readonly HospitalityAndTourism: "Hospitality & Tourism";
604
+ readonly HumanResourcesAndRecruitment: "Human Resources & Recruitment";
605
+ readonly InformationAndCommunicationTechnology: "Information & Communication Technology";
606
+ readonly InsuranceAndSuperannuation: "Insurance & Superannuation";
607
+ readonly Legal: "Legal";
608
+ readonly ManufacturingTransportAndLogistics: "Manufacturing, Transport & Logistics";
609
+ readonly MarketingAndCommunications: "Marketing & Communications";
610
+ readonly MiningResourcesAndEnergy: "Mining, Resources & Energy";
611
+ readonly RealEstateAndProperty: "Real Estate & Property";
612
+ readonly RetailAndConsumerProducts: "Retail & Consumer Products";
613
+ readonly Sales: "Sales";
614
+ readonly ScienceAndTechnology: "Science & Technology";
615
+ readonly SelfEmployment: "Self Employment";
616
+ readonly SportAndRecreation: "Sport & Recreation";
617
+ readonly TradesAndServices: "Trades & Services";
618
+ };
619
+ type VacancyCategory = (typeof VacancyCategory)[keyof typeof VacancyCategory];
620
+ interface Vacancy {
621
+ id?: string;
622
+ company: string;
623
+ position: string;
624
+ location: string;
625
+ description: string;
626
+ advertisingUrl: string;
627
+ applicationUrl: string;
628
+ applicationDomain: string;
629
+ advertisingDomain: string;
630
+ fullPageText: string;
631
+ jobId: string;
632
+ category: VacancyCategory;
633
+ suggestedTo?: string[];
634
+ createdAt?: Date | string;
635
+ updatedAt?: Date | string;
636
+ }
637
+
638
+ interface VacancySuggestion {
748
639
  readonly id?: string;
749
- userId: string;
750
- url: string;
751
- domain: string;
752
- username?: string;
753
- password: string;
754
- email?: string;
640
+ clientId: string;
641
+ vacancyId: string;
642
+ status: string;
643
+ createdAt?: Date | string;
644
+ }
645
+
646
+ /**
647
+ * Embedded sub-object within Client document
648
+ * @see Client - Parent document interface
649
+ */
650
+ interface ClientWebsitePreferences {
651
+ readonly id?: string;
652
+ theme: string;
653
+ notifications: string;
654
+ }
655
+
656
+ declare const jobClassifications: {
657
+ readonly Accounting: readonly ["Accounts Officers/Clerks", "Analysis & Reporting", "Assistant Accountants", "Audit - External", "Audit - Internal", "Bookkeeping & Small Practice Accounting", "Business Services & Corporate Advisory", "Company Secretaries", "Cost Accounting", "Financial Accounting & Reporting", "Financial Managers & Controllers", "Forensic Accounting & Investigation", "Insolvency & Corporate Recovery", "Management Accounting & Budgeting", "Payroll", "Strategy & Planning", "Systems Accounting", "Taxation", "Other"];
658
+ readonly "Administration & Office Support": readonly ["Administrative Assistants", "Client & Sales Administration", "Contracts Administration", "Data Entry & Word Processing", "Office Management", "PA, EA & Secretarial", "Receptionists", "Records Management & Document Control", "Other"];
659
+ readonly "Advertising, Arts & Media": readonly ["Agency Account Management", "Art Direction", "Copywriting", "Editing & Publishing", "Event Management", "Journalism & Writing", "Media Buying, Planning & Strategy", "Photography", "Programming & Production", "Promotions", "Sales & Account Management", "Other"];
660
+ readonly "Banking & Financial Services": readonly ["Analysis & Reporting", "Banking - Business", "Banking - Corporate & Institutional", "Banking - Retail/Branch", "Client Services", "Compliance & Risk", "Corporate Finance & Investment Banking", "Financial Planning", "Funds Management", "Investments", "Mortgages", "Settlements", "Stockbroking & Trading", "Treasury", "Other"];
661
+ readonly "Call Centre & Customer Service": readonly ["Customer Service - Call Centre", "Customer Service - Customer Facing", "Customer Service - Manager", "Customer Service - Supervisor", "Customer Service - Team Leader", "Other"];
662
+ readonly "Community Services & Development": readonly ["Aged & Disability Support", "Child Welfare, Youth & Family Services", "Community Development", "Employment Services", "Housing & Homelessness Services", "Indigenous & Multicultural Services", "Management", "Volunteer Coordination & Support", "Other"];
663
+ readonly Construction: readonly ["Contracts Management", "Estimating", "Foreperson/Supervisors", "Health & Safety", "Project Management", "Site Management", "Surveying", "Other"];
664
+ readonly "Consulting & Strategy": readonly ["Corporate Development", "Management & Change Consulting", "Policy & Planning", "Strategy & Planning", "Other"];
665
+ readonly "Design & Architecture": readonly ["Architecture", "Fashion & Textile Design", "Graphic Design", "Illustration & Animation", "Industrial Design", "Interior Design", "Landscape Architecture", "Urban Design & Planning", "Other"];
666
+ readonly "Education & Training": readonly ["Childcare & Outside School Hours Care", "Library Services & Information Management", "Management - Schools", "Management - Universities", "Management - Vocational", "Research & Fellowships", "Student Services", "Teaching - Early Childhood", "Teaching - Primary", "Teaching - Secondary", "Teaching - Tertiary", "Teaching - Vocational", "Teaching Aides & Special Needs", "Tutoring", "Workplace Training & Assessment", "Other"];
667
+ readonly Engineering: readonly ["Aerospace Engineering", "Automotive Engineering", "Chemical Engineering", "Civil/Structural Engineering", "Electrical/Electronic Engineering", "Engineering Drafting", "Environmental Engineering", "Field Engineering", "Industrial Engineering", "Maintenance", "Mechanical Engineering", "Mining - Engineering & Maintenance", "Project Engineering", "Systems Engineering", "Other"];
668
+ readonly "Farming, Animals & Conservation": readonly ["Agronomy & Farm Services", "Animal Welfare", "Conservation, Parks & Wildlife", "Farm Labour", "Fishing & Aquaculture", "Forestry & Logging", "Horticulture", "Veterinary Services & Animal Welfare", "Other"];
669
+ readonly "Government & Defence": readonly ["Air Force", "Army", "Emergency Services", "Federal Government", "Government - Local", "Government - State", "Navy", "Police & Corrections", "Policy, Planning & Regulation", "Security & Intelligence", "Other"];
670
+ readonly "Healthcare & Medical": readonly ["Aged Care Nursing", "Ambulance/Paramedics", "Chiropractic & Osteopathic", "Dental", "General Practitioners", "Medical Imaging", "Nursing - Aged Care", "Nursing - General Medical & Surgical", "Nursing - High Acuity", "Nursing - Management", "Nursing - Midwifery, Neo-Natal, SCN & NICU", "Nursing - Paediatric", "Nursing - Psych, Forensic & Correctional Health", "Nursing - Theatre & Recovery", "Nursing - Other", "Pharmacy", "Physiotherapy, OT & Rehabilitation", "Psychology, Counselling & Social Work", "Speech Therapy", "Other"];
671
+ readonly "Hospitality & Tourism": readonly ["Bar & Beverage Staff", "Chefs/Cooks", "Front Office & Guest Services", "Gaming", "Housekeeping", "Kitchen & Sandwich Hands", "Management", "Reservations", "Tour Guides", "Travel Agents/Consultants", "Waiting Staff", "Other"];
672
+ readonly "Human Resources & Recruitment": readonly ["Consulting & Generalist HR", "Industrial & Employee Relations", "Management - Agency", "Management - Internal", "Occupational Health & Safety", "Organisational Development", "Recruitment - Agency", "Recruitment - Internal", "Remuneration & Benefits", "Training & Development", "Other"];
673
+ readonly "Information & Communication Technology": readonly ["Architects", "Business/Systems Analysts", "Consultants", "Database Development & Administration", "Developers/Programmers", "Engineering - Hardware", "Engineering - Network", "Help Desk & IT Support", "Management", "Networks & Systems Administration", "Product Management & Development", "Project Management", "Security", "Software Engineering", "Team Leaders", "Technical Writers", "Testing & Quality Assurance", "Web Development & Production", "Other"];
674
+ readonly "Insurance & Superannuation": readonly ["Actuarial", "Brokerage", "Claims", "Fund Administration", "Investments", "Risk Consulting", "Superannuation", "Underwriting", "Other"];
675
+ readonly Legal: readonly ["Generalists - In-house", "Generalists - Private Practice", "Law Clerks & Paralegals", "Legal Secretaries", "Litigation & Dispute Resolution", "Other"];
676
+ readonly "Manufacturing, Transport & Logistics": readonly ["Assembly & Process Work", "Couriers, Drivers & Postal Services", "Fleet Management", "Import/Export & Customs", "Machine Operators", "Maintenance", "Pickers & Packers", "Plant & Machinery Operators", "Production, Planning & Scheduling", "Purchasing, Procurement & Inventory", "Rail & Maritime Transport", "Road Transport", "Warehousing, Storage & Distribution", "Other"];
677
+ readonly "Marketing & Communications": readonly ["Brand Management", "Digital & Search Marketing", "Event Management", "Internal Communications", "Market Research & Analysis", "Marketing Assistants/Coordinators", "Marketing Communications", "Marketing Management", "Product Management & Development", "Public Relations & Corporate Affairs", "Other"];
678
+ readonly "Mining, Resources & Energy": readonly ["Analysis & Reporting", "Engineering", "Health, Safety & Environment", "Maintenance", "Management", "Mining - Operations", "Oil & Gas - Engineering & Maintenance", "Oil & Gas - Operations", "Power Generation & Distribution", "Surveying", "Other"];
679
+ readonly "Real Estate & Property": readonly ["Analysts", "Body Corporate & Facilities Management", "Commercial Sales, Leasing & Property Mgmt", "Residential Leasing & Property Management", "Residential Sales", "Retail & Property Development", "Valuation", "Other"];
680
+ readonly "Retail & Consumer Products": readonly ["Buying", "Management - Department/Assistant", "Management - Store", "Merchandisers", "Retail Assistants", "Sales Representatives/Consultants", "Supervisors/Team Leaders", "Other"];
681
+ readonly Sales: readonly ["Account & Relationship Management", "Business Development", "Direct Sales", "Sales Coordinators", "Sales Management", "Sales Representatives/Consultants", "Telesales & Internal Sales", "Other"];
682
+ readonly "Science & Technology": readonly ["Biological & Biomedical Sciences", "Chemistry & Physics", "Environmental, Earth & Geosciences", "Food Technology & Safety", "Laboratory & Technical Services", "Mathematics, Statistics & Information Sciences", "Quality Assurance & Control", "Other"];
683
+ readonly "Self Employment": readonly ["Contract/Temp", "Franchise", "Home Business", "Other"];
684
+ readonly "Sport & Recreation": readonly ["Coaching & Instruction", "Fitness & Personal Training", "Management", "Other"];
685
+ readonly "Trades & Services": readonly ["Air Conditioning & Refrigeration", "Automotive Trades", "Bakers & Pastry Chefs", "Building Trades", "Butchers", "Carpentry & Cabinet Making", "Cleaning Services", "Electricians", "Fitters, Turners & Machinists", "Floristry", "Gardening & Landscaping", "Hair & Beauty Services", "Labourers", "Locksmiths", "Maintenance & Handyperson Services", "Nannies & Babysitters", "Painters & Sign Writers", "Plumbers", "Printing & Publishing Services", "Security Services", "Tailors & Dressmakers", "Technicians", "Welders & Boilermakers", "Other"];
686
+ };
687
+
688
+ /**
689
+ * Embedded sub-object within Client document
690
+ * @see Client - Parent document interface
691
+ */
692
+
693
+ type JobCategory = keyof typeof jobClassifications;
694
+ type JobTitle = (typeof jobClassifications)[JobCategory][number];
695
+ type LocationId = (typeof locations)[number]["id"];
696
+ interface ClientJobPreferences {
697
+ readonly id?: string;
698
+ clientId: string;
699
+ jobTitles: JobTitle[];
700
+ jobCategories: JobCategory[];
701
+ locations: LocationId[];
702
+ salaryExpectation?: number;
703
+ employmentTypes: string[];
704
+ remotePreference: 'remote' | 'hybrid' | 'office';
705
+ visaSponsorshipRequired: boolean;
755
706
  createdAt?: Date | string;
756
707
  updatedAt?: Date | string;
757
708
  }
758
709
 
710
+ /**
711
+ * Embedded sub-object within Client document
712
+ * @see Client - Parent document interface
713
+ */
759
714
  interface ClientPersonalData {
760
715
  id?: string;
761
716
  firstName: string;
@@ -778,6 +733,117 @@ interface ClientPersonalData {
778
733
  updatedAt?: Date | string;
779
734
  }
780
735
 
736
+ type ClientStatus = 'active' | 'inactive';
737
+ /**
738
+ * Root Client document
739
+ * Path: clients/{clientId}
740
+ * Contains embedded sub-objects and references subcollections
741
+ * @see MODELS.md for complete relationship diagram
742
+ */
743
+ interface Client {
744
+ readonly id?: string;
745
+ readonly name: string;
746
+ readonly status: ClientStatus;
747
+ readonly personalData?: ClientPersonalData;
748
+ readonly jobPreferences?: ClientJobPreferences;
749
+ readonly websitePreferences?: ClientWebsitePreferences;
750
+ readonly createdAt?: Date | string;
751
+ }
752
+
753
+ /**
754
+ * Subcollection document under Client
755
+ * Path: clients/{clientId}/emails/{docId}
756
+ * @see Client - Parent document
757
+ */
758
+ interface ClientEmail {
759
+ id?: string;
760
+ messageId: string;
761
+ threadId?: string;
762
+ labelIds?: string[];
763
+ snippet?: string;
764
+ internalDate?: string;
765
+ payload?: {
766
+ headers?: Array<{
767
+ name: string;
768
+ value: string;
769
+ }>;
770
+ body?: {
771
+ data?: string;
772
+ };
773
+ parts?: Array<{
774
+ mimeType?: string;
775
+ body?: {
776
+ data?: string;
777
+ };
778
+ }>;
779
+ };
780
+ createdAt?: Date | string;
781
+ updatedAt?: Date | string;
782
+ }
783
+
784
+ /**
785
+ * Subcollection document under Client
786
+ * Path: clients/{clientId}/gmailTokens/{docId}
787
+ * @see Client - Parent document
788
+ */
789
+ interface ClientGmailToken {
790
+ readonly id?: string;
791
+ accessToken: string;
792
+ refreshToken: string;
793
+ email: string;
794
+ useThisEmail: boolean;
795
+ }
796
+
797
+ /**
798
+ * Subcollection document under Client
799
+ * Path: clients/{clientId}/initialQuestions/{docId}
800
+ * @see Client - Parent document
801
+ */
802
+ interface ClientInitialQuestion {
803
+ readonly id?: string;
804
+ questionText: string;
805
+ answerText: string;
806
+ }
807
+
808
+ /**
809
+ * Subcollection document under Client
810
+ * Path: clients/{clientId}/interviews/{docId}
811
+ * @see Client - Parent document
812
+ * @see Application - Related application
813
+ */
814
+ interface ClientInterview {
815
+ readonly id?: string;
816
+ company: string;
817
+ position: string;
818
+ type: string;
819
+ status: string;
820
+ transcript: string;
821
+ notes: string;
822
+ summary: string;
823
+ }
824
+
825
+ /**
826
+ * Subcollection document under Client
827
+ * Path: clients/{clientId}/logins/{docId}
828
+ * @see Client - Parent document
829
+ */
830
+ interface ClientLogin {
831
+ readonly id?: string;
832
+ userId: string;
833
+ url: string;
834
+ domain: string;
835
+ username?: string;
836
+ password: string;
837
+ email?: string;
838
+ createdAt?: Date | string;
839
+ updatedAt?: Date | string;
840
+ }
841
+
842
+ /**
843
+ * Subcollection document under Client
844
+ * Path: clients/{clientId}/questions/{docId}
845
+ * @see Client - Parent document
846
+ */
781
847
  interface ClientQuestion {
782
848
  id?: string;
783
849
  questionText: string;
@@ -788,6 +854,16 @@ interface ClientQuestion {
788
854
  updatedAt?: Date | string;
789
855
  }
790
856
 
857
+ /**
858
+ * Subcollection document under Client
859
+ * Path: clients/{clientId}/resumes/{docId}
860
+ * @see Client - Parent document
861
+ *
862
+ * @description Represents a client's resume document.
863
+ * @author [Your Name]
864
+ * @version 1.0.0
865
+ * @since [Date]
866
+ */
791
867
  interface ClientResume {
792
868
  readonly id?: string;
793
869
  title: string;
@@ -816,19 +892,10 @@ interface ClientResume {
816
892
  }>;
817
893
  }
818
894
 
819
- interface ClientWebsitePreferences {
820
- readonly id?: string;
821
- theme: string;
822
- notifications: string;
823
- }
824
-
825
895
  declare const firestorePaths: {
826
896
  readonly clients: {
827
897
  readonly collection: () => string;
828
898
  readonly doc: (id: string) => string;
829
- readonly personalData: (id: string) => string;
830
- readonly jobPreferences: (id: string) => string;
831
- readonly websitePreferences: (id: string) => string;
832
899
  readonly gmailTokens: (id: string) => string;
833
900
  readonly emails: {
834
901
  readonly collection: (clientId: string) => string;
@@ -885,4 +952,4 @@ declare const firestorePaths: {
885
952
  };
886
953
  };
887
954
 
888
- export { Agent, AgentStatus, Application, ApplicationQuestion, ApplicationQuestionType, ApplicationQuestionTypeOptions, ApplicationStatus, AuthUser, Client, ClientEmail, ClientGmailToken, ClientInitialQuestion, ClientInterview, ClientJobPreferences, ClientLogin, ClientPersonalData, ClientQuestion, ClientResume, ClientStatus, ClientWebsitePreferences, JobCategory, JobTitle, LocationId, UserPublic, Vacancy, VacancyCategory, VacancySuggestion, firestorePaths, jobClassifications, locations };
955
+ export { Agent, AgentStatus, Application, ApplicationQuestion, ApplicationQuestionType, ApplicationQuestionTypeOptions, ApplicationStatus, AuthUser, Client, ClientEmail, ClientGmailToken, ClientInitialQuestion, ClientInterview, ClientJobPreferences, ClientLogin, ClientPersonalData, ClientQuestion, ClientResume, ClientStatus, ClientWebsitePreferences, JobCategory, JobTitle, Location, LocationId, UserPublic, Vacancy, VacancyCategory, VacancySuggestion, firestorePaths, jobClassifications, locations };