import { plugifyNameConvert, plugifyTypeConvert } from "../plugify/parser.js"
import { PlugifyType, Prototype } from "../types/plugify.js"

export const plugifyCallbacksGenerator = (map: Map<string, Prototype>, docsViewer: string, docsToItemURL: string) => {
    return [...map.values()].map(
        (method) =>

            `
        /**
        * @description ${method.description}
        * 
        * {@link ${docsViewer}${docsToItemURL}#item-${method.name}|Docs}
        * 
        * ${method.paramTypes.map(param => `@param ${param.name} ${param.description}`).join(`\n        * `)}
        */

        function ${method.name}(${method.paramTypes
                .map((param) => `${plugifyNameConvert(param.name)}: ${param.enum?.name || plugifyTypeConvert(param.type as PlugifyType)}`)
                .join(', ')}): ${method.retType.enum?.name || plugifyTypeConvert(method.retType.type as PlugifyType)};`
    )
        .join('\n')
}