import { validationToType } from 'yaschva'
import { OutputSuccess } from '../transform/types.js'

export const capitalize = (s: string) => s.charAt(0).toUpperCase() + s.slice(1)
export const name = (x: OutputSuccess): string => `${x.name}${capitalize(x.method)}`

export const typeDef = (contracts: OutputSuccess[]): string =>
  contracts.map(x =>
    `/** ${x.name} types for ${x.method} method **/
export type ${name(x)}Argument = ${validationToType(x.arguments)}
export type ${name(x)}Returns = ${validationToType(x.returns)}\n`).join('\n')
