@tsclass/tsclass
Version:
Provides TypeScript definitions for various business, financial, networking, content, and other common classes.
76 lines (75 loc) • 2.08 kB
TypeScript
import * as finance from "../finance/index.js";
import { type TContact } from "./contact.js";
/**
* Represents the type of employment contract
*/
export type TContractType = 'full-time' | 'part-time' | 'contract' | 'freelance' | 'internship' | 'apprenticeship' | 'volunteer' | 'temporary' | 'seasonal';
/**
* Represents the work location arrangement
*/
export type TWorkLocationType = 'on-site' | 'hybrid' | 'remote';
/**
* Represents the experience level required for the job
*/
export type TExperienceLevel = 'entry' | 'mid' | 'senior' | 'executive';
/**
* Represents the status of a job posting
*/
export type TJobStatus = 'active' | 'closed' | 'expired' | 'filled' | 'archived';
/**
* Language proficiency levels
*/
export type TLanguageProficiency = 'basic' | 'intermediate' | 'advanced' | 'native';
/**
* Represents a language requirement with name and proficiency level
*/
export interface ILanguageRequirement {
name: string;
level: TLanguageProficiency;
}
/**
* Represents salary information with structure if needed
*/
export interface ISalaryInfo {
min?: number;
max?: number;
currency?: finance.TCurrency;
period?: 'hourly' | 'daily' | 'weekly' | 'monthly' | 'annually';
}
/**
* Represents a record in the job history
*/
export interface IJobHistory {
timestamp: string;
source: string;
category?: string;
action?: string;
details?: string;
}
/**
* Universal Job Interface representing a job posting
*/
export interface IJob {
id: string;
title: string;
company: string;
description: string;
url: string;
location: string;
locationType?: TWorkLocationType;
postedDate?: string;
salary?: ISalaryInfo;
contractType?: TContractType;
category?: string;
experienceLevel?: TExperienceLevel;
skillTags?: string[];
qualificationTags?: string[];
languages?: ILanguageRequirement[];
from?: TContact;
contact?: TContact;
source: string;
status: TJobStatus;
firstScrapedAt: string;
lastScrapedAt: string;
history: IJobHistory[];
}