src/payroll-types.tsTypeScript
@@ -0,0 +1,48 @@
1+
export interface PayPeriod {2+
id: string;3+
startDate: string;4+
endDateExclusive: string;5+
timeZone: string;6+
}7+
8+
export interface TimesheetLine {9+
id: string;10+
employeeId: string;11+
workedAt: string;12+
minutes: number;13+
hourlyRateCents: number;14+
adjustmentCents: number;15+
approved: boolean;16+
version: number;17+
}18+
19+
export interface ProviderDelivery {20+
acknowledgement: Promise<void>;21+
}22+
23+
export interface PayrollDependencies {24+
employees: {25+
listForRun(payRunId: string): Promise<string[]>;26+
};27+
timesheets: {28+
listForEmployee(employeeId: string): Promise<TimesheetLine[]>;29+
};30+
provider: {31+
startDisbursement(input: {32+
employeeId: string;33+
amountCents: number;34+
idempotencyKey: string;35+
}): Promise<ProviderDelivery>;36+
};37+
payRuns: {38+
markPaid(payRunId: string, employeeId: string, amountCents: number): Promise<void>;39+
recordFailure(payRunId: string, employeeId: string, message: string): Promise<void>;40+
};41+
checkpoint: {42+
load(payRunId: string): Promise<number>;43+
save(payRunId: string, nextEmployeeIndex: number): Promise<void>;44+
};45+
ids: {46+
next(): string;47+
};48+
}