abel-ghost-sdk 0.0.1 → 0.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -42,6 +42,12 @@ export type AssetTinyLabels = {
42
42
  * Converts the ABI tuple representation of a AssetTinyLabels to the struct representation
43
43
  */
44
44
  export declare function AssetTinyLabelsFromTuple(abiTuple: [string, string, number, string[]]): AssetTinyLabels;
45
+ /**
46
+ * Deploy-time template variables
47
+ */
48
+ export type TemplateVariables = {
49
+ UPDATABLE: bigint;
50
+ };
45
51
  /**
46
52
  * The argument types for the AbelReader contract
47
53
  */
@@ -54,12 +60,16 @@ export type AbelReaderArgs = {
54
60
  assetIds: bigint[] | number[];
55
61
  abelAppId: bigint | number;
56
62
  };
63
+ 'get_asset_labels(asset)string[]': {
64
+ assetId: bigint;
65
+ };
57
66
  };
58
67
  /**
59
68
  * The tuple representation of the arguments for each method
60
69
  */
61
70
  tuple: {
62
71
  'getAssetsTiny(uint64[],uint64)(string,string,uint8,string[])': [assetIds: bigint[] | number[], abelAppId: bigint | number];
72
+ 'get_asset_labels(asset)string[]': [assetId: bigint];
63
73
  };
64
74
  };
65
75
  /**
@@ -67,6 +77,7 @@ export type AbelReaderArgs = {
67
77
  */
68
78
  export type AbelReaderReturns = {
69
79
  'getAssetsTiny(uint64[],uint64)(string,string,uint8,string[])': AssetTinyLabels;
80
+ 'get_asset_labels(asset)string[]': string[];
70
81
  };
71
82
  /**
72
83
  * Defines the types of available calls and state of the AbelReader smart contract.
@@ -79,6 +90,10 @@ export type AbelReaderTypes = {
79
90
  argsObj: AbelReaderArgs['obj']['getAssetsTiny(uint64[],uint64)(string,string,uint8,string[])'];
80
91
  argsTuple: AbelReaderArgs['tuple']['getAssetsTiny(uint64[],uint64)(string,string,uint8,string[])'];
81
92
  returns: AbelReaderReturns['getAssetsTiny(uint64[],uint64)(string,string,uint8,string[])'];
93
+ }> & Record<'get_asset_labels(asset)string[]' | 'get_asset_labels', {
94
+ argsObj: AbelReaderArgs['obj']['get_asset_labels(asset)string[]'];
95
+ argsTuple: AbelReaderArgs['tuple']['get_asset_labels(asset)string[]'];
96
+ returns: AbelReaderReturns['get_asset_labels(asset)string[]'];
82
97
  }>;
83
98
  };
84
99
  /**
@@ -115,7 +130,27 @@ export type AbelReaderCreateCallParams = Expand<CallParams<AbelReaderArgs['obj']
115
130
  method: 'getAssetsTiny(uint64[],uint64)(string,string,uint8,string[])';
116
131
  } & {
117
132
  onComplete?: OnApplicationComplete.NoOpOC;
133
+ } & CreateSchema> | Expand<CallParams<AbelReaderArgs['obj']['get_asset_labels(asset)string[]'] | AbelReaderArgs['tuple']['get_asset_labels(asset)string[]']> & {
134
+ method: 'get_asset_labels';
135
+ } & {
136
+ onComplete?: OnApplicationComplete.NoOpOC;
137
+ } & CreateSchema> | Expand<CallParams<AbelReaderArgs['obj']['get_asset_labels(asset)string[]'] | AbelReaderArgs['tuple']['get_asset_labels(asset)string[]']> & {
138
+ method: 'get_asset_labels(asset)string[]';
139
+ } & {
140
+ onComplete?: OnApplicationComplete.NoOpOC;
118
141
  } & CreateSchema>;
142
+ /**
143
+ * Defines supported update method params for this smart contract
144
+ */
145
+ export type AbelReaderUpdateCallParams = Expand<AppClientBareCallParams> & {
146
+ method?: never;
147
+ };
148
+ /**
149
+ * Defines supported delete method params for this smart contract
150
+ */
151
+ export type AbelReaderDeleteCallParams = Expand<AppClientBareCallParams> & {
152
+ method?: never;
153
+ };
119
154
  /**
120
155
  * Defines arguments required for the deploy method.
121
156
  */
@@ -124,6 +159,14 @@ export type AbelReaderDeployParams = Expand<Omit<AppFactoryDeployParams, 'create
124
159
  * Create transaction parameters to use if a create needs to be issued as part of deployment; use `method` to define ABI call (if available) or leave out for a bare call (if available)
125
160
  */
126
161
  createParams?: AbelReaderCreateCallParams;
162
+ /**
163
+ * Update transaction parameters to use if a create needs to be issued as part of deployment; use `method` to define ABI call (if available) or leave out for a bare call (if available)
164
+ */
165
+ updateParams?: AbelReaderUpdateCallParams;
166
+ /**
167
+ * Delete transaction parameters to use if a create needs to be issued as part of deployment; use `method` to define ABI call (if available) or leave out for a bare call (if available)
168
+ */
169
+ deleteParams?: AbelReaderDeleteCallParams;
127
170
  }>;
128
171
  /**
129
172
  * Exposes methods for constructing `AppClient` params objects for ABI calls to the AbelReader smart contract
@@ -170,6 +213,17 @@ export declare abstract class AbelReaderParamsFactory {
170
213
  }): AppClientMethodCallParams & AppClientCompilationParams & {
171
214
  onComplete?: OnApplicationComplete.NoOpOC;
172
215
  };
216
+ /**
217
+ * Constructs create ABI call params for the AbelReader smart contract using the get_asset_labels(asset)string[] ABI method
218
+ *
219
+ * @param params Parameters for the call
220
+ * @returns An `AppClientMethodCallParams` object for the call
221
+ */
222
+ getAssetLabels(params: CallParams<AbelReaderArgs['obj']['get_asset_labels(asset)string[]'] | AbelReaderArgs['tuple']['get_asset_labels(asset)string[]']> & AppClientCompilationParams & {
223
+ onComplete?: OnApplicationComplete.NoOpOC;
224
+ }): AppClientMethodCallParams & AppClientCompilationParams & {
225
+ onComplete?: OnApplicationComplete.NoOpOC;
226
+ };
173
227
  };
174
228
  /**
175
229
  * Constructs a no op call for the getAssetsTiny(uint64[],uint64)(string,string,uint8,string[]) ABI method
@@ -178,6 +232,13 @@ export declare abstract class AbelReaderParamsFactory {
178
232
  * @returns An `AppClientMethodCallParams` object for the call
179
233
  */
180
234
  static getAssetsTiny(params: CallParams<AbelReaderArgs['obj']['getAssetsTiny(uint64[],uint64)(string,string,uint8,string[])'] | AbelReaderArgs['tuple']['getAssetsTiny(uint64[],uint64)(string,string,uint8,string[])']> & CallOnComplete): AppClientMethodCallParams & CallOnComplete;
235
+ /**
236
+ * Constructs a no op call for the get_asset_labels(asset)string[] ABI method
237
+ *
238
+ * @param params Parameters for the call
239
+ * @returns An `AppClientMethodCallParams` object for the call
240
+ */
241
+ static getAssetLabels(params: CallParams<AbelReaderArgs['obj']['get_asset_labels(asset)string[]'] | AbelReaderArgs['tuple']['get_asset_labels(asset)string[]']> & CallOnComplete): AppClientMethodCallParams & CallOnComplete;
181
242
  }
182
243
  /**
183
244
  * A factory to create and deploy one or more instance of the AbelReader smart contract and to create one or more app clients to interact with those (or other) app instances
@@ -244,6 +305,9 @@ declare class AbelReaderFactory {
244
305
  returns?: ABIReturn[] | undefined;
245
306
  confirmations: modelsv2.PendingTransactionResponse[];
246
307
  transactions: Transaction[];
308
+ /**
309
+ * Methods to access state for the current AbelReader app
310
+ */
247
311
  confirmation: modelsv2.PendingTransactionResponse;
248
312
  transaction: Transaction;
249
313
  appId: bigint;
@@ -422,6 +486,186 @@ declare class AbelReaderFactory {
422
486
  }> | undefined)[] | undefined;
423
487
  onComplete: OnApplicationComplete.NoOpOC | OnApplicationComplete.OptInOC | OnApplicationComplete.CloseOutOC | OnApplicationComplete.UpdateApplicationOC | OnApplicationComplete.DeleteApplicationOC;
424
488
  }>;
489
+ /**
490
+ * Creates a new instance of the AbelReader smart contract using the get_asset_labels(asset)string[] ABI method.
491
+ *
492
+ * @param params The params for the smart contract call
493
+ * @returns The create params
494
+ */
495
+ getAssetLabels: (params: CallParams<AbelReaderArgs['obj']['get_asset_labels(asset)string[]'] | AbelReaderArgs['tuple']['get_asset_labels(asset)string[]']> & AppClientCompilationParams & CreateSchema & {
496
+ onComplete?: OnApplicationComplete.NoOpOC;
497
+ }) => Promise<{
498
+ deployTimeParams: import("@algorandfoundation/algokit-utils/types/app").TealTemplateParams | undefined;
499
+ schema: {
500
+ globalInts: number;
501
+ globalByteSlices: number;
502
+ localInts: number;
503
+ localByteSlices: number;
504
+ };
505
+ approvalProgram: Uint8Array;
506
+ clearStateProgram: Uint8Array;
507
+ maxFee?: import("@algorandfoundation/algokit-utils/types/amount").AlgoAmount | undefined;
508
+ note?: string | Uint8Array | undefined;
509
+ signer?: TransactionSigner | import("@algorandfoundation/algokit-utils/types/account").TransactionSignerAccount | undefined;
510
+ onComplete?: OnApplicationComplete.NoOpOC | OnApplicationComplete.OptInOC | OnApplicationComplete.CloseOutOC | OnApplicationComplete.UpdateApplicationOC | OnApplicationComplete.DeleteApplicationOC | undefined;
511
+ rejectVersion?: number | undefined;
512
+ lease?: string | Uint8Array | undefined;
513
+ rekeyTo?: string | Address | undefined;
514
+ staticFee?: import("@algorandfoundation/algokit-utils/types/amount").AlgoAmount | undefined;
515
+ extraFee?: import("@algorandfoundation/algokit-utils/types/amount").AlgoAmount | undefined;
516
+ validityWindow?: number | bigint | undefined;
517
+ firstValidRound?: bigint | undefined;
518
+ lastValidRound?: bigint | undefined;
519
+ accountReferences?: (string | Address)[] | undefined;
520
+ appReferences?: bigint[] | undefined;
521
+ assetReferences?: bigint[] | undefined;
522
+ boxReferences?: (import("@algorandfoundation/algokit-utils/types/app-manager").BoxReference | import("@algorandfoundation/algokit-utils/types/app-manager").BoxIdentifier)[] | undefined;
523
+ accessReferences?: import("@algorandfoundation/algokit-utils/types/app-manager").ResourceReference[] | undefined;
524
+ sender?: string | Address | undefined;
525
+ method: string;
526
+ args?: (import("algosdk").ABIValue | import("@algorandfoundation/algokit-utils/types/app-arc56").ABIStruct | AppMethodCallTransactionArgument | undefined)[] | undefined;
527
+ updatable?: boolean | undefined;
528
+ deletable?: boolean | undefined;
529
+ extraProgramPages?: number | undefined;
530
+ } & {
531
+ sender: Address;
532
+ signer: TransactionSigner | import("@algorandfoundation/algokit-utils/types/account").TransactionSignerAccount | undefined;
533
+ method: import("@algorandfoundation/algokit-utils/types/app-arc56").Arc56Method;
534
+ args: (import("algosdk").ABIValue | import("algosdk").TransactionWithSigner | Transaction | Promise<Transaction> | import("@algorandfoundation/algokit-utils/types/composer").AppMethodCall<import("@algorandfoundation/algokit-utils/types/composer").AppMethodCallParams> | import("@algorandfoundation/algokit-utils/types/composer").AppMethodCall<{
535
+ sender: string | Address;
536
+ maxFee?: import("@algorandfoundation/algokit-utils/types/amount").AlgoAmount | undefined;
537
+ note?: string | Uint8Array | undefined;
538
+ args?: Uint8Array[] | undefined;
539
+ signer?: TransactionSigner | import("@algorandfoundation/algokit-utils/types/account").TransactionSignerAccount | undefined;
540
+ onComplete?: OnApplicationComplete.NoOpOC | OnApplicationComplete.OptInOC | OnApplicationComplete.CloseOutOC | OnApplicationComplete.UpdateApplicationOC | OnApplicationComplete.DeleteApplicationOC | undefined;
541
+ rejectVersion?: number | undefined;
542
+ lease?: string | Uint8Array | undefined;
543
+ rekeyTo?: string | Address | undefined;
544
+ staticFee?: import("@algorandfoundation/algokit-utils/types/amount").AlgoAmount | undefined;
545
+ extraFee?: import("@algorandfoundation/algokit-utils/types/amount").AlgoAmount | undefined;
546
+ validityWindow?: number | bigint | undefined;
547
+ firstValidRound?: bigint | undefined;
548
+ lastValidRound?: bigint | undefined;
549
+ accountReferences?: (string | Address)[] | undefined;
550
+ appReferences?: bigint[] | undefined;
551
+ assetReferences?: bigint[] | undefined;
552
+ boxReferences?: (import("@algorandfoundation/algokit-utils/types/app-manager").BoxReference | import("@algorandfoundation/algokit-utils/types/app-manager").BoxIdentifier)[] | undefined;
553
+ accessReferences?: import("@algorandfoundation/algokit-utils/types/app-manager").ResourceReference[] | undefined;
554
+ approvalProgram: string | Uint8Array;
555
+ clearStateProgram: string | Uint8Array;
556
+ schema?: {
557
+ globalInts: number;
558
+ globalByteSlices: number;
559
+ localInts: number;
560
+ localByteSlices: number;
561
+ } | undefined;
562
+ extraProgramPages?: number | undefined;
563
+ }> | import("@algorandfoundation/algokit-utils/types/composer").AppMethodCall<{
564
+ sender: string | Address;
565
+ signer?: TransactionSigner | import("@algorandfoundation/algokit-utils/types/account").TransactionSignerAccount | undefined;
566
+ rekeyTo?: string | Address | undefined;
567
+ note?: string | Uint8Array | undefined;
568
+ lease?: string | Uint8Array | undefined;
569
+ staticFee?: import("@algorandfoundation/algokit-utils/types/amount").AlgoAmount | undefined;
570
+ extraFee?: import("@algorandfoundation/algokit-utils/types/amount").AlgoAmount | undefined;
571
+ maxFee?: import("@algorandfoundation/algokit-utils/types/amount").AlgoAmount | undefined;
572
+ validityWindow?: number | bigint | undefined;
573
+ firstValidRound?: bigint | undefined;
574
+ lastValidRound?: bigint | undefined;
575
+ appId: bigint;
576
+ onComplete?: OnApplicationComplete.UpdateApplicationOC | undefined;
577
+ args?: Uint8Array[] | undefined;
578
+ accountReferences?: (string | Address)[] | undefined;
579
+ appReferences?: bigint[] | undefined;
580
+ assetReferences?: bigint[] | undefined;
581
+ boxReferences?: (import("@algorandfoundation/algokit-utils/types/app-manager").BoxReference | import("@algorandfoundation/algokit-utils/types/app-manager").BoxIdentifier)[] | undefined;
582
+ accessReferences?: import("@algorandfoundation/algokit-utils/types/app-manager").ResourceReference[] | undefined;
583
+ rejectVersion?: number | undefined;
584
+ approvalProgram: string | Uint8Array;
585
+ clearStateProgram: string | Uint8Array;
586
+ }> | undefined)[] | undefined;
587
+ onComplete: OnApplicationComplete.NoOpOC | OnApplicationComplete.OptInOC | OnApplicationComplete.CloseOutOC | OnApplicationComplete.UpdateApplicationOC | OnApplicationComplete.DeleteApplicationOC;
588
+ }>;
589
+ };
590
+ /**
591
+ * Gets available deployUpdate methods
592
+ */
593
+ deployUpdate: {
594
+ /**
595
+ * Updates an existing instance of the AbelReader smart contract using a bare call.
596
+ *
597
+ * @param params The params for the bare (raw) call
598
+ * @returns The params for a deployUpdate call
599
+ */
600
+ bare: (params?: Expand<AppClientBareCallParams & AppClientCompilationParams>) => {
601
+ maxFee?: import("@algorandfoundation/algokit-utils/types/amount").AlgoAmount | undefined;
602
+ note?: string | Uint8Array | undefined;
603
+ args?: Uint8Array[] | undefined;
604
+ signer?: TransactionSigner | import("@algorandfoundation/algokit-utils/types/account").TransactionSignerAccount | undefined;
605
+ rejectVersion?: number | undefined;
606
+ lease?: string | Uint8Array | undefined;
607
+ rekeyTo?: string | Address | undefined;
608
+ staticFee?: import("@algorandfoundation/algokit-utils/types/amount").AlgoAmount | undefined;
609
+ extraFee?: import("@algorandfoundation/algokit-utils/types/amount").AlgoAmount | undefined;
610
+ validityWindow?: number | bigint | undefined;
611
+ firstValidRound?: bigint | undefined;
612
+ lastValidRound?: bigint | undefined;
613
+ accountReferences?: (string | Address)[] | undefined;
614
+ appReferences?: bigint[] | undefined;
615
+ assetReferences?: bigint[] | undefined;
616
+ boxReferences?: (import("@algorandfoundation/algokit-utils/types/app-manager").BoxReference | import("@algorandfoundation/algokit-utils/types/app-manager").BoxIdentifier)[] | undefined;
617
+ accessReferences?: import("@algorandfoundation/algokit-utils/types/app-manager").ResourceReference[] | undefined;
618
+ sender?: string | Address | undefined;
619
+ } & {
620
+ sender: Address;
621
+ signer: TransactionSigner | import("@algorandfoundation/algokit-utils/types/account").TransactionSignerAccount | undefined;
622
+ onComplete: OnApplicationComplete.UpdateApplicationOC;
623
+ };
624
+ };
625
+ /**
626
+ * Gets available deployDelete methods
627
+ */
628
+ deployDelete: {
629
+ /**
630
+ * Deletes an existing instance of the AbelReader smart contract using a bare call.
631
+ *
632
+ * @param params The params for the bare (raw) call
633
+ * @returns The params for a deployDelete call
634
+ */
635
+ bare: (params?: Expand<AppClientBareCallParams>) => {
636
+ maxFee?: import("@algorandfoundation/algokit-utils/types/amount").AlgoAmount | undefined;
637
+ note?: string | Uint8Array | undefined;
638
+ /**
639
+ * Create transactions for the current app
640
+ */
641
+ args?: Uint8Array[] | undefined;
642
+ signer?: TransactionSigner | import("@algorandfoundation/algokit-utils/types/account").TransactionSignerAccount | undefined;
643
+ rejectVersion?: number | undefined;
644
+ lease?: string | Uint8Array | undefined;
645
+ rekeyTo?: string | Address | undefined;
646
+ staticFee?: import("@algorandfoundation/algokit-utils/types/amount").AlgoAmount | undefined;
647
+ extraFee?: import("@algorandfoundation/algokit-utils/types/amount").AlgoAmount | undefined;
648
+ validityWindow?: number | bigint | undefined;
649
+ firstValidRound?: bigint | undefined;
650
+ lastValidRound?: bigint | undefined;
651
+ accountReferences?: (string | Address)[] | undefined;
652
+ appReferences?: bigint[] | undefined;
653
+ assetReferences?: bigint[] | undefined;
654
+ boxReferences?: (import("@algorandfoundation/algokit-utils/types/app-manager").BoxReference | import("@algorandfoundation/algokit-utils/types/app-manager").BoxIdentifier)[] | undefined;
655
+ accessReferences?: import("@algorandfoundation/algokit-utils/types/app-manager").ResourceReference[] | undefined;
656
+ sender?: string | Address | undefined;
657
+ } & {
658
+ sender: Address;
659
+ signer: TransactionSigner | import("@algorandfoundation/algokit-utils/types/account").TransactionSignerAccount | undefined;
660
+ onComplete: OnApplicationComplete.DeleteApplicationOC; /**
661
+ * Makes a call to the AbelReader smart contract using the `getAssetsTiny(uint64[],uint64)(string,string,uint8,string[])` ABI method.
662
+ *
663
+ * This method is a readonly method; calling it with onComplete of NoOp will result in a simulated transaction rather than a real transaction.
664
+ *
665
+ * @param params The params for the smart contract call
666
+ * @returns The call transaction
667
+ */
668
+ };
425
669
  };
426
670
  };
427
671
  /**
@@ -445,6 +689,19 @@ declare class AbelReaderFactory {
445
689
  methodCalls: Map<number, import("algosdk").ABIMethod>;
446
690
  signers: Map<number, TransactionSigner>;
447
691
  }>;
692
+ /**
693
+ * Creates a new instance of the AbelReader smart contract using the get_asset_labels(asset)string[] ABI method.
694
+ *
695
+ * @param params The params for the smart contract call
696
+ * @returns The create transaction
697
+ */
698
+ getAssetLabels: (params: CallParams<AbelReaderArgs['obj']['get_asset_labels(asset)string[]'] | AbelReaderArgs['tuple']['get_asset_labels(asset)string[]']> & AppClientCompilationParams & CreateSchema & {
699
+ onComplete?: OnApplicationComplete.NoOpOC;
700
+ }) => Promise<{
701
+ transactions: Transaction[];
702
+ methodCalls: Map<number, import("algosdk").ABIMethod>;
703
+ signers: Map<number, TransactionSigner>;
704
+ }>;
448
705
  };
449
706
  };
450
707
  /**
@@ -480,6 +737,31 @@ declare class AbelReaderFactory {
480
737
  };
481
738
  appClient: AbelReaderClient;
482
739
  }>;
740
+ /**
741
+ * Creates a new instance of the AbelReader smart contract using an ABI method call using the get_asset_labels(asset)string[] ABI method.
742
+ *
743
+ * @param params The params for the smart contract call
744
+ * @returns The create result
745
+ */
746
+ getAssetLabels: (params: CallParams<AbelReaderArgs['obj']['get_asset_labels(asset)string[]'] | AbelReaderArgs['tuple']['get_asset_labels(asset)string[]']> & AppClientCompilationParams & CreateSchema & SendParams & {
747
+ onComplete?: OnApplicationComplete.NoOpOC;
748
+ }) => Promise<{
749
+ result: {
750
+ return: string[] | undefined;
751
+ compiledApproval?: import("@algorandfoundation/algokit-utils/types/app").CompiledTeal | undefined;
752
+ compiledClear?: import("@algorandfoundation/algokit-utils/types/app").CompiledTeal | undefined;
753
+ appId: bigint;
754
+ groupId: string;
755
+ txIds: string[];
756
+ returns?: ABIReturn[] | undefined;
757
+ confirmations: modelsv2.PendingTransactionResponse[];
758
+ transactions: Transaction[];
759
+ confirmation: modelsv2.PendingTransactionResponse;
760
+ transaction: Transaction;
761
+ appAddress: Address;
762
+ };
763
+ appClient: AbelReaderClient;
764
+ }>;
483
765
  };
484
766
  };
485
767
  }
@@ -536,6 +818,61 @@ declare class AbelReaderClient {
536
818
  * Get parameters to create transactions for the current app. A good mental model for this is that these parameters represent a deferred transaction creation.
537
819
  */
538
820
  readonly params: {
821
+ /**
822
+ * Gets available update methods
823
+ */
824
+ update: {
825
+ /**
826
+ * Updates an existing instance of the AbelReader smart contract using a bare call.
827
+ *
828
+ * @param params The params for the bare (raw) call
829
+ * @returns The update result
830
+ */
831
+ bare: (params?: Expand<AppClientBareCallParams & AppClientCompilationParams>) => Promise<{
832
+ sender: string | Address;
833
+ signer?: TransactionSigner | import("@algorandfoundation/algokit-utils/types/account").TransactionSignerAccount | undefined;
834
+ rekeyTo?: string | Address | undefined;
835
+ note?: string | Uint8Array | undefined;
836
+ lease?: string | Uint8Array | undefined;
837
+ staticFee?: import("@algorandfoundation/algokit-utils/types/amount").AlgoAmount | undefined;
838
+ extraFee?: import("@algorandfoundation/algokit-utils/types/amount").AlgoAmount | undefined;
839
+ maxFee?: import("@algorandfoundation/algokit-utils/types/amount").AlgoAmount | undefined;
840
+ /**
841
+ * Gets available delete methods
842
+ */
843
+ validityWindow?: number | bigint | undefined;
844
+ firstValidRound?: bigint | undefined;
845
+ lastValidRound?: bigint | undefined;
846
+ appId: bigint;
847
+ onComplete?: OnApplicationComplete.UpdateApplicationOC | undefined;
848
+ args?: Uint8Array[] | undefined;
849
+ accountReferences?: (string | Address)[] | undefined; /**
850
+ * Makes a clear_state call to an existing instance of the AbelReader smart contract.
851
+ *
852
+ * @param params The params for the bare (raw) call
853
+ * @returns The clearState result
854
+ */
855
+ appReferences?: bigint[] | undefined;
856
+ assetReferences?: bigint[] | undefined;
857
+ boxReferences?: (import("@algorandfoundation/algokit-utils/types/app-manager").BoxReference | import("@algorandfoundation/algokit-utils/types/app-manager").BoxIdentifier)[] | undefined;
858
+ accessReferences?: import("@algorandfoundation/algokit-utils/types/app-manager").ResourceReference[] | undefined;
859
+ rejectVersion?: number | undefined;
860
+ approvalProgram: string | Uint8Array;
861
+ clearStateProgram: string | Uint8Array;
862
+ }>;
863
+ };
864
+ /**
865
+ * Gets available delete methods
866
+ */
867
+ delete: {
868
+ /**
869
+ * Deletes an existing instance of the AbelReader smart contract using a bare call.
870
+ *
871
+ * @param params The params for the bare (raw) call
872
+ * @returns The delete result
873
+ */
874
+ bare: (params?: Expand<AppClientBareCallParams>) => import("@algorandfoundation/algokit-utils/types/composer").AppDeleteParams;
875
+ };
539
876
  /**
540
877
  * Makes a clear_state call to an existing instance of the AbelReader smart contract.
541
878
  *
@@ -554,11 +891,46 @@ declare class AbelReaderClient {
554
891
  getAssetsTiny: (params: CallParams<AbelReaderArgs['obj']['getAssetsTiny(uint64[],uint64)(string,string,uint8,string[])'] | AbelReaderArgs['tuple']['getAssetsTiny(uint64[],uint64)(string,string,uint8,string[])']> & {
555
892
  onComplete?: OnApplicationComplete.NoOpOC;
556
893
  }) => Promise<AppCallMethodCall>;
894
+ /**
895
+ * Makes a call to the AbelReader smart contract using the `get_asset_labels(asset)string[]` ABI method.
896
+ *
897
+ * This method is a readonly method; calling it with onComplete of NoOp will result in a simulated transaction rather than a real transaction.
898
+ *
899
+ * @param params The params for the smart contract call
900
+ * @returns The call params
901
+ */
902
+ getAssetLabels: (params: CallParams<AbelReaderArgs['obj']['get_asset_labels(asset)string[]'] | AbelReaderArgs['tuple']['get_asset_labels(asset)string[]']> & {
903
+ onComplete?: OnApplicationComplete.NoOpOC;
904
+ }) => Promise<AppCallMethodCall>;
557
905
  };
558
906
  /**
559
907
  * Create transactions for the current app
560
908
  */
561
909
  readonly createTransaction: {
910
+ /**
911
+ * Gets available update methods
912
+ */
913
+ update: {
914
+ /**
915
+ * Updates an existing instance of the AbelReader smart contract using a bare call.
916
+ *
917
+ * @param params The params for the bare (raw) call
918
+ * @returns The update result
919
+ */
920
+ bare: (params?: Expand<AppClientBareCallParams & AppClientCompilationParams>) => Promise<Transaction>;
921
+ };
922
+ /**
923
+ * Gets available delete methods
924
+ */
925
+ delete: {
926
+ /**
927
+ * Deletes an existing instance of the AbelReader smart contract using a bare call.
928
+ *
929
+ * @param params The params for the bare (raw) call
930
+ * @returns The delete result
931
+ */
932
+ bare: (params?: Expand<AppClientBareCallParams>) => Promise<Transaction>;
933
+ };
562
934
  /**
563
935
  * Makes a clear_state call to an existing instance of the AbelReader smart contract.
564
936
  *
@@ -581,11 +953,70 @@ declare class AbelReaderClient {
581
953
  methodCalls: Map<number, import("algosdk").ABIMethod>;
582
954
  signers: Map<number, TransactionSigner>;
583
955
  }>;
956
+ /**
957
+ * Makes a call to the AbelReader smart contract using the `get_asset_labels(asset)string[]` ABI method.
958
+ *
959
+ * This method is a readonly method; calling it with onComplete of NoOp will result in a simulated transaction rather than a real transaction.
960
+ *
961
+ * @param params The params for the smart contract call
962
+ * @returns The call transaction
963
+ */
964
+ getAssetLabels: (params: CallParams<AbelReaderArgs['obj']['get_asset_labels(asset)string[]'] | AbelReaderArgs['tuple']['get_asset_labels(asset)string[]']> & {
965
+ onComplete?: OnApplicationComplete.NoOpOC;
966
+ }) => Promise<{
967
+ transactions: Transaction[];
968
+ methodCalls: Map<number, import("algosdk").ABIMethod>;
969
+ signers: Map<number, TransactionSigner>;
970
+ }>;
584
971
  };
585
972
  /**
586
973
  * Send calls to the current app
587
974
  */
588
975
  readonly send: {
976
+ /**
977
+ * Gets available update methods
978
+ */
979
+ update: {
980
+ /**
981
+ * Updates an existing instance of the AbelReader smart contract using a bare call.
982
+ *
983
+ * @param params The params for the bare (raw) call
984
+ * @returns The update result
985
+ */
986
+ bare: (params?: Expand<AppClientBareCallParams & AppClientCompilationParams & SendParams>) => Promise<{
987
+ compiledApproval?: import("@algorandfoundation/algokit-utils/types/app").CompiledTeal | undefined;
988
+ compiledClear?: import("@algorandfoundation/algokit-utils/types/app").CompiledTeal | undefined;
989
+ groupId: string;
990
+ txIds: string[];
991
+ returns?: ABIReturn[] | undefined;
992
+ confirmations: modelsv2.PendingTransactionResponse[];
993
+ transactions: Transaction[];
994
+ confirmation: modelsv2.PendingTransactionResponse;
995
+ transaction: Transaction;
996
+ return?: ABIReturn | undefined;
997
+ }>;
998
+ };
999
+ /**
1000
+ * Gets available delete methods
1001
+ */
1002
+ delete: {
1003
+ /**
1004
+ * Deletes an existing instance of the AbelReader smart contract using a bare call.
1005
+ *
1006
+ * @param params The params for the bare (raw) call
1007
+ * @returns The delete result
1008
+ */
1009
+ bare: (params?: Expand<AppClientBareCallParams & SendParams>) => Promise<{
1010
+ groupId: string;
1011
+ txIds: string[];
1012
+ returns?: ABIReturn[] | undefined;
1013
+ confirmations: modelsv2.PendingTransactionResponse[];
1014
+ transactions: Transaction[];
1015
+ confirmation: modelsv2.PendingTransactionResponse;
1016
+ transaction: Transaction;
1017
+ return?: ABIReturn | undefined;
1018
+ }>;
1019
+ };
589
1020
  /**
590
1021
  * Makes a clear_state call to an existing instance of the AbelReader smart contract.
591
1022
  *
@@ -622,6 +1053,26 @@ declare class AbelReaderClient {
622
1053
  confirmation: modelsv2.PendingTransactionResponse;
623
1054
  transaction: Transaction;
624
1055
  }>;
1056
+ /**
1057
+ * Makes a call to the AbelReader smart contract using the `get_asset_labels(asset)string[]` ABI method.
1058
+ *
1059
+ * This method is a readonly method; calling it with onComplete of NoOp will result in a simulated transaction rather than a real transaction.
1060
+ *
1061
+ * @param params The params for the smart contract call
1062
+ * @returns The call result
1063
+ */
1064
+ getAssetLabels: (params: CallParams<AbelReaderArgs['obj']['get_asset_labels(asset)string[]'] | AbelReaderArgs['tuple']['get_asset_labels(asset)string[]']> & SendParams & {
1065
+ onComplete?: OnApplicationComplete.NoOpOC;
1066
+ }) => Promise<{
1067
+ return: string[] | undefined;
1068
+ returns?: ABIReturn[] | undefined;
1069
+ groupId: string;
1070
+ txIds: string[];
1071
+ confirmations: modelsv2.PendingTransactionResponse[];
1072
+ transactions: Transaction[];
1073
+ confirmation: modelsv2.PendingTransactionResponse;
1074
+ transaction: Transaction;
1075
+ }>;
625
1076
  };
626
1077
  /**
627
1078
  * Clone this app client with different params
@@ -639,6 +1090,15 @@ declare class AbelReaderClient {
639
1090
  * @returns The call result
640
1091
  */
641
1092
  getAssetsTiny(params: CallParams<AbelReaderArgs['obj']['getAssetsTiny(uint64[],uint64)(string,string,uint8,string[])'] | AbelReaderArgs['tuple']['getAssetsTiny(uint64[],uint64)(string,string,uint8,string[])']>): Promise<AssetTinyLabels>;
1093
+ /**
1094
+ * Makes a readonly (simulated) call to the AbelReader smart contract using the `get_asset_labels(asset)string[]` ABI method.
1095
+ *
1096
+ * This method is a readonly method; calling it with onComplete of NoOp will result in a simulated transaction rather than a real transaction.
1097
+ *
1098
+ * @param params The params for the smart contract call
1099
+ * @returns The call result
1100
+ */
1101
+ getAssetLabels(params: CallParams<AbelReaderArgs['obj']['get_asset_labels(asset)string[]'] | AbelReaderArgs['tuple']['get_asset_labels(asset)string[]']>): Promise<string[]>;
642
1102
  /**
643
1103
  * Methods to access state for the current AbelReader app
644
1104
  */
@@ -654,6 +1114,38 @@ export type AbelReaderComposer<TReturns extends [...any[]] = []> = {
654
1114
  * @returns The typed transaction composer so you can fluently chain multiple calls or call execute to execute all queued up transactions
655
1115
  */
656
1116
  getAssetsTiny(params?: CallParams<AbelReaderArgs['obj']['getAssetsTiny(uint64[],uint64)(string,string,uint8,string[])'] | AbelReaderArgs['tuple']['getAssetsTiny(uint64[],uint64)(string,string,uint8,string[])']>): AbelReaderComposer<[...TReturns, AbelReaderReturns['getAssetsTiny(uint64[],uint64)(string,string,uint8,string[])'] | undefined]>;
1117
+ /**
1118
+ * Calls the get_asset_labels(asset)string[] ABI method.
1119
+ *
1120
+ * @param args The arguments for the contract call
1121
+ * @param params Any additional parameters for the call
1122
+ * @returns The typed transaction composer so you can fluently chain multiple calls or call execute to execute all queued up transactions
1123
+ */
1124
+ getAssetLabels(params?: CallParams<AbelReaderArgs['obj']['get_asset_labels(asset)string[]'] | AbelReaderArgs['tuple']['get_asset_labels(asset)string[]']>): AbelReaderComposer<[...TReturns, AbelReaderReturns['get_asset_labels(asset)string[]'] | undefined]>;
1125
+ /**
1126
+ * Gets available update methods
1127
+ */
1128
+ readonly update: {
1129
+ /**
1130
+ * Updates an existing instance of the AbelReader smart contract using a bare call.
1131
+ *
1132
+ * @param args The arguments for the bare call
1133
+ * @returns The typed transaction composer so you can fluently chain multiple calls or call execute to execute all queued up transactions
1134
+ */
1135
+ bare(params?: AppClientBareCallParams): AbelReaderComposer<[...TReturns, undefined]>;
1136
+ };
1137
+ /**
1138
+ * Gets available delete methods
1139
+ */
1140
+ readonly delete: {
1141
+ /**
1142
+ * Deletes an existing instance of the AbelReader smart contract using a bare call.
1143
+ *
1144
+ * @param args The arguments for the bare call
1145
+ * @returns The typed transaction composer so you can fluently chain multiple calls or call execute to execute all queued up transactions
1146
+ */
1147
+ bare(params?: AppClientBareCallParams): AbelReaderComposer<[...TReturns, undefined]>;
1148
+ };
657
1149
  /**
658
1150
  * Makes a clear_state call to an existing instance of the AbelReader smart contract.
659
1151
  *
@@ -725,5 +1217,10 @@ export declare class AbelReaderSDK extends GhostBase {
725
1217
  extraMethodCallArgs?: ExtraMethodCallArgs | ExtraMethodCallArgs[];
726
1218
  extraSimulateArgs?: RawSimulateOptions;
727
1219
  }): Promise<Methods['getAssetsTiny']['returns'][]>;
1220
+ get_asset_labels({ methodArgsOrArgsArray, extraMethodCallArgs, extraSimulateArgs, }: {
1221
+ methodArgsOrArgsArray: Methods['get_asset_labels']['argsObj'] | Methods['get_asset_labels']['argsObj'][];
1222
+ extraMethodCallArgs?: ExtraMethodCallArgs | ExtraMethodCallArgs[];
1223
+ extraSimulateArgs?: RawSimulateOptions;
1224
+ }): Promise<Methods['get_asset_labels']['returns'][]>;
728
1225
  }
729
1226
  export {};
@@ -1,7 +1,7 @@
1
1
  import { getArc56ReturnValue, getABIStructFromABITuple } from '@algorandfoundation/algokit-utils/types/app-arc56';
2
2
  import { AppClient as _AppClient, } from '@algorandfoundation/algokit-utils/types/app-client';
3
3
  import { AppFactory as _AppFactory } from '@algorandfoundation/algokit-utils/types/app-factory';
4
- export const APP_SPEC = { "name": "AbelReader", "structs": { "AssetTinyLabels": [{ "name": "name", "type": "string" }, { "name": "unitName", "type": "string" }, { "name": "decimals", "type": "uint8" }, { "name": "labels", "type": "string[]" }] }, "methods": [{ "name": "getAssetsTiny", "args": [{ "type": "uint64[]", "name": "assetIds" }, { "type": "uint64", "name": "abelAppId" }], "returns": { "type": "(string,string,uint8,string[])", "struct": "AssetTinyLabels" }, "actions": { "create": ["NoOp"], "call": ["NoOp"] }, "readonly": true, "events": [], "recommendations": {} }], "arcs": [22, 28], "networks": {}, "state": { "schema": { "global": { "ints": 0, "bytes": 0 }, "local": { "ints": 0, "bytes": 0 } }, "keys": { "global": {}, "local": {}, "box": {} }, "maps": { "global": {}, "local": {}, "box": {} } }, "bareActions": { "create": [], "call": [] }, "sourceInfo": { "approval": { "sourceInfo": [{ "pc": [170], "errorMessage": "Bytes has valid prefix" }, { "pc": [23], "errorMessage": "OnCompletion must be NoOp" }, { "pc": [185, 192, 195], "errorMessage": "asset exists" }, { "pc": [79], "errorMessage": "index access is out of bounds" }, { "pc": [38], "errorMessage": "invalid array length header" }, { "pc": [50], "errorMessage": "invalid number of bytes for arc4.dynamic_array<asset>" }, { "pc": [58, 175], "errorMessage": "invalid number of bytes for arc4.uint64" }, { "pc": [201], "errorMessage": "overflow" }], "pcOffsetMethod": "none" }, "clear": { "sourceInfo": [], "pcOffsetMethod": "none" } }, "source": { "approval": "I3ByYWdtYSB2ZXJzaW9uIDExCiNwcmFnbWEgdHlwZXRyYWNrIGZhbHNlCgovLyBAYWxnb3JhbmRmb3VuZGF0aW9uL2FsZ29yYW5kLXR5cGVzY3JpcHQvYXJjNC9pbmRleC5kLnRzOjpDb250cmFjdC5hcHByb3ZhbFByb2dyYW0oKSAtPiB1aW50NjQ6Cm1haW46CiAgICBpbnRjYmxvY2sgOCAwIDEKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9hYmVsX3JlYWRlci9jb250cmFjdC5hbGdvLnRzOjEyCiAgICAvLyBleHBvcnQgY2xhc3MgQWJlbFJlYWRlciBleHRlbmRzIENvbnRyYWN0IHsKICAgIHB1c2hieXRlcyAweGQ1YWIzMzY2IC8vIG1ldGhvZCAiZ2V0QXNzZXRzVGlueSh1aW50NjRbXSx1aW50NjQpKHN0cmluZyxzdHJpbmcsdWludDgsc3RyaW5nW10pIgogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMAogICAgbWF0Y2ggbWFpbl9nZXRBc3NldHNUaW55X3JvdXRlQDIKICAgIGVycgoKbWFpbl9nZXRBc3NldHNUaW55X3JvdXRlQDI6CiAgICAvLyBzbWFydF9jb250cmFjdHMvYWJlbF9yZWFkZXIvY29udHJhY3QuYWxnby50czoxMwogICAgLy8gQGFiaW1ldGhvZCh7IHJlYWRvbmx5OiB0cnVlLCBvbkNyZWF0ZTogImFsbG93IiB9KQogICAgdHhuIE9uQ29tcGxldGlvbgogICAgIQogICAgYXNzZXJ0IC8vIE9uQ29tcGxldGlvbiBtdXN0IGJlIE5vT3AKICAgIGIgZ2V0QXNzZXRzVGlueQoKCi8vIHNtYXJ0X2NvbnRyYWN0cy9hYmVsX3JlYWRlci9jb250cmFjdC5hbGdvLnRzOjpBYmVsUmVhZGVyLmdldEFzc2V0c1Rpbnlbcm91dGluZ10oKSAtPiB2b2lkOgpnZXRBc3NldHNUaW55OgogICAgaW50Y18xIC8vIDAKICAgIGR1cG4gMwogICAgcHVzaGJ5dGVzICIiCiAgICAvLyBzbWFydF9jb250cmFjdHMvYWJlbF9yZWFkZXIvY29udHJhY3QuYWxnby50czoxMwogICAgLy8gQGFiaW1ldGhvZCh7IHJlYWRvbmx5OiB0cnVlLCBvbkNyZWF0ZTogImFsbG93IiB9KQogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQogICAgZHVwbiAyCiAgICBpbnRjXzEgLy8gMAogICAgZXh0cmFjdF91aW50MTYgLy8gb24gZXJyb3I6IGludmFsaWQgYXJyYXkgbGVuZ3RoIGhlYWRlcgogICAgZHVwCiAgICBjb3ZlciAyCiAgICBpbnRjXzAgLy8gOAogICAgKgogICAgcHVzaGludCAyIC8vIDIKICAgICsKICAgIHN3YXAKICAgIGxlbgogICAgPT0KICAgIGFzc2VydCAvLyBpbnZhbGlkIG51bWJlciBvZiBieXRlcyBmb3IgYXJjNC5keW5hbWljX2FycmF5PGFzc2V0PgogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgogICAgZHVwCiAgICBsZW4KICAgIGludGNfMCAvLyA4CiAgICA9PQogICAgYXNzZXJ0IC8vIGludmFsaWQgbnVtYmVyIG9mIGJ5dGVzIGZvciBhcmM0LnVpbnQ2NAogICAgYnRvaQogICAgLy8gc21hcnRfY29udHJhY3RzL2FiZWxfcmVhZGVyL2NvbnRyYWN0LmFsZ28udHM6MTUKICAgIC8vIGZvciAobGV0IGlkeDogdWludDY0ID0gMDsgaWR4IDwgYXNzZXRJZHMubGVuZ3RoOyBpZHgrKykgewogICAgaW50Y18xIC8vIDAKCmdldEFzc2V0c1Rpbnlfd2hpbGVfdG9wQDI6CiAgICAvLyBzbWFydF9jb250cmFjdHMvYWJlbF9yZWFkZXIvY29udHJhY3QuYWxnby50czoxNQogICAgLy8gZm9yIChsZXQgaWR4OiB1aW50NjQgPSAwOyBpZHggPCBhc3NldElkcy5sZW5ndGg7IGlkeCsrKSB7CiAgICBkdXAKICAgIGRpZyAzCiAgICA8CiAgICBieiBnZXRBc3NldHNUaW55X2FmdGVyX3doaWxlQDExCiAgICAvLyBzbWFydF9jb250cmFjdHMvYWJlbF9yZWFkZXIvY29udHJhY3QuYWxnby50czoxNgogICAgLy8gY29uc3QgYXNzZXQgPSBhc3NldElkc1tpZHhdOwogICAgZGlnIDMKICAgIGV4dHJhY3QgMiAwCiAgICBkaWcgMQogICAgaW50Y18wIC8vIDgKICAgICoKICAgIGR1cDIKICAgIGludGNfMCAvLyA4CiAgICBleHRyYWN0MyAvLyBvbiBlcnJvcjogaW5kZXggYWNjZXNzIGlzIG91dCBvZiBib3VuZHMKICAgIGJ1cnkgMTEKICAgIGV4dHJhY3RfdWludDY0CiAgICBkdXAKICAgIGJ1cnkgNgogICAgLy8gc21hcnRfY29udHJhY3RzL2FiZWxfcmVhZGVyL2NvbnRyYWN0LmFsZ28udHM6MTcKICAgIC8vIGNvbnN0IFtfLCBleGlzdHNdID0gb3AuQXNzZXRQYXJhbXMuYXNzZXRDcmVhdG9yKGFzc2V0LmlkKTsKICAgIGFzc2V0X3BhcmFtc19nZXQgQXNzZXRDcmVhdG9yCiAgICBidXJ5IDEKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9hYmVsX3JlYWRlci9jb250cmFjdC5hbGdvLnRzOjE4CiAgICAvLyBpZiAoIWV4aXN0cykgewogICAgYm56IGdldEFzc2V0c1RpbnlfZWxzZV9ib2R5QDUKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9hYmVsX3JlYWRlci9jb250cmFjdC5hbGdvLnRzOjM1LTQwCiAgICAvLyByZXR1cm4gewogICAgLy8gICBuYW1lOiAiIiwKICAgIC8vICAgdW5pdF9uYW1lOiAiIiwKICAgIC8vICAgZGVjaW1hbHM6IG5ldyBVaW50OCgwKSwKICAgIC8vICAgbGFiZWxzOiBbXSwKICAgIC8vIH07CiAgICBwdXNoYnl0ZXMgMHgwMDA3MDAwOTAwMDAwYjAwMDAwMDAwMDAwMAogICAgLy8gc21hcnRfY29udHJhY3RzL2FiZWxfcmVhZGVyL2NvbnRyYWN0LmFsZ28udHM6MTkKICAgIC8vIGxvZyhlbmNvZGVBcmM0KHRoaXMuZ2V0RW1wdHlBc3NldFRpbnlMYWJlbHMoKSkpOwogICAgbG9nCgpnZXRBc3NldHNUaW55X2FmdGVyX2lmX2Vsc2VAMTA6CiAgICAvLyBzbWFydF9jb250cmFjdHMvYWJlbF9yZWFkZXIvY29udHJhY3QuYWxnby50czoxNQogICAgLy8gZm9yIChsZXQgaWR4OiB1aW50NjQgPSAwOyBpZHggPCBhc3NldElkcy5sZW5ndGg7IGlkeCsrKSB7CiAgICBkdXAKICAgIGludGNfMiAvLyAxCiAgICArCiAgICBidXJ5IDEKICAgIGIgZ2V0QXNzZXRzVGlueV93aGlsZV90b3BAMgoKZ2V0QXNzZXRzVGlueV9lbHNlX2JvZHlANToKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9hYmVsX3JlYWRlci9jb250cmFjdC5hbGdvLnRzOjIxCiAgICAvLyBjb25zdCBwdiA9IGNvbXBpbGVBcmM0KEFiZWxTdHViKS5jYWxsLmhhc19hc3NldF9sYWJlbCh7IGFwcElkOiBhYmVsQXBwSWQsIGFyZ3M6IFthc3NldC5pZCwgInB2Il0gfSkucmV0dXJuVmFsdWU7CiAgICBpdHhuX2JlZ2luCiAgICBwdXNoYnl0ZXMgMHg5N2Y0MGE4YSAvLyBtZXRob2QgImhhc19hc3NldF9sYWJlbCh1aW50NjQsc3RyaW5nKXVpbnQ2NCIKICAgIGl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCiAgICBkaWcgOAogICAgaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKICAgIHB1c2hieXRlcyAweDAwMDI3MDc2CiAgICBpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwogICAgaW50Y18xIC8vIDAKICAgIGl0eG5fZmllbGQgT25Db21wbGV0aW9uCiAgICBkaWcgMQogICAgaXR4bl9maWVsZCBBcHBsaWNhdGlvbklECiAgICBwdXNoaW50IDYgLy8gYXBwbAogICAgaXR4bl9maWVsZCBUeXBlRW51bQogICAgaW50Y18xIC8vIDAKICAgIGl0eG5fZmllbGQgRmVlCiAgICBpdHhuX3N1Ym1pdAogICAgaXR4biBMYXN0TG9nCiAgICBkdXAKICAgIGV4dHJhY3QgNCAwCiAgICBzd2FwCiAgICBleHRyYWN0IDAgNAogICAgcHVzaGJ5dGVzIDB4MTUxZjdjNzUKICAgID09CiAgICBhc3NlcnQgLy8gQnl0ZXMgaGFzIHZhbGlkIHByZWZpeAogICAgZHVwCiAgICBsZW4KICAgIGludGNfMCAvLyA4CiAgICA9PQogICAgYXNzZXJ0IC8vIGludmFsaWQgbnVtYmVyIG9mIGJ5dGVzIGZvciBhcmM0LnVpbnQ2NAogICAgYnRvaQogICAgLy8gc21hcnRfY29udHJhY3RzL2FiZWxfcmVhZGVyL2NvbnRyYWN0LmFsZ28udHM6MjMKICAgIC8vIG5hbWU6IGFzc2V0Lm5hbWUudG9TdHJpbmcoKSwKICAgIGRpZyA1CiAgICBkdXAKICAgIGFzc2V0X3BhcmFtc19nZXQgQXNzZXROYW1lCiAgICBzd2FwCiAgICBidXJ5IDEwCiAgICBhc3NlcnQgLy8gYXNzZXQgZXhpc3RzCiAgICAvLyBzbWFydF9jb250cmFjdHMvYWJlbF9yZWFkZXIvY29udHJhY3QuYWxnby50czoyNAogICAgLy8gdW5pdF9uYW1lOiBhc3NldC51bml0TmFtZS50b1N0cmluZygpLAogICAgZHVwCiAgICBhc3NldF9wYXJhbXNfZ2V0IEFzc2V0VW5pdE5hbWUKICAgIHN3YXAKICAgIGJ1cnkgOQogICAgYXNzZXJ0IC8vIGFzc2V0IGV4aXN0cwogICAgLy8gc21hcnRfY29udHJhY3RzL2FiZWxfcmVhZGVyL2NvbnRyYWN0LmFsZ28udHM6MjUKICAgIC8vIGRlY2ltYWxzOiBuZXcgVWludDgoYXNzZXQuZGVjaW1hbHMpLAogICAgYXNzZXRfcGFyYW1zX2dldCBBc3NldERlY2ltYWxzCiAgICBhc3NlcnQgLy8gYXNzZXQgZXhpc3RzCiAgICBpdG9iCiAgICBkdXAKICAgIGJpdGxlbgogICAgaW50Y18wIC8vIDgKICAgIDw9CiAgICBhc3NlcnQgLy8gb3ZlcmZsb3cKICAgIGV4dHJhY3QgNyAxCiAgICBidXJ5IDkKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9hYmVsX3JlYWRlci9jb250cmFjdC5hbGdvLnRzOjI2CiAgICAvLyBsYWJlbHM6IHB2ID09PSAwID8gW10gYXMgc3RyaW5nW10gOiBbInB2Il0sCiAgICBibnogZ2V0QXNzZXRzVGlueV90ZXJuYXJ5X2ZhbHNlQDgKICAgIHB1c2hieXRlcyAweDAwMDAKCmdldEFzc2V0c1RpbnlfdGVybmFyeV9tZXJnZUA5OgogICAgLy8gc21hcnRfY29udHJhY3RzL2FiZWxfcmVhZGVyL2NvbnRyYWN0LmFsZ28udHM6MjItMjcKICAgIC8vIGNvbnN0IGFzc2V0SW5mbzogQXNzZXRUaW55TGFiZWxzID0gewogICAgLy8gICBuYW1lOiBhc3NldC5uYW1lLnRvU3RyaW5nKCksCiAgICAvLyAgIHVuaXRfbmFtZTogYXNzZXQudW5pdE5hbWUudG9TdHJpbmcoKSwKICAgIC8vICAgZGVjaW1hbHM6IG5ldyBVaW50OChhc3NldC5kZWNpbWFscyksCiAgICAvLyAgIGxhYmVsczogcHYgPT09IDAgPyBbXSBhcyBzdHJpbmdbXSA6IFsicHYiXSwKICAgIC8vIH07CiAgICBkaWcgNwogICAgZHVwCiAgICBsZW4KICAgIGl0b2IKICAgIGV4dHJhY3QgNiAyCiAgICBzd2FwCiAgICBjb25jYXQKICAgIGR1cAogICAgbGVuCiAgICBwdXNoaW50IDcgLy8gNwogICAgKwogICAgZGlnIDgKICAgIGR1cAogICAgbGVuCiAgICBpdG9iCiAgICBleHRyYWN0IDYgMgogICAgc3dhcAogICAgY29uY2F0CiAgICBkaWcgMQogICAgaXRvYgogICAgZXh0cmFjdCA2IDIKICAgIHB1c2hieXRlcyAweDAwMDcKICAgIHN3YXAKICAgIGNvbmNhdAogICAgZGlnIDEKICAgIGxlbgogICAgdW5jb3ZlciAzCiAgICArCiAgICBzd2FwCiAgICBkaWcgMTIKICAgIGNvbmNhdAogICAgc3dhcAogICAgaXRvYgogICAgZXh0cmFjdCA2IDIKICAgIGNvbmNhdAogICAgdW5jb3ZlciAyCiAgICBjb25jYXQKICAgIHN3YXAKICAgIGNvbmNhdAogICAgc3dhcAogICAgY29uY2F0CiAgICAvLyBzbWFydF9jb250cmFjdHMvYWJlbF9yZWFkZXIvY29udHJhY3QuYWxnby50czoyOAogICAgLy8gbG9nKGVuY29kZUFyYzQoYXNzZXRJbmZvKSk7CiAgICBsb2cKICAgIGIgZ2V0QXNzZXRzVGlueV9hZnRlcl9pZl9lbHNlQDEwCgpnZXRBc3NldHNUaW55X3Rlcm5hcnlfZmFsc2VAODoKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9hYmVsX3JlYWRlci9jb250cmFjdC5hbGdvLnRzOjI2CiAgICAvLyBsYWJlbHM6IHB2ID09PSAwID8gW10gYXMgc3RyaW5nW10gOiBbInB2Il0sCiAgICBwdXNoYnl0ZXMgMHgwMDAxMDAwMjAwMDI3MDc2CiAgICBiIGdldEFzc2V0c1RpbnlfdGVybmFyeV9tZXJnZUA5CgpnZXRBc3NldHNUaW55X2FmdGVyX3doaWxlQDExOgogICAgLy8gc21hcnRfY29udHJhY3RzL2FiZWxfcmVhZGVyL2NvbnRyYWN0LmFsZ28udHM6MTMKICAgIC8vIEBhYmltZXRob2QoeyByZWFkb25seTogdHJ1ZSwgb25DcmVhdGU6ICJhbGxvdyIgfSkKICAgIHB1c2hieXRlcyAweDE1MWY3Yzc1MDAwNzAwMDkwMDAwMGIwMDAwMDAwMDAwMDAKICAgIGxvZwogICAgaW50Y18yIC8vIDEKICAgIHJldHVybgo=", "clear": "I3ByYWdtYSB2ZXJzaW9uIDExCiNwcmFnbWEgdHlwZXRyYWNrIGZhbHNlCgovLyBAYWxnb3JhbmRmb3VuZGF0aW9uL2FsZ29yYW5kLXR5cGVzY3JpcHQvYmFzZS1jb250cmFjdC5kLnRzOjpCYXNlQ29udHJhY3QuY2xlYXJTdGF0ZVByb2dyYW0oKSAtPiB1aW50NjQ6Cm1haW46CiAgICBwdXNoaW50IDEgLy8gMQogICAgcmV0dXJuCg==" }, "byteCode": { "approval": "CyADCAABgATVqzNmNhoAjgEAAQAxGRREQgAAI0cDgAA2GgFHAiNZSU4CIguBAghMFRJENhoCSRUiEkQXI0lLAwxBAN9LA1cCAEsBIgtKIlhFC1tJRQZxC0UBQAAYgA0ABwAJAAALAAAAAAAAsEkkCEUBQv/IsYAEl/QKirIaSwiyGoAEAAJwdrIaI7IZSwGyGIEGshAjsgGztD5JVwQATFcABIAEFR98dRJESRUiEkQXSwVJcQRMRQpESXEDTEUJRHEBRBZJkyIORFcHAUUJQABEgAIAAEsHSRUWVwYCTFBJFYEHCEsISRUWVwYCTFBLARZXBgKAAgAHTFBLARVPAwhMSwxQTBZXBgJQTwJQTFBMULBC/1eACAABAAIAAnB2Qv+zgBEVH3x1AAcACQAACwAAAAAAALAkQw==", "clear": "C4EBQw==" }, "events": [], "templateVariables": {} };
4
+ export const APP_SPEC = { "name": "AbelReader", "structs": { "AssetTinyLabels": [{ "name": "name", "type": "string" }, { "name": "unitName", "type": "string" }, { "name": "decimals", "type": "uint8" }, { "name": "labels", "type": "string[]" }] }, "methods": [{ "name": "getAssetsTiny", "args": [{ "type": "uint64[]", "name": "assetIds" }, { "type": "uint64", "name": "abelAppId" }], "returns": { "type": "(string,string,uint8,string[])", "struct": "AssetTinyLabels" }, "actions": { "create": ["NoOp"], "call": ["NoOp"] }, "readonly": true, "events": [], "recommendations": {} }, { "name": "get_asset_labels", "args": [{ "type": "asset", "name": "assetId" }], "returns": { "type": "string[]" }, "actions": { "create": ["NoOp"], "call": ["NoOp"] }, "readonly": true, "events": [], "recommendations": {} }], "arcs": [22, 28], "networks": {}, "state": { "schema": { "global": { "ints": 0, "bytes": 0 }, "local": { "ints": 0, "bytes": 0 } }, "keys": { "global": {}, "local": {}, "box": {} }, "maps": { "global": {}, "local": {}, "box": {} } }, "bareActions": { "create": [], "call": ["DeleteApplication", "UpdateApplication"] }, "sourceInfo": { "approval": { "sourceInfo": [{ "pc": [203], "errorMessage": "Bytes has valid prefix" }, { "pc": [8], "errorMessage": "OnCompletion must be NoOp" }, { "pc": [41], "errorMessage": "OnCompletion must be one of UpdateApplication, DeleteApplication && can only call when not creating" }, { "pc": [218, 225, 228], "errorMessage": "asset exists" }, { "pc": [112], "errorMessage": "index access is out of bounds" }, { "pc": [71], "errorMessage": "invalid array length header" }, { "pc": [83], "errorMessage": "invalid number of bytes for arc4.dynamic_array<asset>" }, { "pc": [91, 208], "errorMessage": "invalid number of bytes for arc4.uint64" }, { "pc": [352], "errorMessage": "invalid number of bytes for arc4.uint8" }, { "pc": [234], "errorMessage": "overflow" }], "pcOffsetMethod": "cblocks" }, "clear": { "sourceInfo": [], "pcOffsetMethod": "none" } }, "source": { "approval": "I3ByYWdtYSB2ZXJzaW9uIDExCiNwcmFnbWEgdHlwZXRyYWNrIGZhbHNlCgovLyBAYWxnb3JhbmRmb3VuZGF0aW9uL2FsZ29yYW5kLXR5cGVzY3JpcHQvYXJjNC9pbmRleC5kLnRzOjpDb250cmFjdC5hcHByb3ZhbFByb2dyYW0oKSAtPiB1aW50NjQ6Cm1haW46CiAgICBpbnRjYmxvY2sgMSAwIDggVE1QTF9VUERBVEFCTEUKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9hYmVsX3JlYWRlci9jb250cmFjdC5hbGdvLnRzOjEyCiAgICAvLyBleHBvcnQgY2xhc3MgQWJlbFJlYWRlciBleHRlbmRzIENvbnRyYWN0IHsKICAgIHR4biBOdW1BcHBBcmdzCiAgICBieiBtYWluX2FkbWluT25seUA5CiAgICB0eG4gT25Db21wbGV0aW9uCiAgICAhCiAgICBhc3NlcnQgLy8gT25Db21wbGV0aW9uIG11c3QgYmUgTm9PcAogICAgcHVzaGJ5dGVzcyAweGQ1YWIzMzY2IDB4YzJlZDc0M2YgLy8gbWV0aG9kICJnZXRBc3NldHNUaW55KHVpbnQ2NFtdLHVpbnQ2NCkoc3RyaW5nLHN0cmluZyx1aW50OCxzdHJpbmdbXSkiLCBtZXRob2QgImdldF9hc3NldF9sYWJlbHMoYXNzZXQpc3RyaW5nW10iCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAwCiAgICBtYXRjaCBnZXRBc3NldHNUaW55IGdldEFzc2V0TGFiZWxzCiAgICBlcnIKCm1haW5fYWRtaW5Pbmx5QDk6CiAgICAvLyBzbWFydF9jb250cmFjdHMvYWJlbF9yZWFkZXIvY29udHJhY3QuYWxnby50czoxMwogICAgLy8gQGJhcmVtZXRob2QoeyBhbGxvd0FjdGlvbnM6IFsiVXBkYXRlQXBwbGljYXRpb24iLCAiRGVsZXRlQXBwbGljYXRpb24iXSB9KQogICAgaW50Y18wIC8vIDEKICAgIHR4biBPbkNvbXBsZXRpb24KICAgIHNobAogICAgcHVzaGludCA0OCAvLyA0OAogICAgJgogICAgdHhuIEFwcGxpY2F0aW9uSUQKICAgICYmCiAgICBhc3NlcnQgLy8gT25Db21wbGV0aW9uIG11c3QgYmUgb25lIG9mIFVwZGF0ZUFwcGxpY2F0aW9uLCBEZWxldGVBcHBsaWNhdGlvbiAmJiBjYW4gb25seSBjYWxsIHdoZW4gbm90IGNyZWF0aW5nCiAgICAvLyBzbWFydF9jb250cmFjdHMvYWJlbF9yZWFkZXIvY29udHJhY3QuYWxnby50czoxNQogICAgLy8gYXNzZXJ0KFRlbXBsYXRlVmFyPHVpbnQ2ND4oIlVQREFUQUJMRSIpID09PSAxICYmIFR4bi5zZW5kZXIgPT09IEdsb2JhbC5jcmVhdG9yQWRkcmVzcyk7CiAgICBpbnRjXzMgLy8gVE1QTF9VUERBVEFCTEUKICAgIGludGNfMCAvLyAxCiAgICA9PQogICAgYnogbWFpbl9ib29sX2ZhbHNlQDEzCiAgICB0eG4gU2VuZGVyCiAgICBnbG9iYWwgQ3JlYXRvckFkZHJlc3MKICAgID09CiAgICBieiBtYWluX2Jvb2xfZmFsc2VAMTMKICAgIGludGNfMCAvLyAxCiAgICAvLyBzbWFydF9jb250cmFjdHMvYWJlbF9yZWFkZXIvY29udHJhY3QuYWxnby50czoxMwogICAgLy8gQGJhcmVtZXRob2QoeyBhbGxvd0FjdGlvbnM6IFsiVXBkYXRlQXBwbGljYXRpb24iLCAiRGVsZXRlQXBwbGljYXRpb24iXSB9KQogICAgcmV0dXJuCgptYWluX2Jvb2xfZmFsc2VAMTM6CiAgICBpbnRjXzEgLy8gMAogICAgLy8gc21hcnRfY29udHJhY3RzL2FiZWxfcmVhZGVyL2NvbnRyYWN0LmFsZ28udHM6MTMKICAgIC8vIEBiYXJlbWV0aG9kKHsgYWxsb3dBY3Rpb25zOiBbIlVwZGF0ZUFwcGxpY2F0aW9uIiwgIkRlbGV0ZUFwcGxpY2F0aW9uIl0gfSkKICAgIHJldHVybgoKCi8vIHNtYXJ0X2NvbnRyYWN0cy9hYmVsX3JlYWRlci9jb250cmFjdC5hbGdvLnRzOjpBYmVsUmVhZGVyLmdldEFzc2V0c1Rpbnlbcm91dGluZ10oKSAtPiB2b2lkOgpnZXRBc3NldHNUaW55OgogICAgaW50Y18xIC8vIDAKICAgIGR1cG4gMwogICAgcHVzaGJ5dGVzICIiCiAgICAvLyBzbWFydF9jb250cmFjdHMvYWJlbF9yZWFkZXIvY29udHJhY3QuYWxnby50czoxOAogICAgLy8gQGFiaW1ldGhvZCh7IHJlYWRvbmx5OiB0cnVlLCBvbkNyZWF0ZTogImFsbG93IiB9KQogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQogICAgZHVwbiAyCiAgICBpbnRjXzEgLy8gMAogICAgZXh0cmFjdF91aW50MTYgLy8gb24gZXJyb3I6IGludmFsaWQgYXJyYXkgbGVuZ3RoIGhlYWRlcgogICAgZHVwCiAgICBjb3ZlciAyCiAgICBpbnRjXzIgLy8gOAogICAgKgogICAgcHVzaGludCAyIC8vIDIKICAgICsKICAgIHN3YXAKICAgIGxlbgogICAgPT0KICAgIGFzc2VydCAvLyBpbnZhbGlkIG51bWJlciBvZiBieXRlcyBmb3IgYXJjNC5keW5hbWljX2FycmF5PGFzc2V0PgogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgogICAgZHVwCiAgICBsZW4KICAgIGludGNfMiAvLyA4CiAgICA9PQogICAgYXNzZXJ0IC8vIGludmFsaWQgbnVtYmVyIG9mIGJ5dGVzIGZvciBhcmM0LnVpbnQ2NAogICAgYnRvaQogICAgLy8gc21hcnRfY29udHJhY3RzL2FiZWxfcmVhZGVyL2NvbnRyYWN0LmFsZ28udHM6MjAKICAgIC8vIGZvciAobGV0IGlkeDogdWludDY0ID0gMDsgaWR4IDwgYXNzZXRJZHMubGVuZ3RoOyBpZHgrKykgewogICAgaW50Y18xIC8vIDAKCmdldEFzc2V0c1Rpbnlfd2hpbGVfdG9wQDI6CiAgICAvLyBzbWFydF9jb250cmFjdHMvYWJlbF9yZWFkZXIvY29udHJhY3QuYWxnby50czoyMAogICAgLy8gZm9yIChsZXQgaWR4OiB1aW50NjQgPSAwOyBpZHggPCBhc3NldElkcy5sZW5ndGg7IGlkeCsrKSB7CiAgICBkdXAKICAgIGRpZyAzCiAgICA8CiAgICBieiBnZXRBc3NldHNUaW55X2FmdGVyX3doaWxlQDExCiAgICAvLyBzbWFydF9jb250cmFjdHMvYWJlbF9yZWFkZXIvY29udHJhY3QuYWxnby50czoyMQogICAgLy8gY29uc3QgYXNzZXQgPSBhc3NldElkc1tpZHhdOwogICAgZGlnIDMKICAgIGV4dHJhY3QgMiAwCiAgICBkaWcgMQogICAgaW50Y18yIC8vIDgKICAgICoKICAgIGR1cDIKICAgIGludGNfMiAvLyA4CiAgICBleHRyYWN0MyAvLyBvbiBlcnJvcjogaW5kZXggYWNjZXNzIGlzIG91dCBvZiBib3VuZHMKICAgIGJ1cnkgMTEKICAgIGV4dHJhY3RfdWludDY0CiAgICBkdXAKICAgIGJ1cnkgNgogICAgLy8gc21hcnRfY29udHJhY3RzL2FiZWxfcmVhZGVyL2NvbnRyYWN0LmFsZ28udHM6MjIKICAgIC8vIGNvbnN0IFtfLCBleGlzdHNdID0gb3AuQXNzZXRQYXJhbXMuYXNzZXRDcmVhdG9yKGFzc2V0LmlkKTsKICAgIGFzc2V0X3BhcmFtc19nZXQgQXNzZXRDcmVhdG9yCiAgICBidXJ5IDEKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9hYmVsX3JlYWRlci9jb250cmFjdC5hbGdvLnRzOjIzCiAgICAvLyBpZiAoIWV4aXN0cykgewogICAgYm56IGdldEFzc2V0c1RpbnlfZWxzZV9ib2R5QDUKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9hYmVsX3JlYWRlci9jb250cmFjdC5hbGdvLnRzOjQ2LTUxCiAgICAvLyByZXR1cm4gewogICAgLy8gICBuYW1lOiAiIiwKICAgIC8vICAgdW5pdF9uYW1lOiAiIiwKICAgIC8vICAgZGVjaW1hbHM6IG5ldyBVaW50OCgwKSwKICAgIC8vICAgbGFiZWxzOiBbXSwKICAgIC8vIH07CiAgICBwdXNoYnl0ZXMgMHgwMDA3MDAwOTAwMDAwYjAwMDAwMDAwMDAwMAogICAgLy8gc21hcnRfY29udHJhY3RzL2FiZWxfcmVhZGVyL2NvbnRyYWN0LmFsZ28udHM6MjQKICAgIC8vIGxvZyhlbmNvZGVBcmM0KHRoaXMuZ2V0RW1wdHlBc3NldFRpbnlMYWJlbHMoKSkpOwogICAgbG9nCgpnZXRBc3NldHNUaW55X2FmdGVyX2lmX2Vsc2VAMTA6CiAgICAvLyBzbWFydF9jb250cmFjdHMvYWJlbF9yZWFkZXIvY29udHJhY3QuYWxnby50czoyMAogICAgLy8gZm9yIChsZXQgaWR4OiB1aW50NjQgPSAwOyBpZHggPCBhc3NldElkcy5sZW5ndGg7IGlkeCsrKSB7CiAgICBkdXAKICAgIGludGNfMCAvLyAxCiAgICArCiAgICBidXJ5IDEKICAgIGIgZ2V0QXNzZXRzVGlueV93aGlsZV90b3BAMgoKZ2V0QXNzZXRzVGlueV9lbHNlX2JvZHlANToKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9hYmVsX3JlYWRlci9jb250cmFjdC5hbGdvLnRzOjI2CiAgICAvLyBjb25zdCBwdiA9IGNvbXBpbGVBcmM0KEFiZWxTdHViKS5jYWxsLmhhc19hc3NldF9sYWJlbCh7IGFwcElkOiBhYmVsQXBwSWQsIGFyZ3M6IFthc3NldC5pZCwgInB2Il0gfSkucmV0dXJuVmFsdWU7CiAgICBpdHhuX2JlZ2luCiAgICBwdXNoYnl0ZXMgMHg5N2Y0MGE4YSAvLyBtZXRob2QgImhhc19hc3NldF9sYWJlbCh1aW50NjQsc3RyaW5nKXVpbnQ2NCIKICAgIGl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCiAgICBkaWcgOAogICAgaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKICAgIHB1c2hieXRlcyAweDAwMDI3MDc2CiAgICBpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwogICAgaW50Y18xIC8vIDAKICAgIGl0eG5fZmllbGQgT25Db21wbGV0aW9uCiAgICBkaWcgMQogICAgaXR4bl9maWVsZCBBcHBsaWNhdGlvbklECiAgICBwdXNoaW50IDYgLy8gYXBwbAogICAgaXR4bl9maWVsZCBUeXBlRW51bQogICAgaW50Y18xIC8vIDAKICAgIGl0eG5fZmllbGQgRmVlCiAgICBpdHhuX3N1Ym1pdAogICAgaXR4biBMYXN0TG9nCiAgICBkdXAKICAgIGV4dHJhY3QgNCAwCiAgICBzd2FwCiAgICBleHRyYWN0IDAgNAogICAgcHVzaGJ5dGVzIDB4MTUxZjdjNzUKICAgID09CiAgICBhc3NlcnQgLy8gQnl0ZXMgaGFzIHZhbGlkIHByZWZpeAogICAgZHVwCiAgICBsZW4KICAgIGludGNfMiAvLyA4CiAgICA9PQogICAgYXNzZXJ0IC8vIGludmFsaWQgbnVtYmVyIG9mIGJ5dGVzIGZvciBhcmM0LnVpbnQ2NAogICAgYnRvaQogICAgLy8gc21hcnRfY29udHJhY3RzL2FiZWxfcmVhZGVyL2NvbnRyYWN0LmFsZ28udHM6MjgKICAgIC8vIG5hbWU6IGFzc2V0Lm5hbWUudG9TdHJpbmcoKSwKICAgIGRpZyA1CiAgICBkdXAKICAgIGFzc2V0X3BhcmFtc19nZXQgQXNzZXROYW1lCiAgICBzd2FwCiAgICBidXJ5IDEwCiAgICBhc3NlcnQgLy8gYXNzZXQgZXhpc3RzCiAgICAvLyBzbWFydF9jb250cmFjdHMvYWJlbF9yZWFkZXIvY29udHJhY3QuYWxnby50czoyOQogICAgLy8gdW5pdF9uYW1lOiBhc3NldC51bml0TmFtZS50b1N0cmluZygpLAogICAgZHVwCiAgICBhc3NldF9wYXJhbXNfZ2V0IEFzc2V0VW5pdE5hbWUKICAgIHN3YXAKICAgIGJ1cnkgOQogICAgYXNzZXJ0IC8vIGFzc2V0IGV4aXN0cwogICAgLy8gc21hcnRfY29udHJhY3RzL2FiZWxfcmVhZGVyL2NvbnRyYWN0LmFsZ28udHM6MzAKICAgIC8vIGRlY2ltYWxzOiBuZXcgVWludDgoYXNzZXQuZGVjaW1hbHMpLAogICAgYXNzZXRfcGFyYW1zX2dldCBBc3NldERlY2ltYWxzCiAgICBhc3NlcnQgLy8gYXNzZXQgZXhpc3RzCiAgICBpdG9iCiAgICBkdXAKICAgIGJpdGxlbgogICAgaW50Y18yIC8vIDgKICAgIDw9CiAgICBhc3NlcnQgLy8gb3ZlcmZsb3cKICAgIGV4dHJhY3QgNyAxCiAgICBidXJ5IDkKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9hYmVsX3JlYWRlci9jb250cmFjdC5hbGdvLnRzOjMxCiAgICAvLyBsYWJlbHM6IHB2ID09PSAwID8gW10gYXMgc3RyaW5nW10gOiBbInB2Il0sCiAgICBibnogZ2V0QXNzZXRzVGlueV90ZXJuYXJ5X2ZhbHNlQDgKICAgIHB1c2hieXRlcyAweDAwMDAKCmdldEFzc2V0c1RpbnlfdGVybmFyeV9tZXJnZUA5OgogICAgLy8gc21hcnRfY29udHJhY3RzL2FiZWxfcmVhZGVyL2NvbnRyYWN0LmFsZ28udHM6MjctMzIKICAgIC8vIGNvbnN0IGFzc2V0SW5mbzogQXNzZXRUaW55TGFiZWxzID0gewogICAgLy8gICBuYW1lOiBhc3NldC5uYW1lLnRvU3RyaW5nKCksCiAgICAvLyAgIHVuaXRfbmFtZTogYXNzZXQudW5pdE5hbWUudG9TdHJpbmcoKSwKICAgIC8vICAgZGVjaW1hbHM6IG5ldyBVaW50OChhc3NldC5kZWNpbWFscyksCiAgICAvLyAgIGxhYmVsczogcHYgPT09IDAgPyBbXSBhcyBzdHJpbmdbXSA6IFsicHYiXSwKICAgIC8vIH07CiAgICBkaWcgNwogICAgZHVwCiAgICBsZW4KICAgIGl0b2IKICAgIGV4dHJhY3QgNiAyCiAgICBzd2FwCiAgICBjb25jYXQKICAgIGR1cAogICAgbGVuCiAgICBwdXNoaW50IDcgLy8gNwogICAgKwogICAgZGlnIDgKICAgIGR1cAogICAgbGVuCiAgICBpdG9iCiAgICBleHRyYWN0IDYgMgogICAgc3dhcAogICAgY29uY2F0CiAgICBkaWcgMQogICAgaXRvYgogICAgZXh0cmFjdCA2IDIKICAgIHB1c2hieXRlcyAweDAwMDcKICAgIHN3YXAKICAgIGNvbmNhdAogICAgZGlnIDEKICAgIGxlbgogICAgdW5jb3ZlciAzCiAgICArCiAgICBzd2FwCiAgICBkaWcgMTIKICAgIGNvbmNhdAogICAgc3dhcAogICAgaXRvYgogICAgZXh0cmFjdCA2IDIKICAgIGNvbmNhdAogICAgdW5jb3ZlciAyCiAgICBjb25jYXQKICAgIHN3YXAKICAgIGNvbmNhdAogICAgc3dhcAogICAgY29uY2F0CiAgICAvLyBzbWFydF9jb250cmFjdHMvYWJlbF9yZWFkZXIvY29udHJhY3QuYWxnby50czozMwogICAgLy8gbG9nKGVuY29kZUFyYzQoYXNzZXRJbmZvKSk7CiAgICBsb2cKICAgIGIgZ2V0QXNzZXRzVGlueV9hZnRlcl9pZl9lbHNlQDEwCgpnZXRBc3NldHNUaW55X3Rlcm5hcnlfZmFsc2VAODoKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9hYmVsX3JlYWRlci9jb250cmFjdC5hbGdvLnRzOjMxCiAgICAvLyBsYWJlbHM6IHB2ID09PSAwID8gW10gYXMgc3RyaW5nW10gOiBbInB2Il0sCiAgICBwdXNoYnl0ZXMgMHgwMDAxMDAwMjAwMDI3MDc2CiAgICBiIGdldEFzc2V0c1RpbnlfdGVybmFyeV9tZXJnZUA5CgpnZXRBc3NldHNUaW55X2FmdGVyX3doaWxlQDExOgogICAgLy8gc21hcnRfY29udHJhY3RzL2FiZWxfcmVhZGVyL2NvbnRyYWN0LmFsZ28udHM6MTgKICAgIC8vIEBhYmltZXRob2QoeyByZWFkb25seTogdHJ1ZSwgb25DcmVhdGU6ICJhbGxvdyIgfSkKICAgIHB1c2hieXRlcyAweDE1MWY3Yzc1MDAwNzAwMDkwMDAwMGIwMDAwMDAwMDAwMDAKICAgIGxvZwogICAgaW50Y18wIC8vIDEKICAgIHJldHVybgoKCi8vIHNtYXJ0X2NvbnRyYWN0cy9hYmVsX3JlYWRlci9jb250cmFjdC5hbGdvLnRzOjpBYmVsUmVhZGVyLmdldEFzc2V0TGFiZWxzW3JvdXRpbmddKCkgLT4gdm9pZDoKZ2V0QXNzZXRMYWJlbHM6CiAgICAvLyBzbWFydF9jb250cmFjdHMvYWJlbF9yZWFkZXIvY29udHJhY3QuYWxnby50czozOQogICAgLy8gQGFiaW1ldGhvZCh7IHJlYWRvbmx5OiB0cnVlLCBvbkNyZWF0ZTogImFsbG93IiAsIG5hbWU6ICJnZXRfYXNzZXRfbGFiZWxzIiwgcmVzb3VyY2VFbmNvZGluZzogImluZGV4IiB9KQogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQogICAgbGVuCiAgICBpbnRjXzAgLy8gMQogICAgPT0KICAgIGFzc2VydCAvLyBpbnZhbGlkIG51bWJlciBvZiBieXRlcyBmb3IgYXJjNC51aW50OAogICAgcHVzaGJ5dGVzIDB4MTUxZjdjNzUwMDAwCiAgICBsb2cKICAgIGludGNfMCAvLyAxCiAgICByZXR1cm4K", "clear": "I3ByYWdtYSB2ZXJzaW9uIDExCiNwcmFnbWEgdHlwZXRyYWNrIGZhbHNlCgovLyBAYWxnb3JhbmRmb3VuZGF0aW9uL2FsZ29yYW5kLXR5cGVzY3JpcHQvYmFzZS1jb250cmFjdC5kLnRzOjpCYXNlQ29udHJhY3QuY2xlYXJTdGF0ZVByb2dyYW0oKSAtPiB1aW50NjQ6Cm1haW46CiAgICBwdXNoaW50IDEgLy8gMQogICAgcmV0dXJuCg==" }, "byteCode": { "approval": "CyAEAQAIADEbQQAaMRkURIICBNWrM2YEwu10PzYaAI4CAB4BPAAiMRmQgTAaMRgQRCUiEkEACjEAMgkSQQACIkMjQyNHA4AANhoBRwIjWUlOAiQLgQIITBUSRDYaAkkVJBJEFyNJSwMMQQDfSwNXAgBLASQLSiRYRQtbSUUGcQtFAUAAGIANAAcACQAACwAAAAAAALBJIghFAUL/yLGABJf0CoqyGksIshqABAACcHayGiOyGUsBshiBBrIQI7IBs7Q+SVcEAExXAASABBUffHUSREkVJBJEF0sFSXEETEUKRElxA0xFCURxAUQWSZMkDkRXBwFFCUAARIACAABLB0kVFlcGAkxQSRWBBwhLCEkVFlcGAkxQSwEWVwYCgAIAB0xQSwEVTwMITEsMUEwWVwYCUE8CUExQTFCwQv9XgAgAAQACAAJwdkL/s4ARFR98dQAHAAkAAAsAAAAAAACwIkM2GgEVIhJEgAYVH3x1AACwIkM=", "clear": "C4EBQw==" }, "events": [], "templateVariables": { "UPDATABLE": { "type": "AVMUint64" } } };
5
5
  class BinaryStateValue {
6
6
  value;
7
7
  constructor(value) {
@@ -34,6 +34,9 @@ export class AbelReaderParamsFactory {
34
34
  case 'getAssetsTiny':
35
35
  case 'getAssetsTiny(uint64[],uint64)(string,string,uint8,string[])':
36
36
  return AbelReaderParamsFactory.create.getAssetsTiny(params);
37
+ case 'get_asset_labels':
38
+ case 'get_asset_labels(asset)string[]':
39
+ return AbelReaderParamsFactory.create.getAssetLabels(params);
37
40
  }
38
41
  throw new Error(`Unknown ' + verb + ' method`);
39
42
  },
@@ -50,6 +53,19 @@ export class AbelReaderParamsFactory {
50
53
  args: Array.isArray(params.args) ? params.args : [params.args.assetIds, params.args.abelAppId],
51
54
  };
52
55
  },
56
+ /**
57
+ * Constructs create ABI call params for the AbelReader smart contract using the get_asset_labels(asset)string[] ABI method
58
+ *
59
+ * @param params Parameters for the call
60
+ * @returns An `AppClientMethodCallParams` object for the call
61
+ */
62
+ getAssetLabels(params) {
63
+ return {
64
+ ...params,
65
+ method: 'get_asset_labels(asset)string[]',
66
+ args: Array.isArray(params.args) ? params.args : [params.args.assetId],
67
+ };
68
+ },
53
69
  };
54
70
  }
55
71
  /**
@@ -65,6 +81,19 @@ export class AbelReaderParamsFactory {
65
81
  args: Array.isArray(params.args) ? params.args : [params.args.assetIds, params.args.abelAppId],
66
82
  };
67
83
  }
84
+ /**
85
+ * Constructs a no op call for the get_asset_labels(asset)string[] ABI method
86
+ *
87
+ * @param params Parameters for the call
88
+ * @returns An `AppClientMethodCallParams` object for the call
89
+ */
90
+ static getAssetLabels(params) {
91
+ return {
92
+ ...params,
93
+ method: 'get_asset_labels(asset)string[]',
94
+ args: Array.isArray(params.args) ? params.args : [params.args.assetId],
95
+ };
96
+ }
68
97
  }
69
98
  /**
70
99
  * A factory to create and deploy one or more instance of the AbelReader smart contract and to create one or more app clients to interact with those (or other) app instances
@@ -150,6 +179,43 @@ class AbelReaderFactory {
150
179
  getAssetsTiny: (params) => {
151
180
  return this.appFactory.params.create(AbelReaderParamsFactory.create.getAssetsTiny(params));
152
181
  },
182
+ /**
183
+ * Creates a new instance of the AbelReader smart contract using the get_asset_labels(asset)string[] ABI method.
184
+ *
185
+ * @param params The params for the smart contract call
186
+ * @returns The create params
187
+ */
188
+ getAssetLabels: (params) => {
189
+ return this.appFactory.params.create(AbelReaderParamsFactory.create.getAssetLabels(params));
190
+ },
191
+ },
192
+ /**
193
+ * Gets available deployUpdate methods
194
+ */
195
+ deployUpdate: {
196
+ /**
197
+ * Updates an existing instance of the AbelReader smart contract using a bare call.
198
+ *
199
+ * @param params The params for the bare (raw) call
200
+ * @returns The params for a deployUpdate call
201
+ */
202
+ bare: (params) => {
203
+ return this.appFactory.params.bare.deployUpdate(params);
204
+ },
205
+ },
206
+ /**
207
+ * Gets available deployDelete methods
208
+ */
209
+ deployDelete: {
210
+ /**
211
+ * Deletes an existing instance of the AbelReader smart contract using a bare call.
212
+ *
213
+ * @param params The params for the bare (raw) call
214
+ * @returns The params for a deployDelete call
215
+ */
216
+ bare: (params) => {
217
+ return this.appFactory.params.bare.deployDelete(params);
218
+ },
153
219
  },
154
220
  };
155
221
  /**
@@ -169,6 +235,15 @@ class AbelReaderFactory {
169
235
  getAssetsTiny: (params) => {
170
236
  return this.appFactory.createTransaction.create(AbelReaderParamsFactory.create.getAssetsTiny(params));
171
237
  },
238
+ /**
239
+ * Creates a new instance of the AbelReader smart contract using the get_asset_labels(asset)string[] ABI method.
240
+ *
241
+ * @param params The params for the smart contract call
242
+ * @returns The create transaction
243
+ */
244
+ getAssetLabels: (params) => {
245
+ return this.appFactory.createTransaction.create(AbelReaderParamsFactory.create.getAssetLabels(params));
246
+ },
172
247
  },
173
248
  };
174
249
  /**
@@ -189,6 +264,16 @@ class AbelReaderFactory {
189
264
  const result = await this.appFactory.send.create(AbelReaderParamsFactory.create.getAssetsTiny(params));
190
265
  return { result: { ...result.result, return: result.result.return }, appClient: new AbelReaderClient(result.appClient) };
191
266
  },
267
+ /**
268
+ * Creates a new instance of the AbelReader smart contract using an ABI method call using the get_asset_labels(asset)string[] ABI method.
269
+ *
270
+ * @param params The params for the smart contract call
271
+ * @returns The create result
272
+ */
273
+ getAssetLabels: async (params) => {
274
+ const result = await this.appFactory.send.create(AbelReaderParamsFactory.create.getAssetLabels(params));
275
+ return { result: { ...result.result, return: result.result.return }, appClient: new AbelReaderClient(result.appClient) };
276
+ },
192
277
  },
193
278
  };
194
279
  }
@@ -255,6 +340,34 @@ class AbelReaderClient {
255
340
  * Get parameters to create transactions for the current app. A good mental model for this is that these parameters represent a deferred transaction creation.
256
341
  */
257
342
  params = {
343
+ /**
344
+ * Gets available update methods
345
+ */
346
+ update: {
347
+ /**
348
+ * Updates an existing instance of the AbelReader smart contract using a bare call.
349
+ *
350
+ * @param params The params for the bare (raw) call
351
+ * @returns The update result
352
+ */
353
+ bare: (params) => {
354
+ return this.appClient.params.bare.update(params);
355
+ },
356
+ },
357
+ /**
358
+ * Gets available delete methods
359
+ */
360
+ delete: {
361
+ /**
362
+ * Deletes an existing instance of the AbelReader smart contract using a bare call.
363
+ *
364
+ * @param params The params for the bare (raw) call
365
+ * @returns The delete result
366
+ */
367
+ bare: (params) => {
368
+ return this.appClient.params.bare.delete(params);
369
+ },
370
+ },
258
371
  /**
259
372
  * Makes a clear_state call to an existing instance of the AbelReader smart contract.
260
373
  *
@@ -275,11 +388,50 @@ class AbelReaderClient {
275
388
  getAssetsTiny: (params) => {
276
389
  return this.appClient.params.call(AbelReaderParamsFactory.getAssetsTiny(params));
277
390
  },
391
+ /**
392
+ * Makes a call to the AbelReader smart contract using the `get_asset_labels(asset)string[]` ABI method.
393
+ *
394
+ * This method is a readonly method; calling it with onComplete of NoOp will result in a simulated transaction rather than a real transaction.
395
+ *
396
+ * @param params The params for the smart contract call
397
+ * @returns The call params
398
+ */
399
+ getAssetLabels: (params) => {
400
+ return this.appClient.params.call(AbelReaderParamsFactory.getAssetLabels(params));
401
+ },
278
402
  };
279
403
  /**
280
404
  * Create transactions for the current app
281
405
  */
282
406
  createTransaction = {
407
+ /**
408
+ * Gets available update methods
409
+ */
410
+ update: {
411
+ /**
412
+ * Updates an existing instance of the AbelReader smart contract using a bare call.
413
+ *
414
+ * @param params The params for the bare (raw) call
415
+ * @returns The update result
416
+ */
417
+ bare: (params) => {
418
+ return this.appClient.createTransaction.bare.update(params);
419
+ },
420
+ },
421
+ /**
422
+ * Gets available delete methods
423
+ */
424
+ delete: {
425
+ /**
426
+ * Deletes an existing instance of the AbelReader smart contract using a bare call.
427
+ *
428
+ * @param params The params for the bare (raw) call
429
+ * @returns The delete result
430
+ */
431
+ bare: (params) => {
432
+ return this.appClient.createTransaction.bare.delete(params);
433
+ },
434
+ },
283
435
  /**
284
436
  * Makes a clear_state call to an existing instance of the AbelReader smart contract.
285
437
  *
@@ -300,11 +452,50 @@ class AbelReaderClient {
300
452
  getAssetsTiny: (params) => {
301
453
  return this.appClient.createTransaction.call(AbelReaderParamsFactory.getAssetsTiny(params));
302
454
  },
455
+ /**
456
+ * Makes a call to the AbelReader smart contract using the `get_asset_labels(asset)string[]` ABI method.
457
+ *
458
+ * This method is a readonly method; calling it with onComplete of NoOp will result in a simulated transaction rather than a real transaction.
459
+ *
460
+ * @param params The params for the smart contract call
461
+ * @returns The call transaction
462
+ */
463
+ getAssetLabels: (params) => {
464
+ return this.appClient.createTransaction.call(AbelReaderParamsFactory.getAssetLabels(params));
465
+ },
303
466
  };
304
467
  /**
305
468
  * Send calls to the current app
306
469
  */
307
470
  send = {
471
+ /**
472
+ * Gets available update methods
473
+ */
474
+ update: {
475
+ /**
476
+ * Updates an existing instance of the AbelReader smart contract using a bare call.
477
+ *
478
+ * @param params The params for the bare (raw) call
479
+ * @returns The update result
480
+ */
481
+ bare: (params) => {
482
+ return this.appClient.send.bare.update(params);
483
+ },
484
+ },
485
+ /**
486
+ * Gets available delete methods
487
+ */
488
+ delete: {
489
+ /**
490
+ * Deletes an existing instance of the AbelReader smart contract using a bare call.
491
+ *
492
+ * @param params The params for the bare (raw) call
493
+ * @returns The delete result
494
+ */
495
+ bare: (params) => {
496
+ return this.appClient.send.bare.delete(params);
497
+ },
498
+ },
308
499
  /**
309
500
  * Makes a clear_state call to an existing instance of the AbelReader smart contract.
310
501
  *
@@ -326,6 +517,18 @@ class AbelReaderClient {
326
517
  const result = await this.appClient.send.call(AbelReaderParamsFactory.getAssetsTiny(params));
327
518
  return { ...result, return: result.return };
328
519
  },
520
+ /**
521
+ * Makes a call to the AbelReader smart contract using the `get_asset_labels(asset)string[]` ABI method.
522
+ *
523
+ * This method is a readonly method; calling it with onComplete of NoOp will result in a simulated transaction rather than a real transaction.
524
+ *
525
+ * @param params The params for the smart contract call
526
+ * @returns The call result
527
+ */
528
+ getAssetLabels: async (params) => {
529
+ const result = await this.appClient.send.call(AbelReaderParamsFactory.getAssetLabels(params));
530
+ return { ...result, return: result.return };
531
+ },
329
532
  };
330
533
  /**
331
534
  * Clone this app client with different params
@@ -348,6 +551,18 @@ class AbelReaderClient {
348
551
  const result = await this.appClient.send.call(AbelReaderParamsFactory.getAssetsTiny(params));
349
552
  return result.return;
350
553
  }
554
+ /**
555
+ * Makes a readonly (simulated) call to the AbelReader smart contract using the `get_asset_labels(asset)string[]` ABI method.
556
+ *
557
+ * This method is a readonly method; calling it with onComplete of NoOp will result in a simulated transaction rather than a real transaction.
558
+ *
559
+ * @param params The params for the smart contract call
560
+ * @returns The call result
561
+ */
562
+ async getAssetLabels(params) {
563
+ const result = await this.appClient.send.call(AbelReaderParamsFactory.getAssetLabels(params));
564
+ return result.return;
565
+ }
351
566
  /**
352
567
  * Methods to access state for the current AbelReader app
353
568
  */
@@ -366,6 +581,30 @@ class AbelReaderClient {
366
581
  resultMappers.push((v) => client.decodeReturnValue('getAssetsTiny(uint64[],uint64)(string,string,uint8,string[])', v));
367
582
  return this;
368
583
  },
584
+ /**
585
+ * Add a get_asset_labels(asset)string[] method call against the AbelReader contract
586
+ */
587
+ getAssetLabels(params) {
588
+ promiseChain = promiseChain.then(async () => composer.addAppCallMethodCall(await client.params.getAssetLabels(params)));
589
+ resultMappers.push((v) => client.decodeReturnValue('get_asset_labels(asset)string[]', v));
590
+ return this;
591
+ },
592
+ get update() {
593
+ return {
594
+ bare: (params) => {
595
+ promiseChain = promiseChain.then(async () => composer.addAppUpdate(await client.params.update.bare(params)));
596
+ return this;
597
+ },
598
+ };
599
+ },
600
+ get delete() {
601
+ return {
602
+ bare: (params) => {
603
+ promiseChain = promiseChain.then(() => composer.addAppDelete(client.params.delete.bare(params)));
604
+ return this;
605
+ },
606
+ };
607
+ },
369
608
  /**
370
609
  * Add a clear state call to the AbelReader contract
371
610
  */
@@ -507,5 +746,14 @@ export class AbelReaderSDK extends GhostBase {
507
746
  extraSimulateArgs,
508
747
  });
509
748
  }
749
+ async get_asset_labels({ methodArgsOrArgsArray, extraMethodCallArgs, extraSimulateArgs, }) {
750
+ return this.execute({
751
+ signature: 'get_asset_labels(asset)string[]',
752
+ txnBuilder: (builder, args) => builder.get_asset_labels(args),
753
+ methodArgsOrArgsArray,
754
+ extraMethodCallArgs,
755
+ extraSimulateArgs,
756
+ });
757
+ }
510
758
  }
511
759
  /* END GHOST SDK CODE */
package/dist/index.d.ts CHANGED
@@ -13,5 +13,7 @@ export declare class AbelGhostSDK {
13
13
  ghostAppId?: bigint;
14
14
  });
15
15
  getAssetsTinyLabels(assetIds: number[] | bigint[]): Promise<import("./generated/AbelReaderSDK.js").AssetTinyLabels[]>;
16
- getAssetsTiny(assetIds: number[] | bigint[]): Promise<import("./generated/AbelReaderSDK.js").AssetTinyLabels[]>;
16
+ getAssetLabels(assetId: number | bigint): Promise<string[]>;
17
+ getAllAssetIDs(): Promise<bigint[]>;
18
+ private getBoxesByLength;
17
19
  }
package/dist/index.js CHANGED
@@ -6,6 +6,7 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
6
6
  };
7
7
  import { AbelReaderSDK } from "./generated/AbelReaderSDK.js";
8
8
  import { chunked } from "./utils/chunked.js";
9
+ import { decodeUint64 } from "algosdk";
9
10
  export class AbelGhostSDK {
10
11
  static baseSDK = AbelReaderSDK;
11
12
  algorand;
@@ -23,23 +24,31 @@ export class AbelGhostSDK {
23
24
  });
24
25
  }
25
26
  getAssetsTinyLabels(assetIds) {
26
- if (!this.registryAppId)
27
- throw new Error("Can not get labels without registry app id");
28
- console.log({ assetIds, abelAppId: this.registryAppId });
29
27
  return this.baseSDK.getAssetsTiny({
30
- methodArgsOrArgsArray: { assetIds, abelAppId: this.registryAppId },
31
- extraMethodCallArgs: { extraFee: (1000).microAlgo() },
28
+ methodArgsOrArgsArray: { assetIds, abelAppId: this.registryAppId ?? 0n },
29
+ extraMethodCallArgs: { extraFee: (assetIds.length * 1000).microAlgo() },
32
30
  });
33
31
  }
34
- getAssetsTiny(assetIds) {
35
- return this.baseSDK.getAssetsTiny({
36
- methodArgsOrArgsArray: { assetIds, abelAppId: 0n },
37
- });
32
+ async getAssetLabels(assetId) {
33
+ if (!this.registryAppId)
34
+ return [];
35
+ const { return: ret } = await this.baseSDK.factory
36
+ .getAppClientById({ appId: this.registryAppId })
37
+ .send.getAssetLabels({ args: { assetId: BigInt(assetId) } });
38
+ return ret ?? [];
39
+ }
40
+ async getAllAssetIDs() {
41
+ if (!this.registryAppId)
42
+ return [];
43
+ return (await this.getBoxesByLength(8)).map((boxName) => decodeUint64(boxName.nameRaw, "bigint"));
44
+ }
45
+ async getBoxesByLength(length) {
46
+ if (!this.registryAppId)
47
+ return [];
48
+ const boxNames = await this.algorand.app.getBoxNames(this.registryAppId);
49
+ return boxNames.filter((boxName) => boxName.nameRaw.length === length);
38
50
  }
39
51
  }
40
52
  __decorate([
41
53
  chunked(63)
42
54
  ], AbelGhostSDK.prototype, "getAssetsTinyLabels", null);
43
- __decorate([
44
- chunked(128)
45
- ], AbelGhostSDK.prototype, "getAssetsTiny", null);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "abel-ghost-sdk",
3
- "version": "0.0.1",
3
+ "version": "0.0.2",
4
4
  "description": "",
5
5
  "repository": {
6
6
  "type": "git",