import type { ClaimKey } from '@coinweb/contract-kit';

import { Key } from './constants';

/* FirstPart */
export const createWordFirstPart = () => [Key.WORD];

export const createByLetterFirstPart = (letter: string) => [Key.BY_LETTER, letter];

export const createSetFirstPart = () => [Key.SET];

/* Key */
export const createWordKey = (id: string) =>
  ({
    first_part: createWordFirstPart(),
    second_part: [id],
  }) satisfies ClaimKey;

export const createByLetterKey = (letter: string, id: string) =>
  ({
    first_part: createByLetterFirstPart(letter),
    second_part: [id],
  }) satisfies ClaimKey;

export const createSetKey = (letter: string) =>
  ({
    first_part: createSetFirstPart(),
    second_part: [letter],
  }) satisfies ClaimKey;
