@algorandfoundation/algokit-client-generator 6.0.2-beta.1 → 7.0.0-alpha.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (68) hide show
  1. package/client/app-client-context.d.ts +122 -0
  2. package/client/app-client-context.js +212 -0
  3. package/client/app-client-context.js.map +1 -0
  4. package/client/app-client-context.mjs +209 -0
  5. package/client/app-client-context.mjs.map +1 -0
  6. package/client/app-client.js +29 -51
  7. package/client/app-client.js.map +1 -1
  8. package/client/app-client.mjs +29 -51
  9. package/client/app-client.mjs.map +1 -1
  10. package/client/app-factory.js +23 -27
  11. package/client/app-factory.js.map +1 -1
  12. package/client/app-factory.mjs +23 -27
  13. package/client/app-factory.mjs.map +1 -1
  14. package/client/app-types.js +31 -60
  15. package/client/app-types.js.map +1 -1
  16. package/client/app-types.mjs +32 -61
  17. package/client/app-types.mjs.map +1 -1
  18. package/client/call-composer-types.js +31 -34
  19. package/client/call-composer-types.js.map +1 -1
  20. package/client/call-composer-types.mjs +31 -34
  21. package/client/call-composer-types.mjs.map +1 -1
  22. package/client/call-composer.js +24 -31
  23. package/client/call-composer.js.map +1 -1
  24. package/client/call-composer.mjs +24 -31
  25. package/client/call-composer.mjs.map +1 -1
  26. package/client/deploy-types.d.ts +1 -11
  27. package/client/deploy-types.js +28 -53
  28. package/client/deploy-types.js.map +1 -1
  29. package/client/deploy-types.mjs +29 -52
  30. package/client/deploy-types.mjs.map +1 -1
  31. package/client/generate.d.ts +1 -1
  32. package/client/generate.js +2 -2
  33. package/client/generate.js.map +1 -1
  34. package/client/generate.mjs +2 -2
  35. package/client/generate.mjs.map +1 -1
  36. package/client/generator-context.d.ts +3 -5
  37. package/client/generator-context.js +4 -10
  38. package/client/generator-context.js.map +1 -1
  39. package/client/generator-context.mjs +4 -10
  40. package/client/generator-context.mjs.map +1 -1
  41. package/client/helpers/contains-non-void-method.d.ts +2 -2
  42. package/client/helpers/contains-non-void-method.js +3 -2
  43. package/client/helpers/contains-non-void-method.js.map +1 -1
  44. package/client/helpers/contains-non-void-method.mjs +3 -2
  45. package/client/helpers/contains-non-void-method.mjs.map +1 -1
  46. package/client/helpers/get-equivalent-type.d.ts +3 -5
  47. package/client/helpers/get-equivalent-type.js +53 -54
  48. package/client/helpers/get-equivalent-type.js.map +1 -1
  49. package/client/helpers/get-equivalent-type.mjs +53 -55
  50. package/client/helpers/get-equivalent-type.mjs.map +1 -1
  51. package/client/imports.d.ts +1 -2
  52. package/client/imports.js +10 -19
  53. package/client/imports.js.map +1 -1
  54. package/client/imports.mjs +10 -19
  55. package/client/imports.mjs.map +1 -1
  56. package/client/params-factory.js +47 -50
  57. package/client/params-factory.js.map +1 -1
  58. package/client/params-factory.mjs +47 -50
  59. package/client/params-factory.mjs.map +1 -1
  60. package/package.json +2 -3
  61. package/schema/load.d.ts +1 -1
  62. package/schema/load.js.map +1 -1
  63. package/schema/load.mjs.map +1 -1
  64. package/client/helpers/get-call-config-summary.d.ts +0 -19
  65. package/client/helpers/get-call-config-summary.js +0 -60
  66. package/client/helpers/get-call-config-summary.js.map +0 -1
  67. package/client/helpers/get-call-config-summary.mjs +0 -57
  68. package/client/helpers/get-call-config-summary.mjs.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"app-types.mjs","sources":["../../src/client/app-types.ts"],"sourcesContent":["import { GeneratorContext } from './generator-context'\nimport { DecIndent, DecIndentAndCloseBlock, DocumentParts, IncIndent, indent, inline, jsDoc, NewLine } from '../output/writer'\nimport { getEquivalentType } from './helpers/get-equivalent-type'\nimport algosdk, { ABIMethod } from 'algosdk'\nimport { Arc56Contract, Method, StorageKey, StorageMap, StructField } from '@algorandfoundation/algokit-utils/types/app-arc56'\nimport { Sanitizer } from '../util/sanitization'\nimport { Expand } from '@algorandfoundation/algokit-utils/types/expand'\nimport { containsNonVoidMethod } from './helpers/contains-non-void-method'\n\nfunction getMethodMetadata(method: Method, ctx: GeneratorContext) {\n const { methodSignatureToUniqueName } = ctx\n const methodSig = new ABIMethod(method).getSignature()\n const uniqueName = methodSignatureToUniqueName[methodSig]\n\n let hasAppCallArgToTheRight = false\n const argsMeta = new Array<Expand<Omit<(typeof method.args)[0], 'name'> & { name: string; isOptional: boolean; tsType: string }>>()\n\n for (let i = (method.args ?? []).length - 1; i >= 0; i--) {\n const arg = method.args[i]\n\n argsMeta.push({\n ...arg,\n name: arg.name ?? `arg${i + 1}`,\n isOptional: !!arg.defaultValue || (hasAppCallArgToTheRight && algosdk.abiTypeIsTransaction(arg.type)),\n tsType: getEquivalentType(arg.struct ?? arg.type, 'input', ctx),\n })\n\n if (\n !hasAppCallArgToTheRight &&\n algosdk.abiTypeIsTransaction(arg.type) &&\n [algosdk.ABITransactionType.appl, algosdk.ABITransactionType.any].includes(arg.type)\n ) {\n hasAppCallArgToTheRight = true\n }\n }\n argsMeta.reverse()\n\n return { methodSig, uniqueName, argsMeta }\n}\n\nexport function* appTypes(ctx: GeneratorContext): DocumentParts {\n yield* structTypes(ctx)\n yield* templateVariableTypes(ctx)\n\n const { app, name } = ctx\n\n yield* jsDoc(`The argument types for the ${name} contract`)\n yield `export type ${name}Args = {`\n yield IncIndent\n yield* jsDoc('The object representation of the arguments for each method')\n yield 'obj: {'\n yield IncIndent\n for (const method of app.methods) {\n const { methodSig, argsMeta } = getMethodMetadata(method, ctx)\n if (argsMeta.length) {\n yield `'${ctx.sanitizer.makeSafeStringTypeLiteral(methodSig)}': {`\n yield IncIndent\n for (const arg of argsMeta) {\n if (arg.desc) yield* jsDoc(arg.desc)\n yield `${ctx.sanitizer.makeSafePropertyIdentifier(arg.name)}${arg.isOptional ? '?' : ''}: ${arg.tsType}`\n }\n yield DecIndentAndCloseBlock\n } else {\n yield `'${ctx.sanitizer.makeSafeStringTypeLiteral(methodSig)}': Record<string, never>`\n }\n }\n yield DecIndentAndCloseBlock\n\n yield* jsDoc('The tuple representation of the arguments for each method')\n yield 'tuple: {'\n yield IncIndent\n for (const method of app.methods) {\n const { methodSig, argsMeta } = getMethodMetadata(method, ctx)\n yield* inline(\n `'${ctx.sanitizer.makeSafeStringTypeLiteral(methodSig)}': [`,\n argsMeta\n .map((arg) => `${ctx.sanitizer.makeSafeVariableIdentifier(arg.name)}: ${arg.tsType}${arg.isOptional ? ' | undefined' : ''}`)\n .join(', '),\n ']',\n )\n }\n yield DecIndentAndCloseBlock\n\n yield DecIndentAndCloseBlock\n yield NewLine\n\n yield* jsDoc('The return type for each method')\n yield `export type ${name}Returns = {`\n yield IncIndent\n for (const method of app.methods) {\n const { methodSig } = getMethodMetadata(method, ctx)\n yield* inline(\n `'${ctx.sanitizer.makeSafeStringTypeLiteral(methodSig)}': ${getEquivalentType(method.returns.struct ?? method.returns.type ?? 'void', 'output', ctx)}`,\n )\n }\n yield DecIndentAndCloseBlock\n yield NewLine\n\n yield* jsDoc(`Defines the types of available calls and state of the ${name} smart contract.`)\n yield `export type ${name}Types = {`\n yield IncIndent\n yield* jsDoc('Maps method signatures / names to their argument and return types.')\n if (app.methods.length == 0) {\n yield 'methods: {}'\n } else {\n yield 'methods:'\n }\n yield IncIndent\n for (const method of app.methods) {\n const { methodSig, uniqueName } = getMethodMetadata(method, ctx)\n yield `& Record<'${ctx.sanitizer.makeSafeStringTypeLiteral(methodSig)}'${methodSig !== uniqueName ? ` | '${ctx.sanitizer.makeSafeStringTypeLiteral(uniqueName)}'` : ''}, {`\n yield IncIndent\n yield `argsObj: ${name}Args['obj']['${ctx.sanitizer.makeSafeStringTypeLiteral(methodSig)}']`\n yield `argsTuple: ${name}Args['tuple']['${ctx.sanitizer.makeSafeStringTypeLiteral(methodSig)}']`\n\n if (method.returns.desc) yield* jsDoc(method.returns.desc)\n yield `returns: ${name}Returns['${ctx.sanitizer.makeSafeStringTypeLiteral(methodSig)}']`\n\n yield DecIndent\n yield '}>'\n }\n yield DecIndent\n\n const hasLocal =\n (app.state.keys.local && Object.keys(app.state.keys.local).length > 0) ||\n (app.state.maps.local && Object.keys(app.state.maps.local).length > 0)\n const hasGlobal =\n (app.state.keys.global && Object.keys(app.state.keys.global).length > 0) ||\n (app.state.maps.global && Object.keys(app.state.maps.global).length > 0)\n const hasBox =\n (app.state.keys.box && Object.keys(app.state.keys.box).length > 0) || (app.state.maps.box && Object.keys(app.state.maps.box).length > 0)\n yield* appState(ctx, { hasBox, hasGlobal, hasLocal })\n\n yield DecIndentAndCloseBlock\n yield NewLine\n\n yield* inline(`\n /**\n * Defines the possible abi call signatures.\n */\n export type ${name}Signatures = keyof ${name}Types['methods']`)\n\n if (containsNonVoidMethod(app.methods)) {\n yield* inline(`\n /**\n * Defines the possible abi call signatures for methods that return a non-void value.\n */\n export type ${name}NonVoidMethodSignatures = keyof ${name}Types['methods'] extends infer T ? T extends keyof ${name}Types['methods'] ? MethodReturn<T> extends void ? never : T : never : never`)\n }\n\n yield `\n /**\n * Defines an object containing all relevant parameters for a single call to the contract.\n */\n export type CallParams<TArgs> = Expand<\n Omit<AppClientMethodCallParams, 'method' | 'args' | 'onComplete'> &\n {\n /** The args for the ABI method call, either as an ordered array or an object */\n args: Expand<TArgs>\n }\n >\n /**\n * Maps a method signature from the ${name} smart contract to the method's arguments in either tuple or struct form\n */\n export type MethodArgs<TSignature extends ${name}Signatures> = ${name}Types['methods'][TSignature]['argsObj' | 'argsTuple']\n /**\n * Maps a method signature from the ${name} smart contract to the method's return type\n */\n export type MethodReturn<TSignature extends ${name}Signatures> = ${name}Types['methods'][TSignature]['returns']\n `\n\n if (hasGlobal) {\n yield `\n /**\n * Defines the shape of the keyed global state of the application.\n */\n export type GlobalKeysState = ${name}Types['state']['global']['keys']\n `\n }\n\n if (hasLocal) {\n yield `\n /**\n * Defines the shape of the keyed local state of the application.\n */\n export type LocalKeysState = ${name}Types['state']['local']['keys']\n `\n }\n\n if (hasBox) {\n yield `\n /**\n * Defines the shape of the keyed box state of the application.\n */\n export type BoxKeysState = ${name}Types['state']['box']['keys']\n `\n }\n\n yield NewLine\n}\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\nfunction getStructAsObject(struct: StructField[], ctx: GeneratorContext): Record<string, any> {\n return Object.fromEntries(\n struct.map((s) => [s.name, typeof s.type === 'string' ? getEquivalentType(s.type, 'output', ctx) : getStructAsObject(s.type, ctx)]),\n )\n}\n\nfunction getStructAsTupleTypes(struct: StructField[], ctx: GeneratorContext): string {\n return `[${struct\n .map((s) => {\n // Field is an inline nested struct (array of StructField)\n if (Array.isArray(s.type)) {\n return getStructAsTupleTypes(s.type, ctx)\n }\n // Field references a named struct defined elsewhere\n if (Object.keys(ctx.app.structs).includes(s.type)) {\n return getStructAsTupleTypes(ctx.app.structs[s.type], ctx)\n }\n // Field is a primitive type (string, uint64, etc.)\n return getEquivalentType(s.type, 'output', ctx)\n })\n .join(', ')}]`\n}\n\nfunction* structTypes(ctx: GeneratorContext): DocumentParts {\n const { app, sanitizer } = ctx\n if (Object.keys(app.structs).length === 0) return\n\n yield '// Type definitions for ARC-56 structs'\n yield NewLine\n\n for (const structName of Object.keys(app.structs)) {\n // Emit the struct type\n\n yield `export type ${sanitizer.makeSafeTypeIdentifier(structName)} = ${JSON.stringify(getStructAsObject(app.structs[structName], ctx), null, 2).replace(/\"/g, '')}`\n yield NewLine\n\n // Emit method that converts ABI tuple to the struct object\n yield* jsDoc(`Converts the ABI tuple representation of a ${structName} to the struct representation`)\n yield* inline(\n `export function ${sanitizer.makeSafeTypeIdentifier(structName)}FromTuple(`,\n `abiTuple: ${getStructAsTupleTypes(app.structs[structName], ctx)}`,\n `) {`,\n )\n yield* indent(\n `return getABIStructFromABITuple(abiTuple, APP_SPEC.structs${sanitizer.getSafeMemberAccessor(structName)}, APP_SPEC.structs) as ${sanitizer.makeSafeTypeIdentifier(structName)}`,\n )\n yield '}'\n yield NewLine\n }\n}\n\nfunction* templateVariableTypes(ctx: GeneratorContext): DocumentParts {\n if (Object.keys(ctx.app.templateVariables ?? {}).length === 0) {\n return\n }\n\n yield* jsDoc('Deploy-time template variables')\n yield 'export type TemplateVariables = {'\n yield IncIndent\n\n for (const name of Object.keys(ctx.app.templateVariables ?? {})) {\n yield `${name}: ${getEquivalentType(ctx.app.templateVariables![name].type, 'output', ctx)},`\n }\n\n yield DecIndentAndCloseBlock\n yield NewLine\n}\n\nfunction* keysAndMaps(\n app: Arc56Contract,\n sanitizer: Sanitizer,\n keys: {\n [name: string]: StorageKey\n },\n maps: {\n [name: string]: StorageMap\n },\n): DocumentParts {\n if (keys && Object.keys(keys).length) {\n yield 'keys: {'\n yield IncIndent\n for (const name of Object.keys(keys)) {\n const prop = keys[name]\n if (prop.desc) {\n yield* jsDoc(prop.desc)\n }\n const keySafe = sanitizer.makeSafePropertyIdentifier(name)\n\n yield `${keySafe}: ${prop.valueType === 'AVMBytes' ? 'BinaryState' : getEquivalentType(prop.valueType, 'output', { app, sanitizer })}`\n }\n yield DecIndentAndCloseBlock\n } else {\n yield 'keys: {}'\n }\n\n if (maps && Object.keys(maps).length) {\n yield 'maps: {'\n yield IncIndent\n for (const name of Object.keys(maps)) {\n const prop = maps[name]\n if (prop.desc) {\n yield* jsDoc(prop.desc)\n }\n const keySafe = sanitizer.makeSafePropertyIdentifier(name)\n\n yield `${keySafe}: Map<${getEquivalentType(prop.keyType, 'input', { app, sanitizer })}, ${getEquivalentType(prop.valueType, 'output', { app, sanitizer })}>`\n }\n yield DecIndentAndCloseBlock\n } else {\n yield 'maps: {}'\n }\n}\n\nfunction* appState(\n { app, sanitizer }: GeneratorContext,\n stateFlags: { hasLocal: boolean; hasGlobal: boolean; hasBox: boolean },\n): DocumentParts {\n const { hasBox, hasGlobal, hasLocal } = stateFlags\n\n if (hasLocal || hasGlobal || hasBox) {\n yield* jsDoc('Defines the shape of the state of the application.')\n yield 'state: {'\n yield IncIndent\n if (hasGlobal) {\n yield 'global: {'\n yield IncIndent\n yield* keysAndMaps(app, sanitizer, app.state.keys.global, app.state.maps.global)\n yield DecIndentAndCloseBlock\n }\n if (hasLocal) {\n yield 'local: {'\n yield IncIndent\n yield* keysAndMaps(app, sanitizer, app.state.keys.local, app.state.maps.local)\n yield DecIndentAndCloseBlock\n }\n if (hasBox) {\n yield 'box: {'\n yield IncIndent\n yield* keysAndMaps(app, sanitizer, app.state.keys.box, app.state.maps.box)\n yield DecIndentAndCloseBlock\n }\n yield DecIndentAndCloseBlock\n }\n}\n"],"names":[],"mappings":";;;;;AASA,SAAS,iBAAiB,CAAC,MAAc,EAAE,GAAqB,EAAA;AAC9D,IAAA,MAAM,EAAE,2BAA2B,EAAE,GAAG,GAAG;IAC3C,MAAM,SAAS,GAAG,IAAI,SAAS,CAAC,MAAM,CAAC,CAAC,YAAY,EAAE;AACtD,IAAA,MAAM,UAAU,GAAG,2BAA2B,CAAC,SAAS,CAAC;IAEzD,IAAI,uBAAuB,GAAG,KAAK;AACnC,IAAA,MAAM,QAAQ,GAAG,IAAI,KAAK,EAAyG;IAEnI,KAAK,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,IAAI,EAAE,EAAE,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;QACxD,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;QAE1B,QAAQ,CAAC,IAAI,CAAC;AACZ,YAAA,GAAG,GAAG;YACN,IAAI,EAAE,GAAG,CAAC,IAAI,IAAI,CAAA,GAAA,EAAM,CAAC,GAAG,CAAC,CAAA,CAAE;AAC/B,YAAA,UAAU,EAAE,CAAC,CAAC,GAAG,CAAC,YAAY,KAAK,uBAAuB,IAAI,OAAO,CAAC,oBAAoB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AACrG,YAAA,MAAM,EAAE,iBAAiB,CAAC,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,CAAC;AAChE,SAAA,CAAC;AAEF,QAAA,IACE,CAAC,uBAAuB;AACxB,YAAA,OAAO,CAAC,oBAAoB,CAAC,GAAG,CAAC,IAAI,CAAC;YACtC,CAAC,OAAO,CAAC,kBAAkB,CAAC,IAAI,EAAE,OAAO,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,EACpF;YACA,uBAAuB,GAAG,IAAI;QAChC;IACF;IACA,QAAQ,CAAC,OAAO,EAAE;AAElB,IAAA,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,QAAQ,EAAE;AAC5C;AAEM,UAAW,QAAQ,CAAC,GAAqB,EAAA;AAC7C,IAAA,OAAO,WAAW,CAAC,GAAG,CAAC;AACvB,IAAA,OAAO,qBAAqB,CAAC,GAAG,CAAC;AAEjC,IAAA,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,GAAG;IAEzB,OAAO,KAAK,CAAC,8BAA8B,IAAI,CAAA,SAAA,CAAW,CAAC;IAC3D,MAAM,CAAA,YAAA,EAAe,IAAI,CAAA,QAAA,CAAU;AACnC,IAAA,MAAM,SAAS;AACf,IAAA,OAAO,KAAK,CAAC,4DAA4D,CAAC;AAC1E,IAAA,MAAM,QAAQ;AACd,IAAA,MAAM,SAAS;AACf,IAAA,KAAK,MAAM,MAAM,IAAI,GAAG,CAAC,OAAO,EAAE;AAChC,QAAA,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,iBAAiB,CAAC,MAAM,EAAE,GAAG,CAAC;AAC9D,QAAA,IAAI,QAAQ,CAAC,MAAM,EAAE;YACnB,MAAM,CAAA,CAAA,EAAI,GAAG,CAAC,SAAS,CAAC,yBAAyB,CAAC,SAAS,CAAC,CAAA,IAAA,CAAM;AAClE,YAAA,MAAM,SAAS;AACf,YAAA,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE;gBAC1B,IAAI,GAAG,CAAC,IAAI;oBAAE,OAAO,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC;AACpC,gBAAA,MAAM,CAAA,EAAG,GAAG,CAAC,SAAS,CAAC,0BAA0B,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA,EAAG,GAAG,CAAC,UAAU,GAAG,GAAG,GAAG,EAAE,CAAA,EAAA,EAAK,GAAG,CAAC,MAAM,CAAA,CAAE;YAC1G;AACA,YAAA,MAAM,sBAAsB;QAC9B;aAAO;YACL,MAAM,CAAA,CAAA,EAAI,GAAG,CAAC,SAAS,CAAC,yBAAyB,CAAC,SAAS,CAAC,CAAA,wBAAA,CAA0B;QACxF;IACF;AACA,IAAA,MAAM,sBAAsB;AAE5B,IAAA,OAAO,KAAK,CAAC,2DAA2D,CAAC;AACzE,IAAA,MAAM,UAAU;AAChB,IAAA,MAAM,SAAS;AACf,IAAA,KAAK,MAAM,MAAM,IAAI,GAAG,CAAC,OAAO,EAAE;AAChC,QAAA,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,iBAAiB,CAAC,MAAM,EAAE,GAAG,CAAC;AAC9D,QAAA,OAAO,MAAM,CACX,IAAI,GAAG,CAAC,SAAS,CAAC,yBAAyB,CAAC,SAAS,CAAC,CAAA,IAAA,CAAM,EAC5D;AACG,aAAA,GAAG,CAAC,CAAC,GAAG,KAAK,CAAA,EAAG,GAAG,CAAC,SAAS,CAAC,0BAA0B,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA,EAAA,EAAK,GAAG,CAAC,MAAM,CAAA,EAAG,GAAG,CAAC,UAAU,GAAG,cAAc,GAAG,EAAE,EAAE;AAC1H,aAAA,IAAI,CAAC,IAAI,CAAC,EACb,GAAG,CACJ;IACH;AACA,IAAA,MAAM,sBAAsB;AAE5B,IAAA,MAAM,sBAAsB;AAC5B,IAAA,MAAM,OAAO;AAEb,IAAA,OAAO,KAAK,CAAC,iCAAiC,CAAC;IAC/C,MAAM,CAAA,YAAA,EAAe,IAAI,CAAA,WAAA,CAAa;AACtC,IAAA,MAAM,SAAS;AACf,IAAA,KAAK,MAAM,MAAM,IAAI,GAAG,CAAC,OAAO,EAAE;QAChC,MAAM,EAAE,SAAS,EAAE,GAAG,iBAAiB,CAAC,MAAM,EAAE,GAAG,CAAC;AACpD,QAAA,OAAO,MAAM,CACX,CAAA,CAAA,EAAI,GAAG,CAAC,SAAS,CAAC,yBAAyB,CAAC,SAAS,CAAC,CAAA,GAAA,EAAM,iBAAiB,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,IAAI,MAAM,EAAE,QAAQ,EAAE,GAAG,CAAC,CAAA,CAAE,CACvJ;IACH;AACA,IAAA,MAAM,sBAAsB;AAC5B,IAAA,MAAM,OAAO;IAEb,OAAO,KAAK,CAAC,yDAAyD,IAAI,CAAA,gBAAA,CAAkB,CAAC;IAC7F,MAAM,CAAA,YAAA,EAAe,IAAI,CAAA,SAAA,CAAW;AACpC,IAAA,MAAM,SAAS;AACf,IAAA,OAAO,KAAK,CAAC,oEAAoE,CAAC;IAClF,IAAI,GAAG,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC,EAAE;AAC3B,QAAA,MAAM,aAAa;IACrB;SAAO;AACL,QAAA,MAAM,UAAU;IAClB;AACA,IAAA,MAAM,SAAS;AACf,IAAA,KAAK,MAAM,MAAM,IAAI,GAAG,CAAC,OAAO,EAAE;AAChC,QAAA,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,GAAG,iBAAiB,CAAC,MAAM,EAAE,GAAG,CAAC;AAChE,QAAA,MAAM,CAAA,UAAA,EAAa,GAAG,CAAC,SAAS,CAAC,yBAAyB,CAAC,SAAS,CAAC,CAAA,CAAA,EAAI,SAAS,KAAK,UAAU,GAAG,CAAA,IAAA,EAAO,GAAG,CAAC,SAAS,CAAC,yBAAyB,CAAC,UAAU,CAAC,CAAA,CAAA,CAAG,GAAG,EAAE,KAAK;AAC3K,QAAA,MAAM,SAAS;AACf,QAAA,MAAM,CAAA,SAAA,EAAY,IAAI,CAAA,aAAA,EAAgB,GAAG,CAAC,SAAS,CAAC,yBAAyB,CAAC,SAAS,CAAC,CAAA,EAAA,CAAI;AAC5F,QAAA,MAAM,CAAA,WAAA,EAAc,IAAI,CAAA,eAAA,EAAkB,GAAG,CAAC,SAAS,CAAC,yBAAyB,CAAC,SAAS,CAAC,CAAA,EAAA,CAAI;AAEhG,QAAA,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI;YAAE,OAAO,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC;AAC1D,QAAA,MAAM,CAAA,SAAA,EAAY,IAAI,CAAA,SAAA,EAAY,GAAG,CAAC,SAAS,CAAC,yBAAyB,CAAC,SAAS,CAAC,CAAA,EAAA,CAAI;AAExF,QAAA,MAAM,SAAS;AACf,QAAA,MAAM,IAAI;IACZ;AACA,IAAA,MAAM,SAAS;IAEf,MAAM,QAAQ,GACZ,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC;SACpE,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;IACxE,MAAM,SAAS,GACb,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,GAAG,CAAC;SACtE,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;IAC1E,MAAM,MAAM,GACV,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,MAAM,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;AAC1I,IAAA,OAAO,QAAQ,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC;AAErD,IAAA,MAAM,sBAAsB;AAC5B,IAAA,MAAM,OAAO;IAEb,OAAO,MAAM,CAAC;;;;AAIA,cAAA,EAAA,IAAI,CAAA,mBAAA,EAAsB,IAAI,CAAA,gBAAA,CAAkB,CAAC;AAE/D,IAAA,IAAI,qBAAqB,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE;QACtC,OAAO,MAAM,CAAC;;;;AAIF,cAAA,EAAA,IAAI,mCAAmC,IAAI,CAAA,mDAAA,EAAsD,IAAI,CAAA,4EAAA,CAA8E,CAAC;IAClM;IAEA,MAAM;;;;;;;;;;;;wCAYgC,IAAI,CAAA;;AAEE,4CAAA,EAAA,IAAI,iBAAiB,IAAI,CAAA;;wCAE/B,IAAI,CAAA;;AAEI,8CAAA,EAAA,IAAI,iBAAiB,IAAI,CAAA;GACtE;IAED,IAAI,SAAS,EAAE;QACb,MAAM;;;;sCAI4B,IAAI,CAAA;KACrC;IACH;IAEA,IAAI,QAAQ,EAAE;QACZ,MAAM;;;;qCAI2B,IAAI,CAAA;KACpC;IACH;IAEA,IAAI,MAAM,EAAE;QACV,MAAM;;;;mCAIyB,IAAI,CAAA;KAClC;IACH;AAEA,IAAA,MAAM,OAAO;AACf;AAEA;AACA,SAAS,iBAAiB,CAAC,MAAqB,EAAE,GAAqB,EAAA;IACrE,OAAO,MAAM,CAAC,WAAW,CACvB,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,IAAI,KAAK,QAAQ,GAAG,iBAAiB,CAAC,CAAC,CAAC,IAAI,EAAE,QAAQ,EAAE,GAAG,CAAC,GAAG,iBAAiB,CAAC,CAAC,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CACpI;AACH;AAEA,SAAS,qBAAqB,CAAC,MAAqB,EAAE,GAAqB,EAAA;AACzE,IAAA,OAAO,IAAI;AACR,SAAA,GAAG,CAAC,CAAC,CAAC,KAAI;;QAET,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE;YACzB,OAAO,qBAAqB,CAAC,CAAC,CAAC,IAAI,EAAE,GAAG,CAAC;QAC3C;;AAEA,QAAA,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE;AACjD,YAAA,OAAO,qBAAqB,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC;QAC5D;;QAEA,OAAO,iBAAiB,CAAC,CAAC,CAAC,IAAI,EAAE,QAAQ,EAAE,GAAG,CAAC;AACjD,IAAA,CAAC;AACA,SAAA,IAAI,CAAC,IAAI,CAAC,CAAA,CAAA,CAAG;AAClB;AAEA,UAAU,WAAW,CAAC,GAAqB,EAAA;AACzC,IAAA,MAAM,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,GAAG;IAC9B,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,MAAM,KAAK,CAAC;QAAE;AAE3C,IAAA,MAAM,wCAAwC;AAC9C,IAAA,MAAM,OAAO;AAEb,IAAA,KAAK,MAAM,UAAU,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE;;AAGjD,QAAA,MAAM,eAAe,SAAS,CAAC,sBAAsB,CAAC,UAAU,CAAC,CAAA,GAAA,EAAM,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE;AACnK,QAAA,MAAM,OAAO;;QAGb,OAAO,KAAK,CAAC,8CAA8C,UAAU,CAAA,6BAAA,CAA+B,CAAC;AACrG,QAAA,OAAO,MAAM,CACX,CAAA,gBAAA,EAAmB,SAAS,CAAC,sBAAsB,CAAC,UAAU,CAAC,CAAA,UAAA,CAAY,EAC3E,CAAA,UAAA,EAAa,qBAAqB,CAAC,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,GAAG,CAAC,CAAA,CAAE,EAClE,CAAA,GAAA,CAAK,CACN;QACD,OAAO,MAAM,CACX,6DAA6D,SAAS,CAAC,qBAAqB,CAAC,UAAU,CAAC,CAAA,uBAAA,EAA0B,SAAS,CAAC,sBAAsB,CAAC,UAAU,CAAC,CAAA,CAAE,CACjL;AACD,QAAA,MAAM,GAAG;AACT,QAAA,MAAM,OAAO;IACf;AACF;AAEA,UAAU,qBAAqB,CAAC,GAAqB,EAAA;AACnD,IAAA,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,iBAAiB,IAAI,EAAE,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE;QAC7D;IACF;AAEA,IAAA,OAAO,KAAK,CAAC,gCAAgC,CAAC;AAC9C,IAAA,MAAM,mCAAmC;AACzC,IAAA,MAAM,SAAS;AAEf,IAAA,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,iBAAiB,IAAI,EAAE,CAAC,EAAE;QAC/D,MAAM,CAAA,EAAG,IAAI,CAAA,EAAA,EAAK,iBAAiB,CAAC,GAAG,CAAC,GAAG,CAAC,iBAAkB,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,QAAQ,EAAE,GAAG,CAAC,CAAA,CAAA,CAAG;IAC9F;AAEA,IAAA,MAAM,sBAAsB;AAC5B,IAAA,MAAM,OAAO;AACf;AAEA,UAAU,WAAW,CACnB,GAAkB,EAClB,SAAoB,EACpB,IAEC,EACD,IAEC,EAAA;IAED,IAAI,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE;AACpC,QAAA,MAAM,SAAS;AACf,QAAA,MAAM,SAAS;QACf,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;AACpC,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;AACvB,YAAA,IAAI,IAAI,CAAC,IAAI,EAAE;gBACb,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;YACzB;YACA,MAAM,OAAO,GAAG,SAAS,CAAC,0BAA0B,CAAC,IAAI,CAAC;AAE1D,YAAA,MAAM,CAAA,EAAG,OAAO,CAAA,EAAA,EAAK,IAAI,CAAC,SAAS,KAAK,UAAU,GAAG,aAAa,GAAG,iBAAiB,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,EAAE,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC,EAAE;QACxI;AACA,QAAA,MAAM,sBAAsB;IAC9B;SAAO;AACL,QAAA,MAAM,UAAU;IAClB;IAEA,IAAI,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE;AACpC,QAAA,MAAM,SAAS;AACf,QAAA,MAAM,SAAS;QACf,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;AACpC,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;AACvB,YAAA,IAAI,IAAI,CAAC,IAAI,EAAE;gBACb,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;YACzB;YACA,MAAM,OAAO,GAAG,SAAS,CAAC,0BAA0B,CAAC,IAAI,CAAC;AAE1D,YAAA,MAAM,CAAA,EAAG,OAAO,CAAA,MAAA,EAAS,iBAAiB,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC,CAAA,EAAA,EAAK,iBAAiB,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,EAAE,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC,GAAG;QAC9J;AACA,QAAA,MAAM,sBAAsB;IAC9B;SAAO;AACL,QAAA,MAAM,UAAU;IAClB;AACF;AAEA,UAAU,QAAQ,CAChB,EAAE,GAAG,EAAE,SAAS,EAAoB,EACpC,UAAsE,EAAA;IAEtE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,UAAU;AAElD,IAAA,IAAI,QAAQ,IAAI,SAAS,IAAI,MAAM,EAAE;AACnC,QAAA,OAAO,KAAK,CAAC,oDAAoD,CAAC;AAClE,QAAA,MAAM,UAAU;AAChB,QAAA,MAAM,SAAS;QACf,IAAI,SAAS,EAAE;AACb,YAAA,MAAM,WAAW;AACjB,YAAA,MAAM,SAAS;YACf,OAAO,WAAW,CAAC,GAAG,EAAE,SAAS,EAAE,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC;AAChF,YAAA,MAAM,sBAAsB;QAC9B;QACA,IAAI,QAAQ,EAAE;AACZ,YAAA,MAAM,UAAU;AAChB,YAAA,MAAM,SAAS;YACf,OAAO,WAAW,CAAC,GAAG,EAAE,SAAS,EAAE,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC;AAC9E,YAAA,MAAM,sBAAsB;QAC9B;QACA,IAAI,MAAM,EAAE;AACV,YAAA,MAAM,QAAQ;AACd,YAAA,MAAM,SAAS;YACf,OAAO,WAAW,CAAC,GAAG,EAAE,SAAS,EAAE,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC;AAC1E,YAAA,MAAM,sBAAsB;QAC9B;AACA,QAAA,MAAM,sBAAsB;IAC9B;AACF;;;;"}
1
+ {"version":3,"file":"app-types.mjs","sources":["../../src/client/app-types.ts"],"sourcesContent":["import { GeneratorContext } from './generator-context'\nimport { DecIndent, DecIndentAndCloseBlock, DocumentParts, IncIndent, inline, jsDoc, NewLine } from '../output/writer'\nimport { argTypeIsTransaction, ABITransactionType } from '@algorandfoundation/algokit-utils/abi'\nimport { Sanitizer } from '../util/sanitization'\nimport { Expand } from '@algorandfoundation/algokit-utils/types/expand'\nimport { containsNonVoidMethod } from './helpers/contains-non-void-method'\nimport { AbiMethodClientContext, StorageKeyContext, StorageMapContext } from './app-client-context'\n\nfunction getMethodMetadata(method: AbiMethodClientContext) {\n const methodSig = method.signature\n const uniqueName = method.uniqueName.original\n\n let hasAppCallArgToTheRight = false\n const argsMeta = new Array<Expand<Omit<(typeof method.args)[0], 'name'> & { name: string; isOptional: boolean; tsType: string }>>()\n\n for (let i = (method.args ?? []).length - 1; i >= 0; i--) {\n const arg = method.args[i]\n\n argsMeta.push({\n ...arg,\n name: arg.name?.original ?? `arg${i + 1}`,\n isOptional: !!arg.defaultValue || (hasAppCallArgToTheRight && argTypeIsTransaction(arg.type)),\n tsType: arg.tsInType,\n })\n\n if (\n !hasAppCallArgToTheRight &&\n argTypeIsTransaction(arg.type) &&\n [ABITransactionType.AppCall, ABITransactionType.Txn].includes(arg.type)\n ) {\n hasAppCallArgToTheRight = true\n }\n }\n argsMeta.reverse()\n\n return { methodSig, uniqueName, argsMeta }\n}\n\nexport function* appTypes(ctx: GeneratorContext): DocumentParts {\n yield* structTypes(ctx)\n yield* templateVariableTypes(ctx)\n\n const { app, name } = ctx\n\n yield* jsDoc(`The argument types for the ${name} contract`)\n yield `export type ${name}Args = {`\n yield IncIndent\n yield* jsDoc('The object representation of the arguments for each method')\n yield 'obj: {'\n yield IncIndent\n for (const method of app.abiMethods) {\n const { methodSig, argsMeta } = getMethodMetadata(method)\n if (argsMeta.length) {\n yield `'${ctx.sanitizer.makeSafeStringTypeLiteral(methodSig)}': {`\n yield IncIndent\n for (const arg of argsMeta) {\n if (arg.desc) yield* jsDoc(arg.desc)\n yield `${ctx.sanitizer.makeSafePropertyIdentifier(arg.name)}${arg.isOptional ? '?' : ''}: ${arg.tsType}`\n }\n yield DecIndentAndCloseBlock\n } else {\n yield `'${ctx.sanitizer.makeSafeStringTypeLiteral(methodSig)}': Record<string, never>`\n }\n }\n yield DecIndentAndCloseBlock\n\n yield* jsDoc('The tuple representation of the arguments for each method')\n yield 'tuple: {'\n yield IncIndent\n for (const method of app.abiMethods) {\n const { methodSig, argsMeta } = getMethodMetadata(method)\n yield* inline(\n `'${ctx.sanitizer.makeSafeStringTypeLiteral(methodSig)}': [`,\n argsMeta\n .map((arg) => `${ctx.sanitizer.makeSafeVariableIdentifier(arg.name)}: ${arg.tsType}${arg.isOptional ? ' | undefined' : ''}`)\n .join(', '),\n ']',\n )\n }\n yield DecIndentAndCloseBlock\n\n yield DecIndentAndCloseBlock\n yield NewLine\n\n yield* jsDoc('The return type for each method')\n yield `export type ${name}Returns = {`\n yield IncIndent\n for (const method of app.abiMethods) {\n const { methodSig } = getMethodMetadata(method)\n yield* inline(`'${ctx.sanitizer.makeSafeStringTypeLiteral(methodSig)}': ${method.returns.tsOutType}`)\n }\n yield DecIndentAndCloseBlock\n yield NewLine\n\n yield* jsDoc(`Defines the types of available calls and state of the ${name} smart contract.`)\n yield `export type ${name}Types = {`\n yield IncIndent\n yield* jsDoc('Maps method signatures / names to their argument and return types.')\n if (app.abiMethods.length == 0) {\n yield 'methods: {}'\n } else {\n yield 'methods:'\n }\n yield IncIndent\n for (const method of app.abiMethods) {\n const { methodSig } = getMethodMetadata(method)\n yield `& Record<'${ctx.sanitizer.makeSafeStringTypeLiteral(methodSig)}'${method.baseNameIsUnique ? ` | '${method.name.makeSafeStringTypeLiteral}'` : ''}, {`\n yield IncIndent\n yield `argsObj: ${name}Args['obj']['${ctx.sanitizer.makeSafeStringTypeLiteral(methodSig)}']`\n yield `argsTuple: ${name}Args['tuple']['${ctx.sanitizer.makeSafeStringTypeLiteral(methodSig)}']`\n\n if (method.returns.desc) yield* jsDoc(method.returns.desc)\n yield `returns: ${name}Returns['${ctx.sanitizer.makeSafeStringTypeLiteral(methodSig)}']`\n\n yield DecIndent\n yield '}>'\n }\n yield DecIndent\n\n const hasLocal =\n (app.state.keys.local && Object.keys(app.state.keys.local).length > 0) ||\n (app.state.maps.local && Object.keys(app.state.maps.local).length > 0)\n const hasGlobal =\n (app.state.keys.global && Object.keys(app.state.keys.global).length > 0) ||\n (app.state.maps.global && Object.keys(app.state.maps.global).length > 0)\n const hasBox =\n (app.state.keys.box && Object.keys(app.state.keys.box).length > 0) || (app.state.maps.box && Object.keys(app.state.maps.box).length > 0)\n yield* appState(ctx, { hasBox, hasGlobal, hasLocal })\n\n yield DecIndentAndCloseBlock\n yield NewLine\n\n yield* inline(`\n /**\n * Defines the possible abi call signatures.\n */\n export type ${name}Signatures = keyof ${name}Types['methods']`)\n\n if (containsNonVoidMethod(app.methods)) {\n yield* inline(`\n /**\n * Defines the possible abi call signatures for methods that return a non-void value.\n */\n export type ${name}NonVoidMethodSignatures = keyof ${name}Types['methods'] extends infer T ? T extends keyof ${name}Types['methods'] ? MethodReturn<T> extends void ? never : T : never : never`)\n }\n\n yield `\n /**\n * Defines an object containing all relevant parameters for a single call to the contract.\n */\n export type CallParams<TArgs> = Expand<\n Omit<AppClientMethodCallParams, 'method' | 'args' | 'onComplete'> &\n {\n /** The args for the ABI method call, either as an ordered array or an object */\n args: Expand<TArgs>\n }\n >\n /**\n * Maps a method signature from the ${name} smart contract to the method's arguments in either tuple or struct form\n */\n export type MethodArgs<TSignature extends ${name}Signatures> = ${name}Types['methods'][TSignature]['argsObj' | 'argsTuple']\n /**\n * Maps a method signature from the ${name} smart contract to the method's return type\n */\n export type MethodReturn<TSignature extends ${name}Signatures> = ${name}Types['methods'][TSignature]['returns']\n `\n\n if (hasGlobal) {\n yield `\n /**\n * Defines the shape of the keyed global state of the application.\n */\n export type GlobalKeysState = ${name}Types['state']['global']['keys']\n `\n }\n\n if (hasLocal) {\n yield `\n /**\n * Defines the shape of the keyed local state of the application.\n */\n export type LocalKeysState = ${name}Types['state']['local']['keys']\n `\n }\n\n if (hasBox) {\n yield `\n /**\n * Defines the shape of the keyed box state of the application.\n */\n export type BoxKeysState = ${name}Types['state']['box']['keys']\n `\n }\n\n yield NewLine\n}\n\nfunction* structTypes(ctx: GeneratorContext): DocumentParts {\n const { app, sanitizer } = ctx\n if (Object.keys(app.structs).length === 0) return\n\n yield '// Type definitions for ARC-56 structs'\n yield NewLine\n\n for (const [structName, structCtx] of Object.entries(app.structs)) {\n // Emit the struct type\n yield `export type ${sanitizer.makeSafeTypeIdentifier(structName)} = ${structCtx.tsObjDef}`\n yield NewLine\n }\n}\n\nfunction* templateVariableTypes(ctx: GeneratorContext): DocumentParts {\n if (Object.keys(ctx.app.templateVariables ?? {}).length === 0) {\n return\n }\n\n yield* jsDoc('Deploy-time template variables')\n yield 'export type TemplateVariables = {'\n yield IncIndent\n\n for (const [name, def] of Object.entries(ctx.app.templateVariables ?? {})) {\n yield `${name}: ${def.type.tsInType},`\n }\n\n yield DecIndentAndCloseBlock\n yield NewLine\n}\n\nfunction* keysAndMaps(\n sanitizer: Sanitizer,\n keys: {\n [name: string]: StorageKeyContext\n },\n maps: {\n [name: string]: StorageMapContext\n },\n): DocumentParts {\n if (keys && Object.keys(keys).length) {\n yield 'keys: {'\n yield IncIndent\n for (const [name, prop] of Object.entries(keys)) {\n if (prop.desc) {\n yield* jsDoc(prop.desc)\n }\n const keySafe = sanitizer.makeSafePropertyIdentifier(name)\n prop.valueType\n yield `${keySafe}: ${prop.valueType.isAvmBytes ? 'BinaryState' : prop.valueType.tsOutType}`\n }\n yield DecIndentAndCloseBlock\n } else {\n yield 'keys: {}'\n }\n\n if (maps && Object.keys(maps).length) {\n yield 'maps: {'\n yield IncIndent\n for (const name of Object.keys(maps)) {\n const prop = maps[name]\n if (prop.desc) {\n yield* jsDoc(prop.desc)\n }\n const keySafe = sanitizer.makeSafePropertyIdentifier(name)\n\n yield `${keySafe}: Map<${prop.keyType.tsInType}, ${prop.valueType.tsOutType}>`\n }\n yield DecIndentAndCloseBlock\n } else {\n yield 'maps: {}'\n }\n}\n\nfunction* appState(\n { app, sanitizer }: GeneratorContext,\n stateFlags: { hasLocal: boolean; hasGlobal: boolean; hasBox: boolean },\n): DocumentParts {\n const { hasBox, hasGlobal, hasLocal } = stateFlags\n\n if (hasLocal || hasGlobal || hasBox) {\n yield* jsDoc('Defines the shape of the state of the application.')\n yield 'state: {'\n yield IncIndent\n if (hasGlobal) {\n yield 'global: {'\n yield IncIndent\n yield* keysAndMaps(sanitizer, app.state.keys.global, app.state.maps.global)\n yield DecIndentAndCloseBlock\n }\n if (hasLocal) {\n yield 'local: {'\n yield IncIndent\n yield* keysAndMaps(sanitizer, app.state.keys.local, app.state.maps.local)\n yield DecIndentAndCloseBlock\n }\n if (hasBox) {\n yield 'box: {'\n yield IncIndent\n yield* keysAndMaps(sanitizer, app.state.keys.box, app.state.maps.box)\n yield DecIndentAndCloseBlock\n }\n yield DecIndentAndCloseBlock\n }\n}\n"],"names":[],"mappings":"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"}
@@ -1,21 +1,19 @@
1
1
  'use strict';
2
2
 
3
3
  var writer = require('../output/writer.js');
4
- var getCallConfigSummary = require('./helpers/get-call-config-summary.js');
5
- var deployTypes = require('./deploy-types.js');
6
- var algosdk = require('algosdk');
4
+ var appClientContext = require('./app-client-context.js');
7
5
 
8
6
  function* callComposerType(ctx) {
9
- const { name, callConfig, app } = ctx;
7
+ const { name, app } = ctx;
10
8
  yield `export type ${name}Composer<TReturns extends [...any[]] = []> = {`;
11
9
  yield writer.IncIndent;
12
10
  yield* callComposerTypeNoops(ctx);
13
11
  if (ctx.mode === 'full') {
14
- yield* callComposerOperationMethodType(ctx, `Updates an existing instance of the ${app.name} smart contract`, callConfig.updateMethods, 'update');
15
- yield* callComposerOperationMethodType(ctx, `Deletes an existing instance of the ${app.name} smart contract`, callConfig.deleteMethods, 'delete');
12
+ yield* callComposerOperationMethodType(ctx, `Updates an existing instance of the ${app.name} smart contract`, app.updateMethods, 'update');
13
+ yield* callComposerOperationMethodType(ctx, `Deletes an existing instance of the ${app.name} smart contract`, app.deleteMethods, 'delete');
16
14
  }
17
- yield* callComposerOperationMethodType(ctx, `Opts the user into an existing instance of the ${app.name} smart contract`, callConfig.optInMethods, 'optIn');
18
- yield* callComposerOperationMethodType(ctx, `Makes a close out call to an existing instance of the ${app.name} smart contract`, callConfig.closeOutMethods, 'closeOut');
15
+ yield* callComposerOperationMethodType(ctx, `Opts the user into an existing instance of the ${app.name} smart contract`, app.optInMethods, 'optIn');
16
+ yield* callComposerOperationMethodType(ctx, `Makes a close out call to an existing instance of the ${app.name} smart contract`, app.closeOutMethods, 'closeOut');
19
17
  yield* callComposerTypeClearState(ctx);
20
18
  yield* writer.jsDoc({
21
19
  description: 'Adds a transaction to the composer',
@@ -32,16 +30,16 @@ function* callComposerType(ctx) {
32
30
  yield* writer.jsDoc({
33
31
  description: 'Simulates the transaction group and returns the result',
34
32
  });
35
- yield `simulate(): Promise<${name}ComposerResults<TReturns> & { simulateResponse: modelsv2.SimulateResponse }>`;
36
- yield `simulate(options: SkipSignaturesSimulateOptions): Promise<${name}ComposerResults<TReturns> & { simulateResponse: modelsv2.SimulateResponse }>`;
37
- yield `simulate(options: RawSimulateOptions): Promise<${name}ComposerResults<TReturns> & { simulateResponse: modelsv2.SimulateResponse }>`;
33
+ yield `simulate(): Promise<${name}ComposerResults<TReturns> & { simulateResponse: SimulateResponse }>`;
34
+ yield `simulate(options: SkipSignaturesSimulateOptions): Promise<${name}ComposerResults<TReturns> & { simulateResponse: SimulateResponse }>`;
35
+ yield `simulate(options: RawSimulateOptions): Promise<${name}ComposerResults<TReturns> & { simulateResponse: SimulateResponse }>`;
38
36
  yield* writer.jsDoc({
39
37
  description: 'Sends the transaction group to the network and returns the results',
40
38
  });
41
39
  yield `send(params?: SendParams): Promise<${name}ComposerResults<TReturns>>`;
42
40
  yield writer.DecIndentAndCloseBlock;
43
41
  yield `
44
- export type ${name}ComposerResults<TReturns extends [...any[]]> = Expand<SendAtomicTransactionComposerResults & {
42
+ export type ${name}ComposerResults<TReturns extends [...any[]]> = Expand<SendTransactionComposerResults & {
45
43
  returns: TReturns
46
44
  }>
47
45
  `;
@@ -50,63 +48,62 @@ function* callComposerTypeClearState({ app, name }) {
50
48
  yield* writer.jsDoc({
51
49
  description: `Makes a clear_state call to an existing instance of the ${app.name} smart contract.`,
52
50
  params: {
53
- args: `The arguments for the bare call`,
51
+ params: `Any additional parameters for the bare call`,
54
52
  },
55
53
  returns: `The typed transaction composer so you can fluently chain multiple calls or call execute to execute all queued up transactions`,
56
54
  });
57
55
  yield `clearState(params?: AppClientBareCallParams): ${name}Composer<[...TReturns, undefined]>`;
58
56
  yield writer.NewLine;
59
57
  }
60
- function* callComposerTypeNoops({ app, name, callConfig, methodSignatureToUniqueName, sanitizer }) {
61
- for (const method of app.methods) {
62
- const methodSig = new algosdk.ABIMethod(method).getSignature();
63
- const methodSigSafe = sanitizer.makeSafeStringTypeLiteral(methodSig);
64
- const methodName = sanitizer.makeSafeMethodIdentifier(methodSignatureToUniqueName[methodSig]);
65
- // Skip methods which don't support a no_op call config
66
- if (!callConfig.callMethods.includes(methodSig))
58
+ function* callComposerTypeNoops({ app, name, sanitizer }) {
59
+ for (const method of app.noOpMethods) {
60
+ if (!appClientContext.isAbiMethod(method))
67
61
  continue;
62
+ const methodSig = method.signature;
63
+ const methodSigSafe = sanitizer.makeSafeStringTypeLiteral(methodSig);
64
+ const methodName = method.uniqueName.makeSafeMethodIdentifier;
68
65
  yield* writer.jsDoc({
69
- description: `Calls the ${new algosdk.ABIMethod(method).getSignature()} ABI method.`,
66
+ description: `Calls the ${methodSig} ABI method.`,
70
67
  abiDescription: method.desc,
71
68
  params: {
72
- args: `The arguments for the contract call`,
73
69
  params: `Any additional parameters for the call`,
74
70
  },
75
71
  returns: `The typed transaction composer so you can fluently chain multiple calls or call execute to execute all queued up transactions`,
76
72
  });
77
- yield `${methodName}(params?: CallParams<${name}Args['obj']['${methodSigSafe}'] | ${name}Args['tuple']['${methodSigSafe}']>): ${name}Composer<[...TReturns, ${name}Returns['${methodSigSafe}'] | undefined]>`;
73
+ const updatedReturnType = `[...TReturns, ${name}Returns['${methodSigSafe}'] | undefined]`;
74
+ yield `${methodName}(params?: CallParams<${name}Args['obj']['${methodSigSafe}'] | ${name}Args['tuple']['${methodSigSafe}']>): ${name}Composer<${updatedReturnType}>`;
78
75
  yield writer.NewLine;
79
76
  }
80
77
  }
81
- function* callComposerOperationMethodType({ app, methodSignatureToUniqueName, name, sanitizer }, description, methods, verb, includeCompilation) {
78
+ function* callComposerOperationMethodType({ name, sanitizer }, description, methods, verb, includeCompilation) {
82
79
  if (methods.length) {
83
80
  yield* writer.jsDoc(`Gets available ${verb} methods`);
84
81
  yield `readonly ${verb}: {`;
85
82
  yield writer.IncIndent;
86
- for (const methodSig of methods) {
87
- const onComplete = verb === 'create' ? deployTypes.getCreateOnCompleteOptions(methodSig, app) : undefined;
88
- if (methodSig === getCallConfigSummary.BARE_CALL) {
83
+ for (const method of methods) {
84
+ const onComplete = verb === 'create' ? method.createActions.inputType : undefined;
85
+ if (!appClientContext.isAbiMethod(method)) {
89
86
  yield* writer.jsDoc({
90
87
  description: `${description} using a bare call.`,
91
88
  params: {
92
- args: `The arguments for the bare call`,
89
+ params: `Any additional parameters for the call`,
93
90
  },
94
91
  returns: `The typed transaction composer so you can fluently chain multiple calls or call execute to execute all queued up transactions`,
95
92
  });
96
- yield `bare(params${onComplete?.isOptional !== false ? '?' : ''}: AppClientBareCallParams ${''}): ${name}Composer<[...TReturns, undefined]>`;
93
+ yield `bare(params${onComplete?.isOptional !== false ? '?' : ''}: AppClientBareCallParams ${''}): ${name}Composer<TReturns>`;
97
94
  }
98
95
  else {
99
- const uniqueName = methodSignatureToUniqueName[methodSig];
96
+ const uniqueName = method.uniqueName.original;
100
97
  yield* writer.jsDoc({
101
- description: `${description} using the ${methodSig} ABI method.`,
98
+ description: `${description} using the ${method.signature} ABI method.`,
102
99
  params: {
103
- args: `The arguments for the smart contract call`,
104
100
  params: `Any additional parameters for the call`,
105
101
  },
106
102
  returns: `The typed transaction composer so you can fluently chain multiple calls or call execute to execute all queued up transactions`,
107
103
  });
108
- const methodSigSafe = sanitizer.makeSafeStringTypeLiteral(methodSig);
109
- yield `${sanitizer.makeSafeMethodIdentifier(uniqueName)}(params${onComplete?.isOptional !== false ? '?' : ''}: CallParams<${name}Args['obj']['${methodSigSafe}'] | ${name}Args['tuple']['${methodSigSafe}']>${''}${onComplete?.type ? ` & ${onComplete.type}` : ''}): ${name}Composer<[...TReturns, ${name}Returns['${methodSigSafe}'] | undefined]>`;
104
+ const methodSigSafe = sanitizer.makeSafeStringTypeLiteral(method.signature);
105
+ const updatedReturnType = `[...TReturns, ${name}Returns['${methodSigSafe}'] | undefined]`;
106
+ yield `${sanitizer.makeSafeMethodIdentifier(uniqueName)}(params${onComplete?.isOptional !== false ? '?' : ''}: CallParams<${name}Args['obj']['${methodSigSafe}'] | ${name}Args['tuple']['${methodSigSafe}']>${''}${onComplete?.typeLiteral ? ` & ${onComplete.typeLiteral}` : ''}): ${name}Composer<${updatedReturnType}>`;
110
107
  }
111
108
  }
112
109
  yield writer.DecIndentAndCloseBlock;
@@ -1 +1 @@
1
- {"version":3,"file":"call-composer-types.js","sources":["../../src/client/call-composer-types.ts"],"sourcesContent":["import { DecIndentAndCloseBlock, DocumentParts, IncIndent, jsDoc, NewLine } from '../output/writer'\nimport { GeneratorContext } from './generator-context'\n\nimport { BARE_CALL, MethodList } from './helpers/get-call-config-summary'\nimport { getCreateOnCompleteOptions } from './deploy-types'\nimport { ABIMethod } from 'algosdk'\n\nexport function* callComposerType(ctx: GeneratorContext): DocumentParts {\n const { name, callConfig, app } = ctx\n yield `export type ${name}Composer<TReturns extends [...any[]] = []> = {`\n yield IncIndent\n\n yield* callComposerTypeNoops(ctx)\n if (ctx.mode === 'full') {\n yield* callComposerOperationMethodType(\n ctx,\n `Updates an existing instance of the ${app.name} smart contract`,\n callConfig.updateMethods,\n 'update',\n )\n yield* callComposerOperationMethodType(\n ctx,\n `Deletes an existing instance of the ${app.name} smart contract`,\n callConfig.deleteMethods,\n 'delete',\n )\n }\n yield* callComposerOperationMethodType(\n ctx,\n `Opts the user into an existing instance of the ${app.name} smart contract`,\n callConfig.optInMethods,\n 'optIn',\n )\n yield* callComposerOperationMethodType(\n ctx,\n `Makes a close out call to an existing instance of the ${app.name} smart contract`,\n callConfig.closeOutMethods,\n 'closeOut',\n )\n\n yield* callComposerTypeClearState(ctx)\n\n yield* jsDoc({\n description: 'Adds a transaction to the composer',\n params: {\n txn: 'A transaction to add to the transaction group',\n signer: 'The optional signer to use when signing this transaction.',\n },\n })\n yield `addTransaction(txn: Transaction, signer?: TransactionSigner): ${name}Composer<TReturns>`\n\n yield* jsDoc({\n description: 'Returns the underlying AtomicTransactionComposer instance',\n })\n yield `composer(): Promise<TransactionComposer>`\n\n yield* jsDoc({\n description: 'Simulates the transaction group and returns the result',\n })\n yield `simulate(): Promise<${name}ComposerResults<TReturns> & { simulateResponse: modelsv2.SimulateResponse }>`\n yield `simulate(options: SkipSignaturesSimulateOptions): Promise<${name}ComposerResults<TReturns> & { simulateResponse: modelsv2.SimulateResponse }>`\n yield `simulate(options: RawSimulateOptions): Promise<${name}ComposerResults<TReturns> & { simulateResponse: modelsv2.SimulateResponse }>`\n\n yield* jsDoc({\n description: 'Sends the transaction group to the network and returns the results',\n })\n yield `send(params?: SendParams): Promise<${name}ComposerResults<TReturns>>`\n\n yield DecIndentAndCloseBlock\n\n yield `\n export type ${name}ComposerResults<TReturns extends [...any[]]> = Expand<SendAtomicTransactionComposerResults & {\n returns: TReturns\n }>\n `\n}\n\nfunction* callComposerTypeClearState({ app, name }: GeneratorContext): DocumentParts {\n yield* jsDoc({\n description: `Makes a clear_state call to an existing instance of the ${app.name} smart contract.`,\n params: {\n args: `The arguments for the bare call`,\n },\n returns: `The typed transaction composer so you can fluently chain multiple calls or call execute to execute all queued up transactions`,\n })\n yield `clearState(params?: AppClientBareCallParams): ${name}Composer<[...TReturns, undefined]>`\n yield NewLine\n}\n\nfunction* callComposerTypeNoops({ app, name, callConfig, methodSignatureToUniqueName, sanitizer }: GeneratorContext): DocumentParts {\n for (const method of app.methods) {\n const methodSig = new ABIMethod(method).getSignature()\n const methodSigSafe = sanitizer.makeSafeStringTypeLiteral(methodSig)\n const methodName = sanitizer.makeSafeMethodIdentifier(methodSignatureToUniqueName[methodSig])\n // Skip methods which don't support a no_op call config\n if (!callConfig.callMethods.includes(methodSig)) continue\n\n yield* jsDoc({\n description: `Calls the ${new ABIMethod(method).getSignature()} ABI method.`,\n abiDescription: method.desc,\n params: {\n args: `The arguments for the contract call`,\n params: `Any additional parameters for the call`,\n },\n returns: `The typed transaction composer so you can fluently chain multiple calls or call execute to execute all queued up transactions`,\n })\n yield `${methodName}(params?: CallParams<${name}Args['obj']['${methodSigSafe}'] | ${name}Args['tuple']['${methodSigSafe}']>): ${name}Composer<[...TReturns, ${name}Returns['${methodSigSafe}'] | undefined]>`\n yield NewLine\n }\n}\n\nfunction* callComposerOperationMethodType(\n { app, methodSignatureToUniqueName, name, sanitizer }: GeneratorContext,\n description: string,\n methods: MethodList,\n verb: 'create' | 'update' | 'optIn' | 'closeOut' | 'delete',\n includeCompilation?: boolean,\n): DocumentParts {\n if (methods.length) {\n yield* jsDoc(`Gets available ${verb} methods`)\n yield `readonly ${verb}: {`\n yield IncIndent\n for (const methodSig of methods) {\n const onComplete = verb === 'create' ? getCreateOnCompleteOptions(methodSig, app) : undefined\n if (methodSig === BARE_CALL) {\n yield* jsDoc({\n description: `${description} using a bare call.`,\n params: {\n args: `The arguments for the bare call`,\n },\n returns: `The typed transaction composer so you can fluently chain multiple calls or call execute to execute all queued up transactions`,\n })\n yield `bare(params${onComplete?.isOptional !== false ? '?' : ''}: AppClientBareCallParams ${\n includeCompilation ? '& AppClientCompilationParams' : ''\n }): ${name}Composer<[...TReturns, undefined]>`\n } else {\n const uniqueName = methodSignatureToUniqueName[methodSig]\n yield* jsDoc({\n description: `${description} using the ${methodSig} ABI method.`,\n params: {\n args: `The arguments for the smart contract call`,\n params: `Any additional parameters for the call`,\n },\n returns: `The typed transaction composer so you can fluently chain multiple calls or call execute to execute all queued up transactions`,\n })\n const methodSigSafe = sanitizer.makeSafeStringTypeLiteral(methodSig)\n yield `${sanitizer.makeSafeMethodIdentifier(uniqueName)}(params${\n onComplete?.isOptional !== false ? '?' : ''\n }: CallParams<${name}Args['obj']['${methodSigSafe}'] | ${name}Args['tuple']['${methodSigSafe}']>${includeCompilation ? ' & AppClientCompilationParams' : ''}${\n onComplete?.type ? ` & ${onComplete.type}` : ''\n }): ${name}Composer<[...TReturns, ${name}Returns['${methodSigSafe}'] | undefined]>`\n }\n }\n yield DecIndentAndCloseBlock\n yield NewLine\n }\n}\n"],"names":["IncIndent","jsDoc","DecIndentAndCloseBlock","NewLine","ABIMethod","getCreateOnCompleteOptions","BARE_CALL"],"mappings":"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"}
1
+ {"version":3,"file":"call-composer-types.js","sources":["../../src/client/call-composer-types.ts"],"sourcesContent":["import { DecIndentAndCloseBlock, DocumentParts, IncIndent, jsDoc, NewLine } from '../output/writer'\nimport { GeneratorContext } from './generator-context'\n\nimport { AppClientMethodContext, isAbiMethod } from './app-client-context'\n\nexport function* callComposerType(ctx: GeneratorContext): DocumentParts {\n const { name, app } = ctx\n yield `export type ${name}Composer<TReturns extends [...any[]] = []> = {`\n yield IncIndent\n\n yield* callComposerTypeNoops(ctx)\n if (ctx.mode === 'full') {\n yield* callComposerOperationMethodType(\n ctx,\n `Updates an existing instance of the ${app.name} smart contract`,\n app.updateMethods,\n 'update',\n )\n yield* callComposerOperationMethodType(\n ctx,\n `Deletes an existing instance of the ${app.name} smart contract`,\n app.deleteMethods,\n 'delete',\n )\n }\n yield* callComposerOperationMethodType(\n ctx,\n `Opts the user into an existing instance of the ${app.name} smart contract`,\n app.optInMethods,\n 'optIn',\n )\n yield* callComposerOperationMethodType(\n ctx,\n `Makes a close out call to an existing instance of the ${app.name} smart contract`,\n app.closeOutMethods,\n 'closeOut',\n )\n\n yield* callComposerTypeClearState(ctx)\n\n yield* jsDoc({\n description: 'Adds a transaction to the composer',\n params: {\n txn: 'A transaction to add to the transaction group',\n signer: 'The optional signer to use when signing this transaction.',\n },\n })\n yield `addTransaction(txn: Transaction, signer?: TransactionSigner): ${name}Composer<TReturns>`\n\n yield* jsDoc({\n description: 'Returns the underlying AtomicTransactionComposer instance',\n })\n yield `composer(): Promise<TransactionComposer>`\n\n yield* jsDoc({\n description: 'Simulates the transaction group and returns the result',\n })\n yield `simulate(): Promise<${name}ComposerResults<TReturns> & { simulateResponse: SimulateResponse }>`\n yield `simulate(options: SkipSignaturesSimulateOptions): Promise<${name}ComposerResults<TReturns> & { simulateResponse: SimulateResponse }>`\n yield `simulate(options: RawSimulateOptions): Promise<${name}ComposerResults<TReturns> & { simulateResponse: SimulateResponse }>`\n\n yield* jsDoc({\n description: 'Sends the transaction group to the network and returns the results',\n })\n yield `send(params?: SendParams): Promise<${name}ComposerResults<TReturns>>`\n\n yield DecIndentAndCloseBlock\n\n yield `\n export type ${name}ComposerResults<TReturns extends [...any[]]> = Expand<SendTransactionComposerResults & {\n returns: TReturns\n }>\n `\n}\n\nfunction* callComposerTypeClearState({ app, name }: GeneratorContext): DocumentParts {\n yield* jsDoc({\n description: `Makes a clear_state call to an existing instance of the ${app.name} smart contract.`,\n params: {\n params: `Any additional parameters for the bare call`,\n },\n returns: `The typed transaction composer so you can fluently chain multiple calls or call execute to execute all queued up transactions`,\n })\n yield `clearState(params?: AppClientBareCallParams): ${name}Composer<[...TReturns, undefined]>`\n yield NewLine\n}\n\nfunction* callComposerTypeNoops({ app, name, sanitizer }: GeneratorContext): DocumentParts {\n for (const method of app.noOpMethods) {\n if (!isAbiMethod(method)) continue\n const methodSig = method.signature\n const methodSigSafe = sanitizer.makeSafeStringTypeLiteral(methodSig)\n const methodName = method.uniqueName.makeSafeMethodIdentifier\n\n yield* jsDoc({\n description: `Calls the ${methodSig} ABI method.`,\n abiDescription: method.desc,\n params: {\n params: `Any additional parameters for the call`,\n },\n returns: `The typed transaction composer so you can fluently chain multiple calls or call execute to execute all queued up transactions`,\n })\n const updatedReturnType = `[...TReturns, ${name}Returns['${methodSigSafe}'] | undefined]`\n yield `${methodName}(params?: CallParams<${name}Args['obj']['${methodSigSafe}'] | ${name}Args['tuple']['${methodSigSafe}']>): ${name}Composer<${updatedReturnType}>`\n yield NewLine\n }\n}\n\nfunction* callComposerOperationMethodType(\n { name, sanitizer }: GeneratorContext,\n description: string,\n methods: AppClientMethodContext[],\n verb: 'create' | 'update' | 'optIn' | 'closeOut' | 'delete',\n includeCompilation?: boolean,\n): DocumentParts {\n if (methods.length) {\n yield* jsDoc(`Gets available ${verb} methods`)\n yield `readonly ${verb}: {`\n yield IncIndent\n for (const method of methods) {\n const onComplete = verb === 'create' ? method.createActions.inputType : undefined\n if (!isAbiMethod(method)) {\n yield* jsDoc({\n description: `${description} using a bare call.`,\n params: {\n params: `Any additional parameters for the call`,\n },\n returns: `The typed transaction composer so you can fluently chain multiple calls or call execute to execute all queued up transactions`,\n })\n yield `bare(params${onComplete?.isOptional !== false ? '?' : ''}: AppClientBareCallParams ${\n includeCompilation ? '& AppClientCompilationParams' : ''\n }): ${name}Composer<TReturns>`\n } else {\n const uniqueName = method.uniqueName.original\n yield* jsDoc({\n description: `${description} using the ${method.signature} ABI method.`,\n params: {\n params: `Any additional parameters for the call`,\n },\n returns: `The typed transaction composer so you can fluently chain multiple calls or call execute to execute all queued up transactions`,\n })\n const methodSigSafe = sanitizer.makeSafeStringTypeLiteral(method.signature)\n\n const updatedReturnType = `[...TReturns, ${name}Returns['${methodSigSafe}'] | undefined]`\n yield `${sanitizer.makeSafeMethodIdentifier(uniqueName)}(params${\n onComplete?.isOptional !== false ? '?' : ''\n }: CallParams<${name}Args['obj']['${methodSigSafe}'] | ${name}Args['tuple']['${methodSigSafe}']>${includeCompilation ? ' & AppClientCompilationParams' : ''}${\n onComplete?.typeLiteral ? ` & ${onComplete.typeLiteral}` : ''\n }): ${name}Composer<${updatedReturnType}>`\n }\n }\n yield DecIndentAndCloseBlock\n yield NewLine\n }\n}\n"],"names":["IncIndent","jsDoc","DecIndentAndCloseBlock","NewLine","isAbiMethod"],"mappings":"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"}
@@ -1,19 +1,17 @@
1
1
  import { IncIndent, jsDoc, DecIndentAndCloseBlock, NewLine } from '../output/writer.mjs';
2
- import { BARE_CALL } from './helpers/get-call-config-summary.mjs';
3
- import { getCreateOnCompleteOptions } from './deploy-types.mjs';
4
- import { ABIMethod } from 'algosdk';
2
+ import { isAbiMethod } from './app-client-context.mjs';
5
3
 
6
4
  function* callComposerType(ctx) {
7
- const { name, callConfig, app } = ctx;
5
+ const { name, app } = ctx;
8
6
  yield `export type ${name}Composer<TReturns extends [...any[]] = []> = {`;
9
7
  yield IncIndent;
10
8
  yield* callComposerTypeNoops(ctx);
11
9
  if (ctx.mode === 'full') {
12
- yield* callComposerOperationMethodType(ctx, `Updates an existing instance of the ${app.name} smart contract`, callConfig.updateMethods, 'update');
13
- yield* callComposerOperationMethodType(ctx, `Deletes an existing instance of the ${app.name} smart contract`, callConfig.deleteMethods, 'delete');
10
+ yield* callComposerOperationMethodType(ctx, `Updates an existing instance of the ${app.name} smart contract`, app.updateMethods, 'update');
11
+ yield* callComposerOperationMethodType(ctx, `Deletes an existing instance of the ${app.name} smart contract`, app.deleteMethods, 'delete');
14
12
  }
15
- yield* callComposerOperationMethodType(ctx, `Opts the user into an existing instance of the ${app.name} smart contract`, callConfig.optInMethods, 'optIn');
16
- yield* callComposerOperationMethodType(ctx, `Makes a close out call to an existing instance of the ${app.name} smart contract`, callConfig.closeOutMethods, 'closeOut');
13
+ yield* callComposerOperationMethodType(ctx, `Opts the user into an existing instance of the ${app.name} smart contract`, app.optInMethods, 'optIn');
14
+ yield* callComposerOperationMethodType(ctx, `Makes a close out call to an existing instance of the ${app.name} smart contract`, app.closeOutMethods, 'closeOut');
17
15
  yield* callComposerTypeClearState(ctx);
18
16
  yield* jsDoc({
19
17
  description: 'Adds a transaction to the composer',
@@ -30,16 +28,16 @@ function* callComposerType(ctx) {
30
28
  yield* jsDoc({
31
29
  description: 'Simulates the transaction group and returns the result',
32
30
  });
33
- yield `simulate(): Promise<${name}ComposerResults<TReturns> & { simulateResponse: modelsv2.SimulateResponse }>`;
34
- yield `simulate(options: SkipSignaturesSimulateOptions): Promise<${name}ComposerResults<TReturns> & { simulateResponse: modelsv2.SimulateResponse }>`;
35
- yield `simulate(options: RawSimulateOptions): Promise<${name}ComposerResults<TReturns> & { simulateResponse: modelsv2.SimulateResponse }>`;
31
+ yield `simulate(): Promise<${name}ComposerResults<TReturns> & { simulateResponse: SimulateResponse }>`;
32
+ yield `simulate(options: SkipSignaturesSimulateOptions): Promise<${name}ComposerResults<TReturns> & { simulateResponse: SimulateResponse }>`;
33
+ yield `simulate(options: RawSimulateOptions): Promise<${name}ComposerResults<TReturns> & { simulateResponse: SimulateResponse }>`;
36
34
  yield* jsDoc({
37
35
  description: 'Sends the transaction group to the network and returns the results',
38
36
  });
39
37
  yield `send(params?: SendParams): Promise<${name}ComposerResults<TReturns>>`;
40
38
  yield DecIndentAndCloseBlock;
41
39
  yield `
42
- export type ${name}ComposerResults<TReturns extends [...any[]]> = Expand<SendAtomicTransactionComposerResults & {
40
+ export type ${name}ComposerResults<TReturns extends [...any[]]> = Expand<SendTransactionComposerResults & {
43
41
  returns: TReturns
44
42
  }>
45
43
  `;
@@ -48,63 +46,62 @@ function* callComposerTypeClearState({ app, name }) {
48
46
  yield* jsDoc({
49
47
  description: `Makes a clear_state call to an existing instance of the ${app.name} smart contract.`,
50
48
  params: {
51
- args: `The arguments for the bare call`,
49
+ params: `Any additional parameters for the bare call`,
52
50
  },
53
51
  returns: `The typed transaction composer so you can fluently chain multiple calls or call execute to execute all queued up transactions`,
54
52
  });
55
53
  yield `clearState(params?: AppClientBareCallParams): ${name}Composer<[...TReturns, undefined]>`;
56
54
  yield NewLine;
57
55
  }
58
- function* callComposerTypeNoops({ app, name, callConfig, methodSignatureToUniqueName, sanitizer }) {
59
- for (const method of app.methods) {
60
- const methodSig = new ABIMethod(method).getSignature();
61
- const methodSigSafe = sanitizer.makeSafeStringTypeLiteral(methodSig);
62
- const methodName = sanitizer.makeSafeMethodIdentifier(methodSignatureToUniqueName[methodSig]);
63
- // Skip methods which don't support a no_op call config
64
- if (!callConfig.callMethods.includes(methodSig))
56
+ function* callComposerTypeNoops({ app, name, sanitizer }) {
57
+ for (const method of app.noOpMethods) {
58
+ if (!isAbiMethod(method))
65
59
  continue;
60
+ const methodSig = method.signature;
61
+ const methodSigSafe = sanitizer.makeSafeStringTypeLiteral(methodSig);
62
+ const methodName = method.uniqueName.makeSafeMethodIdentifier;
66
63
  yield* jsDoc({
67
- description: `Calls the ${new ABIMethod(method).getSignature()} ABI method.`,
64
+ description: `Calls the ${methodSig} ABI method.`,
68
65
  abiDescription: method.desc,
69
66
  params: {
70
- args: `The arguments for the contract call`,
71
67
  params: `Any additional parameters for the call`,
72
68
  },
73
69
  returns: `The typed transaction composer so you can fluently chain multiple calls or call execute to execute all queued up transactions`,
74
70
  });
75
- yield `${methodName}(params?: CallParams<${name}Args['obj']['${methodSigSafe}'] | ${name}Args['tuple']['${methodSigSafe}']>): ${name}Composer<[...TReturns, ${name}Returns['${methodSigSafe}'] | undefined]>`;
71
+ const updatedReturnType = `[...TReturns, ${name}Returns['${methodSigSafe}'] | undefined]`;
72
+ yield `${methodName}(params?: CallParams<${name}Args['obj']['${methodSigSafe}'] | ${name}Args['tuple']['${methodSigSafe}']>): ${name}Composer<${updatedReturnType}>`;
76
73
  yield NewLine;
77
74
  }
78
75
  }
79
- function* callComposerOperationMethodType({ app, methodSignatureToUniqueName, name, sanitizer }, description, methods, verb, includeCompilation) {
76
+ function* callComposerOperationMethodType({ name, sanitizer }, description, methods, verb, includeCompilation) {
80
77
  if (methods.length) {
81
78
  yield* jsDoc(`Gets available ${verb} methods`);
82
79
  yield `readonly ${verb}: {`;
83
80
  yield IncIndent;
84
- for (const methodSig of methods) {
85
- const onComplete = verb === 'create' ? getCreateOnCompleteOptions(methodSig, app) : undefined;
86
- if (methodSig === BARE_CALL) {
81
+ for (const method of methods) {
82
+ const onComplete = verb === 'create' ? method.createActions.inputType : undefined;
83
+ if (!isAbiMethod(method)) {
87
84
  yield* jsDoc({
88
85
  description: `${description} using a bare call.`,
89
86
  params: {
90
- args: `The arguments for the bare call`,
87
+ params: `Any additional parameters for the call`,
91
88
  },
92
89
  returns: `The typed transaction composer so you can fluently chain multiple calls or call execute to execute all queued up transactions`,
93
90
  });
94
- yield `bare(params${onComplete?.isOptional !== false ? '?' : ''}: AppClientBareCallParams ${''}): ${name}Composer<[...TReturns, undefined]>`;
91
+ yield `bare(params${onComplete?.isOptional !== false ? '?' : ''}: AppClientBareCallParams ${''}): ${name}Composer<TReturns>`;
95
92
  }
96
93
  else {
97
- const uniqueName = methodSignatureToUniqueName[methodSig];
94
+ const uniqueName = method.uniqueName.original;
98
95
  yield* jsDoc({
99
- description: `${description} using the ${methodSig} ABI method.`,
96
+ description: `${description} using the ${method.signature} ABI method.`,
100
97
  params: {
101
- args: `The arguments for the smart contract call`,
102
98
  params: `Any additional parameters for the call`,
103
99
  },
104
100
  returns: `The typed transaction composer so you can fluently chain multiple calls or call execute to execute all queued up transactions`,
105
101
  });
106
- const methodSigSafe = sanitizer.makeSafeStringTypeLiteral(methodSig);
107
- yield `${sanitizer.makeSafeMethodIdentifier(uniqueName)}(params${onComplete?.isOptional !== false ? '?' : ''}: CallParams<${name}Args['obj']['${methodSigSafe}'] | ${name}Args['tuple']['${methodSigSafe}']>${''}${onComplete?.type ? ` & ${onComplete.type}` : ''}): ${name}Composer<[...TReturns, ${name}Returns['${methodSigSafe}'] | undefined]>`;
102
+ const methodSigSafe = sanitizer.makeSafeStringTypeLiteral(method.signature);
103
+ const updatedReturnType = `[...TReturns, ${name}Returns['${methodSigSafe}'] | undefined]`;
104
+ yield `${sanitizer.makeSafeMethodIdentifier(uniqueName)}(params${onComplete?.isOptional !== false ? '?' : ''}: CallParams<${name}Args['obj']['${methodSigSafe}'] | ${name}Args['tuple']['${methodSigSafe}']>${''}${onComplete?.typeLiteral ? ` & ${onComplete.typeLiteral}` : ''}): ${name}Composer<${updatedReturnType}>`;
108
105
  }
109
106
  }
110
107
  yield DecIndentAndCloseBlock;
@@ -1 +1 @@
1
- {"version":3,"file":"call-composer-types.mjs","sources":["../../src/client/call-composer-types.ts"],"sourcesContent":["import { DecIndentAndCloseBlock, DocumentParts, IncIndent, jsDoc, NewLine } from '../output/writer'\nimport { GeneratorContext } from './generator-context'\n\nimport { BARE_CALL, MethodList } from './helpers/get-call-config-summary'\nimport { getCreateOnCompleteOptions } from './deploy-types'\nimport { ABIMethod } from 'algosdk'\n\nexport function* callComposerType(ctx: GeneratorContext): DocumentParts {\n const { name, callConfig, app } = ctx\n yield `export type ${name}Composer<TReturns extends [...any[]] = []> = {`\n yield IncIndent\n\n yield* callComposerTypeNoops(ctx)\n if (ctx.mode === 'full') {\n yield* callComposerOperationMethodType(\n ctx,\n `Updates an existing instance of the ${app.name} smart contract`,\n callConfig.updateMethods,\n 'update',\n )\n yield* callComposerOperationMethodType(\n ctx,\n `Deletes an existing instance of the ${app.name} smart contract`,\n callConfig.deleteMethods,\n 'delete',\n )\n }\n yield* callComposerOperationMethodType(\n ctx,\n `Opts the user into an existing instance of the ${app.name} smart contract`,\n callConfig.optInMethods,\n 'optIn',\n )\n yield* callComposerOperationMethodType(\n ctx,\n `Makes a close out call to an existing instance of the ${app.name} smart contract`,\n callConfig.closeOutMethods,\n 'closeOut',\n )\n\n yield* callComposerTypeClearState(ctx)\n\n yield* jsDoc({\n description: 'Adds a transaction to the composer',\n params: {\n txn: 'A transaction to add to the transaction group',\n signer: 'The optional signer to use when signing this transaction.',\n },\n })\n yield `addTransaction(txn: Transaction, signer?: TransactionSigner): ${name}Composer<TReturns>`\n\n yield* jsDoc({\n description: 'Returns the underlying AtomicTransactionComposer instance',\n })\n yield `composer(): Promise<TransactionComposer>`\n\n yield* jsDoc({\n description: 'Simulates the transaction group and returns the result',\n })\n yield `simulate(): Promise<${name}ComposerResults<TReturns> & { simulateResponse: modelsv2.SimulateResponse }>`\n yield `simulate(options: SkipSignaturesSimulateOptions): Promise<${name}ComposerResults<TReturns> & { simulateResponse: modelsv2.SimulateResponse }>`\n yield `simulate(options: RawSimulateOptions): Promise<${name}ComposerResults<TReturns> & { simulateResponse: modelsv2.SimulateResponse }>`\n\n yield* jsDoc({\n description: 'Sends the transaction group to the network and returns the results',\n })\n yield `send(params?: SendParams): Promise<${name}ComposerResults<TReturns>>`\n\n yield DecIndentAndCloseBlock\n\n yield `\n export type ${name}ComposerResults<TReturns extends [...any[]]> = Expand<SendAtomicTransactionComposerResults & {\n returns: TReturns\n }>\n `\n}\n\nfunction* callComposerTypeClearState({ app, name }: GeneratorContext): DocumentParts {\n yield* jsDoc({\n description: `Makes a clear_state call to an existing instance of the ${app.name} smart contract.`,\n params: {\n args: `The arguments for the bare call`,\n },\n returns: `The typed transaction composer so you can fluently chain multiple calls or call execute to execute all queued up transactions`,\n })\n yield `clearState(params?: AppClientBareCallParams): ${name}Composer<[...TReturns, undefined]>`\n yield NewLine\n}\n\nfunction* callComposerTypeNoops({ app, name, callConfig, methodSignatureToUniqueName, sanitizer }: GeneratorContext): DocumentParts {\n for (const method of app.methods) {\n const methodSig = new ABIMethod(method).getSignature()\n const methodSigSafe = sanitizer.makeSafeStringTypeLiteral(methodSig)\n const methodName = sanitizer.makeSafeMethodIdentifier(methodSignatureToUniqueName[methodSig])\n // Skip methods which don't support a no_op call config\n if (!callConfig.callMethods.includes(methodSig)) continue\n\n yield* jsDoc({\n description: `Calls the ${new ABIMethod(method).getSignature()} ABI method.`,\n abiDescription: method.desc,\n params: {\n args: `The arguments for the contract call`,\n params: `Any additional parameters for the call`,\n },\n returns: `The typed transaction composer so you can fluently chain multiple calls or call execute to execute all queued up transactions`,\n })\n yield `${methodName}(params?: CallParams<${name}Args['obj']['${methodSigSafe}'] | ${name}Args['tuple']['${methodSigSafe}']>): ${name}Composer<[...TReturns, ${name}Returns['${methodSigSafe}'] | undefined]>`\n yield NewLine\n }\n}\n\nfunction* callComposerOperationMethodType(\n { app, methodSignatureToUniqueName, name, sanitizer }: GeneratorContext,\n description: string,\n methods: MethodList,\n verb: 'create' | 'update' | 'optIn' | 'closeOut' | 'delete',\n includeCompilation?: boolean,\n): DocumentParts {\n if (methods.length) {\n yield* jsDoc(`Gets available ${verb} methods`)\n yield `readonly ${verb}: {`\n yield IncIndent\n for (const methodSig of methods) {\n const onComplete = verb === 'create' ? getCreateOnCompleteOptions(methodSig, app) : undefined\n if (methodSig === BARE_CALL) {\n yield* jsDoc({\n description: `${description} using a bare call.`,\n params: {\n args: `The arguments for the bare call`,\n },\n returns: `The typed transaction composer so you can fluently chain multiple calls or call execute to execute all queued up transactions`,\n })\n yield `bare(params${onComplete?.isOptional !== false ? '?' : ''}: AppClientBareCallParams ${\n includeCompilation ? '& AppClientCompilationParams' : ''\n }): ${name}Composer<[...TReturns, undefined]>`\n } else {\n const uniqueName = methodSignatureToUniqueName[methodSig]\n yield* jsDoc({\n description: `${description} using the ${methodSig} ABI method.`,\n params: {\n args: `The arguments for the smart contract call`,\n params: `Any additional parameters for the call`,\n },\n returns: `The typed transaction composer so you can fluently chain multiple calls or call execute to execute all queued up transactions`,\n })\n const methodSigSafe = sanitizer.makeSafeStringTypeLiteral(methodSig)\n yield `${sanitizer.makeSafeMethodIdentifier(uniqueName)}(params${\n onComplete?.isOptional !== false ? '?' : ''\n }: CallParams<${name}Args['obj']['${methodSigSafe}'] | ${name}Args['tuple']['${methodSigSafe}']>${includeCompilation ? ' & AppClientCompilationParams' : ''}${\n onComplete?.type ? ` & ${onComplete.type}` : ''\n }): ${name}Composer<[...TReturns, ${name}Returns['${methodSigSafe}'] | undefined]>`\n }\n }\n yield DecIndentAndCloseBlock\n yield NewLine\n }\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"call-composer-types.mjs","sources":["../../src/client/call-composer-types.ts"],"sourcesContent":["import { DecIndentAndCloseBlock, DocumentParts, IncIndent, jsDoc, NewLine } from '../output/writer'\nimport { GeneratorContext } from './generator-context'\n\nimport { AppClientMethodContext, isAbiMethod } from './app-client-context'\n\nexport function* callComposerType(ctx: GeneratorContext): DocumentParts {\n const { name, app } = ctx\n yield `export type ${name}Composer<TReturns extends [...any[]] = []> = {`\n yield IncIndent\n\n yield* callComposerTypeNoops(ctx)\n if (ctx.mode === 'full') {\n yield* callComposerOperationMethodType(\n ctx,\n `Updates an existing instance of the ${app.name} smart contract`,\n app.updateMethods,\n 'update',\n )\n yield* callComposerOperationMethodType(\n ctx,\n `Deletes an existing instance of the ${app.name} smart contract`,\n app.deleteMethods,\n 'delete',\n )\n }\n yield* callComposerOperationMethodType(\n ctx,\n `Opts the user into an existing instance of the ${app.name} smart contract`,\n app.optInMethods,\n 'optIn',\n )\n yield* callComposerOperationMethodType(\n ctx,\n `Makes a close out call to an existing instance of the ${app.name} smart contract`,\n app.closeOutMethods,\n 'closeOut',\n )\n\n yield* callComposerTypeClearState(ctx)\n\n yield* jsDoc({\n description: 'Adds a transaction to the composer',\n params: {\n txn: 'A transaction to add to the transaction group',\n signer: 'The optional signer to use when signing this transaction.',\n },\n })\n yield `addTransaction(txn: Transaction, signer?: TransactionSigner): ${name}Composer<TReturns>`\n\n yield* jsDoc({\n description: 'Returns the underlying AtomicTransactionComposer instance',\n })\n yield `composer(): Promise<TransactionComposer>`\n\n yield* jsDoc({\n description: 'Simulates the transaction group and returns the result',\n })\n yield `simulate(): Promise<${name}ComposerResults<TReturns> & { simulateResponse: SimulateResponse }>`\n yield `simulate(options: SkipSignaturesSimulateOptions): Promise<${name}ComposerResults<TReturns> & { simulateResponse: SimulateResponse }>`\n yield `simulate(options: RawSimulateOptions): Promise<${name}ComposerResults<TReturns> & { simulateResponse: SimulateResponse }>`\n\n yield* jsDoc({\n description: 'Sends the transaction group to the network and returns the results',\n })\n yield `send(params?: SendParams): Promise<${name}ComposerResults<TReturns>>`\n\n yield DecIndentAndCloseBlock\n\n yield `\n export type ${name}ComposerResults<TReturns extends [...any[]]> = Expand<SendTransactionComposerResults & {\n returns: TReturns\n }>\n `\n}\n\nfunction* callComposerTypeClearState({ app, name }: GeneratorContext): DocumentParts {\n yield* jsDoc({\n description: `Makes a clear_state call to an existing instance of the ${app.name} smart contract.`,\n params: {\n params: `Any additional parameters for the bare call`,\n },\n returns: `The typed transaction composer so you can fluently chain multiple calls or call execute to execute all queued up transactions`,\n })\n yield `clearState(params?: AppClientBareCallParams): ${name}Composer<[...TReturns, undefined]>`\n yield NewLine\n}\n\nfunction* callComposerTypeNoops({ app, name, sanitizer }: GeneratorContext): DocumentParts {\n for (const method of app.noOpMethods) {\n if (!isAbiMethod(method)) continue\n const methodSig = method.signature\n const methodSigSafe = sanitizer.makeSafeStringTypeLiteral(methodSig)\n const methodName = method.uniqueName.makeSafeMethodIdentifier\n\n yield* jsDoc({\n description: `Calls the ${methodSig} ABI method.`,\n abiDescription: method.desc,\n params: {\n params: `Any additional parameters for the call`,\n },\n returns: `The typed transaction composer so you can fluently chain multiple calls or call execute to execute all queued up transactions`,\n })\n const updatedReturnType = `[...TReturns, ${name}Returns['${methodSigSafe}'] | undefined]`\n yield `${methodName}(params?: CallParams<${name}Args['obj']['${methodSigSafe}'] | ${name}Args['tuple']['${methodSigSafe}']>): ${name}Composer<${updatedReturnType}>`\n yield NewLine\n }\n}\n\nfunction* callComposerOperationMethodType(\n { name, sanitizer }: GeneratorContext,\n description: string,\n methods: AppClientMethodContext[],\n verb: 'create' | 'update' | 'optIn' | 'closeOut' | 'delete',\n includeCompilation?: boolean,\n): DocumentParts {\n if (methods.length) {\n yield* jsDoc(`Gets available ${verb} methods`)\n yield `readonly ${verb}: {`\n yield IncIndent\n for (const method of methods) {\n const onComplete = verb === 'create' ? method.createActions.inputType : undefined\n if (!isAbiMethod(method)) {\n yield* jsDoc({\n description: `${description} using a bare call.`,\n params: {\n params: `Any additional parameters for the call`,\n },\n returns: `The typed transaction composer so you can fluently chain multiple calls or call execute to execute all queued up transactions`,\n })\n yield `bare(params${onComplete?.isOptional !== false ? '?' : ''}: AppClientBareCallParams ${\n includeCompilation ? '& AppClientCompilationParams' : ''\n }): ${name}Composer<TReturns>`\n } else {\n const uniqueName = method.uniqueName.original\n yield* jsDoc({\n description: `${description} using the ${method.signature} ABI method.`,\n params: {\n params: `Any additional parameters for the call`,\n },\n returns: `The typed transaction composer so you can fluently chain multiple calls or call execute to execute all queued up transactions`,\n })\n const methodSigSafe = sanitizer.makeSafeStringTypeLiteral(method.signature)\n\n const updatedReturnType = `[...TReturns, ${name}Returns['${methodSigSafe}'] | undefined]`\n yield `${sanitizer.makeSafeMethodIdentifier(uniqueName)}(params${\n onComplete?.isOptional !== false ? '?' : ''\n }: CallParams<${name}Args['obj']['${methodSigSafe}'] | ${name}Args['tuple']['${methodSigSafe}']>${includeCompilation ? ' & AppClientCompilationParams' : ''}${\n onComplete?.typeLiteral ? ` & ${onComplete.typeLiteral}` : ''\n }): ${name}Composer<${updatedReturnType}>`\n }\n }\n yield DecIndentAndCloseBlock\n yield NewLine\n }\n}\n"],"names":[],"mappings":"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"}