UNPKG

@tsclass/tsclass

Version:

Provides TypeScript definitions for various business, financial, networking, content, and other common classes.

76 lines (75 loc) 2.08 kB
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[]; }