```ts
export function runBufferedLine(capacities: number[], buffers: number[], ticks: number): { made: number; left: number[] } {
    if (capacities.length === 0) throw new Error("Station list cannot be empty");
    if (buffers.length !== capacities.length - 1) throw new Error("Buffer count must be one less than station count");
    if (!capacities.every(isPositiveInteger) || !buffers.every(isPositiveInteger)) throw new Error("All limits and sizes must be positive integers");
    if (!Number.isInteger(ticks) || ticks < 0) throw new Error("Tick count must be a non-negative integer");

    const made = 0;
    const left = buffers.slice();

    for (let t = 0; t < ticks; t++) {
        for (let i = capacities.length - 1; i > 0; i--) {
            const fromBuffer = Math.min(left[i - 1], capacities[i] - (i === capacities.length - 1 ? made : 0));
            left[i - 1] -= fromBuffer;
            if (i < capacities.length - 1) left[i] += fromBuffer;
        }
    }

    return { made, left };
}

function isPositiveInteger(n: number): boolean {
    return Number.isInteger(n) && n > 0;
}
```