UNPKG

@neo-one/smart-contract-codegen-esnext-esm

Version:

NEO•ONE TypeScript smart contract codegen.

35 lines (33 loc) 1.72 kB
import { createForwardedValueFuncArgsName, createForwardedValueFuncReturnName } from '@neo-one/client-core-esnext-esm'; import _ from 'lodash'; import { genConstantFunction } from './genConstantFunction'; import { genForwardArgsFunction } from './genForwardArgsFunction'; import { genForwardReturnFunction } from './genForwardReturnFunction'; import { genFunction } from './genFunction'; import { getEventName } from './getEventName'; export const genSmartContractBase = (name, interfaceName, abi, migration = false) => { const extendsClause = `<TClient extends Client = Client> extends SmartContract<TClient, ${getEventName(name)}>`; return ` export interface ${interfaceName}${migration ? '' : extendsClause} { ${_.flatten(_.sortBy(abi.functions, [(func) => func.name]).map((func) => { const parameters = func.parameters === undefined ? [] : func.parameters; const forwardedParameters = parameters.filter((parameter) => parameter.forwardedValue); let decls = [ `readonly ${func.name}: ${func.constant ? genConstantFunction(func, { migration }) : genFunction(name, func, { migration })}`, ]; if (forwardedParameters.length > 0) { decls = decls.concat([ `readonly ${createForwardedValueFuncArgsName(func)}: ${genForwardArgsFunction(name, func, forwardedParameters, { migration })}`, ]); } if (func.returnType.forwardedValue) { decls = decls.concat([ `readonly ${createForwardedValueFuncReturnName(func)}: ${genForwardReturnFunction(name, func)}`, ]); } return decls; })).join('\n ')} } `; }; //# sourceMappingURL=genSmartContractBase.js.map