@algorandfoundation/algokit-utils 7.0.0-beta.7 → 7.0.0-beta.9

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.
@@ -10,6 +10,7 @@ import { Expand } from './expand';
10
10
  import { SendParams } from './transaction';
11
11
  import OnApplicationComplete = algosdk.OnApplicationComplete;
12
12
  import ABIValue = algosdk.ABIValue;
13
+ import TransactionSigner = algosdk.TransactionSigner;
13
14
  /** Parameters to create an app client */
14
15
  export interface AppFactoryParams {
15
16
  /** The ARC-56 or ARC-32 application spec as either:
@@ -27,6 +28,8 @@ export interface AppFactoryParams {
27
28
  appName?: string;
28
29
  /** Optional address to use for the account to use as the default sender for calls. */
29
30
  defaultSender?: string;
31
+ /** Optional signer to use as the default signer for default sender calls (if not specified then the signer will be resolved from `AlgorandClient`). */
32
+ defaultSigner?: TransactionSigner;
30
33
  /** The version of app that is / will be deployed; defaults to 1.0 */
31
34
  version?: string;
32
35
  /**
@@ -102,6 +105,8 @@ export type AppFactoryDeployParams = Expand<Omit<AppDeployParams, 'createParams'
102
105
  * `undefined` = use AppFactory constructor value if set or base it on the app spec.
103
106
  */
104
107
  deletable?: boolean;
108
+ /** Override the app name for this deployment */
109
+ appName?: string;
105
110
  }>;
106
111
  /**
107
112
  * ARC-56/ARC-32 app factory that, for a given app spec, allows you to create
@@ -114,6 +119,7 @@ export declare class AppFactory {
114
119
  private _algorand;
115
120
  private _version;
116
121
  private _defaultSender?;
122
+ private _defaultSigner?;
117
123
  private _deployTimeParams?;
118
124
  private _updatable?;
119
125
  private _deletable?;
@@ -121,6 +127,12 @@ export declare class AppFactory {
121
127
  private _clearSourceMap;
122
128
  private _paramsMethods;
123
129
  constructor(params: AppFactoryParams);
130
+ /** The name of the app (from the ARC-32 / ARC-56 app spec or override). */
131
+ get appName(): string;
132
+ /** The ARC-56 app spec being used */
133
+ get appSpec(): Arc56Contract;
134
+ /** Return the algorand client this factory is using. */
135
+ get algorand(): AlgorandClientInterface;
124
136
  /** Get parameters to create transactions (create and deploy related calls) for the current app.
125
137
  *
126
138
  * A good mental model for this is that these parameters represent a deferred transaction creation.
@@ -171,11 +183,7 @@ export declare class AppFactory {
171
183
  localByteSlices: number;
172
184
  } | undefined;
173
185
  extraProgramPages?: number | undefined;
174
- }) => Promise<({
175
- approvalProgram: Uint8Array;
176
- compiledApproval: undefined;
177
- clearStateProgram: Uint8Array;
178
- compiledClear: undefined;
186
+ }) => Promise<{
179
187
  deployTimeParams: TealTemplateParams | undefined;
180
188
  schema: {
181
189
  /** The number of integers saved in global state. */
@@ -187,43 +195,8 @@ export declare class AppFactory {
187
195
  /** The number of byte slices saved in local state. */
188
196
  localByteSlices: number;
189
197
  };
190
- lease?: string | Uint8Array | undefined;
191
- note?: string | Uint8Array | undefined;
192
- maxFee?: import("./amount").AlgoAmount | undefined;
193
- signer?: algosdk.TransactionSigner | import("./account").TransactionSignerAccount | undefined;
194
- rekeyTo?: string | undefined;
195
- staticFee?: import("./amount").AlgoAmount | undefined;
196
- extraFee?: import("./amount").AlgoAmount | undefined;
197
- validityWindow?: number | undefined;
198
- firstValidRound?: bigint | undefined;
199
- lastValidRound?: bigint | undefined;
200
- onComplete?: algosdk.OnApplicationComplete.NoOpOC | algosdk.OnApplicationComplete.OptInOC | algosdk.OnApplicationComplete.CloseOutOC | algosdk.OnApplicationComplete.UpdateApplicationOC | algosdk.OnApplicationComplete.DeleteApplicationOC | undefined;
201
- accountReferences?: string[] | undefined;
202
- appReferences?: bigint[] | undefined;
203
- assetReferences?: bigint[] | undefined;
204
- boxReferences?: (import("./app-manager").BoxIdentifier | import("./app-manager").BoxReference)[] | undefined;
205
- sender?: string | undefined;
206
- method: string;
207
- args?: (algosdk.ABIValue | AppMethodCallTransactionArgument | ABIStruct | undefined)[] | undefined;
208
- updatable?: boolean | undefined;
209
- deletable?: boolean | undefined;
210
- extraProgramPages?: number | undefined;
211
- } | {
212
198
  approvalProgram: Uint8Array;
213
- compiledApproval: import("./app").CompiledTeal;
214
199
  clearStateProgram: Uint8Array;
215
- compiledClear: import("./app").CompiledTeal;
216
- deployTimeParams: TealTemplateParams | undefined;
217
- schema: {
218
- /** The number of integers saved in global state. */
219
- globalInts: number;
220
- /** The number of byte slices saved in global state. */
221
- globalByteSlices: number;
222
- /** The number of integers saved in local state. */
223
- localInts: number;
224
- /** The number of byte slices saved in local state. */
225
- localByteSlices: number;
226
- };
227
200
  lease?: string | Uint8Array | undefined;
228
201
  note?: string | Uint8Array | undefined;
229
202
  maxFee?: import("./amount").AlgoAmount | undefined;
@@ -245,7 +218,7 @@ export declare class AppFactory {
245
218
  updatable?: boolean | undefined;
246
219
  deletable?: boolean | undefined;
247
220
  extraProgramPages?: number | undefined;
248
- }) & {
221
+ } & {
249
222
  sender: string;
250
223
  method: Arc56Method;
251
224
  args: (algosdk.Transaction | algosdk.ABIValue | algosdk.TransactionWithSigner | Promise<algosdk.Transaction> | AppMethodCall<{
@@ -519,47 +492,11 @@ export declare class AppFactory {
519
492
  localByteSlices: number;
520
493
  } | undefined;
521
494
  extraProgramPages?: number | undefined;
522
- } | undefined) => Promise<({
523
- approvalProgram: Uint8Array;
524
- compiledApproval: undefined;
525
- clearStateProgram: Uint8Array;
526
- compiledClear: undefined;
527
- deployTimeParams: TealTemplateParams | undefined;
528
- schema: {
529
- /** The number of integers saved in global state. */
530
- globalInts: number;
531
- /** The number of byte slices saved in global state. */
532
- globalByteSlices: number;
533
- /** The number of integers saved in local state. */
534
- localInts: number;
535
- /** The number of byte slices saved in local state. */
536
- localByteSlices: number;
537
- };
538
- lease?: string | Uint8Array | undefined;
539
- note?: string | Uint8Array | undefined;
540
- maxFee?: import("./amount").AlgoAmount | undefined;
541
- args?: Uint8Array[] | undefined;
542
- signer?: algosdk.TransactionSigner | import("./account").TransactionSignerAccount | undefined;
543
- rekeyTo?: string | undefined;
544
- staticFee?: import("./amount").AlgoAmount | undefined;
545
- extraFee?: import("./amount").AlgoAmount | undefined;
546
- validityWindow?: number | undefined;
547
- firstValidRound?: bigint | undefined;
548
- lastValidRound?: bigint | undefined;
549
- accountReferences?: string[] | undefined;
550
- appReferences?: bigint[] | undefined;
551
- assetReferences?: bigint[] | undefined;
552
- boxReferences?: (import("./app-manager").BoxIdentifier | import("./app-manager").BoxReference)[] | undefined;
553
- sender?: string | undefined;
554
- updatable?: boolean | undefined;
555
- deletable?: boolean | undefined;
556
- onComplete?: algosdk.OnApplicationComplete.NoOpOC | algosdk.OnApplicationComplete.OptInOC | algosdk.OnApplicationComplete.CloseOutOC | algosdk.OnApplicationComplete.UpdateApplicationOC | algosdk.OnApplicationComplete.DeleteApplicationOC | undefined;
557
- extraProgramPages?: number | undefined;
558
- } | {
495
+ } | undefined) => Promise<{
559
496
  approvalProgram: Uint8Array;
560
- compiledApproval: import("./app").CompiledTeal;
561
497
  clearStateProgram: Uint8Array;
562
- compiledClear: import("./app").CompiledTeal;
498
+ compiledApproval?: import("./app").CompiledTeal | undefined;
499
+ compiledClear?: import("./app").CompiledTeal | undefined;
563
500
  deployTimeParams: TealTemplateParams | undefined;
564
501
  schema: {
565
502
  /** The number of integers saved in global state. */
@@ -591,7 +528,7 @@ export declare class AppFactory {
591
528
  deletable?: boolean | undefined;
592
529
  onComplete?: algosdk.OnApplicationComplete.NoOpOC | algosdk.OnApplicationComplete.OptInOC | algosdk.OnApplicationComplete.CloseOutOC | algosdk.OnApplicationComplete.UpdateApplicationOC | algosdk.OnApplicationComplete.DeleteApplicationOC | undefined;
593
530
  extraProgramPages?: number | undefined;
594
- }) & {
531
+ } & {
595
532
  sender: string;
596
533
  onComplete: algosdk.OnApplicationComplete.NoOpOC | algosdk.OnApplicationComplete.OptInOC | algosdk.OnApplicationComplete.CloseOutOC | algosdk.OnApplicationComplete.UpdateApplicationOC | algosdk.OnApplicationComplete.DeleteApplicationOC;
597
534
  }>;
@@ -753,35 +690,8 @@ export declare class AppFactory {
753
690
  result: {
754
691
  return: algosdk.ABIValue | ABIStruct | undefined;
755
692
  deleteReturn: algosdk.ABIValue | ABIStruct | undefined;
756
- approvalProgram: Uint8Array;
757
- compiledApproval: undefined;
758
- clearStateProgram: Uint8Array;
759
- compiledClear: undefined;
760
- operationPerformed: "create";
761
- version: string;
762
- name: string;
763
- deleted: boolean;
764
- createdRound: bigint;
765
- updatedRound: bigint;
766
- createdMetadata: import("./app").AppDeployMetadata;
767
- deletable?: boolean | undefined;
768
- updatable?: boolean | undefined;
769
- groupId: string;
770
- txIds: string[];
771
- returns?: import("./app").ABIReturn[] | undefined;
772
- confirmations: algosdk.modelsv2.PendingTransactionResponse[];
773
- transactions: algosdk.Transaction[];
774
- confirmation: algosdk.modelsv2.PendingTransactionResponse;
775
- transaction: algosdk.Transaction;
776
- appId: bigint;
777
- appAddress: string;
778
- } | {
779
- return: algosdk.ABIValue | ABIStruct | undefined;
780
- deleteReturn: algosdk.ABIValue | ABIStruct | undefined;
781
- approvalProgram: Uint8Array;
782
- compiledApproval: import("./app").CompiledTeal;
783
- clearStateProgram: Uint8Array;
784
- compiledClear: import("./app").CompiledTeal;
693
+ compiledApproval?: import("./app").CompiledTeal | undefined;
694
+ compiledClear?: import("./app").CompiledTeal | undefined;
785
695
  operationPerformed: "create";
786
696
  version: string;
787
697
  name: string;
@@ -803,35 +713,8 @@ export declare class AppFactory {
803
713
  } | {
804
714
  return: algosdk.ABIValue | ABIStruct | undefined;
805
715
  deleteReturn: algosdk.ABIValue | ABIStruct | undefined;
806
- approvalProgram: Uint8Array;
807
- compiledApproval: undefined;
808
- clearStateProgram: Uint8Array;
809
- compiledClear: undefined;
810
- operationPerformed: "update";
811
- appId: bigint;
812
- appAddress: string;
813
- createdRound: bigint;
814
- updatedRound: bigint;
815
- createdMetadata: import("./app").AppDeployMetadata;
816
- deleted: boolean;
817
- name: string;
818
- version: string;
819
- deletable?: boolean | undefined;
820
- updatable?: boolean | undefined;
821
- groupId: string;
822
- txIds: string[];
823
- returns?: import("./app").ABIReturn[] | undefined;
824
- confirmations: algosdk.modelsv2.PendingTransactionResponse[];
825
- transactions: algosdk.Transaction[];
826
- confirmation: algosdk.modelsv2.PendingTransactionResponse;
827
- transaction: algosdk.Transaction;
828
- } | {
829
- return: algosdk.ABIValue | ABIStruct | undefined;
830
- deleteReturn: algosdk.ABIValue | ABIStruct | undefined;
831
- approvalProgram: Uint8Array;
832
- compiledApproval: import("./app").CompiledTeal;
833
- clearStateProgram: Uint8Array;
834
- compiledClear: import("./app").CompiledTeal;
716
+ compiledApproval?: import("./app").CompiledTeal | undefined;
717
+ compiledClear?: import("./app").CompiledTeal | undefined;
835
718
  operationPerformed: "update";
836
719
  appId: bigint;
837
720
  appAddress: string;
@@ -853,36 +736,8 @@ export declare class AppFactory {
853
736
  } | {
854
737
  return: algosdk.ABIValue | ABIStruct | undefined;
855
738
  deleteReturn: algosdk.ABIValue | ABIStruct | undefined;
856
- approvalProgram: Uint8Array;
857
- compiledApproval: undefined;
858
- clearStateProgram: Uint8Array;
859
- compiledClear: undefined;
860
- operationPerformed: "replace";
861
- version: string;
862
- name: string;
863
- deleted: boolean;
864
- createdRound: bigint;
865
- updatedRound: bigint;
866
- createdMetadata: import("./app").AppDeployMetadata;
867
- deletable?: boolean | undefined;
868
- updatable?: boolean | undefined;
869
- groupId: string;
870
- txIds: string[];
871
- returns?: import("./app").ABIReturn[] | undefined;
872
- confirmations: algosdk.modelsv2.PendingTransactionResponse[];
873
- transactions: algosdk.Transaction[];
874
- confirmation: algosdk.modelsv2.PendingTransactionResponse;
875
- transaction: algosdk.Transaction;
876
- appId: bigint;
877
- appAddress: string;
878
- deleteResult: import("./transaction").ConfirmedTransactionResult;
879
- } | {
880
- return: algosdk.ABIValue | ABIStruct | undefined;
881
- deleteReturn: algosdk.ABIValue | ABIStruct | undefined;
882
- approvalProgram: Uint8Array;
883
- compiledApproval: import("./app").CompiledTeal;
884
- clearStateProgram: Uint8Array;
885
- compiledClear: import("./app").CompiledTeal;
739
+ compiledApproval?: import("./app").CompiledTeal | undefined;
740
+ compiledClear?: import("./app").CompiledTeal | undefined;
886
741
  operationPerformed: "replace";
887
742
  version: string;
888
743
  name: string;
@@ -905,28 +760,8 @@ export declare class AppFactory {
905
760
  } | {
906
761
  return: algosdk.ABIValue | ABIStruct | undefined;
907
762
  deleteReturn: algosdk.ABIValue | ABIStruct | undefined;
908
- approvalProgram: Uint8Array;
909
- compiledApproval: undefined;
910
- clearStateProgram: Uint8Array;
911
- compiledClear: undefined;
912
- operationPerformed: "nothing";
913
- appId: bigint;
914
- appAddress: string;
915
- createdRound: bigint;
916
- updatedRound: bigint;
917
- createdMetadata: import("./app").AppDeployMetadata;
918
- deleted: boolean;
919
- name: string;
920
- version: string;
921
- deletable?: boolean | undefined;
922
- updatable?: boolean | undefined;
923
- } | {
924
- return: algosdk.ABIValue | ABIStruct | undefined;
925
- deleteReturn: algosdk.ABIValue | ABIStruct | undefined;
926
- approvalProgram: Uint8Array;
927
- compiledApproval: import("./app").CompiledTeal;
928
- clearStateProgram: Uint8Array;
929
- compiledClear: import("./app").CompiledTeal;
763
+ compiledApproval?: import("./app").CompiledTeal | undefined;
764
+ compiledClear?: import("./app").CompiledTeal | undefined;
930
765
  operationPerformed: "nothing";
931
766
  appId: bigint;
932
767
  appAddress: string;
@@ -990,17 +825,7 @@ export declare class AppFactory {
990
825
  *
991
826
  * Will store any generated source maps for later use in debugging.
992
827
  */
993
- compile(compilation?: AppClientCompilationParams): Promise<{
994
- approvalProgram: Uint8Array;
995
- compiledApproval: undefined;
996
- clearStateProgram: Uint8Array;
997
- compiledClear: undefined;
998
- } | {
999
- approvalProgram: Uint8Array;
1000
- compiledApproval: import("./app").CompiledTeal;
1001
- clearStateProgram: Uint8Array;
1002
- compiledClear: import("./app").CompiledTeal;
1003
- }>;
828
+ compile(compilation?: AppClientCompilationParams): Promise<import("./app-client").AppClientCompilationResult>;
1004
829
  private getBareParams;
1005
830
  private getABIParams;
1006
831
  private getCreateABIArgsWithDefaultValues;
@@ -82,11 +82,24 @@ class AppFactory {
82
82
  this._algorand = params.algorand;
83
83
  this._version = params.version ?? '1.0';
84
84
  this._defaultSender = params.defaultSender;
85
+ this._defaultSigner = params.defaultSigner;
85
86
  this._deployTimeParams = params.deployTimeParams;
86
87
  this._updatable = params.updatable;
87
88
  this._deletable = params.deletable;
88
89
  this._paramsMethods = this.getParamsMethods();
89
90
  }
91
+ /** The name of the app (from the ARC-32 / ARC-56 app spec or override). */
92
+ get appName() {
93
+ return this._appName;
94
+ }
95
+ /** The ARC-56 app spec being used */
96
+ get appSpec() {
97
+ return this._appSpec;
98
+ }
99
+ /** Return the algorand client this factory is using. */
100
+ get algorand() {
101
+ return this._algorand;
102
+ }
90
103
  /** Get parameters to create transactions (create and deploy related calls) for the current app.
91
104
  *
92
105
  * A good mental model for this is that these parameters represent a deferred transaction creation.
@@ -133,7 +146,7 @@ class AppFactory {
133
146
  ? this.params.deployDelete(params.deleteParams)
134
147
  : this.params.bare.deployDelete(params.deleteParams),
135
148
  metadata: {
136
- name: this._appName,
149
+ name: params.appName ?? this._appName,
137
150
  version: this._version,
138
151
  updatable,
139
152
  deletable,
@@ -141,6 +154,7 @@ class AppFactory {
141
154
  });
142
155
  const appClient = this.getAppClientById({
143
156
  appId: deployResult.appId,
157
+ appName: params.appName,
144
158
  });
145
159
  const result = {
146
160
  ...deployResult,
@@ -180,6 +194,7 @@ class AppFactory {
180
194
  appSpec: this._appSpec,
181
195
  appName: params.appName ?? this._appName,
182
196
  defaultSender: params.defaultSender ?? this._defaultSender,
197
+ defaultSigner: params.defaultSigner ?? this._defaultSigner,
183
198
  approvalSourceMap: params.approvalSourceMap ?? this._approvalSourceMap,
184
199
  clearSourceMap: params.clearSourceMap ?? this._clearSourceMap,
185
200
  });
@@ -252,6 +267,7 @@ class AppFactory {
252
267
  return {
253
268
  /** Return params for a create ABI call, including deploy-time TEAL template replacements and compilation if provided */
254
269
  create: async (params) => {
270
+ const compiled = await this.compile({ ...params, deployTimeParams: params.deployTimeParams ?? this._deployTimeParams });
255
271
  return this.getABIParams({
256
272
  ...params,
257
273
  deployTimeParams: params.deployTimeParams ?? this._deployTimeParams,
@@ -261,7 +277,8 @@ class AppFactory {
261
277
  localByteSlices: this._appSpec.state.schema.local.bytes,
262
278
  localInts: this._appSpec.state.schema.local.ints,
263
279
  },
264
- ...(await this.compile({ ...params, deployTimeParams: params.deployTimeParams ?? this._deployTimeParams })),
280
+ approvalProgram: compiled.approvalProgram,
281
+ clearStateProgram: compiled.clearStateProgram,
265
282
  }, params.onComplete ?? OnApplicationComplete.NoOpOC);
266
283
  },
267
284
  /** Return params for a deployment update ABI call */
@@ -1 +1 @@
1
- {"version":3,"file":"app-factory.js","sources":["../../src/types/app-factory.ts"],"sourcesContent":["import algosdk from 'algosdk'\nimport { AlgorandClientInterface } from './algorand-client-interface'\nimport {\n AppCompilationResult,\n AppReturn,\n DELETABLE_TEMPLATE_NAME,\n SendAppTransactionResult,\n TealTemplateParams,\n UPDATABLE_TEMPLATE_NAME,\n} from './app'\nimport {\n ABIStruct,\n Arc56Contract,\n Arc56Method,\n getABIDecodedValue,\n getABITupleFromABIStruct,\n getArc56Method,\n getArc56ReturnValue,\n} from './app-arc56'\nimport {\n AppClient,\n AppClientBareCallParams,\n AppClientCompilationParams,\n AppClientMethodCallParams,\n AppClientParams,\n AppSourceMaps,\n ResolveAppClientByCreatorAndName,\n} from './app-client'\nimport {\n AppDeployParams,\n DeployAppDeleteMethodCall,\n DeployAppDeleteParams,\n DeployAppUpdateMethodCall,\n DeployAppUpdateParams,\n} from './app-deployer'\nimport { AppSpec } from './app-spec'\nimport { AppCreateMethodCall, AppCreateParams, AppMethodCall, AppMethodCallTransactionArgument, CommonAppCallParams } from './composer'\nimport { Expand } from './expand'\nimport { SendParams } from './transaction'\nimport SourceMap = algosdk.SourceMap\nimport OnApplicationComplete = algosdk.OnApplicationComplete\nimport ABIValue = algosdk.ABIValue\n\n/** Parameters to create an app client */\nexport interface AppFactoryParams {\n /** The ARC-56 or ARC-32 application spec as either:\n * * Parsed JSON ARC-56 `Contract`\n * * Parsed JSON ARC-32 `AppSpec`\n * * Raw JSON string (in either ARC-56 or ARC-32 format)\n */\n appSpec: Arc56Contract | AppSpec | string\n\n /** `AlgorandClient` instance */\n algorand: AlgorandClientInterface\n\n /**\n * Optional override for the app name; used for on-chain metadata and lookups.\n * Defaults to the ARC-32/ARC-56 app spec name.\n */\n appName?: string\n\n /** Optional address to use for the account to use as the default sender for calls. */\n defaultSender?: string\n\n /** The version of app that is / will be deployed; defaults to 1.0 */\n version?: string\n\n /**\n * Whether or not the contract should have deploy-time immutability control set, undefined = ignore.\n * If specified here will get used in calls to `deploy` and `create` calls unless overridden in those calls.\n *\n * Useful if you want to vend multiple contracts from the same factory without specifying this value\n * for each call.\n */\n updatable?: boolean\n\n /**\n * Whether or not the contract should have deploy-time permanence control set, undefined = ignore.\n * If specified here will get used in calls to `deploy` and `create` calls unless overridden in those calls.\n *\n * Useful if you want to vend multiple contracts from the same factory without specifying this value\n * for each call.\n */\n deletable?: boolean\n\n /**\n * Optional deploy-time TEAL template replacement parameters.\n * If specified here will get used in calls to `deploy` and `create` calls unless overridden in those calls.\n *\n * Useful if you want to vend multiple contracts from the same factory without specifying this value\n * for each call.\n */\n deployTimeParams?: TealTemplateParams\n}\n\n/** onComplete parameter for a create app call */\nexport type CreateOnComplete = {\n onComplete?: Exclude<OnApplicationComplete, OnApplicationComplete.ClearStateOC>\n}\n\n/** Specifies a schema used for creating an app */\nexport type CreateSchema = {\n /** The state schema for the app. This is immutable once the app is created. By default uses the ARC32/ARC-56 spec. */\n schema?: {\n /** The number of integers saved in global state. */\n globalInts: number\n /** The number of byte slices saved in global state. */\n globalByteSlices: number\n /** The number of integers saved in local state. */\n localInts: number\n /** The number of byte slices saved in local state. */\n localByteSlices: number\n }\n /** Number of extra pages required for the programs.\n * Defaults to the number needed for the programs in this call if not specified.\n * This is immutable once the app is created. */\n extraProgramPages?: number\n}\n\n/** Params to specify a bare (raw) create call for an app */\nexport type AppFactoryCreateParams = Expand<AppClientBareCallParams & AppClientCompilationParams & CreateOnComplete & CreateSchema>\n\n/** Params to specify a create method call for an app */\nexport type AppFactoryCreateMethodCallParams = Expand<\n AppClientMethodCallParams & AppClientCompilationParams & CreateOnComplete & CreateSchema\n>\n\n/** Params to get an app client by ID from an app factory. */\nexport type AppFactoryAppClientParams = Expand<Omit<AppClientParams, 'algorand' | 'appSpec'>>\n\n/** Params to get an app client by creator address and name from an app factory. */\nexport type AppFactoryResolveAppClientByCreatorAndNameParams = Expand<Omit<ResolveAppClientByCreatorAndName, 'algorand' | 'appSpec'>>\n\n/** Parameters to define a deployment for an `AppFactory` */\nexport type AppFactoryDeployParams = Expand<\n Omit<AppDeployParams, 'createParams' | 'updateParams' | 'deleteParams' | 'metadata'> & {\n /** Create transaction parameters to use if a create needs to be issued as part of deployment */\n createParams?:\n | Expand<AppClientMethodCallParams & CreateOnComplete & CreateSchema>\n | Expand<AppClientBareCallParams & CreateOnComplete & CreateSchema>\n /** Update transaction parameters to use if a create needs to be issued as part of deployment */\n updateParams?: AppClientMethodCallParams | AppClientBareCallParams\n /** Delete transaction parameters to use if a create needs to be issued as part of deployment */\n deleteParams?: AppClientMethodCallParams | AppClientBareCallParams\n /**\n * Whether or not the contract should have deploy-time immutability control set.\n * `undefined` = use AppFactory constructor value if set or base it on the app spec.\n */\n updatable?: boolean\n /**\n * Whether or not the contract should have deploy-time permanence control set.\n * `undefined` = use AppFactory constructor value if set or base it on the app spec.\n */\n deletable?: boolean\n }\n>\n\n/**\n * ARC-56/ARC-32 app factory that, for a given app spec, allows you to create\n * and deploy one or more app instances and to create one or more app clients\n * to interact with those (or other) app instances.\n */\nexport class AppFactory {\n private _appSpec: Arc56Contract\n private _appName: string\n private _algorand: AlgorandClientInterface\n private _version: string\n private _defaultSender?: string\n private _deployTimeParams?: TealTemplateParams\n private _updatable?: boolean\n private _deletable?: boolean\n\n private _approvalSourceMap: SourceMap | undefined\n private _clearSourceMap: SourceMap | undefined\n\n private _paramsMethods: ReturnType<AppFactory['getParamsMethods']>\n\n constructor(params: AppFactoryParams) {\n this._appSpec = AppClient.normaliseAppSpec(params.appSpec)\n this._appName = params.appName ?? this._appSpec.name\n this._algorand = params.algorand\n this._version = params.version ?? '1.0'\n this._defaultSender = params.defaultSender\n this._deployTimeParams = params.deployTimeParams\n this._updatable = params.updatable\n this._deletable = params.deletable\n this._paramsMethods = this.getParamsMethods()\n }\n\n /** Get parameters to create transactions (create and deploy related calls) for the current app.\n *\n * A good mental model for this is that these parameters represent a deferred transaction creation.\n * @example Create a transaction in the future using Algorand Client\n * ```typescript\n * const createAppParams = appFactory.params.create({method: 'create_method', args: [123, 'hello']})\n * // ...\n * await algorand.send.AppCreateMethodCall(createAppParams)\n * ```\n * @example Define a nested transaction as an ABI argument\n * ```typescript\n * const createAppParams = appFactory.params.create({method: 'create_method', args: [123, 'hello']})\n * await appClient.send.call({method: 'my_method', args: [createAppParams]})\n * ```\n */\n get params() {\n return this._paramsMethods\n }\n\n /** Create transactions for the current app */\n readonly createTransaction = {\n /** Create bare (raw) transactions for the current app */\n bare: {\n /** Create a create call transaction, including deploy-time TEAL template replacements and compilation if provided */\n create: async (params?: AppFactoryCreateParams) => {\n return this._algorand.createTransaction.appCreate(await this.params.bare.create(params))\n },\n },\n\n /** Create a create ABI call transaction, including deploy-time TEAL template replacements and compilation if provided */\n create: async (params: AppFactoryCreateMethodCallParams) => {\n return this._algorand.createTransaction.appCreateMethodCall(await this.params.create(params))\n },\n }\n\n /** Send transactions to the current app */\n readonly send = {\n /** Send bare (raw) transactions for the current app */\n bare: {\n create: async (params?: AppFactoryCreateParams & SendParams) => {\n const updatable = params?.updatable ?? this._updatable\n const deletable = params?.deletable ?? this._deletable\n const deployTimeParams = params?.deployTimeParams ?? this._deployTimeParams\n const compiled = await this.compile({ deployTimeParams, updatable, deletable })\n const result = await this.handleCallErrors(async () => ({\n ...(await this._algorand.send.appCreate(await this.params.bare.create({ ...params, updatable, deletable, deployTimeParams }))),\n return: undefined,\n }))\n return {\n appClient: this.getAppClientById({\n appId: result.appId,\n }),\n result: {\n ...result,\n ...(compiled as Partial<AppCompilationResult>),\n },\n }\n },\n },\n\n /**\n * Creates an instance of the app and returns the result of the creation\n * transaction and an app client to interact with that app instance.\n *\n * Performs deploy-time TEAL template placeholder substitutions (if specified).\n * @param params The parameters to create the app\n * @returns The app client and the result of the creation transaction\n */\n create: async (params: AppFactoryCreateMethodCallParams & SendParams) => {\n const updatable = params?.updatable ?? this._updatable\n const deletable = params?.deletable ?? this._deletable\n const deployTimeParams = params?.deployTimeParams ?? this._deployTimeParams\n const compiled = await this.compile({ deployTimeParams, updatable, deletable })\n const result = await this.handleCallErrors(async () =>\n this.parseMethodCallReturn(\n this._algorand.send.appCreateMethodCall(await this.params.create({ ...params, updatable, deletable, deployTimeParams })),\n getArc56Method(params.method, this._appSpec),\n ),\n )\n return {\n appClient: this.getAppClientById({\n appId: result.appId,\n }),\n result: {\n ...result,\n ...(compiled as Partial<AppCompilationResult>),\n },\n }\n },\n }\n\n /**\n * Idempotently deploy (create if not exists, update if changed) an app against the given name for the given creator account, including deploy-time TEAL template placeholder substitutions (if specified).\n *\n * **Note:** When using the return from this function be sure to check `operationPerformed` to get access to various return properties like `transaction`, `confirmation` and `deleteResult`.\n *\n * **Note:** if there is a breaking state schema change to an existing app (and `onSchemaBreak` is set to `'replace'`) the existing app will be deleted and re-created.\n *\n * **Note:** if there is an update (different TEAL code) to an existing app (and `onUpdate` is set to `'replace'`) the existing app will be deleted and re-created.\n * @param params The arguments to control the app deployment\n * @returns The app client and the result of the deployment\n */\n public async deploy(params: AppFactoryDeployParams) {\n const updatable = params.updatable ?? this._updatable ?? this.getDeployTimeControl('updatable')\n const deletable = params.deletable ?? this._deletable ?? this.getDeployTimeControl('deletable')\n const deployTimeParams = params.deployTimeParams ?? this._deployTimeParams\n const compiled = await this.compile({ deployTimeParams, updatable, deletable })\n const deployResult = await this._algorand.appDeployer.deploy({\n ...params,\n createParams: await (params.createParams && 'method' in params.createParams\n ? this.params.create({ ...params.createParams, updatable, deletable, deployTimeParams })\n : this.params.bare.create({ ...params.createParams, updatable, deletable, deployTimeParams })),\n updateParams:\n params.updateParams && 'method' in params.updateParams\n ? this.params.deployUpdate(params.updateParams)\n : this.params.bare.deployUpdate(params.updateParams),\n deleteParams:\n params.deleteParams && 'method' in params.deleteParams\n ? this.params.deployDelete(params.deleteParams)\n : this.params.bare.deployDelete(params.deleteParams),\n metadata: {\n name: this._appName,\n version: this._version,\n updatable,\n deletable,\n },\n })\n const appClient = this.getAppClientById({\n appId: deployResult.appId,\n })\n const result = {\n ...deployResult,\n ...compiled,\n }\n return {\n appClient,\n result: {\n ...result,\n return:\n 'return' in result\n ? result.operationPerformed === 'update'\n ? params.updateParams && 'method' in params.updateParams\n ? getArc56ReturnValue(result.return, getArc56Method(params.updateParams.method, this._appSpec), this._appSpec.structs)\n : undefined\n : params.createParams && 'method' in params.createParams\n ? getArc56ReturnValue(result.return, getArc56Method(params.createParams.method, this._appSpec), this._appSpec.structs)\n : undefined\n : undefined,\n deleteReturn:\n 'deleteReturn' in result && params.deleteParams && 'method' in params.deleteParams\n ? getArc56ReturnValue(result.deleteReturn, getArc56Method(params.deleteParams.method, this._appSpec), this._appSpec.structs)\n : undefined,\n },\n }\n }\n\n /**\n * Returns a new `AppClient` client for an app instance of the given ID.\n *\n * Automatically populates appName, defaultSender and source maps from the factory\n * if not specified in the params.\n * @param params The parameters to create the app client\n * @returns The `AppClient`\n */\n public getAppClientById(params: AppFactoryAppClientParams) {\n return new AppClient({\n ...params,\n algorand: this._algorand,\n appSpec: this._appSpec,\n appName: params.appName ?? this._appName,\n defaultSender: params.defaultSender ?? this._defaultSender,\n approvalSourceMap: params.approvalSourceMap ?? this._approvalSourceMap,\n clearSourceMap: params.clearSourceMap ?? this._clearSourceMap,\n })\n }\n\n /**\n * Returns a new `AppClient` client, resolving the app by creator address and name\n * using AlgoKit app deployment semantics (i.e. looking for the app creation transaction note).\n *\n * Automatically populates appName, defaultSender and source maps from the factory\n * if not specified in the params.\n * @param params The parameters to create the app client\n * @returns The `AppClient`\n */\n public getAppClientByCreatorAndName(params: AppFactoryResolveAppClientByCreatorAndNameParams) {\n return AppClient.fromCreatorAndName({\n ...params,\n algorand: this._algorand,\n appSpec: this._appSpec,\n appName: params.appName ?? this._appName,\n defaultSender: params.defaultSender ?? this._defaultSender,\n approvalSourceMap: params.approvalSourceMap ?? this._approvalSourceMap,\n clearSourceMap: params.clearSourceMap ?? this._clearSourceMap,\n })\n }\n\n /**\n * Takes an error that may include a logic error from a call to the current app and re-exposes the\n * error to include source code information via the source map and ARC-56 spec.\n * @param e The error to parse\n * @param isClearStateProgram Whether or not the code was running the clear state program (defaults to approval program)\n * @returns The new error, or if there was no logic error or source map then the wrapped error with source details\n */\n exposeLogicError(e: Error, isClearStateProgram?: boolean): Error {\n return AppClient.exposeLogicError(e, this._appSpec, {\n isClearStateProgram,\n approvalSourceMap: this._approvalSourceMap,\n clearSourceMap: this._clearSourceMap,\n })\n }\n\n /**\n * Export the current source maps for the app.\n * @returns The source maps\n */\n exportSourceMaps(): AppSourceMaps {\n if (!this._approvalSourceMap || !this._clearSourceMap) {\n throw new Error(\n \"Unable to export source maps; they haven't been loaded into this client - you need to call create, update, or deploy first\",\n )\n }\n\n return {\n approvalSourceMap: this._approvalSourceMap,\n clearSourceMap: this._clearSourceMap,\n }\n }\n\n /**\n * Import source maps for the app.\n * @param sourceMaps The source maps to import\n */\n importSourceMaps(sourceMaps: AppSourceMaps) {\n this._approvalSourceMap = new SourceMap(sourceMaps.approvalSourceMap)\n this._clearSourceMap = new SourceMap(sourceMaps.clearSourceMap)\n }\n\n private getDeployTimeControl(control: 'updatable' | 'deletable'): boolean | undefined {\n const approval = this._appSpec.source?.approval ? Buffer.from(this._appSpec.source.approval, 'base64').toString('utf-8') : undefined\n // variable not present, so unknown control value\n if (!approval || !approval.includes(control === 'updatable' ? UPDATABLE_TEMPLATE_NAME : DELETABLE_TEMPLATE_NAME)) return undefined\n\n // A call is present and configured\n return (\n this._appSpec.bareActions.call.includes(control === 'updatable' ? 'UpdateApplication' : 'DeleteApplication') ||\n Object.values(this._appSpec.methods).some((c) =>\n c.actions.call.includes(control === 'updatable' ? 'UpdateApplication' : 'DeleteApplication'),\n )\n )\n }\n\n private getParamsMethods() {\n return {\n /** Return params for a create ABI call, including deploy-time TEAL template replacements and compilation if provided */\n create: async (params: AppFactoryCreateMethodCallParams) => {\n return this.getABIParams(\n {\n ...params,\n deployTimeParams: params.deployTimeParams ?? this._deployTimeParams,\n schema: params.schema ?? {\n globalByteSlices: this._appSpec.state.schema.global.bytes,\n globalInts: this._appSpec.state.schema.global.ints,\n localByteSlices: this._appSpec.state.schema.local.bytes,\n localInts: this._appSpec.state.schema.local.ints,\n },\n ...(await this.compile({ ...params, deployTimeParams: params.deployTimeParams ?? this._deployTimeParams })),\n },\n params.onComplete ?? OnApplicationComplete.NoOpOC,\n ) satisfies AppCreateMethodCall\n },\n /** Return params for a deployment update ABI call */\n deployUpdate: (params: AppClientMethodCallParams) => {\n return this.getABIParams(params, OnApplicationComplete.UpdateApplicationOC) satisfies DeployAppUpdateMethodCall\n },\n /** Return params for a deployment delete ABI call */\n deployDelete: (params: AppClientMethodCallParams) => {\n return this.getABIParams(params, OnApplicationComplete.DeleteApplicationOC) satisfies DeployAppDeleteMethodCall\n },\n bare: {\n /** Return params for a create bare call, including deploy-time TEAL template replacements and compilation if provided */\n create: async (params?: AppFactoryCreateParams) => {\n return this.getBareParams(\n {\n ...params,\n deployTimeParams: params?.deployTimeParams ?? this._deployTimeParams,\n schema: params?.schema ?? {\n globalByteSlices: this._appSpec.state.schema.global.bytes,\n globalInts: this._appSpec.state.schema.global.ints,\n localByteSlices: this._appSpec.state.schema.local.bytes,\n localInts: this._appSpec.state.schema.local.ints,\n },\n ...(await this.compile({ ...params, deployTimeParams: params?.deployTimeParams ?? this._deployTimeParams })),\n },\n params?.onComplete ?? OnApplicationComplete.NoOpOC,\n ) satisfies AppCreateParams\n },\n /** Return params for a deployment update bare call */\n deployUpdate: (params?: AppClientBareCallParams) => {\n return this.getBareParams(params, OnApplicationComplete.UpdateApplicationOC) satisfies DeployAppUpdateParams\n },\n /** Return params for a deployment delete bare call */\n deployDelete: (params?: AppClientBareCallParams) => {\n return this.getBareParams(params, OnApplicationComplete.DeleteApplicationOC) satisfies DeployAppDeleteParams\n },\n },\n }\n }\n\n /** Make the given call and catch any errors, augmenting with debugging information before re-throwing. */\n private async handleCallErrors<TResult>(call: () => Promise<TResult>) {\n try {\n return await call()\n } catch (e) {\n throw this.exposeLogicError(e as Error)\n }\n }\n\n /**\n * Compiles the approval and clear state programs (if TEAL templates provided),\n * performing any provided deploy-time parameter replacement and stores\n * the source maps.\n *\n * If no TEAL templates provided it will use any byte code provided in the app spec.\n *\n * Will store any generated source maps for later use in debugging.\n */\n public async compile(compilation?: AppClientCompilationParams) {\n const result = await AppClient.compile(this._appSpec, this._algorand.app, compilation)\n\n if (result.compiledApproval) {\n this._approvalSourceMap = result.compiledApproval.sourceMap\n }\n if (result.compiledClear) {\n this._clearSourceMap = result.compiledClear.sourceMap\n }\n\n return result\n }\n\n private getBareParams<TParams extends { sender?: string } | undefined, TOnComplete extends OnApplicationComplete>(\n params: TParams,\n onComplete: TOnComplete,\n ) {\n return {\n ...params,\n sender: this.getSender(params?.sender),\n onComplete,\n }\n }\n\n private getABIParams<\n TParams extends { method: string; sender?: string; args?: AppClientMethodCallParams['args'] },\n TOnComplete extends OnApplicationComplete,\n >(params: TParams, onComplete: TOnComplete) {\n return {\n ...params,\n sender: this.getSender(params.sender),\n method: getArc56Method(params.method, this._appSpec),\n args: this.getCreateABIArgsWithDefaultValues(params.method, params.args),\n onComplete,\n }\n }\n\n private getCreateABIArgsWithDefaultValues(\n methodNameOrSignature: string,\n args: AppClientMethodCallParams['args'] | undefined,\n ): AppMethodCall<CommonAppCallParams>['args'] {\n const m = getArc56Method(methodNameOrSignature, this._appSpec)\n return args?.map((a, i) => {\n const arg = m.args[i]\n if (a !== undefined) {\n // If a struct then convert to tuple for the underlying call\n return arg.struct && typeof a === 'object' && !Array.isArray(a)\n ? getABITupleFromABIStruct(a as ABIStruct, this._appSpec.structs[arg.struct], this._appSpec.structs)\n : (a as ABIValue | AppMethodCallTransactionArgument)\n }\n const defaultValue = arg.defaultValue\n if (defaultValue) {\n switch (defaultValue.source) {\n case 'literal':\n if (typeof defaultValue.data === 'number') return defaultValue.data\n return getABIDecodedValue(Buffer.from(defaultValue.data, 'base64'), m.method.args[i].type, this._appSpec.structs) as ABIValue\n default:\n throw new Error(`Can't provide default value for ${defaultValue.source} for a contract creation call`)\n }\n }\n throw new Error(`No value provided for required argument ${arg.name ?? `arg${i + 1}`} in call to method ${m.name}`)\n })\n }\n\n /** Returns the sender for a call, using the `defaultSender`\n * if none provided and throws an error if neither provided */\n private getSender(sender: string | undefined): string {\n if (!sender && !this._defaultSender) {\n throw new Error(`No sender provided and no default sender present in app client for call to app ${this._appName}`)\n }\n return sender ?? this._defaultSender!\n }\n\n /**\n * Checks for decode errors on the SendAppTransactionResult and maps the return value to the specified type\n * on the ARC-56 method.\n *\n * If the return type is a struct then the struct will be returned.\n *\n * @param result The SendAppTransactionResult to be mapped\n * @param method The method that was called\n * @returns The smart contract response with an updated return value\n */\n async parseMethodCallReturn<\n TReturn extends Uint8Array | ABIValue | ABIStruct | undefined,\n TResult extends SendAppTransactionResult = SendAppTransactionResult,\n >(result: Promise<TResult> | TResult, method: Arc56Method): Promise<Omit<TResult, 'return'> & AppReturn<TReturn>> {\n const resultValue = await result\n return { ...resultValue, return: getArc56ReturnValue(resultValue.return, method, this._appSpec.structs) }\n }\n}\n"],"names":["getArc56Method","AppClient","getArc56ReturnValue","UPDATABLE_TEMPLATE_NAME","DELETABLE_TEMPLATE_NAME","getABITupleFromABIStruct","getABIDecodedValue"],"mappings":"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"}
1
+ {"version":3,"file":"app-factory.js","sources":["../../src/types/app-factory.ts"],"sourcesContent":["import algosdk from 'algosdk'\nimport { AlgorandClientInterface } from './algorand-client-interface'\nimport {\n AppCompilationResult,\n AppReturn,\n DELETABLE_TEMPLATE_NAME,\n SendAppTransactionResult,\n TealTemplateParams,\n UPDATABLE_TEMPLATE_NAME,\n} from './app'\nimport {\n ABIStruct,\n Arc56Contract,\n Arc56Method,\n getABIDecodedValue,\n getABITupleFromABIStruct,\n getArc56Method,\n getArc56ReturnValue,\n} from './app-arc56'\nimport {\n AppClient,\n AppClientBareCallParams,\n AppClientCompilationParams,\n AppClientMethodCallParams,\n AppClientParams,\n AppSourceMaps,\n ResolveAppClientByCreatorAndName,\n} from './app-client'\nimport {\n AppDeployParams,\n DeployAppDeleteMethodCall,\n DeployAppDeleteParams,\n DeployAppUpdateMethodCall,\n DeployAppUpdateParams,\n} from './app-deployer'\nimport { AppSpec } from './app-spec'\nimport { AppCreateMethodCall, AppCreateParams, AppMethodCall, AppMethodCallTransactionArgument, CommonAppCallParams } from './composer'\nimport { Expand } from './expand'\nimport { SendParams } from './transaction'\nimport SourceMap = algosdk.SourceMap\nimport OnApplicationComplete = algosdk.OnApplicationComplete\nimport ABIValue = algosdk.ABIValue\nimport TransactionSigner = algosdk.TransactionSigner\n\n/** Parameters to create an app client */\nexport interface AppFactoryParams {\n /** The ARC-56 or ARC-32 application spec as either:\n * * Parsed JSON ARC-56 `Contract`\n * * Parsed JSON ARC-32 `AppSpec`\n * * Raw JSON string (in either ARC-56 or ARC-32 format)\n */\n appSpec: Arc56Contract | AppSpec | string\n\n /** `AlgorandClient` instance */\n algorand: AlgorandClientInterface\n\n /**\n * Optional override for the app name; used for on-chain metadata and lookups.\n * Defaults to the ARC-32/ARC-56 app spec name.\n */\n appName?: string\n\n /** Optional address to use for the account to use as the default sender for calls. */\n defaultSender?: string\n\n /** Optional signer to use as the default signer for default sender calls (if not specified then the signer will be resolved from `AlgorandClient`). */\n defaultSigner?: TransactionSigner\n\n /** The version of app that is / will be deployed; defaults to 1.0 */\n version?: string\n\n /**\n * Whether or not the contract should have deploy-time immutability control set, undefined = ignore.\n * If specified here will get used in calls to `deploy` and `create` calls unless overridden in those calls.\n *\n * Useful if you want to vend multiple contracts from the same factory without specifying this value\n * for each call.\n */\n updatable?: boolean\n\n /**\n * Whether or not the contract should have deploy-time permanence control set, undefined = ignore.\n * If specified here will get used in calls to `deploy` and `create` calls unless overridden in those calls.\n *\n * Useful if you want to vend multiple contracts from the same factory without specifying this value\n * for each call.\n */\n deletable?: boolean\n\n /**\n * Optional deploy-time TEAL template replacement parameters.\n * If specified here will get used in calls to `deploy` and `create` calls unless overridden in those calls.\n *\n * Useful if you want to vend multiple contracts from the same factory without specifying this value\n * for each call.\n */\n deployTimeParams?: TealTemplateParams\n}\n\n/** onComplete parameter for a create app call */\nexport type CreateOnComplete = {\n onComplete?: Exclude<OnApplicationComplete, OnApplicationComplete.ClearStateOC>\n}\n\n/** Specifies a schema used for creating an app */\nexport type CreateSchema = {\n /** The state schema for the app. This is immutable once the app is created. By default uses the ARC32/ARC-56 spec. */\n schema?: {\n /** The number of integers saved in global state. */\n globalInts: number\n /** The number of byte slices saved in global state. */\n globalByteSlices: number\n /** The number of integers saved in local state. */\n localInts: number\n /** The number of byte slices saved in local state. */\n localByteSlices: number\n }\n /** Number of extra pages required for the programs.\n * Defaults to the number needed for the programs in this call if not specified.\n * This is immutable once the app is created. */\n extraProgramPages?: number\n}\n\n/** Params to specify a bare (raw) create call for an app */\nexport type AppFactoryCreateParams = Expand<AppClientBareCallParams & AppClientCompilationParams & CreateOnComplete & CreateSchema>\n\n/** Params to specify a create method call for an app */\nexport type AppFactoryCreateMethodCallParams = Expand<\n AppClientMethodCallParams & AppClientCompilationParams & CreateOnComplete & CreateSchema\n>\n\n/** Params to get an app client by ID from an app factory. */\nexport type AppFactoryAppClientParams = Expand<Omit<AppClientParams, 'algorand' | 'appSpec'>>\n\n/** Params to get an app client by creator address and name from an app factory. */\nexport type AppFactoryResolveAppClientByCreatorAndNameParams = Expand<Omit<ResolveAppClientByCreatorAndName, 'algorand' | 'appSpec'>>\n\n/** Parameters to define a deployment for an `AppFactory` */\nexport type AppFactoryDeployParams = Expand<\n Omit<AppDeployParams, 'createParams' | 'updateParams' | 'deleteParams' | 'metadata'> & {\n /** Create transaction parameters to use if a create needs to be issued as part of deployment */\n createParams?:\n | Expand<AppClientMethodCallParams & CreateOnComplete & CreateSchema>\n | Expand<AppClientBareCallParams & CreateOnComplete & CreateSchema>\n /** Update transaction parameters to use if a create needs to be issued as part of deployment */\n updateParams?: AppClientMethodCallParams | AppClientBareCallParams\n /** Delete transaction parameters to use if a create needs to be issued as part of deployment */\n deleteParams?: AppClientMethodCallParams | AppClientBareCallParams\n /**\n * Whether or not the contract should have deploy-time immutability control set.\n * `undefined` = use AppFactory constructor value if set or base it on the app spec.\n */\n updatable?: boolean\n /**\n * Whether or not the contract should have deploy-time permanence control set.\n * `undefined` = use AppFactory constructor value if set or base it on the app spec.\n */\n deletable?: boolean\n /** Override the app name for this deployment */\n appName?: string\n }\n>\n\n/**\n * ARC-56/ARC-32 app factory that, for a given app spec, allows you to create\n * and deploy one or more app instances and to create one or more app clients\n * to interact with those (or other) app instances.\n */\nexport class AppFactory {\n private _appSpec: Arc56Contract\n private _appName: string\n private _algorand: AlgorandClientInterface\n private _version: string\n private _defaultSender?: string\n private _defaultSigner?: TransactionSigner\n private _deployTimeParams?: TealTemplateParams\n private _updatable?: boolean\n private _deletable?: boolean\n\n private _approvalSourceMap: SourceMap | undefined\n private _clearSourceMap: SourceMap | undefined\n\n private _paramsMethods: ReturnType<AppFactory['getParamsMethods']>\n\n constructor(params: AppFactoryParams) {\n this._appSpec = AppClient.normaliseAppSpec(params.appSpec)\n this._appName = params.appName ?? this._appSpec.name\n this._algorand = params.algorand\n this._version = params.version ?? '1.0'\n this._defaultSender = params.defaultSender\n this._defaultSigner = params.defaultSigner\n this._deployTimeParams = params.deployTimeParams\n this._updatable = params.updatable\n this._deletable = params.deletable\n this._paramsMethods = this.getParamsMethods()\n }\n\n /** The name of the app (from the ARC-32 / ARC-56 app spec or override). */\n public get appName() {\n return this._appName\n }\n\n /** The ARC-56 app spec being used */\n get appSpec() {\n return this._appSpec\n }\n\n /** Return the algorand client this factory is using. */\n get algorand() {\n return this._algorand\n }\n\n /** Get parameters to create transactions (create and deploy related calls) for the current app.\n *\n * A good mental model for this is that these parameters represent a deferred transaction creation.\n * @example Create a transaction in the future using Algorand Client\n * ```typescript\n * const createAppParams = appFactory.params.create({method: 'create_method', args: [123, 'hello']})\n * // ...\n * await algorand.send.AppCreateMethodCall(createAppParams)\n * ```\n * @example Define a nested transaction as an ABI argument\n * ```typescript\n * const createAppParams = appFactory.params.create({method: 'create_method', args: [123, 'hello']})\n * await appClient.send.call({method: 'my_method', args: [createAppParams]})\n * ```\n */\n get params() {\n return this._paramsMethods\n }\n\n /** Create transactions for the current app */\n readonly createTransaction = {\n /** Create bare (raw) transactions for the current app */\n bare: {\n /** Create a create call transaction, including deploy-time TEAL template replacements and compilation if provided */\n create: async (params?: AppFactoryCreateParams) => {\n return this._algorand.createTransaction.appCreate(await this.params.bare.create(params))\n },\n },\n\n /** Create a create ABI call transaction, including deploy-time TEAL template replacements and compilation if provided */\n create: async (params: AppFactoryCreateMethodCallParams) => {\n return this._algorand.createTransaction.appCreateMethodCall(await this.params.create(params))\n },\n }\n\n /** Send transactions to the current app */\n readonly send = {\n /** Send bare (raw) transactions for the current app */\n bare: {\n create: async (params?: AppFactoryCreateParams & SendParams) => {\n const updatable = params?.updatable ?? this._updatable\n const deletable = params?.deletable ?? this._deletable\n const deployTimeParams = params?.deployTimeParams ?? this._deployTimeParams\n const compiled = await this.compile({ deployTimeParams, updatable, deletable })\n const result = await this.handleCallErrors(async () => ({\n ...(await this._algorand.send.appCreate(await this.params.bare.create({ ...params, updatable, deletable, deployTimeParams }))),\n return: undefined,\n }))\n return {\n appClient: this.getAppClientById({\n appId: result.appId,\n }),\n result: {\n ...result,\n ...(compiled as Partial<AppCompilationResult>),\n },\n }\n },\n },\n\n /**\n * Creates an instance of the app and returns the result of the creation\n * transaction and an app client to interact with that app instance.\n *\n * Performs deploy-time TEAL template placeholder substitutions (if specified).\n * @param params The parameters to create the app\n * @returns The app client and the result of the creation transaction\n */\n create: async (params: AppFactoryCreateMethodCallParams & SendParams) => {\n const updatable = params?.updatable ?? this._updatable\n const deletable = params?.deletable ?? this._deletable\n const deployTimeParams = params?.deployTimeParams ?? this._deployTimeParams\n const compiled = await this.compile({ deployTimeParams, updatable, deletable })\n const result = await this.handleCallErrors(async () =>\n this.parseMethodCallReturn(\n this._algorand.send.appCreateMethodCall(await this.params.create({ ...params, updatable, deletable, deployTimeParams })),\n getArc56Method(params.method, this._appSpec),\n ),\n )\n return {\n appClient: this.getAppClientById({\n appId: result.appId,\n }),\n result: {\n ...result,\n ...(compiled as Partial<AppCompilationResult>),\n },\n }\n },\n }\n\n /**\n * Idempotently deploy (create if not exists, update if changed) an app against the given name for the given creator account, including deploy-time TEAL template placeholder substitutions (if specified).\n *\n * **Note:** When using the return from this function be sure to check `operationPerformed` to get access to various return properties like `transaction`, `confirmation` and `deleteResult`.\n *\n * **Note:** if there is a breaking state schema change to an existing app (and `onSchemaBreak` is set to `'replace'`) the existing app will be deleted and re-created.\n *\n * **Note:** if there is an update (different TEAL code) to an existing app (and `onUpdate` is set to `'replace'`) the existing app will be deleted and re-created.\n * @param params The arguments to control the app deployment\n * @returns The app client and the result of the deployment\n */\n public async deploy(params: AppFactoryDeployParams) {\n const updatable = params.updatable ?? this._updatable ?? this.getDeployTimeControl('updatable')\n const deletable = params.deletable ?? this._deletable ?? this.getDeployTimeControl('deletable')\n const deployTimeParams = params.deployTimeParams ?? this._deployTimeParams\n const compiled = await this.compile({ deployTimeParams, updatable, deletable })\n const deployResult = await this._algorand.appDeployer.deploy({\n ...params,\n createParams: await (params.createParams && 'method' in params.createParams\n ? this.params.create({ ...params.createParams, updatable, deletable, deployTimeParams })\n : this.params.bare.create({ ...params.createParams, updatable, deletable, deployTimeParams })),\n updateParams:\n params.updateParams && 'method' in params.updateParams\n ? this.params.deployUpdate(params.updateParams)\n : this.params.bare.deployUpdate(params.updateParams),\n deleteParams:\n params.deleteParams && 'method' in params.deleteParams\n ? this.params.deployDelete(params.deleteParams)\n : this.params.bare.deployDelete(params.deleteParams),\n metadata: {\n name: params.appName ?? this._appName,\n version: this._version,\n updatable,\n deletable,\n },\n })\n const appClient = this.getAppClientById({\n appId: deployResult.appId,\n appName: params.appName,\n })\n const result = {\n ...deployResult,\n ...(compiled as Partial<AppCompilationResult>),\n }\n return {\n appClient,\n result: {\n ...result,\n return:\n 'return' in result\n ? result.operationPerformed === 'update'\n ? params.updateParams && 'method' in params.updateParams\n ? getArc56ReturnValue(result.return, getArc56Method(params.updateParams.method, this._appSpec), this._appSpec.structs)\n : undefined\n : params.createParams && 'method' in params.createParams\n ? getArc56ReturnValue(result.return, getArc56Method(params.createParams.method, this._appSpec), this._appSpec.structs)\n : undefined\n : undefined,\n deleteReturn:\n 'deleteReturn' in result && params.deleteParams && 'method' in params.deleteParams\n ? getArc56ReturnValue(result.deleteReturn, getArc56Method(params.deleteParams.method, this._appSpec), this._appSpec.structs)\n : undefined,\n },\n }\n }\n\n /**\n * Returns a new `AppClient` client for an app instance of the given ID.\n *\n * Automatically populates appName, defaultSender and source maps from the factory\n * if not specified in the params.\n * @param params The parameters to create the app client\n * @returns The `AppClient`\n */\n public getAppClientById(params: AppFactoryAppClientParams) {\n return new AppClient({\n ...params,\n algorand: this._algorand,\n appSpec: this._appSpec,\n appName: params.appName ?? this._appName,\n defaultSender: params.defaultSender ?? this._defaultSender,\n defaultSigner: params.defaultSigner ?? this._defaultSigner,\n approvalSourceMap: params.approvalSourceMap ?? this._approvalSourceMap,\n clearSourceMap: params.clearSourceMap ?? this._clearSourceMap,\n })\n }\n\n /**\n * Returns a new `AppClient` client, resolving the app by creator address and name\n * using AlgoKit app deployment semantics (i.e. looking for the app creation transaction note).\n *\n * Automatically populates appName, defaultSender and source maps from the factory\n * if not specified in the params.\n * @param params The parameters to create the app client\n * @returns The `AppClient`\n */\n public getAppClientByCreatorAndName(params: AppFactoryResolveAppClientByCreatorAndNameParams) {\n return AppClient.fromCreatorAndName({\n ...params,\n algorand: this._algorand,\n appSpec: this._appSpec,\n appName: params.appName ?? this._appName,\n defaultSender: params.defaultSender ?? this._defaultSender,\n approvalSourceMap: params.approvalSourceMap ?? this._approvalSourceMap,\n clearSourceMap: params.clearSourceMap ?? this._clearSourceMap,\n })\n }\n\n /**\n * Takes an error that may include a logic error from a call to the current app and re-exposes the\n * error to include source code information via the source map and ARC-56 spec.\n * @param e The error to parse\n * @param isClearStateProgram Whether or not the code was running the clear state program (defaults to approval program)\n * @returns The new error, or if there was no logic error or source map then the wrapped error with source details\n */\n exposeLogicError(e: Error, isClearStateProgram?: boolean): Error {\n return AppClient.exposeLogicError(e, this._appSpec, {\n isClearStateProgram,\n approvalSourceMap: this._approvalSourceMap,\n clearSourceMap: this._clearSourceMap,\n })\n }\n\n /**\n * Export the current source maps for the app.\n * @returns The source maps\n */\n exportSourceMaps(): AppSourceMaps {\n if (!this._approvalSourceMap || !this._clearSourceMap) {\n throw new Error(\n \"Unable to export source maps; they haven't been loaded into this client - you need to call create, update, or deploy first\",\n )\n }\n\n return {\n approvalSourceMap: this._approvalSourceMap,\n clearSourceMap: this._clearSourceMap,\n }\n }\n\n /**\n * Import source maps for the app.\n * @param sourceMaps The source maps to import\n */\n importSourceMaps(sourceMaps: AppSourceMaps) {\n this._approvalSourceMap = new SourceMap(sourceMaps.approvalSourceMap)\n this._clearSourceMap = new SourceMap(sourceMaps.clearSourceMap)\n }\n\n private getDeployTimeControl(control: 'updatable' | 'deletable'): boolean | undefined {\n const approval = this._appSpec.source?.approval ? Buffer.from(this._appSpec.source.approval, 'base64').toString('utf-8') : undefined\n // variable not present, so unknown control value\n if (!approval || !approval.includes(control === 'updatable' ? UPDATABLE_TEMPLATE_NAME : DELETABLE_TEMPLATE_NAME)) return undefined\n\n // A call is present and configured\n return (\n this._appSpec.bareActions.call.includes(control === 'updatable' ? 'UpdateApplication' : 'DeleteApplication') ||\n Object.values(this._appSpec.methods).some((c) =>\n c.actions.call.includes(control === 'updatable' ? 'UpdateApplication' : 'DeleteApplication'),\n )\n )\n }\n\n private getParamsMethods() {\n return {\n /** Return params for a create ABI call, including deploy-time TEAL template replacements and compilation if provided */\n create: async (params: AppFactoryCreateMethodCallParams) => {\n const compiled = await this.compile({ ...params, deployTimeParams: params.deployTimeParams ?? this._deployTimeParams })\n return this.getABIParams(\n {\n ...params,\n deployTimeParams: params.deployTimeParams ?? this._deployTimeParams,\n schema: params.schema ?? {\n globalByteSlices: this._appSpec.state.schema.global.bytes,\n globalInts: this._appSpec.state.schema.global.ints,\n localByteSlices: this._appSpec.state.schema.local.bytes,\n localInts: this._appSpec.state.schema.local.ints,\n },\n approvalProgram: compiled.approvalProgram,\n clearStateProgram: compiled.clearStateProgram,\n },\n params.onComplete ?? OnApplicationComplete.NoOpOC,\n ) satisfies AppCreateMethodCall\n },\n /** Return params for a deployment update ABI call */\n deployUpdate: (params: AppClientMethodCallParams) => {\n return this.getABIParams(params, OnApplicationComplete.UpdateApplicationOC) satisfies DeployAppUpdateMethodCall\n },\n /** Return params for a deployment delete ABI call */\n deployDelete: (params: AppClientMethodCallParams) => {\n return this.getABIParams(params, OnApplicationComplete.DeleteApplicationOC) satisfies DeployAppDeleteMethodCall\n },\n bare: {\n /** Return params for a create bare call, including deploy-time TEAL template replacements and compilation if provided */\n create: async (params?: AppFactoryCreateParams) => {\n return this.getBareParams(\n {\n ...params,\n deployTimeParams: params?.deployTimeParams ?? this._deployTimeParams,\n schema: params?.schema ?? {\n globalByteSlices: this._appSpec.state.schema.global.bytes,\n globalInts: this._appSpec.state.schema.global.ints,\n localByteSlices: this._appSpec.state.schema.local.bytes,\n localInts: this._appSpec.state.schema.local.ints,\n },\n ...(await this.compile({ ...params, deployTimeParams: params?.deployTimeParams ?? this._deployTimeParams })),\n },\n params?.onComplete ?? OnApplicationComplete.NoOpOC,\n ) satisfies AppCreateParams\n },\n /** Return params for a deployment update bare call */\n deployUpdate: (params?: AppClientBareCallParams) => {\n return this.getBareParams(params, OnApplicationComplete.UpdateApplicationOC) satisfies DeployAppUpdateParams\n },\n /** Return params for a deployment delete bare call */\n deployDelete: (params?: AppClientBareCallParams) => {\n return this.getBareParams(params, OnApplicationComplete.DeleteApplicationOC) satisfies DeployAppDeleteParams\n },\n },\n }\n }\n\n /** Make the given call and catch any errors, augmenting with debugging information before re-throwing. */\n private async handleCallErrors<TResult>(call: () => Promise<TResult>) {\n try {\n return await call()\n } catch (e) {\n throw this.exposeLogicError(e as Error)\n }\n }\n\n /**\n * Compiles the approval and clear state programs (if TEAL templates provided),\n * performing any provided deploy-time parameter replacement and stores\n * the source maps.\n *\n * If no TEAL templates provided it will use any byte code provided in the app spec.\n *\n * Will store any generated source maps for later use in debugging.\n */\n public async compile(compilation?: AppClientCompilationParams) {\n const result = await AppClient.compile(this._appSpec, this._algorand.app, compilation)\n\n if (result.compiledApproval) {\n this._approvalSourceMap = result.compiledApproval.sourceMap\n }\n if (result.compiledClear) {\n this._clearSourceMap = result.compiledClear.sourceMap\n }\n\n return result\n }\n\n private getBareParams<TParams extends { sender?: string } | undefined, TOnComplete extends OnApplicationComplete>(\n params: TParams,\n onComplete: TOnComplete,\n ) {\n return {\n ...params,\n sender: this.getSender(params?.sender),\n onComplete,\n }\n }\n\n private getABIParams<\n TParams extends { method: string; sender?: string; args?: AppClientMethodCallParams['args'] },\n TOnComplete extends OnApplicationComplete,\n >(params: TParams, onComplete: TOnComplete) {\n return {\n ...params,\n sender: this.getSender(params.sender),\n method: getArc56Method(params.method, this._appSpec),\n args: this.getCreateABIArgsWithDefaultValues(params.method, params.args),\n onComplete,\n }\n }\n\n private getCreateABIArgsWithDefaultValues(\n methodNameOrSignature: string,\n args: AppClientMethodCallParams['args'] | undefined,\n ): AppMethodCall<CommonAppCallParams>['args'] {\n const m = getArc56Method(methodNameOrSignature, this._appSpec)\n return args?.map((a, i) => {\n const arg = m.args[i]\n if (a !== undefined) {\n // If a struct then convert to tuple for the underlying call\n return arg.struct && typeof a === 'object' && !Array.isArray(a)\n ? getABITupleFromABIStruct(a as ABIStruct, this._appSpec.structs[arg.struct], this._appSpec.structs)\n : (a as ABIValue | AppMethodCallTransactionArgument)\n }\n const defaultValue = arg.defaultValue\n if (defaultValue) {\n switch (defaultValue.source) {\n case 'literal':\n if (typeof defaultValue.data === 'number') return defaultValue.data\n return getABIDecodedValue(Buffer.from(defaultValue.data, 'base64'), m.method.args[i].type, this._appSpec.structs) as ABIValue\n default:\n throw new Error(`Can't provide default value for ${defaultValue.source} for a contract creation call`)\n }\n }\n throw new Error(`No value provided for required argument ${arg.name ?? `arg${i + 1}`} in call to method ${m.name}`)\n })\n }\n\n /** Returns the sender for a call, using the `defaultSender`\n * if none provided and throws an error if neither provided */\n private getSender(sender: string | undefined): string {\n if (!sender && !this._defaultSender) {\n throw new Error(`No sender provided and no default sender present in app client for call to app ${this._appName}`)\n }\n return sender ?? this._defaultSender!\n }\n\n /**\n * Checks for decode errors on the SendAppTransactionResult and maps the return value to the specified type\n * on the ARC-56 method.\n *\n * If the return type is a struct then the struct will be returned.\n *\n * @param result The SendAppTransactionResult to be mapped\n * @param method The method that was called\n * @returns The smart contract response with an updated return value\n */\n async parseMethodCallReturn<\n TReturn extends Uint8Array | ABIValue | ABIStruct | undefined,\n TResult extends SendAppTransactionResult = SendAppTransactionResult,\n >(result: Promise<TResult> | TResult, method: Arc56Method): Promise<Omit<TResult, 'return'> & AppReturn<TReturn>> {\n const resultValue = await result\n return { ...resultValue, return: getArc56ReturnValue(resultValue.return, method, this._appSpec.structs) }\n }\n}\n"],"names":["getArc56Method","AppClient","getArc56ReturnValue","UPDATABLE_TEMPLATE_NAME","DELETABLE_TEMPLATE_NAME","getABITupleFromABIStruct","getABIDecodedValue"],"mappings":"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"}