SignedSubmissionsMap: StorageDescriptor<[Key: number], {
    call_fee: bigint;
    deposit: bigint;
    raw_solution: {
        round: number;
        score: {
            minimal_stake: bigint;
            sum_stake: bigint;
            sum_stake_squared: bigint;
        };
        solution: {
            votes1: [number, number][];
            votes10: [number, FixedSizeArray<9, [number, number]>, number][];
            votes11: [number, FixedSizeArray<10, [number, number]>, number][];
            votes12: [number, FixedSizeArray<11, [number, number]>, number][];
            votes13: [number, FixedSizeArray<12, [number, number]>, number][];
            votes14: [number, FixedSizeArray<13, [number, number]>, number][];
            votes15: [number, FixedSizeArray<14, [number, number]>, number][];
            votes16: [number, FixedSizeArray<15, [number, number]>, number][];
            votes2: [number, [number, number], number][];
            votes3: [number, FixedSizeArray<2, [number, number]>, number][];
            votes4: [number, FixedSizeArray<3, [number, number]>, number][];
            votes5: [number, FixedSizeArray<4, [number, number]>, number][];
            votes6: [number, FixedSizeArray<5, [number, number]>, number][];
            votes7: [number, FixedSizeArray<6, [number, number]>, number][];
            votes8: [number, FixedSizeArray<7, [number, number]>, number][];
            votes9: [number, FixedSizeArray<8, [number, number]>, number][];
        };
    };
    who: SS58String;
}, true>

Unchecked, signed solutions.

Together with SubmissionIndices, this stores a bounded set of SignedSubmissions while allowing us to keep only a single one in memory at a time.

Twox note: the key of the map is an auto-incrementing index which users cannot inspect or affect; we shouldn't need a cryptographically secure hasher.