casterProgression: {
    castsPerDay: {
        hybrid: {
            high: readonly [
                readonly [number, 2],
                readonly [number, 3],
                readonly [number, 4],
                readonly [number, 4, 2],
                readonly [number, 4, 3],
                readonly [number, 4, 4, 2],
                readonly [number, 4, 4, 3],
                readonly [number, 4, 4, 4, 2],
                readonly [number, 4, 4, 4, 3],
                readonly [number, 4, 4, 4, 4, 2],
                readonly [number, 4, 4, 4, 4, 3],
                readonly [number, 4, 4, 4, 4, 4, 2],
                readonly [number, 4, 4, 4, 4, 4, 3],
                readonly [number, 4, 4, 4, 4, 4, 4, 2],
                readonly [number, 4, 4, 4, 4, 4, 4, 3],
                readonly [number, 4, 4, 4, 4, 4, 4, 4, 2],
                readonly [number, 4, 4, 4, 4, 4, 4, 4, 3],
                readonly [number, 4, 4, 4, 4, 4, 4, 4, 4, 2],
                readonly [number, 4, 4, 4, 4, 4, 4, 4, 4, 3],
                readonly [number, 4, 4, 4, 4, 4, 4, 4, 4, 4],
            ];
        };
        prepared: {
            high: readonly [
                readonly [number, 1],
                readonly [number, 2],
                readonly [number, 2, 1],
                readonly [number, 3, 2],
                readonly [number, 3, 2, 1],
                readonly [number, 3, 3, 2],
                readonly [number, 4, 3, 2, 1],
                readonly [number, 4, 3, 3, 2],
                readonly [number, 4, 4, 3, 2, 1],
                readonly [number, 4, 4, 3, 3, 2],
                readonly [number, 4, 4, 4, 3, 2, 1],
                readonly [number, 4, 4, 4, 3, 3, 2],
                readonly [number, 4, 4, 4, 4, 3, 2, 1],
                readonly [number, 4, 4, 4, 4, 3, 3, 2],
                readonly [number, 4, 4, 4, 4, 4, 3, 2, 1],
                readonly [number, 4, 4, 4, 4, 4, 3, 3, 2],
                readonly [number, 4, 4, 4, 4, 4, 4, 3, 2, 1],
                readonly [number, 4, 4, 4, 4, 4, 4, 3, 3, 2],
                readonly [number, 4, 4, 4, 4, 4, 4, 4, 3, 3],
                readonly [number, 4, 4, 4, 4, 4, 4, 4, 4, 4],
            ];
            low: readonly [
                readonly [number],
                readonly [number],
                readonly [number],
                readonly [number, 0],
                readonly [number, 1],
                readonly [number, 1],
                readonly [number, 1, 0],
                readonly [number, 1, 1],
                readonly [number, 2, 1],
                readonly [number, 2, 1, 0],
                readonly [number, 2, 1, 1],
                readonly [number, 2, 2, 1],
                readonly [number, 3, 2, 1, 0],
                readonly [number, 3, 2, 1, 1],
                readonly [number, 3, 2, 2, 1],
                readonly [number, 3, 3, 2, 1],
                readonly [number, 4, 3, 2, 1],
                readonly [number, 4, 3, 2, 2],
                readonly [number, 4, 3, 3, 2],
                readonly [number, 4, 4, 3, 3],
            ];
            med: readonly [
                readonly [number, 1],
                readonly [number, 2],
                readonly [number, 3],
                readonly [number, 3, 1],
                readonly [number, 4, 2],
                readonly [number, 4, 3],
                readonly [number, 4, 3, 1],
                readonly [number, 4, 4, 2],
                readonly [number, 5, 4, 3],
                readonly [number, 5, 4, 3, 1],
                readonly [number, 5, 4, 4, 2],
                readonly [number, 5, 5, 4, 3],
                readonly [number, 5, 5, 4, 3, 1],
                readonly [number, 5, 5, 4, 4, 2],
                readonly [number, 5, 5, 5, 4, 3],
                readonly [number, 5, 5, 5, 4, 3, 1],
                readonly [number, 5, 5, 5, 4, 4, 2],
                readonly [number, 5, 5, 5, 5, 4, 3],
                readonly [number, 5, 5, 5, 5, 5, 4],
                readonly [number, 5, 5, 5, 5, 5, 5],
            ];
        };
        prestige: {
            low: readonly [
                readonly [number, 1],
                readonly [number, 2],
                readonly [number, 3],
                readonly [number, 3, 1],
                readonly [number, 4, 2],
                readonly [number, 4, 3],
                readonly [number, 4, 3, 1],
                readonly [number, 4, 4, 2],
                readonly [number, 5, 4, 3],
                readonly [number, 5, 4, 3, 1],
                readonly [number, 5, 4, 3, 1],
                readonly [number, 5, 4, 3, 1],
                readonly [number, 5, 4, 3, 1],
                readonly [number, 5, 4, 3, 1],
                readonly [number, 5, 4, 3, 1],
                readonly [number, 5, 4, 3, 1],
                readonly [number, 5, 4, 3, 1],
                readonly [number, 5, 4, 3, 1],
                readonly [number, 5, 4, 3, 1],
                readonly [number, 5, 4, 3, 1],
            ];
        };
        spontaneous: {
            high: readonly [
                readonly [number, 3],
                readonly [number, 4],
                readonly [number, 5],
                readonly [number, 6, 3],
                readonly [number, 6, 4],
                readonly [number, 6, 5, 3],
                readonly [number, 6, 6, 4],
                readonly [number, 6, 6, 5, 3],
                readonly [number, 6, 6, 6, 4],
                readonly [number, 6, 6, 6, 5, 3],
                readonly [number, 6, 6, 6, 6, 4],
                readonly [number, 6, 6, 6, 6, 5, 3],
                readonly [number, 6, 6, 6, 6, 6, 4],
                readonly [number, 6, 6, 6, 6, 6, 5, 3],
                readonly [number, 6, 6, 6, 6, 6, 6, 4],
                readonly [number, 6, 6, 6, 6, 6, 6, 5, 3],
                readonly [number, 6, 6, 6, 6, 6, 6, 6, 4],
                readonly [number, 6, 6, 6, 6, 6, 6, 6, 5, 3],
                readonly [number, 6, 6, 6, 6, 6, 6, 6, 6, 4],
                readonly [number, 6, 6, 6, 6, 6, 6, 6, 6, 6],
            ];
            low: readonly [
                readonly [number],
                readonly [number],
                readonly [number],
                readonly [number, 1],
                readonly [number, 1],
                readonly [number, 1],
                readonly [number, 1, 1],
                readonly [number, 1, 1],
                readonly [number, 2, 1],
                readonly [number, 2, 1, 1],
                readonly [number, 2, 1, 1],
                readonly [number, 2, 2, 1],
                readonly [number, 3, 2, 1, 1],
                readonly [number, 3, 2, 1, 1],
                readonly [number, 3, 2, 2, 1],
                readonly [number, 3, 3, 2, 1],
                readonly [number, 4, 3, 2, 1],
                readonly [number, 4, 3, 2, 2],
                readonly [number, 4, 3, 3, 2],
                readonly [number, 4, 4, 3, 2],
            ];
            med: readonly [
                readonly [number, 1],
                readonly [number, 2],
                readonly [number, 3],
                readonly [number, 3, 1],
                readonly [number, 4, 2],
                readonly [number, 4, 3],
                readonly [number, 4, 3, 1],
                readonly [number, 4, 4, 2],
                readonly [number, 5, 4, 3],
                readonly [number, 5, 4, 3, 1],
                readonly [number, 5, 4, 4, 2],
                readonly [number, 5, 5, 4, 3],
                readonly [number, 5, 5, 4, 3, 1],
                readonly [number, 5, 5, 4, 4, 2],
                readonly [number, 5, 5, 5, 4, 3],
                readonly [number, 5, 5, 5, 4, 3, 1],
                readonly [number, 5, 5, 5, 4, 4, 2],
                readonly [number, 5, 5, 5, 5, 4, 3],
                readonly [number, 5, 5, 5, 5, 5, 4],
                readonly [number, 5, 5, 5, 5, 5, 5],
            ];
        };
    };
    spellsPreparedPerDay: {
        hybrid: {
            high: readonly [
                readonly [4, 2],
                readonly [5, 2],
                readonly [5, 3],
                readonly [6, 3, 1],
                readonly [6, 4, 2],
                readonly [7, 4, 2, 1],
                readonly [7, 5, 3, 2],
                readonly [8, 5, 3, 2, 1],
                readonly [8, 5, 4, 3, 2],
                readonly [9, 5, 4, 3, 2, 1],
                readonly [9, 5, 5, 4, 3, 2],
                readonly [9, 5, 5, 4, 3, 2, 1],
                readonly [9, 5, 5, 4, 4, 3, 2],
                readonly [9, 5, 5, 4, 4, 3, 2, 1],
                readonly [9, 5, 5, 4, 4, 4, 3, 2],
                readonly [9, 5, 5, 4, 4, 4, 3, 2, 1],
                readonly [9, 5, 5, 4, 4, 4, 3, 3, 2],
                readonly [9, 5, 5, 4, 4, 4, 3, 3, 2, 1],
                readonly [9, 5, 5, 4, 4, 4, 3, 3, 3, 2],
                readonly [9, 5, 5, 4, 4, 4, 3, 3, 3, 3],
            ];
        };
        prepared: {
            high: readonly [
                readonly [3, 1],
                readonly [4, 2],
                readonly [4, 2, 1],
                readonly [4, 3, 2],
                readonly [4, 3, 2, 1],
                readonly [4, 3, 3, 2],
                readonly [4, 4, 3, 2, 1],
                readonly [4, 4, 3, 3, 2],
                readonly [4, 4, 4, 3, 2, 1],
                readonly [4, 4, 4, 3, 3, 2],
                readonly [4, 4, 4, 4, 3, 2, 1],
                readonly [4, 4, 4, 4, 3, 3, 2],
                readonly [4, 4, 4, 4, 4, 3, 2, 1],
                readonly [4, 4, 4, 4, 4, 3, 3, 2],
                readonly [4, 4, 4, 4, 4, 4, 3, 2, 1],
                readonly [4, 4, 4, 4, 4, 4, 3, 3, 2],
                readonly [4, 4, 4, 4, 4, 4, 4, 3, 2, 1],
                readonly [4, 4, 4, 4, 4, 4, 4, 3, 3, 2],
                readonly [4, 4, 4, 4, 4, 4, 4, 4, 3, 3],
                readonly [4, 4, 4, 4, 4, 4, 4, 4, 4, 4],
            ];
            low: readonly [
                readonly [null],
                readonly [null],
                readonly [null],
                readonly [null, 0],
                readonly [null, 1],
                readonly [null, 1],
                readonly [null, 1, 0],
                readonly [null, 1, 1],
                readonly [null, 2, 1],
                readonly [null, 2, 1, 0],
                readonly [null, 2, 1, 1],
                readonly [null, 2, 2, 1],
                readonly [null, 3, 2, 1, 0],
                readonly [null, 3, 2, 1, 1],
                readonly [null, 3, 2, 2, 1],
                readonly [null, 3, 3, 2, 1],
                readonly [null, 4, 3, 2, 1],
                readonly [null, 4, 3, 2, 2],
                readonly [null, 4, 3, 3, 2],
                readonly [null, 4, 4, 3, 3],
            ];
            med: readonly [
                readonly [3, 1],
                readonly [4, 2],
                readonly [4, 3],
                readonly [4, 3, 1],
                readonly [4, 4, 2],
                readonly [5, 4, 3],
                readonly [5, 4, 3, 1],
                readonly [5, 4, 4, 2],
                readonly [5, 5, 4, 3],
                readonly [5, 5, 4, 3, 1],
                readonly [5, 5, 4, 4, 2],
                readonly [5, 5, 5, 4, 3],
                readonly [5, 5, 5, 4, 3, 1],
                readonly [5, 5, 5, 4, 4, 2],
                readonly [5, 5, 5, 5, 4, 3],
                readonly [5, 5, 5, 5, 4, 3, 1],
                readonly [5, 5, 5, 5, 4, 4, 2],
                readonly [5, 5, 5, 5, 5, 4, 3],
                readonly [5, 5, 5, 5, 5, 5, 4],
                readonly [5, 5, 5, 5, 5, 5, 5],
            ];
        };
        prestige: {
            low: readonly [
                readonly [null, 2],
                readonly [null, 3],
                readonly [null, 4],
                readonly [null, 4, 2],
                readonly [null, 4, 3],
                readonly [null, 4, 4],
                readonly [null, 5, 4, 2],
                readonly [null, 5, 4, 3],
                readonly [null, 5, 4, 4],
                readonly [null, 5, 5, 4, 2],
                readonly [null, 5, 5, 4, 2],
                readonly [null, 5, 5, 4, 2],
                readonly [null, 5, 5, 4, 2],
                readonly [null, 5, 5, 4, 2],
                readonly [null, 5, 5, 4, 2],
                readonly [null, 5, 5, 4, 2],
                readonly [null, 5, 5, 4, 2],
                readonly [null, 5, 5, 4, 2],
                readonly [null, 5, 5, 4, 2],
                readonly [null, 5, 5, 4, 2],
            ];
        };
        spontaneous: {
            high: readonly [
                readonly [4, 2],
                readonly [5, 2],
                readonly [5, 3],
                readonly [6, 3, 1],
                readonly [6, 4, 2],
                readonly [7, 4, 2, 1],
                readonly [7, 5, 3, 2],
                readonly [8, 5, 3, 2, 1],
                readonly [8, 5, 4, 3, 2],
                readonly [9, 5, 4, 3, 2, 1],
                readonly [9, 5, 5, 4, 3, 2],
                readonly [9, 5, 5, 4, 3, 2, 1],
                readonly [9, 5, 5, 4, 4, 3, 2],
                readonly [9, 5, 5, 4, 4, 3, 2, 1],
                readonly [9, 5, 5, 4, 4, 4, 3, 2],
                readonly [9, 5, 5, 4, 4, 4, 3, 2, 1],
                readonly [9, 5, 5, 4, 4, 4, 3, 3, 2],
                readonly [9, 5, 5, 4, 4, 4, 3, 3, 2, 1],
                readonly [9, 5, 5, 4, 4, 4, 3, 3, 3, 2],
                readonly [9, 5, 5, 4, 4, 4, 3, 3, 3, 3],
            ];
            low: readonly [
                readonly [2],
                readonly [3],
                readonly [4],
                readonly [4, 2],
                readonly [5, 3],
                readonly [5, 4],
                readonly [6, 4, 2],
                readonly [6, 4, 3],
                readonly [6, 5, 4],
                readonly [6, 5, 4, 2],
                readonly [6, 5, 4, 3],
                readonly [6, 6, 5, 4],
                readonly [6, 6, 5, 4, 2],
                readonly [6, 6, 5, 4, 3],
                readonly [6, 6, 6, 5, 4],
                readonly [6, 6, 6, 5, 4],
                readonly [6, 6, 6, 5, 4],
                readonly [6, 6, 6, 6, 5],
                readonly [6, 6, 6, 6, 5],
                readonly [6, 6, 6, 6, 5],
            ];
            med: readonly [
                readonly [4, 2],
                readonly [5, 3],
                readonly [6, 4],
                readonly [6, 4, 2],
                readonly [6, 4, 3],
                readonly [6, 4, 4],
                readonly [6, 5, 4, 2],
                readonly [6, 5, 4, 3],
                readonly [6, 5, 4, 4],
                readonly [6, 5, 5, 4, 2],
                readonly [6, 6, 5, 4, 3],
                readonly [6, 6, 5, 4, 4],
                readonly [6, 6, 5, 5, 4, 2],
                readonly [6, 6, 6, 5, 4, 3],
                readonly [6, 6, 6, 5, 4, 4],
                readonly [6, 6, 6, 5, 5, 4, 2],
                readonly [6, 6, 6, 6, 5, 4, 3],
                readonly [6, 6, 6, 6, 5, 4, 4],
                readonly [6, 6, 6, 6, 5, 5, 4],
                readonly [6, 6, 6, 6, 6, 5, 5],
            ];
        };
    };
} = ...

This Object determines spells gained and cast per level