@algorandfoundation/algokit-client-generator 3.0.6 → 4.0.0-beta.1

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 (90) hide show
  1. package/README.md +4 -2
  2. package/cli.js +1 -1
  3. package/cli.js.map +1 -1
  4. package/cli.mjs +1 -1
  5. package/cli.mjs.map +1 -1
  6. package/client/{call-factory.d.ts → app-client.d.ts} +1 -1
  7. package/client/app-client.js +288 -0
  8. package/client/app-client.js.map +1 -0
  9. package/client/app-client.mjs +286 -0
  10. package/client/app-client.mjs.map +1 -0
  11. package/client/{call-client.d.ts → app-factory.d.ts} +1 -1
  12. package/client/app-factory.js +238 -0
  13. package/client/app-factory.js.map +1 -0
  14. package/client/app-factory.mjs +236 -0
  15. package/client/app-factory.mjs.map +1 -0
  16. package/client/app-types.js +196 -98
  17. package/client/app-types.js.map +1 -1
  18. package/client/app-types.mjs +196 -79
  19. package/client/app-types.mjs.map +1 -1
  20. package/client/call-composer-types.js +23 -53
  21. package/client/call-composer-types.js.map +1 -1
  22. package/client/call-composer-types.mjs +23 -34
  23. package/client/call-composer-types.mjs.map +1 -1
  24. package/client/call-composer.js +43 -57
  25. package/client/call-composer.js.map +1 -1
  26. package/client/call-composer.mjs +45 -40
  27. package/client/call-composer.mjs.map +1 -1
  28. package/client/deploy-types.d.ts +8 -4
  29. package/client/deploy-types.js +52 -34
  30. package/client/deploy-types.js.map +1 -1
  31. package/client/deploy-types.mjs +53 -36
  32. package/client/deploy-types.mjs.map +1 -1
  33. package/client/generate.d.ts +2 -2
  34. package/client/generate.js +18 -6
  35. package/client/generate.js.map +1 -1
  36. package/client/generate.mjs +18 -6
  37. package/client/generate.mjs.map +1 -1
  38. package/client/generator-context.d.ts +4 -4
  39. package/client/generator-context.js +5 -24
  40. package/client/generator-context.js.map +1 -1
  41. package/client/generator-context.mjs +5 -5
  42. package/client/generator-context.mjs.map +1 -1
  43. package/client/helpers/get-call-config-summary.d.ts +8 -3
  44. package/client/helpers/get-call-config-summary.js +22 -20
  45. package/client/helpers/get-call-config-summary.js.map +1 -1
  46. package/client/helpers/get-call-config-summary.mjs +22 -20
  47. package/client/helpers/get-call-config-summary.mjs.map +1 -1
  48. package/client/helpers/get-equivalent-type.d.ts +6 -1
  49. package/client/helpers/get-equivalent-type.js +10 -6
  50. package/client/helpers/get-equivalent-type.js.map +1 -1
  51. package/client/helpers/get-equivalent-type.mjs +10 -6
  52. package/client/helpers/get-equivalent-type.mjs.map +1 -1
  53. package/client/imports.js +18 -24
  54. package/client/imports.js.map +1 -1
  55. package/client/imports.mjs +18 -24
  56. package/client/imports.mjs.map +1 -1
  57. package/client/params-factory.d.ts +3 -0
  58. package/client/params-factory.js +126 -0
  59. package/client/params-factory.js.map +1 -0
  60. package/client/params-factory.mjs +124 -0
  61. package/client/params-factory.mjs.map +1 -0
  62. package/client/utility-types.d.ts +0 -7
  63. package/client/utility-types.js +37 -50
  64. package/client/utility-types.js.map +1 -1
  65. package/client/utility-types.mjs +38 -50
  66. package/client/utility-types.mjs.map +1 -1
  67. package/output/writer.js +17 -3
  68. package/output/writer.js.map +1 -1
  69. package/output/writer.mjs +17 -3
  70. package/output/writer.mjs.map +1 -1
  71. package/package.json +4 -3
  72. package/schema/application.schema.json.js +2 -2
  73. package/schema/application.schema.json.mjs +2 -2
  74. package/schema/arc56.schema.json.js +787 -0
  75. package/schema/arc56.schema.json.js.map +1 -0
  76. package/schema/arc56.schema.json.mjs +780 -0
  77. package/schema/arc56.schema.json.mjs.map +1 -0
  78. package/schema/load.d.ts +3 -3
  79. package/schema/load.js +21 -7
  80. package/schema/load.js.map +1 -1
  81. package/schema/load.mjs +22 -8
  82. package/schema/load.mjs.map +1 -1
  83. package/client/call-client.js +0 -341
  84. package/client/call-client.js.map +0 -1
  85. package/client/call-client.mjs +0 -320
  86. package/client/call-client.mjs.map +0 -1
  87. package/client/call-factory.js +0 -142
  88. package/client/call-factory.js.map +0 -1
  89. package/client/call-factory.mjs +0 -121
  90. package/client/call-factory.mjs.map +0 -1
@@ -1,320 +0,0 @@
1
- import * as algokit from '@algorandfoundation/algokit-utils';
2
- import { jsDoc, IncIndent, NewLine, indent, DecIndent, inline, DecIndentAndCloseBlock } from '../output/writer.mjs';
3
- import { BARE_CALL } from './helpers/get-call-config-summary.mjs';
4
- import { getCreateOnCompleteOptions } from './deploy-types.mjs';
5
- import { composeMethod } from './call-composer.mjs';
6
-
7
- function* callClient(ctx) {
8
- const { app, name } = ctx;
9
- yield* jsDoc(`A client to make calls to the ${app.contract.name} smart contract`);
10
- yield `export class ${ctx.sanitizer.makeSafeTypeIdentifier(app.contract.name)}Client {`;
11
- yield IncIndent;
12
- yield* jsDoc(`The underlying \`ApplicationClient\` for when you want to have more flexibility`);
13
- yield 'public readonly appClient: ApplicationClient';
14
- yield NewLine;
15
- yield `private readonly sender: SendTransactionFrom | undefined`;
16
- yield NewLine;
17
- yield* jsDoc({
18
- description: `Creates a new instance of \`${ctx.sanitizer.makeSafeTypeIdentifier(app.contract.name)}Client\``,
19
- params: {
20
- appDetails: 'appDetails The details to identify the app to deploy',
21
- algod: 'An algod client instance',
22
- },
23
- });
24
- yield `constructor(appDetails: AppDetails, private algod: Algodv2) {`;
25
- yield IncIndent;
26
- yield `this.sender = appDetails.sender`;
27
- yield 'this.appClient = algokit.getAppClient({';
28
- yield* indent('...appDetails,', 'app: APP_SPEC');
29
- yield '}, algod)';
30
- yield DecIndent;
31
- yield '}';
32
- yield NewLine;
33
- yield* jsDoc({
34
- description: 'Checks for decode errors on the AppCallTransactionResult and maps the return value to the specified generic type',
35
- params: {
36
- result: 'The AppCallTransactionResult to be mapped',
37
- returnValueFormatter: 'An optional delegate to format the return value if required',
38
- },
39
- returns: 'The smart contract response with an updated return value',
40
- });
41
- yield* inline(`protected mapReturnValue<TReturn, TResult extends AppCallTransactionResult = AppCallTransactionResult>`, `(result: AppCallTransactionResult, returnValueFormatter?: (value: any) => TReturn): `, `AppCallTransactionResultOfType<TReturn> & TResult {`);
42
- yield IncIndent;
43
- yield `if(result.return?.decodeError) {`;
44
- yield* indent(`throw result.return.decodeError`);
45
- yield `}`;
46
- yield `const returnValue = result.return?.returnValue !== undefined && returnValueFormatter !== undefined`;
47
- yield IncIndent;
48
- yield `? returnValueFormatter(result.return.returnValue)`;
49
- yield `: result.return?.returnValue as TReturn | undefined`;
50
- yield `return { ...result, return: returnValue } as AppCallTransactionResultOfType<TReturn> & TResult`;
51
- yield DecIndent;
52
- yield DecIndentAndCloseBlock;
53
- yield NewLine;
54
- yield* jsDoc({
55
- description: 'Calls the ABI method with the matching signature using an onCompletion code of NO_OP',
56
- params: {
57
- typedCallParams: 'An object containing the method signature, args, and any other relevant parameters',
58
- returnValueFormatter: 'An optional delegate which when provided will be used to map non-undefined return values to the target type',
59
- },
60
- returns: 'The result of the smart contract call',
61
- });
62
- yield `public async call<TSignature extends keyof ${name}['methods']>(typedCallParams: TypedCallParams<TSignature>, returnValueFormatter?: (value: any) => MethodReturn<TSignature>) {`;
63
- yield IncIndent;
64
- yield `return this.mapReturnValue<MethodReturn<TSignature>>(await this.appClient.call(typedCallParams), returnValueFormatter)`;
65
- yield DecIndentAndCloseBlock;
66
- yield NewLine;
67
- yield* opMethods(ctx);
68
- yield* clearState(ctx);
69
- yield* noopMethods(ctx);
70
- yield* getStateMethods(ctx);
71
- yield* composeMethod(ctx);
72
- yield DecIndentAndCloseBlock;
73
- }
74
- function* opMethods(ctx) {
75
- const { app, callConfig, name } = ctx;
76
- yield* jsDoc({
77
- description: `Idempotently deploys the ${app.contract.name} smart contract.`,
78
- params: {
79
- params: 'The arguments for the contract calls and any additional parameters for the call',
80
- },
81
- returns: 'The deployment result',
82
- });
83
- yield `public deploy(params: ${name}DeployArgs & AppClientDeployCoreParams & IncludeSchema = {}): ReturnType<ApplicationClient['deploy']> {`;
84
- yield IncIndent;
85
- if (callConfig.createMethods.length)
86
- yield `const createArgs = params.createCall?.(${name}CallFactory.create)`;
87
- if (callConfig.updateMethods.length)
88
- yield `const updateArgs = params.updateCall?.(${name}CallFactory.update)`;
89
- if (callConfig.deleteMethods.length)
90
- yield `const deleteArgs = params.deleteCall?.(${name}CallFactory.delete)`;
91
- yield `return this.appClient.deploy({`;
92
- yield IncIndent;
93
- yield `...params,`;
94
- if (callConfig.updateMethods.length)
95
- yield 'updateArgs,';
96
- if (callConfig.deleteMethods.length)
97
- yield 'deleteArgs,';
98
- if (callConfig.createMethods.length) {
99
- yield 'createArgs,';
100
- yield `createOnCompleteAction: createArgs?.onCompleteAction,`;
101
- }
102
- yield DecIndent;
103
- yield `})`;
104
- yield DecIndentAndCloseBlock;
105
- yield NewLine;
106
- yield* operationMethod(ctx, `Creates a new instance of the ${app.contract.name} smart contract`, callConfig.createMethods, 'create', true, true);
107
- yield* operationMethod(ctx, `Updates an existing instance of the ${app.contract.name} smart contract`, callConfig.updateMethods, 'update', true);
108
- yield* operationMethod(ctx, `Deletes an existing instance of the ${app.contract.name} smart contract`, callConfig.deleteMethods, 'delete');
109
- yield* operationMethod(ctx, `Opts the user into an existing instance of the ${app.contract.name} smart contract`, callConfig.optInMethods, 'optIn');
110
- yield* operationMethod(ctx, `Makes a close out call to an existing instance of the ${app.contract.name} smart contract`, callConfig.closeOutMethods, 'closeOut');
111
- }
112
- function* operationMethod({ app, methodSignatureToUniqueName, name, sanitizer }, description, methods, verb, includeCompilation, includeSchema) {
113
- let responseTypeGenericParam;
114
- switch (verb) {
115
- case 'create':
116
- responseTypeGenericParam = ', AppCreateCallTransactionResult';
117
- break;
118
- case 'update':
119
- responseTypeGenericParam = ', AppUpdateCallTransactionResult';
120
- break;
121
- default:
122
- responseTypeGenericParam = '';
123
- break;
124
- }
125
- if (methods.length) {
126
- yield* jsDoc(`Gets available ${verb} methods`);
127
- yield `public get ${verb}() {`;
128
- yield IncIndent;
129
- yield `const $this = this`;
130
- yield `return {`;
131
- yield IncIndent;
132
- for (const methodSig of methods) {
133
- const onComplete = verb === 'create' ? getCreateOnCompleteOptions(methodSig, app) : undefined;
134
- if (methodSig === BARE_CALL) {
135
- yield* jsDoc({
136
- description: `${description} using a bare call.`,
137
- params: {
138
- args: `The arguments for the bare call`,
139
- },
140
- returns: `The ${verb} result`,
141
- });
142
- yield `async bare(args: BareCallArgs & AppClientCallCoreParams ${includeCompilation ? '& AppClientCompilationParams ' : ''}${includeSchema ? '& IncludeSchema ' : ''}& CoreAppCallArgs${onComplete?.type ? ` & ${onComplete.type}` : ''}${onComplete?.isOptional !== false ? ' = {}' : ''}) {`;
143
- yield* indent(`return $this.mapReturnValue<undefined${responseTypeGenericParam}>(await $this.appClient.${verb}(args))`);
144
- yield '},';
145
- }
146
- else {
147
- const uniqueName = methodSignatureToUniqueName[methodSig];
148
- const method = app.contract.methods.find((m) => algokit.getABIMethodSignature(m) === methodSig);
149
- yield* jsDoc({
150
- description: `${description} using the ${methodSig} ABI method.`,
151
- params: {
152
- args: `The arguments for the smart contract call`,
153
- params: `Any additional parameters for the call`,
154
- },
155
- returns: `The ${verb} result${method?.returns?.desc ? `: ${method.returns.desc}` : ''}`,
156
- });
157
- const methodName = sanitizer.makeSafeMethodIdentifier(uniqueName);
158
- const methodNameAccessor = sanitizer.getSafeMemberAccessor(methodName);
159
- const methodSigSafe = sanitizer.makeSafeStringTypeLiteral(methodSig);
160
- yield `async ${methodName}(args: MethodArgs<'${methodSigSafe}'>, params: AppClientCallCoreParams${includeCompilation ? ' & AppClientCompilationParams' : ''}${includeSchema ? ' & IncludeSchema' : ''} & CoreAppCallArgs${onComplete?.type ? ` & ${onComplete.type}` : ''}${onComplete?.isOptional !== false ? ' = {}' : ''}) {`;
161
- yield* indent(`return $this.mapReturnValue<MethodReturn<'${methodSigSafe}'>${responseTypeGenericParam}>(await $this.appClient.${verb}(${name}CallFactory.${verb}${methodNameAccessor}(args, params)))`);
162
- yield '},';
163
- }
164
- }
165
- yield DecIndentAndCloseBlock;
166
- yield DecIndentAndCloseBlock;
167
- yield NewLine;
168
- }
169
- }
170
- function* clearState({ app }) {
171
- yield* jsDoc({
172
- description: `Makes a clear_state call to an existing instance of the ${app.contract.name} smart contract.`,
173
- params: {
174
- args: `The arguments for the bare call`,
175
- },
176
- returns: `The clear_state result`,
177
- });
178
- yield `public clearState(args: BareCallArgs & AppClientCallCoreParams & CoreAppCallArgs = {}) {`;
179
- yield IncIndent;
180
- yield `return this.appClient.clearState(args)`;
181
- yield DecIndentAndCloseBlock;
182
- yield NewLine;
183
- }
184
- function* noopMethods({ app, name, callConfig, methodSignatureToUniqueName, sanitizer }) {
185
- for (const method of app.contract.methods) {
186
- const methodSignature = algokit.getABIMethodSignature(method);
187
- const methodName = sanitizer.makeSafeMethodIdentifier(methodSignatureToUniqueName[methodSignature]);
188
- const methodNameAccessor = sanitizer.getSafeMemberAccessor(methodName);
189
- // Skip methods which don't support a no_op call config
190
- if (!callConfig.callMethods.includes(methodSignature))
191
- continue;
192
- yield* jsDoc({
193
- description: `Calls the ${algokit.getABIMethodSignature(method)} ABI method.`,
194
- abiDescription: method.desc,
195
- params: {
196
- args: `The arguments for the contract call`,
197
- params: `Any additional parameters for the call`,
198
- },
199
- returns: `The result of the call${method?.returns?.desc ? `: ${method.returns.desc}` : ''}`,
200
- });
201
- const methodSignatureSafe = sanitizer.makeSafeStringTypeLiteral(methodSignature);
202
- yield `public ${methodName}(args: MethodArgs<'${methodSignatureSafe}'>, params: AppClientCallCoreParams & CoreAppCallArgs = {}) {`;
203
- yield IncIndent;
204
- const outputTypeName = app.hints?.[methodSignature]?.structs?.output?.name;
205
- yield `return this.call(${name}CallFactory${methodNameAccessor}(args, params)${outputTypeName === undefined ? '' : `, ${sanitizer.makeSafeTypeIdentifier(outputTypeName)}`})`;
206
- yield DecIndent;
207
- yield '}';
208
- yield NewLine;
209
- }
210
- }
211
- function* getStateMethods({ app, name, sanitizer }) {
212
- const globalStateValues = app.schema.global?.declared && Object.values(app.schema.global?.declared);
213
- const localStateValues = app.schema.local?.declared && Object.values(app.schema.local?.declared);
214
- if (globalStateValues?.length || localStateValues?.length) {
215
- yield* jsDoc({
216
- description: 'Extracts a binary state value out of an AppState dictionary',
217
- params: {
218
- state: 'The state dictionary containing the state value',
219
- key: 'The key of the state value',
220
- },
221
- returns: 'A BinaryState instance containing the state value, or undefined if the key was not found',
222
- });
223
- yield `private static getBinaryState(state: AppState, key: string): BinaryState | undefined {`;
224
- yield IncIndent;
225
- yield `const value = state[key]`;
226
- yield `if (!value) return undefined`;
227
- yield `if (!('valueRaw' in value))`;
228
- yield* indent(`throw new Error(\`Failed to parse state value for \${key}; received an int when expected a byte array\`)`);
229
- yield `return {`;
230
- yield IncIndent;
231
- yield `asString(): string {`;
232
- yield* indent(`return value.value`);
233
- yield `},`;
234
- yield `asByteArray(): Uint8Array {`;
235
- yield* indent(`return value.valueRaw`);
236
- yield `}`;
237
- yield DecIndentAndCloseBlock;
238
- yield DecIndentAndCloseBlock;
239
- yield NewLine;
240
- yield* jsDoc({
241
- description: 'Extracts a integer state value out of an AppState dictionary',
242
- params: {
243
- state: 'The state dictionary containing the state value',
244
- key: 'The key of the state value',
245
- },
246
- returns: 'An IntegerState instance containing the state value, or undefined if the key was not found',
247
- });
248
- yield `private static getIntegerState(state: AppState, key: string): IntegerState | undefined {`;
249
- yield IncIndent;
250
- yield `const value = state[key]`;
251
- yield `if (!value) return undefined`;
252
- yield `if ('valueRaw' in value)`;
253
- yield* indent(`throw new Error(\`Failed to parse state value for \${key}; received a byte array when expected a number\`)`);
254
- yield `return {`;
255
- yield IncIndent;
256
- yield `asBigInt() {`;
257
- yield* indent(`return typeof value.value === 'bigint' ? value.value : BigInt(value.value)`);
258
- yield `},`;
259
- yield `asNumber(): number {`;
260
- yield* indent(`return typeof value.value === 'bigint' ? Number(value.value) : value.value`);
261
- yield `},`;
262
- yield DecIndentAndCloseBlock;
263
- yield DecIndentAndCloseBlock;
264
- yield NewLine;
265
- }
266
- if (globalStateValues?.length) {
267
- yield* jsDoc(`Returns the smart contract's global state wrapped in a strongly typed accessor with options to format the stored value`);
268
- yield `public async getGlobalState(): Promise<${name}['state']['global']> {`;
269
- yield IncIndent;
270
- yield `const state = await this.appClient.getGlobalState()`;
271
- yield `return {`;
272
- yield IncIndent;
273
- for (const stateValue of globalStateValues) {
274
- const stateKey = sanitizer.makeSafePropertyIdentifier(stateValue.key);
275
- const stateKeyLiteral = sanitizer.makeSafeStringTypeLiteral(stateValue.key);
276
- yield `get ${stateKey}() {`;
277
- if (stateValue.type === 'uint64') {
278
- yield* indent(`return ${name}Client.getIntegerState(state, '${stateKeyLiteral}')`);
279
- }
280
- else {
281
- yield* indent(`return ${name}Client.getBinaryState(state, '${stateKeyLiteral}')`);
282
- }
283
- yield '},';
284
- }
285
- yield DecIndentAndCloseBlock;
286
- yield DecIndentAndCloseBlock;
287
- yield NewLine;
288
- }
289
- if (localStateValues?.length) {
290
- yield* jsDoc({
291
- description: `Returns the smart contract's local state wrapped in a strongly typed accessor with options to format the stored value`,
292
- params: {
293
- account: `The address of the account for which to read local state from`,
294
- },
295
- });
296
- yield `public async getLocalState(account: string | SendTransactionFrom): Promise<${name}['state']['local']> {`;
297
- yield IncIndent;
298
- yield `const state = await this.appClient.getLocalState(account)`;
299
- yield `return {`;
300
- yield IncIndent;
301
- for (const stateValue of localStateValues) {
302
- const stateKey = sanitizer.makeSafePropertyIdentifier(stateValue.key);
303
- const stateKeyLiteral = sanitizer.makeSafeStringTypeLiteral(stateValue.key);
304
- yield `get ${stateKey}() {`;
305
- if (stateValue.type === 'uint64') {
306
- yield* indent(`return ${name}Client.getIntegerState(state, '${stateKeyLiteral}')`);
307
- }
308
- else {
309
- yield* indent(`return ${name}Client.getBinaryState(state, '${stateKeyLiteral}')`);
310
- }
311
- yield '},';
312
- }
313
- yield DecIndentAndCloseBlock;
314
- yield DecIndentAndCloseBlock;
315
- yield NewLine;
316
- }
317
- }
318
-
319
- export { callClient };
320
- //# sourceMappingURL=call-client.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"call-client.mjs","sources":["../../src/client/call-client.ts"],"sourcesContent":["import * as algokit from '@algorandfoundation/algokit-utils'\nimport { DecIndent, DecIndentAndCloseBlock, DocumentParts, IncIndent, indent, inline, jsDoc, NewLine } from '../output/writer'\n\nimport { BARE_CALL, MethodList } from './helpers/get-call-config-summary'\nimport { GeneratorContext } from './generator-context'\nimport { getCreateOnCompleteOptions } from './deploy-types'\nimport { composeMethod } from './call-composer'\n\nexport function* callClient(ctx: GeneratorContext): DocumentParts {\n const { app, name } = ctx\n\n yield* jsDoc(`A client to make calls to the ${app.contract.name} smart contract`)\n yield `export class ${ctx.sanitizer.makeSafeTypeIdentifier(app.contract.name)}Client {`\n yield IncIndent\n yield* jsDoc(`The underlying \\`ApplicationClient\\` for when you want to have more flexibility`)\n yield 'public readonly appClient: ApplicationClient'\n yield NewLine\n yield `private readonly sender: SendTransactionFrom | undefined`\n yield NewLine\n\n yield* jsDoc({\n description: `Creates a new instance of \\`${ctx.sanitizer.makeSafeTypeIdentifier(app.contract.name)}Client\\``,\n params: {\n appDetails: 'appDetails The details to identify the app to deploy',\n algod: 'An algod client instance',\n },\n })\n\n yield `constructor(appDetails: AppDetails, private algod: Algodv2) {`\n yield IncIndent\n yield `this.sender = appDetails.sender`\n yield 'this.appClient = algokit.getAppClient({'\n yield* indent('...appDetails,', 'app: APP_SPEC')\n yield '}, algod)'\n yield DecIndent\n yield '}'\n yield NewLine\n\n yield* jsDoc({\n description: 'Checks for decode errors on the AppCallTransactionResult and maps the return value to the specified generic type',\n params: {\n result: 'The AppCallTransactionResult to be mapped',\n returnValueFormatter: 'An optional delegate to format the return value if required',\n },\n returns: 'The smart contract response with an updated return value',\n })\n yield* inline(\n `protected mapReturnValue<TReturn, TResult extends AppCallTransactionResult = AppCallTransactionResult>`,\n `(result: AppCallTransactionResult, returnValueFormatter?: (value: any) => TReturn): `,\n `AppCallTransactionResultOfType<TReturn> & TResult {`,\n )\n yield IncIndent\n yield `if(result.return?.decodeError) {`\n yield* indent(`throw result.return.decodeError`)\n yield `}`\n yield `const returnValue = result.return?.returnValue !== undefined && returnValueFormatter !== undefined`\n yield IncIndent\n yield `? returnValueFormatter(result.return.returnValue)`\n yield `: result.return?.returnValue as TReturn | undefined`\n yield `return { ...result, return: returnValue } as AppCallTransactionResultOfType<TReturn> & TResult`\n yield DecIndent\n yield DecIndentAndCloseBlock\n yield NewLine\n\n yield* jsDoc({\n description: 'Calls the ABI method with the matching signature using an onCompletion code of NO_OP',\n params: {\n typedCallParams: 'An object containing the method signature, args, and any other relevant parameters',\n returnValueFormatter: 'An optional delegate which when provided will be used to map non-undefined return values to the target type',\n },\n returns: 'The result of the smart contract call',\n })\n yield `public async call<TSignature extends keyof ${name}['methods']>(typedCallParams: TypedCallParams<TSignature>, returnValueFormatter?: (value: any) => MethodReturn<TSignature>) {`\n yield IncIndent\n yield `return this.mapReturnValue<MethodReturn<TSignature>>(await this.appClient.call(typedCallParams), returnValueFormatter)`\n yield DecIndentAndCloseBlock\n yield NewLine\n\n yield* opMethods(ctx)\n yield* clearState(ctx)\n yield* noopMethods(ctx)\n yield* getStateMethods(ctx)\n yield* composeMethod(ctx)\n yield DecIndentAndCloseBlock\n}\n\nfunction* opMethods(ctx: GeneratorContext): DocumentParts {\n const { app, callConfig, name } = ctx\n\n yield* jsDoc({\n description: `Idempotently deploys the ${app.contract.name} smart contract.`,\n params: {\n params: 'The arguments for the contract calls and any additional parameters for the call',\n },\n returns: 'The deployment result',\n })\n yield `public deploy(params: ${name}DeployArgs & AppClientDeployCoreParams & IncludeSchema = {}): ReturnType<ApplicationClient['deploy']> {`\n yield IncIndent\n\n if (callConfig.createMethods.length) yield `const createArgs = params.createCall?.(${name}CallFactory.create)`\n if (callConfig.updateMethods.length) yield `const updateArgs = params.updateCall?.(${name}CallFactory.update)`\n if (callConfig.deleteMethods.length) yield `const deleteArgs = params.deleteCall?.(${name}CallFactory.delete)`\n\n yield `return this.appClient.deploy({`\n yield IncIndent\n yield `...params,`\n if (callConfig.updateMethods.length) yield 'updateArgs,'\n if (callConfig.deleteMethods.length) yield 'deleteArgs,'\n if (callConfig.createMethods.length) {\n yield 'createArgs,'\n yield `createOnCompleteAction: createArgs?.onCompleteAction,`\n }\n yield DecIndent\n yield `})`\n yield DecIndentAndCloseBlock\n yield NewLine\n yield* operationMethod(\n ctx,\n `Creates a new instance of the ${app.contract.name} smart contract`,\n callConfig.createMethods,\n 'create',\n true,\n true,\n )\n yield* operationMethod(\n ctx,\n `Updates an existing instance of the ${app.contract.name} smart contract`,\n callConfig.updateMethods,\n 'update',\n true,\n )\n yield* operationMethod(ctx, `Deletes an existing instance of the ${app.contract.name} smart contract`, callConfig.deleteMethods, 'delete')\n yield* operationMethod(\n ctx,\n `Opts the user into an existing instance of the ${app.contract.name} smart contract`,\n callConfig.optInMethods,\n 'optIn',\n )\n yield* operationMethod(\n ctx,\n `Makes a close out call to an existing instance of the ${app.contract.name} smart contract`,\n callConfig.closeOutMethods,\n 'closeOut',\n )\n}\n\nfunction* operationMethod(\n { app, methodSignatureToUniqueName, name, sanitizer }: GeneratorContext,\n description: string,\n methods: MethodList,\n verb: 'create' | 'update' | 'optIn' | 'closeOut' | 'delete',\n includeCompilation?: boolean,\n includeSchema?: boolean,\n): DocumentParts {\n let responseTypeGenericParam\n switch (verb) {\n case 'create':\n responseTypeGenericParam = ', AppCreateCallTransactionResult'\n break\n case 'update':\n responseTypeGenericParam = ', AppUpdateCallTransactionResult'\n break\n default:\n responseTypeGenericParam = ''\n break\n }\n if (methods.length) {\n yield* jsDoc(`Gets available ${verb} methods`)\n yield `public get ${verb}() {`\n yield IncIndent\n yield `const $this = this`\n yield `return {`\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 ${verb} result`,\n })\n yield `async bare(args: BareCallArgs & AppClientCallCoreParams ${includeCompilation ? '& AppClientCompilationParams ' : ''}${\n includeSchema ? '& IncludeSchema ' : ''\n }& CoreAppCallArgs${onComplete?.type ? ` & ${onComplete.type}` : ''}${onComplete?.isOptional !== false ? ' = {}' : ''}) {`\n yield* indent(`return $this.mapReturnValue<undefined${responseTypeGenericParam}>(await $this.appClient.${verb}(args))`)\n yield '},'\n } else {\n const uniqueName = methodSignatureToUniqueName[methodSig]\n const method = app.contract.methods.find((m) => algokit.getABIMethodSignature(m) === 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 ${verb} result${method?.returns?.desc ? `: ${method.returns.desc}` : ''}`,\n })\n const methodName = sanitizer.makeSafeMethodIdentifier(uniqueName)\n const methodNameAccessor = sanitizer.getSafeMemberAccessor(methodName)\n const methodSigSafe = sanitizer.makeSafeStringTypeLiteral(methodSig)\n yield `async ${methodName}(args: MethodArgs<'${methodSigSafe}'>, params: AppClientCallCoreParams${\n includeCompilation ? ' & AppClientCompilationParams' : ''\n }${\n includeSchema ? ' & IncludeSchema' : ''\n } & CoreAppCallArgs${onComplete?.type ? ` & ${onComplete.type}` : ''}${onComplete?.isOptional !== false ? ' = {}' : ''}) {`\n yield* indent(\n `return $this.mapReturnValue<MethodReturn<'${methodSigSafe}'>${responseTypeGenericParam}>(await $this.appClient.${verb}(${name}CallFactory.${verb}${methodNameAccessor}(args, params)))`,\n )\n yield '},'\n }\n }\n yield DecIndentAndCloseBlock\n yield DecIndentAndCloseBlock\n yield NewLine\n }\n}\n\nfunction* clearState({ app }: GeneratorContext): DocumentParts {\n yield* jsDoc({\n description: `Makes a clear_state call to an existing instance of the ${app.contract.name} smart contract.`,\n params: {\n args: `The arguments for the bare call`,\n },\n returns: `The clear_state result`,\n })\n yield `public clearState(args: BareCallArgs & AppClientCallCoreParams & CoreAppCallArgs = {}) {`\n yield IncIndent\n yield `return this.appClient.clearState(args)`\n yield DecIndentAndCloseBlock\n yield NewLine\n}\n\nfunction* noopMethods({ app, name, callConfig, methodSignatureToUniqueName, sanitizer }: GeneratorContext): DocumentParts {\n for (const method of app.contract.methods) {\n const methodSignature = algokit.getABIMethodSignature(method)\n const methodName = sanitizer.makeSafeMethodIdentifier(methodSignatureToUniqueName[methodSignature])\n const methodNameAccessor = sanitizer.getSafeMemberAccessor(methodName)\n // Skip methods which don't support a no_op call config\n if (!callConfig.callMethods.includes(methodSignature)) continue\n yield* jsDoc({\n description: `Calls the ${algokit.getABIMethodSignature(method)} 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 result of the call${method?.returns?.desc ? `: ${method.returns.desc}` : ''}`,\n })\n const methodSignatureSafe = sanitizer.makeSafeStringTypeLiteral(methodSignature)\n yield `public ${methodName}(args: MethodArgs<'${methodSignatureSafe}'>, params: AppClientCallCoreParams & CoreAppCallArgs = {}) {`\n yield IncIndent\n const outputTypeName = app.hints?.[methodSignature]?.structs?.output?.name\n yield `return this.call(${name}CallFactory${methodNameAccessor}(args, params)${\n outputTypeName === undefined ? '' : `, ${sanitizer.makeSafeTypeIdentifier(outputTypeName)}`\n })`\n yield DecIndent\n yield '}'\n yield NewLine\n }\n}\n\nfunction* getStateMethods({ app, name, sanitizer }: GeneratorContext): DocumentParts {\n const globalStateValues = app.schema.global?.declared && Object.values(app.schema.global?.declared)\n const localStateValues = app.schema.local?.declared && Object.values(app.schema.local?.declared)\n if (globalStateValues?.length || localStateValues?.length) {\n yield* jsDoc({\n description: 'Extracts a binary state value out of an AppState dictionary',\n params: {\n state: 'The state dictionary containing the state value',\n key: 'The key of the state value',\n },\n returns: 'A BinaryState instance containing the state value, or undefined if the key was not found',\n })\n yield `private static getBinaryState(state: AppState, key: string): BinaryState | undefined {`\n yield IncIndent\n yield `const value = state[key]`\n yield `if (!value) return undefined`\n yield `if (!('valueRaw' in value))`\n yield* indent(`throw new Error(\\`Failed to parse state value for \\${key}; received an int when expected a byte array\\`)`)\n yield `return {`\n yield IncIndent\n yield `asString(): string {`\n yield* indent(`return value.value`)\n yield `},`\n yield `asByteArray(): Uint8Array {`\n yield* indent(`return value.valueRaw`)\n yield `}`\n yield DecIndentAndCloseBlock\n yield DecIndentAndCloseBlock\n yield NewLine\n\n yield* jsDoc({\n description: 'Extracts a integer state value out of an AppState dictionary',\n params: {\n state: 'The state dictionary containing the state value',\n key: 'The key of the state value',\n },\n returns: 'An IntegerState instance containing the state value, or undefined if the key was not found',\n })\n yield `private static getIntegerState(state: AppState, key: string): IntegerState | undefined {`\n yield IncIndent\n yield `const value = state[key]`\n yield `if (!value) return undefined`\n yield `if ('valueRaw' in value)`\n yield* indent(`throw new Error(\\`Failed to parse state value for \\${key}; received a byte array when expected a number\\`)`)\n yield `return {`\n yield IncIndent\n yield `asBigInt() {`\n yield* indent(`return typeof value.value === 'bigint' ? value.value : BigInt(value.value)`)\n yield `},`\n yield `asNumber(): number {`\n yield* indent(`return typeof value.value === 'bigint' ? Number(value.value) : value.value`)\n yield `},`\n yield DecIndentAndCloseBlock\n yield DecIndentAndCloseBlock\n yield NewLine\n }\n\n if (globalStateValues?.length) {\n yield* jsDoc(`Returns the smart contract's global state wrapped in a strongly typed accessor with options to format the stored value`)\n yield `public async getGlobalState(): Promise<${name}['state']['global']> {`\n yield IncIndent\n yield `const state = await this.appClient.getGlobalState()`\n yield `return {`\n yield IncIndent\n for (const stateValue of globalStateValues) {\n const stateKey = sanitizer.makeSafePropertyIdentifier(stateValue.key)\n const stateKeyLiteral = sanitizer.makeSafeStringTypeLiteral(stateValue.key)\n yield `get ${stateKey}() {`\n if (stateValue.type === 'uint64') {\n yield* indent(`return ${name}Client.getIntegerState(state, '${stateKeyLiteral}')`)\n } else {\n yield* indent(`return ${name}Client.getBinaryState(state, '${stateKeyLiteral}')`)\n }\n yield '},'\n }\n yield DecIndentAndCloseBlock\n yield DecIndentAndCloseBlock\n yield NewLine\n }\n\n if (localStateValues?.length) {\n yield* jsDoc({\n description: `Returns the smart contract's local state wrapped in a strongly typed accessor with options to format the stored value`,\n params: {\n account: `The address of the account for which to read local state from`,\n },\n })\n yield `public async getLocalState(account: string | SendTransactionFrom): Promise<${name}['state']['local']> {`\n yield IncIndent\n yield `const state = await this.appClient.getLocalState(account)`\n yield `return {`\n yield IncIndent\n for (const stateValue of localStateValues) {\n const stateKey = sanitizer.makeSafePropertyIdentifier(stateValue.key)\n const stateKeyLiteral = sanitizer.makeSafeStringTypeLiteral(stateValue.key)\n yield `get ${stateKey}() {`\n if (stateValue.type === 'uint64') {\n yield* indent(`return ${name}Client.getIntegerState(state, '${stateKeyLiteral}')`)\n } else {\n yield* indent(`return ${name}Client.getBinaryState(state, '${stateKeyLiteral}')`)\n }\n yield '},'\n }\n yield DecIndentAndCloseBlock\n yield DecIndentAndCloseBlock\n yield NewLine\n }\n}\n"],"names":[],"mappings":"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"}
@@ -1,142 +0,0 @@
1
- 'use strict';
2
-
3
- var writer = require('../output/writer.js');
4
- var algokit = require('@algorandfoundation/algokit-utils');
5
- var getCallConfigSummary = require('./helpers/get-call-config-summary.js');
6
- var deployTypes = require('./deploy-types.js');
7
-
8
- function _interopNamespaceDefault(e) {
9
- var n = Object.create(null);
10
- if (e) {
11
- Object.keys(e).forEach(function (k) {
12
- if (k !== 'default') {
13
- var d = Object.getOwnPropertyDescriptor(e, k);
14
- Object.defineProperty(n, k, d.get ? d : {
15
- enumerable: true,
16
- get: function () { return e[k]; }
17
- });
18
- }
19
- });
20
- }
21
- n.default = e;
22
- return Object.freeze(n);
23
- }
24
-
25
- var algokit__namespace = /*#__PURE__*/_interopNamespaceDefault(algokit);
26
-
27
- function* callFactory(ctx) {
28
- yield* writer.jsDoc('Exposes methods for constructing all available smart contract calls');
29
- yield `export abstract class ${ctx.name}CallFactory {`;
30
- yield writer.IncIndent;
31
- yield* opMethods(ctx);
32
- for (const method of ctx.app.contract.methods) {
33
- yield* callFactoryMethod(ctx, method);
34
- }
35
- yield writer.DecIndent;
36
- yield '}';
37
- }
38
- function* opMethods(ctx) {
39
- const { app, callConfig } = ctx;
40
- yield* operationMethod(ctx, `Constructs a create call for the ${app.contract.name} smart contract`, callConfig.createMethods, 'create', true);
41
- yield* operationMethod(ctx, `Constructs an update call for the ${app.contract.name} smart contract`, callConfig.updateMethods, 'update', true);
42
- yield* operationMethod(ctx, `Constructs a delete call for the ${app.contract.name} smart contract`, callConfig.deleteMethods, 'delete');
43
- yield* operationMethod(ctx, `Constructs an opt in call for the ${app.contract.name} smart contract`, callConfig.optInMethods, 'optIn');
44
- yield* operationMethod(ctx, `Constructs a close out call for the ${app.contract.name} smart contract`, callConfig.closeOutMethods, 'closeOut');
45
- }
46
- function* operationMethod({ app, methodSignatureToUniqueName, sanitizer }, description, methods, verb, includeCompilation) {
47
- if (methods.length) {
48
- yield* writer.jsDoc(`Gets available ${verb} call factories`);
49
- yield `static get ${verb}() {`;
50
- yield writer.IncIndent;
51
- yield `return {`;
52
- yield writer.IncIndent;
53
- for (const methodSig of methods) {
54
- const onComplete = verb === 'create' ? deployTypes.getCreateOnCompleteOptions(methodSig, app) : undefined;
55
- if (methodSig === getCallConfigSummary.BARE_CALL) {
56
- yield* writer.jsDoc({
57
- description: `${description} using a bare call`,
58
- params: {
59
- params: `Any parameters for the call`,
60
- },
61
- returns: `A TypedCallParams object for the call`,
62
- });
63
- yield* factoryMethod({
64
- isNested: true,
65
- name: 'bare',
66
- sanitizer,
67
- paramTypes: `BareCallArgs & AppClientCallCoreParams & CoreAppCallArgs${includeCompilation ? ' & AppClientCompilationParams' : ''}${onComplete?.type ? ` & ${onComplete.type}` : ''}${onComplete?.isOptional !== false ? ' = {}' : ''}`,
68
- });
69
- }
70
- else {
71
- const method = app.contract.methods.find((m) => algokit__namespace.getABIMethodSignature(m) === methodSig);
72
- const uniqueName = methodSignatureToUniqueName[methodSig];
73
- yield* writer.jsDoc({
74
- description: `${description} using the ${methodSig} ABI method`,
75
- params: {
76
- args: `Any args for the contract call`,
77
- params: `Any additional parameters for the call`,
78
- },
79
- returns: `A TypedCallParams object for the call`,
80
- });
81
- yield* factoryMethod({
82
- isNested: true,
83
- sanitizer,
84
- name: sanitizer.makeSafeMethodIdentifier(uniqueName),
85
- signature: methodSig,
86
- args: method.args,
87
- paramTypes: `AppClientCallCoreParams & CoreAppCallArgs${includeCompilation ? ' & AppClientCompilationParams' : ''}${onComplete?.type ? ` & ${onComplete.type}` : ''}${onComplete?.isOptional !== false ? ' = {}' : ''}`,
88
- });
89
- }
90
- }
91
- yield writer.DecIndentAndCloseBlock;
92
- yield writer.DecIndentAndCloseBlock;
93
- yield writer.NewLine;
94
- }
95
- }
96
- function* callFactoryMethod({ methodSignatureToUniqueName, callConfig, sanitizer }, method) {
97
- const methodSignature = algokit__namespace.getABIMethodSignature(method);
98
- if (!callConfig.callMethods.includes(methodSignature))
99
- return;
100
- yield* writer.jsDoc({
101
- description: `Constructs a no op call for the ${methodSignature} ABI method`,
102
- abiDescription: method.desc,
103
- params: {
104
- args: `Any args for the contract call`,
105
- params: `Any additional parameters for the call`,
106
- },
107
- returns: `A TypedCallParams object for the call`,
108
- });
109
- yield* factoryMethod({
110
- isNested: false,
111
- sanitizer,
112
- name: sanitizer.makeSafeMethodIdentifier(methodSignatureToUniqueName[methodSignature]),
113
- signature: methodSignature,
114
- args: method.args,
115
- paramTypes: 'AppClientCallCoreParams & CoreAppCallArgs',
116
- });
117
- }
118
- function* factoryMethod({ isNested, name, signature, args, paramTypes, sanitizer, }) {
119
- const signatureSafe = signature && sanitizer.makeSafeStringTypeLiteral(signature);
120
- yield `${isNested ? '' : 'static '}${name}(${signature === undefined ? '' : `args: MethodArgs<'${signatureSafe}'>, `}params: ${paramTypes}) {`;
121
- yield writer.IncIndent;
122
- yield `return {`;
123
- yield writer.IncIndent;
124
- if (signature) {
125
- yield `method: '${signatureSafe}' as const,`;
126
- yield `methodArgs: Array.isArray(args) ? args : [${args
127
- .map((a) => `args${sanitizer.getSafeMemberAccessor(sanitizer.makeSafePropertyIdentifier(a.name))}`)
128
- .join(', ')}],`;
129
- }
130
- else {
131
- yield `method: undefined,`;
132
- yield `methodArgs: undefined,`;
133
- }
134
- yield '...params,';
135
- yield writer.DecIndent;
136
- yield '}';
137
- yield writer.DecIndent;
138
- yield `}${isNested ? ',' : ''}`;
139
- }
140
-
141
- exports.callFactory = callFactory;
142
- //# sourceMappingURL=call-factory.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"call-factory.js","sources":["../../src/client/call-factory.ts"],"sourcesContent":["import { ContractMethod } from '../schema/application'\nimport { DecIndent, DecIndentAndCloseBlock, DocumentParts, IncIndent, jsDoc, NewLine } from '../output/writer'\nimport * as algokit from '@algorandfoundation/algokit-utils'\nimport { GeneratorContext } from './generator-context'\nimport { BARE_CALL, MethodList } from './helpers/get-call-config-summary'\nimport { getCreateOnCompleteOptions } from './deploy-types'\nimport { Sanitizer } from '../util/sanitization'\n\nexport function* callFactory(ctx: GeneratorContext): DocumentParts {\n yield* jsDoc('Exposes methods for constructing all available smart contract calls')\n yield `export abstract class ${ctx.name}CallFactory {`\n yield IncIndent\n\n yield* opMethods(ctx)\n\n for (const method of ctx.app.contract.methods) {\n yield* callFactoryMethod(ctx, method)\n }\n\n yield DecIndent\n\n yield '}'\n}\n\nfunction* opMethods(ctx: GeneratorContext): DocumentParts {\n const { app, callConfig } = ctx\n\n yield* operationMethod(\n ctx,\n `Constructs a create call for the ${app.contract.name} smart contract`,\n callConfig.createMethods,\n 'create',\n true,\n )\n yield* operationMethod(\n ctx,\n `Constructs an update call for the ${app.contract.name} smart contract`,\n callConfig.updateMethods,\n 'update',\n true,\n )\n yield* operationMethod(ctx, `Constructs a delete call for the ${app.contract.name} smart contract`, callConfig.deleteMethods, 'delete')\n yield* operationMethod(ctx, `Constructs an opt in call for the ${app.contract.name} smart contract`, callConfig.optInMethods, 'optIn')\n yield* operationMethod(\n ctx,\n `Constructs a close out call for the ${app.contract.name} smart contract`,\n callConfig.closeOutMethods,\n 'closeOut',\n )\n}\n\nfunction* operationMethod(\n { app, methodSignatureToUniqueName, 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} call factories`)\n yield `static get ${verb}() {`\n yield IncIndent\n yield `return {`\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 params: `Any parameters for the call`,\n },\n returns: `A TypedCallParams object for the call`,\n })\n yield* factoryMethod({\n isNested: true,\n name: 'bare',\n sanitizer,\n paramTypes: `BareCallArgs & AppClientCallCoreParams & CoreAppCallArgs${\n includeCompilation ? ' & AppClientCompilationParams' : ''\n }${onComplete?.type ? ` & ${onComplete.type}` : ''}${onComplete?.isOptional !== false ? ' = {}' : ''}`,\n })\n } else {\n const method = app.contract.methods.find((m) => algokit.getABIMethodSignature(m) === methodSig)!\n const uniqueName = methodSignatureToUniqueName[methodSig]\n yield* jsDoc({\n description: `${description} using the ${methodSig} ABI method`,\n params: {\n args: `Any args for the contract call`,\n params: `Any additional parameters for the call`,\n },\n returns: `A TypedCallParams object for the call`,\n })\n yield* factoryMethod({\n isNested: true,\n sanitizer,\n name: sanitizer.makeSafeMethodIdentifier(uniqueName),\n signature: methodSig,\n args: method.args,\n paramTypes: `AppClientCallCoreParams & CoreAppCallArgs${includeCompilation ? ' & AppClientCompilationParams' : ''}${\n onComplete?.type ? ` & ${onComplete.type}` : ''\n }${onComplete?.isOptional !== false ? ' = {}' : ''}`,\n })\n }\n }\n yield DecIndentAndCloseBlock\n yield DecIndentAndCloseBlock\n yield NewLine\n }\n}\n\nfunction* callFactoryMethod({ methodSignatureToUniqueName, callConfig, sanitizer }: GeneratorContext, method: ContractMethod) {\n const methodSignature = algokit.getABIMethodSignature(method)\n if (!callConfig.callMethods.includes(methodSignature)) return\n\n yield* jsDoc({\n description: `Constructs a no op call for the ${methodSignature} ABI method`,\n abiDescription: method.desc,\n params: {\n args: `Any args for the contract call`,\n params: `Any additional parameters for the call`,\n },\n returns: `A TypedCallParams object for the call`,\n })\n yield* factoryMethod({\n isNested: false,\n sanitizer,\n name: sanitizer.makeSafeMethodIdentifier(methodSignatureToUniqueName[methodSignature]),\n signature: methodSignature,\n args: method.args,\n paramTypes: 'AppClientCallCoreParams & CoreAppCallArgs',\n })\n}\n\nfunction* factoryMethod({\n isNested,\n name,\n signature,\n args,\n paramTypes,\n sanitizer,\n}:\n | {\n isNested: boolean\n name?: string\n signature?: undefined\n args?: undefined\n paramTypes: string\n sanitizer: Sanitizer\n }\n | {\n isNested: boolean\n name?: string\n signature: string\n args: Array<{ name: string }>\n paramTypes: string\n sanitizer: Sanitizer\n }) {\n const signatureSafe = signature && sanitizer.makeSafeStringTypeLiteral(signature)\n yield `${isNested ? '' : 'static '}${name}(${signature === undefined ? '' : `args: MethodArgs<'${signatureSafe}'>, `}params: ${paramTypes}) {`\n yield IncIndent\n yield `return {`\n yield IncIndent\n if (signature) {\n yield `method: '${signatureSafe}' as const,`\n yield `methodArgs: Array.isArray(args) ? args : [${args\n .map((a) => `args${sanitizer.getSafeMemberAccessor(sanitizer.makeSafePropertyIdentifier(a.name))}`)\n .join(', ')}],`\n } else {\n yield `method: undefined,`\n yield `methodArgs: undefined,`\n }\n\n yield '...params,'\n yield DecIndent\n yield '}'\n yield DecIndent\n yield `}${isNested ? ',' : ''}`\n}\n"],"names":["jsDoc","IncIndent","DecIndent","getCreateOnCompleteOptions","BARE_CALL","algokit","DecIndentAndCloseBlock","NewLine"],"mappings":"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"}