abel-ghost-sdk 0.0.5 → 0.0.7
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.
- package/dist/generated/AbelReaderSDK.d.ts +255 -17
- package/dist/generated/AbelReaderSDK.js +128 -2
- package/dist/index.d.ts +5 -1
- package/dist/index.js +16 -1
- package/package.json +1 -1
|
@@ -50,6 +50,14 @@ export type BalanceInfo = {
|
|
|
50
50
|
* Converts the ABI tuple representation of a BalanceInfo to the struct representation
|
|
51
51
|
*/
|
|
52
52
|
export declare function BalanceInfoFromTuple(abiTuple: [bigint, bigint]): BalanceInfo;
|
|
53
|
+
export type BlockTimeAndTc = {
|
|
54
|
+
ts: number;
|
|
55
|
+
tc: bigint;
|
|
56
|
+
};
|
|
57
|
+
/**
|
|
58
|
+
* Converts the ABI tuple representation of a BlockTimeAndTc to the struct representation
|
|
59
|
+
*/
|
|
60
|
+
export declare function BlockTimeAndTcFromTuple(abiTuple: [number, bigint]): BlockTimeAndTc;
|
|
53
61
|
/**
|
|
54
62
|
* Deploy-time template variables
|
|
55
63
|
*/
|
|
@@ -74,6 +82,10 @@ export type AbelReaderArgs = {
|
|
|
74
82
|
'get_asset_labels(asset)string[]': {
|
|
75
83
|
assetId: bigint;
|
|
76
84
|
};
|
|
85
|
+
'getBlockTimesAndTc(uint64,uint64)(uint32,uint64)': {
|
|
86
|
+
firstRound: bigint | number;
|
|
87
|
+
lastRound: bigint | number;
|
|
88
|
+
};
|
|
77
89
|
};
|
|
78
90
|
/**
|
|
79
91
|
* The tuple representation of the arguments for each method
|
|
@@ -82,6 +94,7 @@ export type AbelReaderArgs = {
|
|
|
82
94
|
'getBalanceInfo(address[])(uint64,uint64)': [accounts: string[]];
|
|
83
95
|
'getAssetsTiny(uint64[],uint64)(string,string,uint8,string[])': [assetIds: bigint[] | number[], abelAppId: bigint | number];
|
|
84
96
|
'get_asset_labels(asset)string[]': [assetId: bigint];
|
|
97
|
+
'getBlockTimesAndTc(uint64,uint64)(uint32,uint64)': [firstRound: bigint | number, lastRound: bigint | number];
|
|
85
98
|
};
|
|
86
99
|
};
|
|
87
100
|
/**
|
|
@@ -91,6 +104,7 @@ export type AbelReaderReturns = {
|
|
|
91
104
|
'getBalanceInfo(address[])(uint64,uint64)': BalanceInfo;
|
|
92
105
|
'getAssetsTiny(uint64[],uint64)(string,string,uint8,string[])': AssetTinyLabels;
|
|
93
106
|
'get_asset_labels(asset)string[]': string[];
|
|
107
|
+
'getBlockTimesAndTc(uint64,uint64)(uint32,uint64)': BlockTimeAndTc;
|
|
94
108
|
};
|
|
95
109
|
/**
|
|
96
110
|
* Defines the types of available calls and state of the AbelReader smart contract.
|
|
@@ -111,6 +125,10 @@ export type AbelReaderTypes = {
|
|
|
111
125
|
argsObj: AbelReaderArgs['obj']['get_asset_labels(asset)string[]'];
|
|
112
126
|
argsTuple: AbelReaderArgs['tuple']['get_asset_labels(asset)string[]'];
|
|
113
127
|
returns: AbelReaderReturns['get_asset_labels(asset)string[]'];
|
|
128
|
+
}> & Record<'getBlockTimesAndTc(uint64,uint64)(uint32,uint64)' | 'getBlockTimesAndTc', {
|
|
129
|
+
argsObj: AbelReaderArgs['obj']['getBlockTimesAndTc(uint64,uint64)(uint32,uint64)'];
|
|
130
|
+
argsTuple: AbelReaderArgs['tuple']['getBlockTimesAndTc(uint64,uint64)(uint32,uint64)'];
|
|
131
|
+
returns: AbelReaderReturns['getBlockTimesAndTc(uint64,uint64)(uint32,uint64)'];
|
|
114
132
|
}>;
|
|
115
133
|
};
|
|
116
134
|
/**
|
|
@@ -163,6 +181,14 @@ export type AbelReaderCreateCallParams = Expand<CallParams<AbelReaderArgs['obj']
|
|
|
163
181
|
method: 'get_asset_labels(asset)string[]';
|
|
164
182
|
} & {
|
|
165
183
|
onComplete?: OnApplicationComplete.NoOpOC;
|
|
184
|
+
} & CreateSchema> | Expand<CallParams<AbelReaderArgs['obj']['getBlockTimesAndTc(uint64,uint64)(uint32,uint64)'] | AbelReaderArgs['tuple']['getBlockTimesAndTc(uint64,uint64)(uint32,uint64)']> & {
|
|
185
|
+
method: 'getBlockTimesAndTc';
|
|
186
|
+
} & {
|
|
187
|
+
onComplete?: OnApplicationComplete.NoOpOC;
|
|
188
|
+
} & CreateSchema> | Expand<CallParams<AbelReaderArgs['obj']['getBlockTimesAndTc(uint64,uint64)(uint32,uint64)'] | AbelReaderArgs['tuple']['getBlockTimesAndTc(uint64,uint64)(uint32,uint64)']> & {
|
|
189
|
+
method: 'getBlockTimesAndTc(uint64,uint64)(uint32,uint64)';
|
|
190
|
+
} & {
|
|
191
|
+
onComplete?: OnApplicationComplete.NoOpOC;
|
|
166
192
|
} & CreateSchema>;
|
|
167
193
|
/**
|
|
168
194
|
* Defines supported update method params for this smart contract
|
|
@@ -260,6 +286,17 @@ export declare abstract class AbelReaderParamsFactory {
|
|
|
260
286
|
}): AppClientMethodCallParams & AppClientCompilationParams & {
|
|
261
287
|
onComplete?: OnApplicationComplete.NoOpOC;
|
|
262
288
|
};
|
|
289
|
+
/**
|
|
290
|
+
* Constructs create ABI call params for the AbelReader smart contract using the getBlockTimesAndTc(uint64,uint64)(uint32,uint64) ABI method
|
|
291
|
+
*
|
|
292
|
+
* @param params Parameters for the call
|
|
293
|
+
* @returns An `AppClientMethodCallParams` object for the call
|
|
294
|
+
*/
|
|
295
|
+
getBlockTimesAndTc(params: CallParams<AbelReaderArgs['obj']['getBlockTimesAndTc(uint64,uint64)(uint32,uint64)'] | AbelReaderArgs['tuple']['getBlockTimesAndTc(uint64,uint64)(uint32,uint64)']> & AppClientCompilationParams & {
|
|
296
|
+
onComplete?: OnApplicationComplete.NoOpOC;
|
|
297
|
+
}): AppClientMethodCallParams & AppClientCompilationParams & {
|
|
298
|
+
onComplete?: OnApplicationComplete.NoOpOC;
|
|
299
|
+
};
|
|
263
300
|
};
|
|
264
301
|
/**
|
|
265
302
|
* Constructs a no op call for the getBalanceInfo(address[])(uint64,uint64) ABI method
|
|
@@ -282,6 +319,13 @@ export declare abstract class AbelReaderParamsFactory {
|
|
|
282
319
|
* @returns An `AppClientMethodCallParams` object for the call
|
|
283
320
|
*/
|
|
284
321
|
static getAssetLabels(params: CallParams<AbelReaderArgs['obj']['get_asset_labels(asset)string[]'] | AbelReaderArgs['tuple']['get_asset_labels(asset)string[]']> & CallOnComplete): AppClientMethodCallParams & CallOnComplete;
|
|
322
|
+
/**
|
|
323
|
+
* Constructs a no op call for the getBlockTimesAndTc(uint64,uint64)(uint32,uint64) ABI method
|
|
324
|
+
*
|
|
325
|
+
* @param params Parameters for the call
|
|
326
|
+
* @returns An `AppClientMethodCallParams` object for the call
|
|
327
|
+
*/
|
|
328
|
+
static getBlockTimesAndTc(params: CallParams<AbelReaderArgs['obj']['getBlockTimesAndTc(uint64,uint64)(uint32,uint64)'] | AbelReaderArgs['tuple']['getBlockTimesAndTc(uint64,uint64)(uint32,uint64)']> & CallOnComplete): AppClientMethodCallParams & CallOnComplete;
|
|
285
329
|
}
|
|
286
330
|
/**
|
|
287
331
|
* 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
|
|
@@ -368,7 +412,9 @@ declare class AbelReaderFactory {
|
|
|
368
412
|
version: string;
|
|
369
413
|
deletable?: boolean | undefined;
|
|
370
414
|
updatable?: boolean | undefined;
|
|
371
|
-
groupId: string;
|
|
415
|
+
groupId: string; /**
|
|
416
|
+
* Send calls to the current app
|
|
417
|
+
*/
|
|
372
418
|
txIds: string[];
|
|
373
419
|
returns?: ABIReturn[] | undefined;
|
|
374
420
|
confirmations: modelsv2.PendingTransactionResponse[];
|
|
@@ -726,6 +772,106 @@ declare class AbelReaderFactory {
|
|
|
726
772
|
}> | undefined)[] | undefined;
|
|
727
773
|
onComplete: OnApplicationComplete.NoOpOC | OnApplicationComplete.OptInOC | OnApplicationComplete.CloseOutOC | OnApplicationComplete.UpdateApplicationOC | OnApplicationComplete.DeleteApplicationOC;
|
|
728
774
|
}>;
|
|
775
|
+
/**
|
|
776
|
+
* Creates a new instance of the AbelReader smart contract using the getBlockTimesAndTc(uint64,uint64)(uint32,uint64) ABI method.
|
|
777
|
+
*
|
|
778
|
+
* @param params The params for the smart contract call
|
|
779
|
+
* @returns The create params
|
|
780
|
+
*/
|
|
781
|
+
getBlockTimesAndTc: (params: CallParams<AbelReaderArgs['obj']['getBlockTimesAndTc(uint64,uint64)(uint32,uint64)'] | AbelReaderArgs['tuple']['getBlockTimesAndTc(uint64,uint64)(uint32,uint64)']> & AppClientCompilationParams & CreateSchema & {
|
|
782
|
+
onComplete?: OnApplicationComplete.NoOpOC;
|
|
783
|
+
}) => Promise<{
|
|
784
|
+
deployTimeParams: import("@algorandfoundation/algokit-utils/types/app").TealTemplateParams | undefined;
|
|
785
|
+
schema: {
|
|
786
|
+
globalInts: number;
|
|
787
|
+
globalByteSlices: number;
|
|
788
|
+
localInts: number;
|
|
789
|
+
localByteSlices: number;
|
|
790
|
+
};
|
|
791
|
+
approvalProgram: Uint8Array;
|
|
792
|
+
clearStateProgram: Uint8Array;
|
|
793
|
+
maxFee?: import("@algorandfoundation/algokit-utils/types/amount").AlgoAmount | undefined;
|
|
794
|
+
note?: string | Uint8Array | undefined;
|
|
795
|
+
signer?: TransactionSigner | import("@algorandfoundation/algokit-utils/types/account").TransactionSignerAccount | undefined;
|
|
796
|
+
onComplete?: OnApplicationComplete.NoOpOC | OnApplicationComplete.OptInOC | OnApplicationComplete.CloseOutOC | OnApplicationComplete.UpdateApplicationOC | OnApplicationComplete.DeleteApplicationOC | undefined;
|
|
797
|
+
rejectVersion?: number | undefined;
|
|
798
|
+
lease?: string | Uint8Array | undefined;
|
|
799
|
+
rekeyTo?: string | Address | undefined;
|
|
800
|
+
staticFee?: import("@algorandfoundation/algokit-utils/types/amount").AlgoAmount | undefined;
|
|
801
|
+
extraFee?: import("@algorandfoundation/algokit-utils/types/amount").AlgoAmount | undefined;
|
|
802
|
+
validityWindow?: number | bigint | undefined;
|
|
803
|
+
firstValidRound?: bigint | undefined;
|
|
804
|
+
lastValidRound?: bigint | undefined;
|
|
805
|
+
accountReferences?: (string | Address)[] | undefined;
|
|
806
|
+
appReferences?: bigint[] | undefined;
|
|
807
|
+
assetReferences?: bigint[] | undefined;
|
|
808
|
+
boxReferences?: (import("@algorandfoundation/algokit-utils/types/app-manager").BoxReference | import("@algorandfoundation/algokit-utils/types/app-manager").BoxIdentifier)[] | undefined;
|
|
809
|
+
accessReferences?: import("@algorandfoundation/algokit-utils/types/app-manager").ResourceReference[] | undefined;
|
|
810
|
+
sender?: string | Address | undefined;
|
|
811
|
+
method: string;
|
|
812
|
+
args?: (import("algosdk").ABIValue | import("@algorandfoundation/algokit-utils/types/app-arc56").ABIStruct | AppMethodCallTransactionArgument | undefined)[] | undefined;
|
|
813
|
+
updatable?: boolean | undefined;
|
|
814
|
+
deletable?: boolean | undefined;
|
|
815
|
+
extraProgramPages?: number | undefined;
|
|
816
|
+
} & {
|
|
817
|
+
sender: Address;
|
|
818
|
+
signer: TransactionSigner | import("@algorandfoundation/algokit-utils/types/account").TransactionSignerAccount | undefined;
|
|
819
|
+
method: import("@algorandfoundation/algokit-utils/types/app-arc56").Arc56Method;
|
|
820
|
+
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<{
|
|
821
|
+
sender: string | Address;
|
|
822
|
+
maxFee?: import("@algorandfoundation/algokit-utils/types/amount").AlgoAmount | undefined;
|
|
823
|
+
note?: string | Uint8Array | undefined;
|
|
824
|
+
args?: Uint8Array[] | undefined;
|
|
825
|
+
signer?: TransactionSigner | import("@algorandfoundation/algokit-utils/types/account").TransactionSignerAccount | undefined;
|
|
826
|
+
onComplete?: OnApplicationComplete.NoOpOC | OnApplicationComplete.OptInOC | OnApplicationComplete.CloseOutOC | OnApplicationComplete.UpdateApplicationOC | OnApplicationComplete.DeleteApplicationOC | undefined;
|
|
827
|
+
rejectVersion?: number | undefined;
|
|
828
|
+
lease?: string | Uint8Array | undefined;
|
|
829
|
+
rekeyTo?: string | Address | undefined;
|
|
830
|
+
staticFee?: import("@algorandfoundation/algokit-utils/types/amount").AlgoAmount | undefined;
|
|
831
|
+
extraFee?: import("@algorandfoundation/algokit-utils/types/amount").AlgoAmount | undefined;
|
|
832
|
+
validityWindow?: number | bigint | undefined;
|
|
833
|
+
firstValidRound?: bigint | undefined;
|
|
834
|
+
lastValidRound?: bigint | undefined;
|
|
835
|
+
accountReferences?: (string | Address)[] | undefined;
|
|
836
|
+
appReferences?: bigint[] | undefined;
|
|
837
|
+
assetReferences?: bigint[] | undefined;
|
|
838
|
+
boxReferences?: (import("@algorandfoundation/algokit-utils/types/app-manager").BoxReference | import("@algorandfoundation/algokit-utils/types/app-manager").BoxIdentifier)[] | undefined;
|
|
839
|
+
accessReferences?: import("@algorandfoundation/algokit-utils/types/app-manager").ResourceReference[] | undefined;
|
|
840
|
+
approvalProgram: string | Uint8Array;
|
|
841
|
+
clearStateProgram: string | Uint8Array;
|
|
842
|
+
schema?: {
|
|
843
|
+
globalInts: number;
|
|
844
|
+
globalByteSlices: number;
|
|
845
|
+
localInts: number;
|
|
846
|
+
localByteSlices: number;
|
|
847
|
+
} | undefined;
|
|
848
|
+
extraProgramPages?: number | undefined;
|
|
849
|
+
}> | import("@algorandfoundation/algokit-utils/types/composer").AppMethodCall<{
|
|
850
|
+
sender: string | Address;
|
|
851
|
+
signer?: TransactionSigner | import("@algorandfoundation/algokit-utils/types/account").TransactionSignerAccount | undefined;
|
|
852
|
+
rekeyTo?: string | Address | undefined;
|
|
853
|
+
note?: string | Uint8Array | undefined;
|
|
854
|
+
lease?: string | Uint8Array | undefined;
|
|
855
|
+
staticFee?: import("@algorandfoundation/algokit-utils/types/amount").AlgoAmount | undefined;
|
|
856
|
+
extraFee?: import("@algorandfoundation/algokit-utils/types/amount").AlgoAmount | undefined;
|
|
857
|
+
maxFee?: import("@algorandfoundation/algokit-utils/types/amount").AlgoAmount | undefined;
|
|
858
|
+
validityWindow?: number | bigint | undefined;
|
|
859
|
+
firstValidRound?: bigint | undefined;
|
|
860
|
+
lastValidRound?: bigint | undefined;
|
|
861
|
+
appId: bigint;
|
|
862
|
+
onComplete?: OnApplicationComplete.UpdateApplicationOC | undefined;
|
|
863
|
+
args?: Uint8Array[] | undefined;
|
|
864
|
+
accountReferences?: (string | Address)[] | undefined;
|
|
865
|
+
appReferences?: bigint[] | undefined;
|
|
866
|
+
assetReferences?: bigint[] | undefined;
|
|
867
|
+
boxReferences?: (import("@algorandfoundation/algokit-utils/types/app-manager").BoxReference | import("@algorandfoundation/algokit-utils/types/app-manager").BoxIdentifier)[] | undefined;
|
|
868
|
+
accessReferences?: import("@algorandfoundation/algokit-utils/types/app-manager").ResourceReference[] | undefined;
|
|
869
|
+
rejectVersion?: number | undefined;
|
|
870
|
+
approvalProgram: string | Uint8Array;
|
|
871
|
+
clearStateProgram: string | Uint8Array;
|
|
872
|
+
}> | undefined)[] | undefined;
|
|
873
|
+
onComplete: OnApplicationComplete.NoOpOC | OnApplicationComplete.OptInOC | OnApplicationComplete.CloseOutOC | OnApplicationComplete.UpdateApplicationOC | OnApplicationComplete.DeleteApplicationOC;
|
|
874
|
+
}>;
|
|
729
875
|
};
|
|
730
876
|
/**
|
|
731
877
|
* Gets available deployUpdate methods
|
|
@@ -845,6 +991,19 @@ declare class AbelReaderFactory {
|
|
|
845
991
|
methodCalls: Map<number, import("algosdk").ABIMethod>;
|
|
846
992
|
signers: Map<number, TransactionSigner>;
|
|
847
993
|
}>;
|
|
994
|
+
/**
|
|
995
|
+
* Creates a new instance of the AbelReader smart contract using the getBlockTimesAndTc(uint64,uint64)(uint32,uint64) ABI method.
|
|
996
|
+
*
|
|
997
|
+
* @param params The params for the smart contract call
|
|
998
|
+
* @returns The create transaction
|
|
999
|
+
*/
|
|
1000
|
+
getBlockTimesAndTc: (params: CallParams<AbelReaderArgs['obj']['getBlockTimesAndTc(uint64,uint64)(uint32,uint64)'] | AbelReaderArgs['tuple']['getBlockTimesAndTc(uint64,uint64)(uint32,uint64)']> & AppClientCompilationParams & CreateSchema & {
|
|
1001
|
+
onComplete?: OnApplicationComplete.NoOpOC;
|
|
1002
|
+
}) => Promise<{
|
|
1003
|
+
transactions: Transaction[];
|
|
1004
|
+
methodCalls: Map<number, import("algosdk").ABIMethod>;
|
|
1005
|
+
signers: Map<number, TransactionSigner>;
|
|
1006
|
+
}>;
|
|
848
1007
|
};
|
|
849
1008
|
};
|
|
850
1009
|
/**
|
|
@@ -870,10 +1029,6 @@ declare class AbelReaderFactory {
|
|
|
870
1029
|
compiledClear?: import("@algorandfoundation/algokit-utils/types/app").CompiledTeal | undefined;
|
|
871
1030
|
appId: bigint;
|
|
872
1031
|
groupId: string;
|
|
873
|
-
/**
|
|
874
|
-
* Checks for decode errors on the given return value and maps the return value to the return type for the given method
|
|
875
|
-
* @returns The typed return value or undefined if there was no value
|
|
876
|
-
*/
|
|
877
1032
|
txIds: string[];
|
|
878
1033
|
returns?: ABIReturn[] | undefined;
|
|
879
1034
|
confirmations: modelsv2.PendingTransactionResponse[];
|
|
@@ -899,10 +1054,6 @@ declare class AbelReaderFactory {
|
|
|
899
1054
|
compiledClear?: import("@algorandfoundation/algokit-utils/types/app").CompiledTeal | undefined;
|
|
900
1055
|
appId: bigint;
|
|
901
1056
|
groupId: string;
|
|
902
|
-
/**
|
|
903
|
-
* Checks for decode errors on the given return value and maps the return value to the return type for the given method
|
|
904
|
-
* @returns The typed return value or undefined if there was no value
|
|
905
|
-
*/
|
|
906
1057
|
txIds: string[];
|
|
907
1058
|
returns?: ABIReturn[] | undefined;
|
|
908
1059
|
confirmations: modelsv2.PendingTransactionResponse[];
|
|
@@ -928,10 +1079,31 @@ declare class AbelReaderFactory {
|
|
|
928
1079
|
compiledClear?: import("@algorandfoundation/algokit-utils/types/app").CompiledTeal | undefined;
|
|
929
1080
|
appId: bigint;
|
|
930
1081
|
groupId: string;
|
|
931
|
-
|
|
932
|
-
|
|
933
|
-
|
|
934
|
-
|
|
1082
|
+
txIds: string[];
|
|
1083
|
+
returns?: ABIReturn[] | undefined;
|
|
1084
|
+
confirmations: modelsv2.PendingTransactionResponse[];
|
|
1085
|
+
transactions: Transaction[];
|
|
1086
|
+
confirmation: modelsv2.PendingTransactionResponse;
|
|
1087
|
+
transaction: Transaction;
|
|
1088
|
+
appAddress: Address;
|
|
1089
|
+
};
|
|
1090
|
+
appClient: AbelReaderClient;
|
|
1091
|
+
}>;
|
|
1092
|
+
/**
|
|
1093
|
+
* Creates a new instance of the AbelReader smart contract using an ABI method call using the getBlockTimesAndTc(uint64,uint64)(uint32,uint64) ABI method.
|
|
1094
|
+
*
|
|
1095
|
+
* @param params The params for the smart contract call
|
|
1096
|
+
* @returns The create result
|
|
1097
|
+
*/
|
|
1098
|
+
getBlockTimesAndTc: (params: CallParams<AbelReaderArgs['obj']['getBlockTimesAndTc(uint64,uint64)(uint32,uint64)'] | AbelReaderArgs['tuple']['getBlockTimesAndTc(uint64,uint64)(uint32,uint64)']> & AppClientCompilationParams & CreateSchema & SendParams & {
|
|
1099
|
+
onComplete?: OnApplicationComplete.NoOpOC;
|
|
1100
|
+
}) => Promise<{
|
|
1101
|
+
result: {
|
|
1102
|
+
return: BlockTimeAndTc | undefined;
|
|
1103
|
+
compiledApproval?: import("@algorandfoundation/algokit-utils/types/app").CompiledTeal | undefined;
|
|
1104
|
+
compiledClear?: import("@algorandfoundation/algokit-utils/types/app").CompiledTeal | undefined;
|
|
1105
|
+
appId: bigint;
|
|
1106
|
+
groupId: string;
|
|
935
1107
|
txIds: string[];
|
|
936
1108
|
returns?: ABIReturn[] | undefined;
|
|
937
1109
|
confirmations: modelsv2.PendingTransactionResponse[];
|
|
@@ -1019,9 +1191,7 @@ declare class AbelReaderClient {
|
|
|
1019
1191
|
maxFee?: import("@algorandfoundation/algokit-utils/types/amount").AlgoAmount | undefined;
|
|
1020
1192
|
validityWindow?: number | bigint | undefined;
|
|
1021
1193
|
firstValidRound?: bigint | undefined;
|
|
1022
|
-
lastValidRound?: bigint | undefined;
|
|
1023
|
-
* Gets available deployUpdate methods
|
|
1024
|
-
*/
|
|
1194
|
+
lastValidRound?: bigint | undefined;
|
|
1025
1195
|
appId: bigint;
|
|
1026
1196
|
onComplete?: OnApplicationComplete.UpdateApplicationOC | undefined;
|
|
1027
1197
|
args?: Uint8Array[] | undefined;
|
|
@@ -1087,6 +1257,17 @@ declare class AbelReaderClient {
|
|
|
1087
1257
|
getAssetLabels: (params: CallParams<AbelReaderArgs['obj']['get_asset_labels(asset)string[]'] | AbelReaderArgs['tuple']['get_asset_labels(asset)string[]']> & {
|
|
1088
1258
|
onComplete?: OnApplicationComplete.NoOpOC;
|
|
1089
1259
|
}) => Promise<AppCallMethodCall>;
|
|
1260
|
+
/**
|
|
1261
|
+
* Makes a call to the AbelReader smart contract using the `getBlockTimesAndTc(uint64,uint64)(uint32,uint64)` ABI method.
|
|
1262
|
+
*
|
|
1263
|
+
* This method is a readonly method; calling it with onComplete of NoOp will result in a simulated transaction rather than a real transaction.
|
|
1264
|
+
*
|
|
1265
|
+
* @param params The params for the smart contract call
|
|
1266
|
+
* @returns The call params
|
|
1267
|
+
*/
|
|
1268
|
+
getBlockTimesAndTc: (params: CallParams<AbelReaderArgs['obj']['getBlockTimesAndTc(uint64,uint64)(uint32,uint64)'] | AbelReaderArgs['tuple']['getBlockTimesAndTc(uint64,uint64)(uint32,uint64)']> & {
|
|
1269
|
+
onComplete?: OnApplicationComplete.NoOpOC;
|
|
1270
|
+
}) => Promise<AppCallMethodCall>;
|
|
1090
1271
|
};
|
|
1091
1272
|
/**
|
|
1092
1273
|
* Create transactions for the current app
|
|
@@ -1168,6 +1349,21 @@ declare class AbelReaderClient {
|
|
|
1168
1349
|
methodCalls: Map<number, import("algosdk").ABIMethod>;
|
|
1169
1350
|
signers: Map<number, TransactionSigner>;
|
|
1170
1351
|
}>;
|
|
1352
|
+
/**
|
|
1353
|
+
* Makes a call to the AbelReader smart contract using the `getBlockTimesAndTc(uint64,uint64)(uint32,uint64)` ABI method.
|
|
1354
|
+
*
|
|
1355
|
+
* This method is a readonly method; calling it with onComplete of NoOp will result in a simulated transaction rather than a real transaction.
|
|
1356
|
+
*
|
|
1357
|
+
* @param params The params for the smart contract call
|
|
1358
|
+
* @returns The call transaction
|
|
1359
|
+
*/
|
|
1360
|
+
getBlockTimesAndTc: (params: CallParams<AbelReaderArgs['obj']['getBlockTimesAndTc(uint64,uint64)(uint32,uint64)'] | AbelReaderArgs['tuple']['getBlockTimesAndTc(uint64,uint64)(uint32,uint64)']> & {
|
|
1361
|
+
onComplete?: OnApplicationComplete.NoOpOC;
|
|
1362
|
+
}) => Promise<{
|
|
1363
|
+
transactions: Transaction[];
|
|
1364
|
+
methodCalls: Map<number, import("algosdk").ABIMethod>;
|
|
1365
|
+
signers: Map<number, TransactionSigner>;
|
|
1366
|
+
}>;
|
|
1171
1367
|
};
|
|
1172
1368
|
/**
|
|
1173
1369
|
* Send calls to the current app
|
|
@@ -1293,6 +1489,26 @@ declare class AbelReaderClient {
|
|
|
1293
1489
|
confirmation: modelsv2.PendingTransactionResponse;
|
|
1294
1490
|
transaction: Transaction;
|
|
1295
1491
|
}>;
|
|
1492
|
+
/**
|
|
1493
|
+
* Makes a call to the AbelReader smart contract using the `getBlockTimesAndTc(uint64,uint64)(uint32,uint64)` ABI method.
|
|
1494
|
+
*
|
|
1495
|
+
* This method is a readonly method; calling it with onComplete of NoOp will result in a simulated transaction rather than a real transaction.
|
|
1496
|
+
*
|
|
1497
|
+
* @param params The params for the smart contract call
|
|
1498
|
+
* @returns The call result
|
|
1499
|
+
*/
|
|
1500
|
+
getBlockTimesAndTc: (params: CallParams<AbelReaderArgs['obj']['getBlockTimesAndTc(uint64,uint64)(uint32,uint64)'] | AbelReaderArgs['tuple']['getBlockTimesAndTc(uint64,uint64)(uint32,uint64)']> & SendParams & {
|
|
1501
|
+
onComplete?: OnApplicationComplete.NoOpOC;
|
|
1502
|
+
}) => Promise<{
|
|
1503
|
+
return: BlockTimeAndTc | undefined;
|
|
1504
|
+
returns?: ABIReturn[] | undefined;
|
|
1505
|
+
groupId: string;
|
|
1506
|
+
txIds: string[];
|
|
1507
|
+
confirmations: modelsv2.PendingTransactionResponse[];
|
|
1508
|
+
transactions: Transaction[];
|
|
1509
|
+
confirmation: modelsv2.PendingTransactionResponse;
|
|
1510
|
+
transaction: Transaction;
|
|
1511
|
+
}>;
|
|
1296
1512
|
};
|
|
1297
1513
|
/**
|
|
1298
1514
|
* Clone this app client with different params
|
|
@@ -1328,6 +1544,15 @@ declare class AbelReaderClient {
|
|
|
1328
1544
|
* @returns The call result
|
|
1329
1545
|
*/
|
|
1330
1546
|
getAssetLabels(params: CallParams<AbelReaderArgs['obj']['get_asset_labels(asset)string[]'] | AbelReaderArgs['tuple']['get_asset_labels(asset)string[]']>): Promise<string[]>;
|
|
1547
|
+
/**
|
|
1548
|
+
* Makes a readonly (simulated) call to the AbelReader smart contract using the `getBlockTimesAndTc(uint64,uint64)(uint32,uint64)` ABI method.
|
|
1549
|
+
*
|
|
1550
|
+
* This method is a readonly method; calling it with onComplete of NoOp will result in a simulated transaction rather than a real transaction.
|
|
1551
|
+
*
|
|
1552
|
+
* @param params The params for the smart contract call
|
|
1553
|
+
* @returns The call result
|
|
1554
|
+
*/
|
|
1555
|
+
getBlockTimesAndTc(params: CallParams<AbelReaderArgs['obj']['getBlockTimesAndTc(uint64,uint64)(uint32,uint64)'] | AbelReaderArgs['tuple']['getBlockTimesAndTc(uint64,uint64)(uint32,uint64)']>): Promise<BlockTimeAndTc>;
|
|
1331
1556
|
/**
|
|
1332
1557
|
* Methods to access state for the current AbelReader app
|
|
1333
1558
|
*/
|
|
@@ -1359,6 +1584,14 @@ export type AbelReaderComposer<TReturns extends [...any[]] = []> = {
|
|
|
1359
1584
|
* @returns The typed transaction composer so you can fluently chain multiple calls or call execute to execute all queued up transactions
|
|
1360
1585
|
*/
|
|
1361
1586
|
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]>;
|
|
1587
|
+
/**
|
|
1588
|
+
* Calls the getBlockTimesAndTc(uint64,uint64)(uint32,uint64) ABI method.
|
|
1589
|
+
*
|
|
1590
|
+
* @param args The arguments for the contract call
|
|
1591
|
+
* @param params Any additional parameters for the call
|
|
1592
|
+
* @returns The typed transaction composer so you can fluently chain multiple calls or call execute to execute all queued up transactions
|
|
1593
|
+
*/
|
|
1594
|
+
getBlockTimesAndTc(params?: CallParams<AbelReaderArgs['obj']['getBlockTimesAndTc(uint64,uint64)(uint32,uint64)'] | AbelReaderArgs['tuple']['getBlockTimesAndTc(uint64,uint64)(uint32,uint64)']>): AbelReaderComposer<[...TReturns, AbelReaderReturns['getBlockTimesAndTc(uint64,uint64)(uint32,uint64)'] | undefined]>;
|
|
1362
1595
|
/**
|
|
1363
1596
|
* Gets available update methods
|
|
1364
1597
|
*/
|
|
@@ -1459,10 +1692,15 @@ export declare class AbelReaderSDK extends GhostBase {
|
|
|
1459
1692
|
extraMethodCallArgs?: ExtraMethodCallArgs | ExtraMethodCallArgs[];
|
|
1460
1693
|
extraSimulateArgs?: RawSimulateOptions;
|
|
1461
1694
|
}): Promise<Methods['getAssetsTiny']['returns'][]>;
|
|
1462
|
-
|
|
1695
|
+
getAssetLabels({ methodArgsOrArgsArray, extraMethodCallArgs, extraSimulateArgs, }: {
|
|
1463
1696
|
methodArgsOrArgsArray: Methods['get_asset_labels']['argsObj'] | Methods['get_asset_labels']['argsObj'][];
|
|
1464
1697
|
extraMethodCallArgs?: ExtraMethodCallArgs | ExtraMethodCallArgs[];
|
|
1465
1698
|
extraSimulateArgs?: RawSimulateOptions;
|
|
1466
1699
|
}): Promise<Methods['get_asset_labels']['returns'][]>;
|
|
1700
|
+
getBlockTimesAndTc({ methodArgsOrArgsArray, extraMethodCallArgs, extraSimulateArgs, }: {
|
|
1701
|
+
methodArgsOrArgsArray: Methods['getBlockTimesAndTc']['argsObj'] | Methods['getBlockTimesAndTc']['argsObj'][];
|
|
1702
|
+
extraMethodCallArgs?: ExtraMethodCallArgs | ExtraMethodCallArgs[];
|
|
1703
|
+
extraSimulateArgs?: RawSimulateOptions;
|
|
1704
|
+
}): Promise<Methods['getBlockTimesAndTc']['returns'][]>;
|
|
1467
1705
|
}
|
|
1468
1706
|
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[]" }], "BalanceInfo": [{ "name": "balance", "type": "uint64" }, { "name": "minBalance", "type": "uint64" }] }, "methods": [{ "name": "getBalanceInfo", "args": [{ "type": "address[]", "name": "accounts" }], "returns": { "type": "(uint64,uint64)", "struct": "BalanceInfo" }, "actions": { "create": ["NoOp"], "call": ["NoOp"] }, "readonly": true, "events": [], "recommendations": {} }, { "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": [332], "errorMessage": "Bytes has valid prefix" }, { "pc": [8], "errorMessage": "OnCompletion must be NoOp" }, { "pc": [48], "errorMessage": "OnCompletion must be one of UpdateApplication, DeleteApplication && can only call when not creating" }, { "pc": [347, 354, 357], "errorMessage": "asset exists" }, { "pc": [108, 236], "errorMessage": "index access is out of bounds" }, { "pc": [77, 195], "errorMessage": "invalid array length header" }, { "pc": [89], "errorMessage": "invalid number of bytes for arc4.dynamic_array<account>" }, { "pc": [207], "errorMessage": "invalid number of bytes for arc4.dynamic_array<asset>" }, { "pc": [215, 337], "errorMessage": "invalid number of bytes for arc4.uint64" }, { "pc": [485], "errorMessage": "invalid number of bytes for arc4.uint8" }, { "pc": [363], "errorMessage": "overflow" }], "pcOffsetMethod": "cblocks" }, "clear": { "sourceInfo": [], "pcOffsetMethod": "none" } }, "source": { "approval": "I3ByYWdtYSB2ZXJzaW9uIDExCiNwcmFnbWEgdHlwZXRyYWNrIGZhbHNlCgovLyBAYWxnb3JhbmRmb3VuZGF0aW9uL2FsZ29yYW5kLXR5cGVzY3JpcHQvYXJjNC9pbmRleC5kLnRzOjpDb250cmFjdC5hcHByb3ZhbFByb2dyYW0oKSAtPiB1aW50NjQ6Cm1haW46CiAgICBpbnRjYmxvY2sgMCAxIDggMzIgVE1QTF9VUERBVEFCTEUKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9hYmVsX3JlYWRlci9jb250cmFjdC5hbGdvLnRzOjMwCiAgICAvLyBleHBvcnQgY2xhc3MgQWJlbFJlYWRlciBleHRlbmRzIENvbnRyYWN0IHsKICAgIHR4biBOdW1BcHBBcmdzCiAgICBieiBtYWluX2FkbWluT25seUAxMAogICAgdHhuIE9uQ29tcGxldGlvbgogICAgIQogICAgYXNzZXJ0IC8vIE9uQ29tcGxldGlvbiBtdXN0IGJlIE5vT3AKICAgIHB1c2hieXRlc3MgMHg0ODc3YTk2NyAweGQ1YWIzMzY2IDB4YzJlZDc0M2YgLy8gbWV0aG9kICJnZXRCYWxhbmNlSW5mbyhhZGRyZXNzW10pKHVpbnQ2NCx1aW50NjQpIiwgbWV0aG9kICJnZXRBc3NldHNUaW55KHVpbnQ2NFtdLHVpbnQ2NCkoc3RyaW5nLHN0cmluZyx1aW50OCxzdHJpbmdbXSkiLCBtZXRob2QgImdldF9hc3NldF9sYWJlbHMoYXNzZXQpc3RyaW5nW10iCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAwCiAgICBtYXRjaCBnZXRCYWxhbmNlSW5mbyBnZXRBc3NldHNUaW55IGdldEFzc2V0TGFiZWxzCiAgICBlcnIKCm1haW5fYWRtaW5Pbmx5QDEwOgogICAgLy8gc21hcnRfY29udHJhY3RzL2FiZWxfcmVhZGVyL2NvbnRyYWN0LmFsZ28udHM6MzEKICAgIC8vIEBiYXJlbWV0aG9kKHsgYWxsb3dBY3Rpb25zOiBbIlVwZGF0ZUFwcGxpY2F0aW9uIiwgIkRlbGV0ZUFwcGxpY2F0aW9uIl0gfSkKICAgIGludGNfMSAvLyAxCiAgICB0eG4gT25Db21wbGV0aW9uCiAgICBzaGwKICAgIHB1c2hpbnQgNDggLy8gNDgKICAgICYKICAgIHR4biBBcHBsaWNhdGlvbklECiAgICAmJgogICAgYXNzZXJ0IC8vIE9uQ29tcGxldGlvbiBtdXN0IGJlIG9uZSBvZiBVcGRhdGVBcHBsaWNhdGlvbiwgRGVsZXRlQXBwbGljYXRpb24gJiYgY2FuIG9ubHkgY2FsbCB3aGVuIG5vdCBjcmVhdGluZwogICAgLy8gc21hcnRfY29udHJhY3RzL2FiZWxfcmVhZGVyL2NvbnRyYWN0LmFsZ28udHM6MzMKICAgIC8vIGFzc2VydChUZW1wbGF0ZVZhcjx1aW50NjQ+KCJVUERBVEFCTEUiKSA9PT0gMSAmJiBUeG4uc2VuZGVyID09PSBHbG9iYWwuY3JlYXRvckFkZHJlc3MpOwogICAgaW50YyA0IC8vIFRNUExfVVBEQVRBQkxFCiAgICBpbnRjXzEgLy8gMQogICAgPT0KICAgIGJ6IG1haW5fYm9vbF9mYWxzZUAxNAogICAgdHhuIFNlbmRlcgogICAgZ2xvYmFsIENyZWF0b3JBZGRyZXNzCiAgICA9PQogICAgYnogbWFpbl9ib29sX2ZhbHNlQDE0CiAgICBpbnRjXzEgLy8gMQogICAgLy8gc21hcnRfY29udHJhY3RzL2FiZWxfcmVhZGVyL2NvbnRyYWN0LmFsZ28udHM6MzEKICAgIC8vIEBiYXJlbWV0aG9kKHsgYWxsb3dBY3Rpb25zOiBbIlVwZGF0ZUFwcGxpY2F0aW9uIiwgIkRlbGV0ZUFwcGxpY2F0aW9uIl0gfSkKICAgIHJldHVybgoKbWFpbl9ib29sX2ZhbHNlQDE0OgogICAgaW50Y18wIC8vIDAKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9hYmVsX3JlYWRlci9jb250cmFjdC5hbGdvLnRzOjMxCiAgICAvLyBAYmFyZW1ldGhvZCh7IGFsbG93QWN0aW9uczogWyJVcGRhdGVBcHBsaWNhdGlvbiIsICJEZWxldGVBcHBsaWNhdGlvbiJdIH0pCiAgICByZXR1cm4KCgovLyBzbWFydF9jb250cmFjdHMvYWJlbF9yZWFkZXIvY29udHJhY3QuYWxnby50czo6QWJlbFJlYWRlci5nZXRCYWxhbmNlSW5mb1tyb3V0aW5nXSgpIC0+IHZvaWQ6CmdldEJhbGFuY2VJbmZvOgogICAgaW50Y18wIC8vIDAKICAgIHB1c2hieXRlcyAiIgogICAgLy8gc21hcnRfY29udHJhY3RzL2FiZWxfcmVhZGVyL2NvbnRyYWN0LmFsZ28udHM6MzYKICAgIC8vIEBhYmltZXRob2QoeyByZWFkb25seTogdHJ1ZSwgb25DcmVhdGU6ICJhbGxvdyIgfSkKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDEKICAgIGR1cG4gMgogICAgaW50Y18wIC8vIDAKICAgIGV4dHJhY3RfdWludDE2IC8vIG9uIGVycm9yOiBpbnZhbGlkIGFycmF5IGxlbmd0aCBoZWFkZXIKICAgIGR1cAogICAgY292ZXIgMgogICAgaW50Y18zIC8vIDMyCiAgICAqCiAgICBwdXNoaW50IDIgLy8gMgogICAgKwogICAgc3dhcAogICAgbGVuCiAgICA9PQogICAgYXNzZXJ0IC8vIGludmFsaWQgbnVtYmVyIG9mIGJ5dGVzIGZvciBhcmM0LmR5bmFtaWNfYXJyYXk8YWNjb3VudD4KICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9hYmVsX3JlYWRlci9jb250cmFjdC5hbGdvLnRzOjM4CiAgICAvLyBmb3IgKGxldCBpZHg6IHVpbnQ2NCA9IDA7IGlkeCA8IGFjY291bnRzLmxlbmd0aDsgaWR4KyspIHsKICAgIGludGNfMCAvLyAwCgpnZXRCYWxhbmNlSW5mb193aGlsZV90b3BAMjoKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9hYmVsX3JlYWRlci9jb250cmFjdC5hbGdvLnRzOjM4CiAgICAvLyBmb3IgKGxldCBpZHg6IHVpbnQ2NCA9IDA7IGlkeCA8IGFjY291bnRzLmxlbmd0aDsgaWR4KyspIHsKICAgIGR1cAogICAgZGlnIDIKICAgIDwKICAgIGJ6IGdldEJhbGFuY2VJbmZvX2FmdGVyX3doaWxlQDcKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9hYmVsX3JlYWRlci9jb250cmFjdC5hbGdvLnRzOjM5CiAgICAvLyBjb25zdCBhY2NvdW50ID0gYWNjb3VudHNbaWR4XTsKICAgIGRpZyAyCiAgICBleHRyYWN0IDIgMAogICAgZGlnIDEKICAgIGludGNfMyAvLyAzMgogICAgKgogICAgaW50Y18zIC8vIDMyCiAgICBleHRyYWN0MyAvLyBvbiBlcnJvcjogaW5kZXggYWNjZXNzIGlzIG91dCBvZiBib3VuZHMKICAgIGR1cAogICAgYnVyeSA2CiAgICAvLyBzbWFydF9jb250cmFjdHMvYWJlbF9yZWFkZXIvY29udHJhY3QuYWxnby50czo0MAogICAgLy8gY29uc3QgYmFsYW5jZSA9IG9wLmJhbGFuY2UoYWNjb3VudCk7CiAgICBiYWxhbmNlCiAgICBkdXAKICAgIGJ1cnkgNQogICAgLy8gc21hcnRfY29udHJhY3RzL2FiZWxfcmVhZGVyL2NvbnRyYWN0LmFsZ28udHM6NDEKICAgIC8vIGlmIChiYWxhbmNlID4gMCkgewogICAgYnogZ2V0QmFsYW5jZUluZm9fZWxzZV9ib2R5QDUKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9hYmVsX3JlYWRlci9jb250cmFjdC5hbGdvLnRzOjQyCiAgICAvLyBjb25zdCBtaW5CYWxhbmNlID0gb3AubWluQmFsYW5jZShhY2NvdW50KTsKICAgIGRpZyA0CiAgICBtaW5fYmFsYW5jZQogICAgLy8gc21hcnRfY29udHJhY3RzL2FiZWxfcmVhZGVyL2NvbnRyYWN0LmFsZ28udHM6NDMKICAgIC8vIGNvbnN0IGJhbGFuY2VJbmZvOiBCYWxhbmNlSW5mbyA9IHsgYmFsYW5jZSwgbWluQmFsYW5jZSB9OwogICAgZGlnIDQKICAgIGl0b2IKICAgIHN3YXAKICAgIGl0b2IKICAgIGNvbmNhdAogICAgLy8gc21hcnRfY29udHJhY3RzL2FiZWxfcmVhZGVyL2NvbnRyYWN0LmFsZ28udHM6NDQKICAgIC8vIGxvZyhlbmNvZGVBcmM0KGJhbGFuY2VJbmZvKSk7CiAgICBsb2cKCmdldEJhbGFuY2VJbmZvX2FmdGVyX2lmX2Vsc2VANjoKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9hYmVsX3JlYWRlci9jb250cmFjdC5hbGdvLnRzOjM4CiAgICAvLyBmb3IgKGxldCBpZHg6IHVpbnQ2NCA9IDA7IGlkeCA8IGFjY291bnRzLmxlbmd0aDsgaWR4KyspIHsKICAgIGR1cAogICAgaW50Y18xIC8vIDEKICAgICsKICAgIGJ1cnkgMQogICAgYiBnZXRCYWxhbmNlSW5mb193aGlsZV90b3BAMgoKZ2V0QmFsYW5jZUluZm9fZWxzZV9ib2R5QDU6CiAgICAvLyBzbWFydF9jb250cmFjdHMvYWJlbF9yZWFkZXIvY29udHJhY3QuYWxnby50czo1MwogICAgLy8gcmV0dXJuIHsgYmFsYW5jZTogMCwgbWluQmFsYW5jZTogMCB9OwogICAgcHVzaGJ5dGVzIDB4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9hYmVsX3JlYWRlci9jb250cmFjdC5hbGdvLnRzOjQ2CiAgICAvLyBsb2coZW5jb2RlQXJjNCh0aGlzLmdldEVtcHR5QmFsYW5jZUluZm8oKSkpOwogICAgbG9nCiAgICBiIGdldEJhbGFuY2VJbmZvX2FmdGVyX2lmX2Vsc2VANgoKZ2V0QmFsYW5jZUluZm9fYWZ0ZXJfd2hpbGVANzoKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9hYmVsX3JlYWRlci9jb250cmFjdC5hbGdvLnRzOjM2CiAgICAvLyBAYWJpbWV0aG9kKHsgcmVhZG9ubHk6IHRydWUsIG9uQ3JlYXRlOiAiYWxsb3ciIH0pCiAgICBwdXNoYnl0ZXMgMHgxNTFmN2M3NTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiAgICBsb2cKICAgIGludGNfMSAvLyAxCiAgICByZXR1cm4KCgovLyBzbWFydF9jb250cmFjdHMvYWJlbF9yZWFkZXIvY29udHJhY3QuYWxnby50czo6QWJlbFJlYWRlci5nZXRBc3NldHNUaW55W3JvdXRpbmddKCkgLT4gdm9pZDoKZ2V0QXNzZXRzVGlueToKICAgIGludGNfMCAvLyAwCiAgICBkdXBuIDMKICAgIHB1c2hieXRlcyAiIgogICAgLy8gc21hcnRfY29udHJhY3RzL2FiZWxfcmVhZGVyL2NvbnRyYWN0LmFsZ28udHM6NTYKICAgIC8vIEBhYmltZXRob2QoeyByZWFkb25seTogdHJ1ZSwgb25DcmVhdGU6ICJhbGxvdyIgfSkKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDEKICAgIGR1cG4gMgogICAgaW50Y18wIC8vIDAKICAgIGV4dHJhY3RfdWludDE2IC8vIG9uIGVycm9yOiBpbnZhbGlkIGFycmF5IGxlbmd0aCBoZWFkZXIKICAgIGR1cAogICAgY292ZXIgMgogICAgaW50Y18yIC8vIDgKICAgICoKICAgIHB1c2hpbnQgMiAvLyAyCiAgICArCiAgICBzd2FwCiAgICBsZW4KICAgID09CiAgICBhc3NlcnQgLy8gaW52YWxpZCBudW1iZXIgb2YgYnl0ZXMgZm9yIGFyYzQuZHluYW1pY19hcnJheTxhc3NldD4KICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDIKICAgIGR1cAogICAgbGVuCiAgICBpbnRjXzIgLy8gOAogICAgPT0KICAgIGFzc2VydCAvLyBpbnZhbGlkIG51bWJlciBvZiBieXRlcyBmb3IgYXJjNC51aW50NjQKICAgIGJ0b2kKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9hYmVsX3JlYWRlci9jb250cmFjdC5hbGdvLnRzOjU4CiAgICAvLyBmb3IgKGxldCBpZHg6IHVpbnQ2NCA9IDA7IGlkeCA8IGFzc2V0SWRzLmxlbmd0aDsgaWR4KyspIHsKICAgIGludGNfMCAvLyAwCgpnZXRBc3NldHNUaW55X3doaWxlX3RvcEAyOgogICAgLy8gc21hcnRfY29udHJhY3RzL2FiZWxfcmVhZGVyL2NvbnRyYWN0LmFsZ28udHM6NTgKICAgIC8vIGZvciAobGV0IGlkeDogdWludDY0ID0gMDsgaWR4IDwgYXNzZXRJZHMubGVuZ3RoOyBpZHgrKykgewogICAgZHVwCiAgICBkaWcgMwogICAgPAogICAgYnogZ2V0QXNzZXRzVGlueV9hZnRlcl93aGlsZUAxNAogICAgLy8gc21hcnRfY29udHJhY3RzL2FiZWxfcmVhZGVyL2NvbnRyYWN0LmFsZ28udHM6NTkKICAgIC8vIGNvbnN0IGFzc2V0ID0gYXNzZXRJZHNbaWR4XTsKICAgIGRpZyAzCiAgICBleHRyYWN0IDIgMAogICAgZGlnIDEKICAgIGludGNfMiAvLyA4CiAgICAqCiAgICBkdXAyCiAgICBpbnRjXzIgLy8gOAogICAgZXh0cmFjdDMgLy8gb24gZXJyb3I6IGluZGV4IGFjY2VzcyBpcyBvdXQgb2YgYm91bmRzCiAgICBidXJ5IDExCiAgICBleHRyYWN0X3VpbnQ2NAogICAgZHVwCiAgICBidXJ5IDYKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9hYmVsX3JlYWRlci9jb250cmFjdC5hbGdvLnRzOjYwCiAgICAvLyBjb25zdCBbXywgZXhpc3RzXSA9IG9wLkFzc2V0UGFyYW1zLmFzc2V0Q3JlYXRvcihhc3NldC5pZCk7CiAgICBhc3NldF9wYXJhbXNfZ2V0IEFzc2V0Q3JlYXRvcgogICAgYnVyeSAxCiAgICAvLyBzbWFydF9jb250cmFjdHMvYWJlbF9yZWFkZXIvY29udHJhY3QuYWxnby50czo2MQogICAgLy8gaWYgKCFleGlzdHMpIHsKICAgIGJueiBnZXRBc3NldHNUaW55X2Vsc2VfYm9keUA1CiAgICAvLyBzbWFydF9jb250cmFjdHMvYWJlbF9yZWFkZXIvY29udHJhY3QuYWxnby50czo4NS05MAogICAgLy8gcmV0dXJuIHsKICAgIC8vICAgbmFtZTogIiIsCiAgICAvLyAgIHVuaXRfbmFtZTogIiIsCiAgICAvLyAgIGRlY2ltYWxzOiBuZXcgVWludDgoMCksCiAgICAvLyAgIGxhYmVsczogW10sCiAgICAvLyB9OwogICAgcHVzaGJ5dGVzIDB4MDAwNzAwMDkwMDAwMGIwMDAwMDAwMDAwMDAKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9hYmVsX3JlYWRlci9jb250cmFjdC5hbGdvLnRzOjYyCiAgICAvLyBsb2coZW5jb2RlQXJjNCh0aGlzLmdldEVtcHR5QXNzZXRUaW55TGFiZWxzKCkpKTsKICAgIGxvZwoKZ2V0QXNzZXRzVGlueV9hZnRlcl9pZl9lbHNlQDEzOgogICAgLy8gc21hcnRfY29udHJhY3RzL2FiZWxfcmVhZGVyL2NvbnRyYWN0LmFsZ28udHM6NTgKICAgIC8vIGZvciAobGV0IGlkeDogdWludDY0ID0gMDsgaWR4IDwgYXNzZXRJZHMubGVuZ3RoOyBpZHgrKykgewogICAgZHVwCiAgICBpbnRjXzEgLy8gMQogICAgKwogICAgYnVyeSAxCiAgICBiIGdldEFzc2V0c1Rpbnlfd2hpbGVfdG9wQDIKCmdldEFzc2V0c1RpbnlfZWxzZV9ib2R5QDU6CiAgICAvLyBzbWFydF9jb250cmFjdHMvYWJlbF9yZWFkZXIvY29udHJhY3QuYWxnby50czo2NQogICAgLy8gYWJlbEFwcElkICE9PSAwID8gY29tcGlsZUFyYzQoQWJlbFN0dWIpLmNhbGwuaGFzX2Fzc2V0X2xhYmVsKHsgYXBwSWQ6IGFiZWxBcHBJZCwgYXJnczogW2Fzc2V0LmlkLCAicHYiXSB9KS5yZXR1cm5WYWx1ZSA6IDA7CiAgICBkaWcgMQogICAgYnogZ2V0QXNzZXRzVGlueV90ZXJuYXJ5X2ZhbHNlQDgKICAgIGl0eG5fYmVnaW4KICAgIHB1c2hieXRlcyAweDk3ZjQwYThhIC8vIG1ldGhvZCAiaGFzX2Fzc2V0X2xhYmVsKHVpbnQ2NCxzdHJpbmcpdWludDY0IgogICAgaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKICAgIGRpZyA4CiAgICBpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwogICAgcHVzaGJ5dGVzIDB4MDAwMjcwNzYKICAgIGl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCiAgICBpbnRjXzAgLy8gMAogICAgaXR4bl9maWVsZCBPbkNvbXBsZXRpb24KICAgIGRpZyAxCiAgICBpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uSUQKICAgIHB1c2hpbnQgNiAvLyBhcHBsCiAgICBpdHhuX2ZpZWxkIFR5cGVFbnVtCiAgICBpbnRjXzAgLy8gMAogICAgaXR4bl9maWVsZCBGZWUKICAgIGl0eG5fc3VibWl0CiAgICBpdHhuIExhc3RMb2cKICAgIGR1cAogICAgZXh0cmFjdCA0IDAKICAgIHN3YXAKICAgIGV4dHJhY3QgMCA0CiAgICBwdXNoYnl0ZXMgMHgxNTFmN2M3NQogICAgPT0KICAgIGFzc2VydCAvLyBCeXRlcyBoYXMgdmFsaWQgcHJlZml4CiAgICBkdXAKICAgIGxlbgogICAgaW50Y18yIC8vIDgKICAgID09CiAgICBhc3NlcnQgLy8gaW52YWxpZCBudW1iZXIgb2YgYnl0ZXMgZm9yIGFyYzQudWludDY0CiAgICBidG9pCgpnZXRBc3NldHNUaW55X3Rlcm5hcnlfbWVyZ2VAOToKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9hYmVsX3JlYWRlci9jb250cmFjdC5hbGdvLnRzOjY3CiAgICAvLyBuYW1lOiBhc3NldC5uYW1lLnRvU3RyaW5nKCksCiAgICBkaWcgNQogICAgZHVwCiAgICBhc3NldF9wYXJhbXNfZ2V0IEFzc2V0TmFtZQogICAgc3dhcAogICAgYnVyeSAxMAogICAgYXNzZXJ0IC8vIGFzc2V0IGV4aXN0cwogICAgLy8gc21hcnRfY29udHJhY3RzL2FiZWxfcmVhZGVyL2NvbnRyYWN0LmFsZ28udHM6NjgKICAgIC8vIHVuaXRfbmFtZTogYXNzZXQudW5pdE5hbWUudG9TdHJpbmcoKSwKICAgIGR1cAogICAgYXNzZXRfcGFyYW1zX2dldCBBc3NldFVuaXROYW1lCiAgICBzd2FwCiAgICBidXJ5IDkKICAgIGFzc2VydCAvLyBhc3NldCBleGlzdHMKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9hYmVsX3JlYWRlci9jb250cmFjdC5hbGdvLnRzOjY5CiAgICAvLyBkZWNpbWFsczogbmV3IFVpbnQ4KGFzc2V0LmRlY2ltYWxzKSwKICAgIGFzc2V0X3BhcmFtc19nZXQgQXNzZXREZWNpbWFscwogICAgYXNzZXJ0IC8vIGFzc2V0IGV4aXN0cwogICAgaXRvYgogICAgZHVwCiAgICBiaXRsZW4KICAgIGludGNfMiAvLyA4CiAgICA8PQogICAgYXNzZXJ0IC8vIG92ZXJmbG93CiAgICBleHRyYWN0IDcgMQogICAgYnVyeSA5CiAgICAvLyBzbWFydF9jb250cmFjdHMvYWJlbF9yZWFkZXIvY29udHJhY3QuYWxnby50czo3MAogICAgLy8gbGFiZWxzOiBwdiA9PT0gMCA/IChbXSBhcyBzdHJpbmdbXSkgOiBbInB2Il0sCiAgICBibnogZ2V0QXNzZXRzVGlueV90ZXJuYXJ5X2ZhbHNlQDExCiAgICBwdXNoYnl0ZXMgMHgwMDAwCgpnZXRBc3NldHNUaW55X3Rlcm5hcnlfbWVyZ2VAMTI6CiAgICAvLyBzbWFydF9jb250cmFjdHMvYWJlbF9yZWFkZXIvY29udHJhY3QuYWxnby50czo2Ni03MQogICAgLy8gY29uc3QgYXNzZXRJbmZvOiBBc3NldFRpbnlMYWJlbHMgPSB7CiAgICAvLyAgIG5hbWU6IGFzc2V0Lm5hbWUudG9TdHJpbmcoKSwKICAgIC8vICAgdW5pdF9uYW1lOiBhc3NldC51bml0TmFtZS50b1N0cmluZygpLAogICAgLy8gICBkZWNpbWFsczogbmV3IFVpbnQ4KGFzc2V0LmRlY2ltYWxzKSwKICAgIC8vICAgbGFiZWxzOiBwdiA9PT0gMCA/IChbXSBhcyBzdHJpbmdbXSkgOiBbInB2Il0sCiAgICAvLyB9OwogICAgZGlnIDcKICAgIGR1cAogICAgbGVuCiAgICBpdG9iCiAgICBleHRyYWN0IDYgMgogICAgc3dhcAogICAgY29uY2F0CiAgICBkdXAKICAgIGxlbgogICAgcHVzaGludCA3IC8vIDcKICAgICsKICAgIGRpZyA4CiAgICBkdXAKICAgIGxlbgogICAgaXRvYgogICAgZXh0cmFjdCA2IDIKICAgIHN3YXAKICAgIGNvbmNhdAogICAgZGlnIDEKICAgIGl0b2IKICAgIGV4dHJhY3QgNiAyCiAgICBwdXNoYnl0ZXMgMHgwMDA3CiAgICBzd2FwCiAgICBjb25jYXQKICAgIGRpZyAxCiAgICBsZW4KICAgIHVuY292ZXIgMwogICAgKwogICAgc3dhcAogICAgZGlnIDEyCiAgICBjb25jYXQKICAgIHN3YXAKICAgIGl0b2IKICAgIGV4dHJhY3QgNiAyCiAgICBjb25jYXQKICAgIHVuY292ZXIgMgogICAgY29uY2F0CiAgICBzd2FwCiAgICBjb25jYXQKICAgIHN3YXAKICAgIGNvbmNhdAogICAgLy8gc21hcnRfY29udHJhY3RzL2FiZWxfcmVhZGVyL2NvbnRyYWN0LmFsZ28udHM6NzIKICAgIC8vIGxvZyhlbmNvZGVBcmM0KGFzc2V0SW5mbykpOwogICAgbG9nCiAgICBiIGdldEFzc2V0c1RpbnlfYWZ0ZXJfaWZfZWxzZUAxMwoKZ2V0QXNzZXRzVGlueV90ZXJuYXJ5X2ZhbHNlQDExOgogICAgLy8gc21hcnRfY29udHJhY3RzL2FiZWxfcmVhZGVyL2NvbnRyYWN0LmFsZ28udHM6NzAKICAgIC8vIGxhYmVsczogcHYgPT09IDAgPyAoW10gYXMgc3RyaW5nW10pIDogWyJwdiJdLAogICAgcHVzaGJ5dGVzIDB4MDAwMTAwMDIwMDAyNzA3NgogICAgYiBnZXRBc3NldHNUaW55X3Rlcm5hcnlfbWVyZ2VAMTIKCmdldEFzc2V0c1RpbnlfdGVybmFyeV9mYWxzZUA4OgogICAgLy8gc21hcnRfY29udHJhY3RzL2FiZWxfcmVhZGVyL2NvbnRyYWN0LmFsZ28udHM6NjUKICAgIC8vIGFiZWxBcHBJZCAhPT0gMCA/IGNvbXBpbGVBcmM0KEFiZWxTdHViKS5jYWxsLmhhc19hc3NldF9sYWJlbCh7IGFwcElkOiBhYmVsQXBwSWQsIGFyZ3M6IFthc3NldC5pZCwgInB2Il0gfSkucmV0dXJuVmFsdWUgOiAwOwogICAgaW50Y18wIC8vIDAKICAgIGIgZ2V0QXNzZXRzVGlueV90ZXJuYXJ5X21lcmdlQDkKCmdldEFzc2V0c1RpbnlfYWZ0ZXJfd2hpbGVAMTQ6CiAgICAvLyBzbWFydF9jb250cmFjdHMvYWJlbF9yZWFkZXIvY29udHJhY3QuYWxnby50czo1NgogICAgLy8gQGFiaW1ldGhvZCh7IHJlYWRvbmx5OiB0cnVlLCBvbkNyZWF0ZTogImFsbG93IiB9KQogICAgcHVzaGJ5dGVzIDB4MTUxZjdjNzUwMDA3MDAwOTAwMDAwYjAwMDAwMDAwMDAwMAogICAgbG9nCiAgICBpbnRjXzEgLy8gMQogICAgcmV0dXJuCgoKLy8gc21hcnRfY29udHJhY3RzL2FiZWxfcmVhZGVyL2NvbnRyYWN0LmFsZ28udHM6OkFiZWxSZWFkZXIuZ2V0QXNzZXRMYWJlbHNbcm91dGluZ10oKSAtPiB2b2lkOgpnZXRBc3NldExhYmVsczoKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9hYmVsX3JlYWRlci9jb250cmFjdC5hbGdvLnRzOjc4CiAgICAvLyBAYWJpbWV0aG9kKHsgcmVhZG9ubHk6IHRydWUsIG9uQ3JlYXRlOiAiYWxsb3ciLCBuYW1lOiAiZ2V0X2Fzc2V0X2xhYmVscyIsIHJlc291cmNlRW5jb2Rpbmc6ICJpbmRleCIgfSkKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDEKICAgIGxlbgogICAgaW50Y18xIC8vIDEKICAgID09CiAgICBhc3NlcnQgLy8gaW52YWxpZCBudW1iZXIgb2YgYnl0ZXMgZm9yIGFyYzQudWludDgKICAgIHB1c2hieXRlcyAweDE1MWY3Yzc1MDAwMAogICAgbG9nCiAgICBpbnRjXzEgLy8gMQogICAgcmV0dXJuCg==", "clear": "I3ByYWdtYSB2ZXJzaW9uIDExCiNwcmFnbWEgdHlwZXRyYWNrIGZhbHNlCgovLyBAYWxnb3JhbmRmb3VuZGF0aW9uL2FsZ29yYW5kLXR5cGVzY3JpcHQvYmFzZS1jb250cmFjdC5kLnRzOjpCYXNlQ29udHJhY3QuY2xlYXJTdGF0ZVByb2dyYW0oKSAtPiB1aW50NjQ6Cm1haW46CiAgICBwdXNoaW50IDEgLy8gMQogICAgcmV0dXJuCg==" }, "byteCode": { "approval": "CyAFAAEIIAAxG0EAITEZFESCAwRId6lnBNWrM2YEwu10PzYaAI4DAB8AkwG6ACMxGZCBMBoxGBBEIQQjEkEACjEAMgkSQQACI0MiQyKAADYaAUcCIllJTgIlC4ECCEwVEkQiSUsCDEEAPUsCVwIASwElCyVYSUUGYElFBUEAEksEeEsEFkwWULBJIwhFAUL/0oAQAAAAAAAAAAAAAAAAAAAAALBC/+KAFBUffHUAAAAAAAAAAAAAAAAAAAAAsCNDIkcDgAA2GgFHAiJZSU4CJAuBAghMFRJENhoCSRUkEkQXIklLAwxBAOhLA1cCAEsBJAtKJFhFC1tJRQZxC0UBQAAYgA0ABwAJAAALAAAAAAAAsEkjCEUBQv/ISwFBAK6xgASX9AqKshpLCLIagAQAAnB2shoishlLAbIYgQayECKyAbO0PklXBABMVwAEgAQVH3x1EkRJFSQSRBdLBUlxBExFCkRJcQNMRQlEcQFEFkmTJA5EVwcBRQlAAESAAgAASwdJFRZXBgJMUEkVgQcISwhJFRZXBgJMUEsBFlcGAoACAAdMUEsBFU8DCExLDFBMFlcGAlBPAlBMUExQsEL/UoAIAAEAAgACcHZC/7MiQv+KgBEVH3x1AAcACQAACwAAAAAAALAjQzYaARUjEkSABhUffHUAALAjQw==", "clear": "C4EBQw==" }, "events": [], "templateVariables": { "UPDATABLE": { "type": "AVMUint64" } } };
|
|
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[]" }], "BalanceInfo": [{ "name": "balance", "type": "uint64" }, { "name": "minBalance", "type": "uint64" }], "BlockTimeAndTc": [{ "name": "ts", "type": "uint32" }, { "name": "tc", "type": "uint64" }] }, "methods": [{ "name": "getBalanceInfo", "args": [{ "type": "address[]", "name": "accounts" }], "returns": { "type": "(uint64,uint64)", "struct": "BalanceInfo" }, "actions": { "create": ["NoOp"], "call": ["NoOp"] }, "readonly": true, "events": [], "recommendations": {} }, { "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": {} }, { "name": "getBlockTimesAndTc", "args": [{ "type": "uint64", "name": "firstRound" }, { "type": "uint64", "name": "lastRound" }], "returns": { "type": "(uint32,uint64)", "struct": "BlockTimeAndTc" }, "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": [339], "errorMessage": "Bytes has valid prefix" }, { "pc": [8], "errorMessage": "OnCompletion must be NoOp" }, { "pc": [55], "errorMessage": "OnCompletion must be one of UpdateApplication, DeleteApplication && can only call when not creating" }, { "pc": [354, 361, 364], "errorMessage": "asset exists" }, { "pc": [115, 243], "errorMessage": "index access is out of bounds" }, { "pc": [84, 202], "errorMessage": "invalid array length header" }, { "pc": [96], "errorMessage": "invalid number of bytes for arc4.dynamic_array<account>" }, { "pc": [214], "errorMessage": "invalid number of bytes for arc4.dynamic_array<asset>" }, { "pc": [222, 344, 511, 520], "errorMessage": "invalid number of bytes for arc4.uint64" }, { "pc": [492], "errorMessage": "invalid number of bytes for arc4.uint8" }, { "pc": [370, 539], "errorMessage": "overflow" }], "pcOffsetMethod": "cblocks" }, "clear": { "sourceInfo": [], "pcOffsetMethod": "none" } }, "source": { "approval": "I3ByYWdtYSB2ZXJzaW9uIDExCiNwcmFnbWEgdHlwZXRyYWNrIGZhbHNlCgovLyBAYWxnb3JhbmRmb3VuZGF0aW9uL2FsZ29yYW5kLXR5cGVzY3JpcHQvYXJjNC9pbmRleC5kLnRzOjpDb250cmFjdC5hcHByb3ZhbFByb2dyYW0oKSAtPiB1aW50NjQ6Cm1haW46CiAgICBpbnRjYmxvY2sgMSAwIDggMzIgVE1QTF9VUERBVEFCTEUKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9hYmVsX3JlYWRlci9jb250cmFjdC5hbGdvLnRzOjM1CiAgICAvLyBleHBvcnQgY2xhc3MgQWJlbFJlYWRlciBleHRlbmRzIENvbnRyYWN0IHsKICAgIHR4biBOdW1BcHBBcmdzCiAgICBieiBtYWluX2FkbWluT25seUAxMQogICAgdHhuIE9uQ29tcGxldGlvbgogICAgIQogICAgYXNzZXJ0IC8vIE9uQ29tcGxldGlvbiBtdXN0IGJlIE5vT3AKICAgIHB1c2hieXRlc3MgMHg0ODc3YTk2NyAweGQ1YWIzMzY2IDB4YzJlZDc0M2YgMHhhNzBlNjJhMCAvLyBtZXRob2QgImdldEJhbGFuY2VJbmZvKGFkZHJlc3NbXSkodWludDY0LHVpbnQ2NCkiLCBtZXRob2QgImdldEFzc2V0c1RpbnkodWludDY0W10sdWludDY0KShzdHJpbmcsc3RyaW5nLHVpbnQ4LHN0cmluZ1tdKSIsIG1ldGhvZCAiZ2V0X2Fzc2V0X2xhYmVscyhhc3NldClzdHJpbmdbXSIsIG1ldGhvZCAiZ2V0QmxvY2tUaW1lc0FuZFRjKHVpbnQ2NCx1aW50NjQpKHVpbnQzMix1aW50NjQpIgogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMAogICAgbWF0Y2ggZ2V0QmFsYW5jZUluZm8gZ2V0QXNzZXRzVGlueSBnZXRBc3NldExhYmVscyBnZXRCbG9ja1RpbWVzQW5kVGMKICAgIGVycgoKbWFpbl9hZG1pbk9ubHlAMTE6CiAgICAvLyBzbWFydF9jb250cmFjdHMvYWJlbF9yZWFkZXIvY29udHJhY3QuYWxnby50czozNgogICAgLy8gQGJhcmVtZXRob2QoeyBhbGxvd0FjdGlvbnM6IFsiVXBkYXRlQXBwbGljYXRpb24iLCAiRGVsZXRlQXBwbGljYXRpb24iXSB9KQogICAgaW50Y18wIC8vIDEKICAgIHR4biBPbkNvbXBsZXRpb24KICAgIHNobAogICAgcHVzaGludCA0OCAvLyA0OAogICAgJgogICAgdHhuIEFwcGxpY2F0aW9uSUQKICAgICYmCiAgICBhc3NlcnQgLy8gT25Db21wbGV0aW9uIG11c3QgYmUgb25lIG9mIFVwZGF0ZUFwcGxpY2F0aW9uLCBEZWxldGVBcHBsaWNhdGlvbiAmJiBjYW4gb25seSBjYWxsIHdoZW4gbm90IGNyZWF0aW5nCiAgICAvLyBzbWFydF9jb250cmFjdHMvYWJlbF9yZWFkZXIvY29udHJhY3QuYWxnby50czozOAogICAgLy8gYXNzZXJ0KFRlbXBsYXRlVmFyPHVpbnQ2ND4oIlVQREFUQUJMRSIpID09PSAxICYmIFR4bi5zZW5kZXIgPT09IEdsb2JhbC5jcmVhdG9yQWRkcmVzcyk7CiAgICBpbnRjIDQgLy8gVE1QTF9VUERBVEFCTEUKICAgIGludGNfMCAvLyAxCiAgICA9PQogICAgYnogbWFpbl9ib29sX2ZhbHNlQDE1CiAgICB0eG4gU2VuZGVyCiAgICBnbG9iYWwgQ3JlYXRvckFkZHJlc3MKICAgID09CiAgICBieiBtYWluX2Jvb2xfZmFsc2VAMTUKICAgIGludGNfMCAvLyAxCiAgICAvLyBzbWFydF9jb250cmFjdHMvYWJlbF9yZWFkZXIvY29udHJhY3QuYWxnby50czozNgogICAgLy8gQGJhcmVtZXRob2QoeyBhbGxvd0FjdGlvbnM6IFsiVXBkYXRlQXBwbGljYXRpb24iLCAiRGVsZXRlQXBwbGljYXRpb24iXSB9KQogICAgcmV0dXJuCgptYWluX2Jvb2xfZmFsc2VAMTU6CiAgICBpbnRjXzEgLy8gMAogICAgLy8gc21hcnRfY29udHJhY3RzL2FiZWxfcmVhZGVyL2NvbnRyYWN0LmFsZ28udHM6MzYKICAgIC8vIEBiYXJlbWV0aG9kKHsgYWxsb3dBY3Rpb25zOiBbIlVwZGF0ZUFwcGxpY2F0aW9uIiwgIkRlbGV0ZUFwcGxpY2F0aW9uIl0gfSkKICAgIHJldHVybgoKCi8vIHNtYXJ0X2NvbnRyYWN0cy9hYmVsX3JlYWRlci9jb250cmFjdC5hbGdvLnRzOjpBYmVsUmVhZGVyLmdldEJhbGFuY2VJbmZvW3JvdXRpbmddKCkgLT4gdm9pZDoKZ2V0QmFsYW5jZUluZm86CiAgICBpbnRjXzEgLy8gMAogICAgcHVzaGJ5dGVzICIiCiAgICAvLyBzbWFydF9jb250cmFjdHMvYWJlbF9yZWFkZXIvY29udHJhY3QuYWxnby50czo0MQogICAgLy8gQGFiaW1ldGhvZCh7IHJlYWRvbmx5OiB0cnVlLCBvbkNyZWF0ZTogImFsbG93IiB9KQogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQogICAgZHVwbiAyCiAgICBpbnRjXzEgLy8gMAogICAgZXh0cmFjdF91aW50MTYgLy8gb24gZXJyb3I6IGludmFsaWQgYXJyYXkgbGVuZ3RoIGhlYWRlcgogICAgZHVwCiAgICBjb3ZlciAyCiAgICBpbnRjXzMgLy8gMzIKICAgICoKICAgIHB1c2hpbnQgMiAvLyAyCiAgICArCiAgICBzd2FwCiAgICBsZW4KICAgID09CiAgICBhc3NlcnQgLy8gaW52YWxpZCBudW1iZXIgb2YgYnl0ZXMgZm9yIGFyYzQuZHluYW1pY19hcnJheTxhY2NvdW50PgogICAgLy8gc21hcnRfY29udHJhY3RzL2FiZWxfcmVhZGVyL2NvbnRyYWN0LmFsZ28udHM6NDMKICAgIC8vIGZvciAobGV0IGlkeDogdWludDY0ID0gMDsgaWR4IDwgYWNjb3VudHMubGVuZ3RoOyBpZHgrKykgewogICAgaW50Y18xIC8vIDAKCmdldEJhbGFuY2VJbmZvX3doaWxlX3RvcEAyOgogICAgLy8gc21hcnRfY29udHJhY3RzL2FiZWxfcmVhZGVyL2NvbnRyYWN0LmFsZ28udHM6NDMKICAgIC8vIGZvciAobGV0IGlkeDogdWludDY0ID0gMDsgaWR4IDwgYWNjb3VudHMubGVuZ3RoOyBpZHgrKykgewogICAgZHVwCiAgICBkaWcgMgogICAgPAogICAgYnogZ2V0QmFsYW5jZUluZm9fYWZ0ZXJfd2hpbGVANwogICAgLy8gc21hcnRfY29udHJhY3RzL2FiZWxfcmVhZGVyL2NvbnRyYWN0LmFsZ28udHM6NDQKICAgIC8vIGNvbnN0IGFjY291bnQgPSBhY2NvdW50c1tpZHhdOwogICAgZGlnIDIKICAgIGV4dHJhY3QgMiAwCiAgICBkaWcgMQogICAgaW50Y18zIC8vIDMyCiAgICAqCiAgICBpbnRjXzMgLy8gMzIKICAgIGV4dHJhY3QzIC8vIG9uIGVycm9yOiBpbmRleCBhY2Nlc3MgaXMgb3V0IG9mIGJvdW5kcwogICAgZHVwCiAgICBidXJ5IDYKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9hYmVsX3JlYWRlci9jb250cmFjdC5hbGdvLnRzOjQ1CiAgICAvLyBjb25zdCBiYWxhbmNlID0gb3AuYmFsYW5jZShhY2NvdW50KTsKICAgIGJhbGFuY2UKICAgIGR1cAogICAgYnVyeSA1CiAgICAvLyBzbWFydF9jb250cmFjdHMvYWJlbF9yZWFkZXIvY29udHJhY3QuYWxnby50czo0NgogICAgLy8gaWYgKGJhbGFuY2UgPiAwKSB7CiAgICBieiBnZXRCYWxhbmNlSW5mb19lbHNlX2JvZHlANQogICAgLy8gc21hcnRfY29udHJhY3RzL2FiZWxfcmVhZGVyL2NvbnRyYWN0LmFsZ28udHM6NDcKICAgIC8vIGNvbnN0IG1pbkJhbGFuY2UgPSBvcC5taW5CYWxhbmNlKGFjY291bnQpOwogICAgZGlnIDQKICAgIG1pbl9iYWxhbmNlCiAgICAvLyBzbWFydF9jb250cmFjdHMvYWJlbF9yZWFkZXIvY29udHJhY3QuYWxnby50czo0OAogICAgLy8gY29uc3QgYmFsYW5jZUluZm86IEJhbGFuY2VJbmZvID0geyBiYWxhbmNlLCBtaW5CYWxhbmNlIH07CiAgICBkaWcgNAogICAgaXRvYgogICAgc3dhcAogICAgaXRvYgogICAgY29uY2F0CiAgICAvLyBzbWFydF9jb250cmFjdHMvYWJlbF9yZWFkZXIvY29udHJhY3QuYWxnby50czo0OQogICAgLy8gbG9nKGVuY29kZUFyYzQoYmFsYW5jZUluZm8pKTsKICAgIGxvZwoKZ2V0QmFsYW5jZUluZm9fYWZ0ZXJfaWZfZWxzZUA2OgogICAgLy8gc21hcnRfY29udHJhY3RzL2FiZWxfcmVhZGVyL2NvbnRyYWN0LmFsZ28udHM6NDMKICAgIC8vIGZvciAobGV0IGlkeDogdWludDY0ID0gMDsgaWR4IDwgYWNjb3VudHMubGVuZ3RoOyBpZHgrKykgewogICAgZHVwCiAgICBpbnRjXzAgLy8gMQogICAgKwogICAgYnVyeSAxCiAgICBiIGdldEJhbGFuY2VJbmZvX3doaWxlX3RvcEAyCgpnZXRCYWxhbmNlSW5mb19lbHNlX2JvZHlANToKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9hYmVsX3JlYWRlci9jb250cmFjdC5hbGdvLnRzOjU4CiAgICAvLyByZXR1cm4geyBiYWxhbmNlOiAwLCBtaW5CYWxhbmNlOiAwIH07CiAgICBwdXNoYnl0ZXMgMHgwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAogICAgLy8gc21hcnRfY29udHJhY3RzL2FiZWxfcmVhZGVyL2NvbnRyYWN0LmFsZ28udHM6NTEKICAgIC8vIGxvZyhlbmNvZGVBcmM0KHRoaXMuZ2V0RW1wdHlCYWxhbmNlSW5mbygpKSk7CiAgICBsb2cKICAgIGIgZ2V0QmFsYW5jZUluZm9fYWZ0ZXJfaWZfZWxzZUA2CgpnZXRCYWxhbmNlSW5mb19hZnRlcl93aGlsZUA3OgogICAgLy8gc21hcnRfY29udHJhY3RzL2FiZWxfcmVhZGVyL2NvbnRyYWN0LmFsZ28udHM6NDEKICAgIC8vIEBhYmltZXRob2QoeyByZWFkb25seTogdHJ1ZSwgb25DcmVhdGU6ICJhbGxvdyIgfSkKICAgIHB1c2hieXRlcyAweDE1MWY3Yzc1MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKICAgIGxvZwogICAgaW50Y18wIC8vIDEKICAgIHJldHVybgoKCi8vIHNtYXJ0X2NvbnRyYWN0cy9hYmVsX3JlYWRlci9jb250cmFjdC5hbGdvLnRzOjpBYmVsUmVhZGVyLmdldEFzc2V0c1Rpbnlbcm91dGluZ10oKSAtPiB2b2lkOgpnZXRBc3NldHNUaW55OgogICAgaW50Y18xIC8vIDAKICAgIGR1cG4gMwogICAgcHVzaGJ5dGVzICIiCiAgICAvLyBzbWFydF9jb250cmFjdHMvYWJlbF9yZWFkZXIvY29udHJhY3QuYWxnby50czo2MQogICAgLy8gQGFiaW1ldGhvZCh7IHJlYWRvbmx5OiB0cnVlLCBvbkNyZWF0ZTogImFsbG93IiB9KQogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQogICAgZHVwbiAyCiAgICBpbnRjXzEgLy8gMAogICAgZXh0cmFjdF91aW50MTYgLy8gb24gZXJyb3I6IGludmFsaWQgYXJyYXkgbGVuZ3RoIGhlYWRlcgogICAgZHVwCiAgICBjb3ZlciAyCiAgICBpbnRjXzIgLy8gOAogICAgKgogICAgcHVzaGludCAyIC8vIDIKICAgICsKICAgIHN3YXAKICAgIGxlbgogICAgPT0KICAgIGFzc2VydCAvLyBpbnZhbGlkIG51bWJlciBvZiBieXRlcyBmb3IgYXJjNC5keW5hbWljX2FycmF5PGFzc2V0PgogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgogICAgZHVwCiAgICBsZW4KICAgIGludGNfMiAvLyA4CiAgICA9PQogICAgYXNzZXJ0IC8vIGludmFsaWQgbnVtYmVyIG9mIGJ5dGVzIGZvciBhcmM0LnVpbnQ2NAogICAgYnRvaQogICAgLy8gc21hcnRfY29udHJhY3RzL2FiZWxfcmVhZGVyL2NvbnRyYWN0LmFsZ28udHM6NjMKICAgIC8vIGZvciAobGV0IGlkeDogdWludDY0ID0gMDsgaWR4IDwgYXNzZXRJZHMubGVuZ3RoOyBpZHgrKykgewogICAgaW50Y18xIC8vIDAKCmdldEFzc2V0c1Rpbnlfd2hpbGVfdG9wQDI6CiAgICAvLyBzbWFydF9jb250cmFjdHMvYWJlbF9yZWFkZXIvY29udHJhY3QuYWxnby50czo2MwogICAgLy8gZm9yIChsZXQgaWR4OiB1aW50NjQgPSAwOyBpZHggPCBhc3NldElkcy5sZW5ndGg7IGlkeCsrKSB7CiAgICBkdXAKICAgIGRpZyAzCiAgICA8CiAgICBieiBnZXRBc3NldHNUaW55X2FmdGVyX3doaWxlQDE0CiAgICAvLyBzbWFydF9jb250cmFjdHMvYWJlbF9yZWFkZXIvY29udHJhY3QuYWxnby50czo2NAogICAgLy8gY29uc3QgYXNzZXQgPSBhc3NldElkc1tpZHhdOwogICAgZGlnIDMKICAgIGV4dHJhY3QgMiAwCiAgICBkaWcgMQogICAgaW50Y18yIC8vIDgKICAgICoKICAgIGR1cDIKICAgIGludGNfMiAvLyA4CiAgICBleHRyYWN0MyAvLyBvbiBlcnJvcjogaW5kZXggYWNjZXNzIGlzIG91dCBvZiBib3VuZHMKICAgIGJ1cnkgMTEKICAgIGV4dHJhY3RfdWludDY0CiAgICBkdXAKICAgIGJ1cnkgNgogICAgLy8gc21hcnRfY29udHJhY3RzL2FiZWxfcmVhZGVyL2NvbnRyYWN0LmFsZ28udHM6NjUKICAgIC8vIGNvbnN0IFtfLCBleGlzdHNdID0gb3AuQXNzZXRQYXJhbXMuYXNzZXRDcmVhdG9yKGFzc2V0LmlkKTsKICAgIGFzc2V0X3BhcmFtc19nZXQgQXNzZXRDcmVhdG9yCiAgICBidXJ5IDEKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9hYmVsX3JlYWRlci9jb250cmFjdC5hbGdvLnRzOjY2CiAgICAvLyBpZiAoIWV4aXN0cykgewogICAgYm56IGdldEFzc2V0c1RpbnlfZWxzZV9ib2R5QDUKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9hYmVsX3JlYWRlci9jb250cmFjdC5hbGdvLnRzOjkwLTk1CiAgICAvLyByZXR1cm4gewogICAgLy8gICBuYW1lOiAiIiwKICAgIC8vICAgdW5pdF9uYW1lOiAiIiwKICAgIC8vICAgZGVjaW1hbHM6IG5ldyBVaW50OCgwKSwKICAgIC8vICAgbGFiZWxzOiBbXSwKICAgIC8vIH07CiAgICBwdXNoYnl0ZXMgMHgwMDA3MDAwOTAwMDAwYjAwMDAwMDAwMDAwMAogICAgLy8gc21hcnRfY29udHJhY3RzL2FiZWxfcmVhZGVyL2NvbnRyYWN0LmFsZ28udHM6NjcKICAgIC8vIGxvZyhlbmNvZGVBcmM0KHRoaXMuZ2V0RW1wdHlBc3NldFRpbnlMYWJlbHMoKSkpOwogICAgbG9nCgpnZXRBc3NldHNUaW55X2FmdGVyX2lmX2Vsc2VAMTM6CiAgICAvLyBzbWFydF9jb250cmFjdHMvYWJlbF9yZWFkZXIvY29udHJhY3QuYWxnby50czo2MwogICAgLy8gZm9yIChsZXQgaWR4OiB1aW50NjQgPSAwOyBpZHggPCBhc3NldElkcy5sZW5ndGg7IGlkeCsrKSB7CiAgICBkdXAKICAgIGludGNfMCAvLyAxCiAgICArCiAgICBidXJ5IDEKICAgIGIgZ2V0QXNzZXRzVGlueV93aGlsZV90b3BAMgoKZ2V0QXNzZXRzVGlueV9lbHNlX2JvZHlANToKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9hYmVsX3JlYWRlci9jb250cmFjdC5hbGdvLnRzOjcwCiAgICAvLyBhYmVsQXBwSWQgIT09IDAgPyBjb21waWxlQXJjNChBYmVsU3R1YikuY2FsbC5oYXNfYXNzZXRfbGFiZWwoeyBhcHBJZDogYWJlbEFwcElkLCBhcmdzOiBbYXNzZXQuaWQsICJwdiJdIH0pLnJldHVyblZhbHVlIDogMDsKICAgIGRpZyAxCiAgICBieiBnZXRBc3NldHNUaW55X3Rlcm5hcnlfZmFsc2VAOAogICAgaXR4bl9iZWdpbgogICAgcHVzaGJ5dGVzIDB4OTdmNDBhOGEgLy8gbWV0aG9kICJoYXNfYXNzZXRfbGFiZWwodWludDY0LHN0cmluZyl1aW50NjQiCiAgICBpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwogICAgZGlnIDgKICAgIGl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCiAgICBwdXNoYnl0ZXMgMHgwMDAyNzA3NgogICAgaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKICAgIGludGNfMSAvLyAwCiAgICBpdHhuX2ZpZWxkIE9uQ29tcGxldGlvbgogICAgZGlnIDEKICAgIGl0eG5fZmllbGQgQXBwbGljYXRpb25JRAogICAgcHVzaGludCA2IC8vIGFwcGwKICAgIGl0eG5fZmllbGQgVHlwZUVudW0KICAgIGludGNfMSAvLyAwCiAgICBpdHhuX2ZpZWxkIEZlZQogICAgaXR4bl9zdWJtaXQKICAgIGl0eG4gTGFzdExvZwogICAgZHVwCiAgICBleHRyYWN0IDQgMAogICAgc3dhcAogICAgZXh0cmFjdCAwIDQKICAgIHB1c2hieXRlcyAweDE1MWY3Yzc1CiAgICA9PQogICAgYXNzZXJ0IC8vIEJ5dGVzIGhhcyB2YWxpZCBwcmVmaXgKICAgIGR1cAogICAgbGVuCiAgICBpbnRjXzIgLy8gOAogICAgPT0KICAgIGFzc2VydCAvLyBpbnZhbGlkIG51bWJlciBvZiBieXRlcyBmb3IgYXJjNC51aW50NjQKICAgIGJ0b2kKCmdldEFzc2V0c1RpbnlfdGVybmFyeV9tZXJnZUA5OgogICAgLy8gc21hcnRfY29udHJhY3RzL2FiZWxfcmVhZGVyL2NvbnRyYWN0LmFsZ28udHM6NzIKICAgIC8vIG5hbWU6IGFzc2V0Lm5hbWUudG9TdHJpbmcoKSwKICAgIGRpZyA1CiAgICBkdXAKICAgIGFzc2V0X3BhcmFtc19nZXQgQXNzZXROYW1lCiAgICBzd2FwCiAgICBidXJ5IDEwCiAgICBhc3NlcnQgLy8gYXNzZXQgZXhpc3RzCiAgICAvLyBzbWFydF9jb250cmFjdHMvYWJlbF9yZWFkZXIvY29udHJhY3QuYWxnby50czo3MwogICAgLy8gdW5pdF9uYW1lOiBhc3NldC51bml0TmFtZS50b1N0cmluZygpLAogICAgZHVwCiAgICBhc3NldF9wYXJhbXNfZ2V0IEFzc2V0VW5pdE5hbWUKICAgIHN3YXAKICAgIGJ1cnkgOQogICAgYXNzZXJ0IC8vIGFzc2V0IGV4aXN0cwogICAgLy8gc21hcnRfY29udHJhY3RzL2FiZWxfcmVhZGVyL2NvbnRyYWN0LmFsZ28udHM6NzQKICAgIC8vIGRlY2ltYWxzOiBuZXcgVWludDgoYXNzZXQuZGVjaW1hbHMpLAogICAgYXNzZXRfcGFyYW1zX2dldCBBc3NldERlY2ltYWxzCiAgICBhc3NlcnQgLy8gYXNzZXQgZXhpc3RzCiAgICBpdG9iCiAgICBkdXAKICAgIGJpdGxlbgogICAgaW50Y18yIC8vIDgKICAgIDw9CiAgICBhc3NlcnQgLy8gb3ZlcmZsb3cKICAgIGV4dHJhY3QgNyAxCiAgICBidXJ5IDkKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9hYmVsX3JlYWRlci9jb250cmFjdC5hbGdvLnRzOjc1CiAgICAvLyBsYWJlbHM6IHB2ID09PSAwID8gKFtdIGFzIHN0cmluZ1tdKSA6IFsicHYiXSwKICAgIGJueiBnZXRBc3NldHNUaW55X3Rlcm5hcnlfZmFsc2VAMTEKICAgIHB1c2hieXRlcyAweDAwMDAKCmdldEFzc2V0c1RpbnlfdGVybmFyeV9tZXJnZUAxMjoKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9hYmVsX3JlYWRlci9jb250cmFjdC5hbGdvLnRzOjcxLTc2CiAgICAvLyBjb25zdCBhc3NldEluZm86IEFzc2V0VGlueUxhYmVscyA9IHsKICAgIC8vICAgbmFtZTogYXNzZXQubmFtZS50b1N0cmluZygpLAogICAgLy8gICB1bml0X25hbWU6IGFzc2V0LnVuaXROYW1lLnRvU3RyaW5nKCksCiAgICAvLyAgIGRlY2ltYWxzOiBuZXcgVWludDgoYXNzZXQuZGVjaW1hbHMpLAogICAgLy8gICBsYWJlbHM6IHB2ID09PSAwID8gKFtdIGFzIHN0cmluZ1tdKSA6IFsicHYiXSwKICAgIC8vIH07CiAgICBkaWcgNwogICAgZHVwCiAgICBsZW4KICAgIGl0b2IKICAgIGV4dHJhY3QgNiAyCiAgICBzd2FwCiAgICBjb25jYXQKICAgIGR1cAogICAgbGVuCiAgICBwdXNoaW50IDcgLy8gNwogICAgKwogICAgZGlnIDgKICAgIGR1cAogICAgbGVuCiAgICBpdG9iCiAgICBleHRyYWN0IDYgMgogICAgc3dhcAogICAgY29uY2F0CiAgICBkaWcgMQogICAgaXRvYgogICAgZXh0cmFjdCA2IDIKICAgIHB1c2hieXRlcyAweDAwMDcKICAgIHN3YXAKICAgIGNvbmNhdAogICAgZGlnIDEKICAgIGxlbgogICAgdW5jb3ZlciAzCiAgICArCiAgICBzd2FwCiAgICBkaWcgMTIKICAgIGNvbmNhdAogICAgc3dhcAogICAgaXRvYgogICAgZXh0cmFjdCA2IDIKICAgIGNvbmNhdAogICAgdW5jb3ZlciAyCiAgICBjb25jYXQKICAgIHN3YXAKICAgIGNvbmNhdAogICAgc3dhcAogICAgY29uY2F0CiAgICAvLyBzbWFydF9jb250cmFjdHMvYWJlbF9yZWFkZXIvY29udHJhY3QuYWxnby50czo3NwogICAgLy8gbG9nKGVuY29kZUFyYzQoYXNzZXRJbmZvKSk7CiAgICBsb2cKICAgIGIgZ2V0QXNzZXRzVGlueV9hZnRlcl9pZl9lbHNlQDEzCgpnZXRBc3NldHNUaW55X3Rlcm5hcnlfZmFsc2VAMTE6CiAgICAvLyBzbWFydF9jb250cmFjdHMvYWJlbF9yZWFkZXIvY29udHJhY3QuYWxnby50czo3NQogICAgLy8gbGFiZWxzOiBwdiA9PT0gMCA/IChbXSBhcyBzdHJpbmdbXSkgOiBbInB2Il0sCiAgICBwdXNoYnl0ZXMgMHgwMDAxMDAwMjAwMDI3MDc2CiAgICBiIGdldEFzc2V0c1RpbnlfdGVybmFyeV9tZXJnZUAxMgoKZ2V0QXNzZXRzVGlueV90ZXJuYXJ5X2ZhbHNlQDg6CiAgICAvLyBzbWFydF9jb250cmFjdHMvYWJlbF9yZWFkZXIvY29udHJhY3QuYWxnby50czo3MAogICAgLy8gYWJlbEFwcElkICE9PSAwID8gY29tcGlsZUFyYzQoQWJlbFN0dWIpLmNhbGwuaGFzX2Fzc2V0X2xhYmVsKHsgYXBwSWQ6IGFiZWxBcHBJZCwgYXJnczogW2Fzc2V0LmlkLCAicHYiXSB9KS5yZXR1cm5WYWx1ZSA6IDA7CiAgICBpbnRjXzEgLy8gMAogICAgYiBnZXRBc3NldHNUaW55X3Rlcm5hcnlfbWVyZ2VAOQoKZ2V0QXNzZXRzVGlueV9hZnRlcl93aGlsZUAxNDoKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9hYmVsX3JlYWRlci9jb250cmFjdC5hbGdvLnRzOjYxCiAgICAvLyBAYWJpbWV0aG9kKHsgcmVhZG9ubHk6IHRydWUsIG9uQ3JlYXRlOiAiYWxsb3ciIH0pCiAgICBwdXNoYnl0ZXMgMHgxNTFmN2M3NTAwMDcwMDA5MDAwMDBiMDAwMDAwMDAwMDAwCiAgICBsb2cKICAgIGludGNfMCAvLyAxCiAgICByZXR1cm4KCgovLyBzbWFydF9jb250cmFjdHMvYWJlbF9yZWFkZXIvY29udHJhY3QuYWxnby50czo6QWJlbFJlYWRlci5nZXRBc3NldExhYmVsc1tyb3V0aW5nXSgpIC0+IHZvaWQ6CmdldEFzc2V0TGFiZWxzOgogICAgLy8gc21hcnRfY29udHJhY3RzL2FiZWxfcmVhZGVyL2NvbnRyYWN0LmFsZ28udHM6ODMKICAgIC8vIEBhYmltZXRob2QoeyByZWFkb25seTogdHJ1ZSwgb25DcmVhdGU6ICJhbGxvdyIsIG5hbWU6ICJnZXRfYXNzZXRfbGFiZWxzIiwgcmVzb3VyY2VFbmNvZGluZzogImluZGV4IiB9KQogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQogICAgbGVuCiAgICBpbnRjXzAgLy8gMQogICAgPT0KICAgIGFzc2VydCAvLyBpbnZhbGlkIG51bWJlciBvZiBieXRlcyBmb3IgYXJjNC51aW50OAogICAgcHVzaGJ5dGVzIDB4MTUxZjdjNzUwMDAwCiAgICBsb2cKICAgIGludGNfMCAvLyAxCiAgICByZXR1cm4KCgovLyBzbWFydF9jb250cmFjdHMvYWJlbF9yZWFkZXIvY29udHJhY3QuYWxnby50czo6QWJlbFJlYWRlci5nZXRCbG9ja1RpbWVzQW5kVGNbcm91dGluZ10oKSAtPiB2b2lkOgpnZXRCbG9ja1RpbWVzQW5kVGM6CiAgICAvLyBzbWFydF9jb250cmFjdHMvYWJlbF9yZWFkZXIvY29udHJhY3QuYWxnby50czo5OAogICAgLy8gQGFiaW1ldGhvZCh7IHJlYWRvbmx5OiB0cnVlLCBvbkNyZWF0ZTogImFsbG93IiB9KQogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQogICAgZHVwCiAgICBsZW4KICAgIGludGNfMiAvLyA4CiAgICA9PQogICAgYXNzZXJ0IC8vIGludmFsaWQgbnVtYmVyIG9mIGJ5dGVzIGZvciBhcmM0LnVpbnQ2NAogICAgYnRvaQogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgogICAgZHVwCiAgICBsZW4KICAgIGludGNfMiAvLyA4CiAgICA9PQogICAgYXNzZXJ0IC8vIGludmFsaWQgbnVtYmVyIG9mIGJ5dGVzIGZvciBhcmM0LnVpbnQ2NAogICAgYnRvaQogICAgc3dhcAoKZ2V0QmxvY2tUaW1lc0FuZFRjX3doaWxlX3RvcEAyOgogICAgLy8gc21hcnRfY29udHJhY3RzL2FiZWxfcmVhZGVyL2NvbnRyYWN0LmFsZ28udHM6MTAwCiAgICAvLyBmb3IgKGxldCByb3VuZDogdWludDY0ID0gZmlyc3RSb3VuZDsgcm91bmQgPD0gbGFzdFJvdW5kOyByb3VuZCsrKSB7CiAgICBkdXAKICAgIGRpZyAyCiAgICA8PQogICAgYnogZ2V0QmxvY2tUaW1lc0FuZFRjX2FmdGVyX3doaWxlQDQKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9hYmVsX3JlYWRlci9jb250cmFjdC5hbGdvLnRzOjEwMgogICAgLy8gdHM6IG5ldyBVaW50MzIob3AuQmxvY2suYmxrVGltZXN0YW1wKHJvdW5kKSksCiAgICBkdXBuIDIKICAgIGJsb2NrIEJsa1RpbWVzdGFtcAogICAgaXRvYgogICAgZHVwCiAgICBiaXRsZW4KICAgIGludGNfMyAvLyAzMgogICAgPD0KICAgIGFzc2VydCAvLyBvdmVyZmxvdwogICAgZXh0cmFjdCA0IDQKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9hYmVsX3JlYWRlci9jb250cmFjdC5hbGdvLnRzOjEwMwogICAgLy8gdGM6IG9wLkJsb2NrLmJsa1R4bkNvdW50ZXIocm91bmQpLAogICAgZGlnIDEKICAgIGJsb2NrIEJsa1R4bkNvdW50ZXIKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9hYmVsX3JlYWRlci9jb250cmFjdC5hbGdvLnRzOjEwMS0xMDQKICAgIC8vIGNvbnN0IGJsa0RhdGE6IEJsb2NrVGltZUFuZFRjID0gewogICAgLy8gICB0czogbmV3IFVpbnQzMihvcC5CbG9jay5ibGtUaW1lc3RhbXAocm91bmQpKSwKICAgIC8vICAgdGM6IG9wLkJsb2NrLmJsa1R4bkNvdW50ZXIocm91bmQpLAogICAgLy8gfTsKICAgIGl0b2IKICAgIGNvbmNhdAogICAgLy8gc21hcnRfY29udHJhY3RzL2FiZWxfcmVhZGVyL2NvbnRyYWN0LmFsZ28udHM6MTA1CiAgICAvLyBsb2coZW5jb2RlQXJjNChibGtEYXRhKSk7CiAgICBsb2cKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9hYmVsX3JlYWRlci9jb250cmFjdC5hbGdvLnRzOjEwMAogICAgLy8gZm9yIChsZXQgcm91bmQ6IHVpbnQ2NCA9IGZpcnN0Um91bmQ7IHJvdW5kIDw9IGxhc3RSb3VuZDsgcm91bmQrKykgewogICAgaW50Y18wIC8vIDEKICAgICsKICAgIGJ1cnkgMQogICAgYiBnZXRCbG9ja1RpbWVzQW5kVGNfd2hpbGVfdG9wQDIKCmdldEJsb2NrVGltZXNBbmRUY19hZnRlcl93aGlsZUA0OgogICAgLy8gc21hcnRfY29udHJhY3RzL2FiZWxfcmVhZGVyL2NvbnRyYWN0LmFsZ28udHM6OTgKICAgIC8vIEBhYmltZXRob2QoeyByZWFkb25seTogdHJ1ZSwgb25DcmVhdGU6ICJhbGxvdyIgfSkKICAgIHB1c2hieXRlcyAweDE1MWY3Yzc1MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiAgICBsb2cKICAgIGludGNfMCAvLyAxCiAgICByZXR1cm4K", "clear": "I3ByYWdtYSB2ZXJzaW9uIDExCiNwcmFnbWEgdHlwZXRyYWNrIGZhbHNlCgovLyBAYWxnb3JhbmRmb3VuZGF0aW9uL2FsZ29yYW5kLXR5cGVzY3JpcHQvYmFzZS1jb250cmFjdC5kLnRzOjpCYXNlQ29udHJhY3QuY2xlYXJTdGF0ZVByb2dyYW0oKSAtPiB1aW50NjQ6Cm1haW46CiAgICBwdXNoaW50IDEgLy8gMQogICAgcmV0dXJuCg==" }, "byteCode": { "approval": "CyAFAQAIIAAxG0EAKDEZFESCBARId6lnBNWrM2YEwu10PwSnDmKgNhoAjgQAHwCTAboBzAAiMRmQgTAaMRgQRCEEIhJBAAoxADIJEkEAAiJDI0MjgAA2GgFHAiNZSU4CJQuBAghMFRJEI0lLAgxBAD1LAlcCAEsBJQslWElFBmBJRQVBABJLBHhLBBZMFlCwSSIIRQFC/9KAEAAAAAAAAAAAAAAAAAAAAACwQv/igBQVH3x1AAAAAAAAAAAAAAAAAAAAALAiQyNHA4AANhoBRwIjWUlOAiQLgQIITBUSRDYaAkkVJBJEFyNJSwMMQQDoSwNXAgBLASQLSiRYRQtbSUUGcQtFAUAAGIANAAcACQAACwAAAAAAALBJIghFAUL/yEsBQQCusYAEl/QKirIaSwiyGoAEAAJwdrIaI7IZSwGyGIEGshAjsgGztD5JVwQATFcABIAEFR98dRJESRUkEkQXSwVJcQRMRQpESXEDTEUJRHEBRBZJkyQORFcHAUUJQABEgAIAAEsHSRUWVwYCTFBJFYEHCEsISRUWVwYCTFBLARZXBgKAAgAHTFBLARVPAwhMSwxQTBZXBgJQTwJQTFBMULBC/1KACAABAAIAAnB2Qv+zI0L/ioARFR98dQAHAAkAAAsAAAAAAACwIkM2GgEVIhJEgAYVH3x1AACwIkM2GgFJFSQSRBc2GgJJFSQSRBdMSUsCDkEAG0cC0QEWSZMlDkRXBARLAdEIFlCwIghFAUL/3oAQFR98dQAAAAAAAAAAAAAAALAiQw==", "clear": "C4EBQw==" }, "events": [], "templateVariables": { "UPDATABLE": { "type": "AVMUint64" } } };
|
|
5
5
|
class BinaryStateValue {
|
|
6
6
|
value;
|
|
7
7
|
constructor(value) {
|
|
@@ -26,6 +26,12 @@ export function AssetTinyLabelsFromTuple(abiTuple) {
|
|
|
26
26
|
export function BalanceInfoFromTuple(abiTuple) {
|
|
27
27
|
return getABIStructFromABITuple(abiTuple, APP_SPEC.structs.BalanceInfo, APP_SPEC.structs);
|
|
28
28
|
}
|
|
29
|
+
/**
|
|
30
|
+
* Converts the ABI tuple representation of a BlockTimeAndTc to the struct representation
|
|
31
|
+
*/
|
|
32
|
+
export function BlockTimeAndTcFromTuple(abiTuple) {
|
|
33
|
+
return getABIStructFromABITuple(abiTuple, APP_SPEC.structs.BlockTimeAndTc, APP_SPEC.structs);
|
|
34
|
+
}
|
|
29
35
|
/**
|
|
30
36
|
* Exposes methods for constructing `AppClient` params objects for ABI calls to the AbelReader smart contract
|
|
31
37
|
*/
|
|
@@ -46,6 +52,9 @@ export class AbelReaderParamsFactory {
|
|
|
46
52
|
case 'get_asset_labels':
|
|
47
53
|
case 'get_asset_labels(asset)string[]':
|
|
48
54
|
return AbelReaderParamsFactory.create.getAssetLabels(params);
|
|
55
|
+
case 'getBlockTimesAndTc':
|
|
56
|
+
case 'getBlockTimesAndTc(uint64,uint64)(uint32,uint64)':
|
|
57
|
+
return AbelReaderParamsFactory.create.getBlockTimesAndTc(params);
|
|
49
58
|
}
|
|
50
59
|
throw new Error(`Unknown ' + verb + ' method`);
|
|
51
60
|
},
|
|
@@ -88,6 +97,19 @@ export class AbelReaderParamsFactory {
|
|
|
88
97
|
args: Array.isArray(params.args) ? params.args : [params.args.assetId],
|
|
89
98
|
};
|
|
90
99
|
},
|
|
100
|
+
/**
|
|
101
|
+
* Constructs create ABI call params for the AbelReader smart contract using the getBlockTimesAndTc(uint64,uint64)(uint32,uint64) ABI method
|
|
102
|
+
*
|
|
103
|
+
* @param params Parameters for the call
|
|
104
|
+
* @returns An `AppClientMethodCallParams` object for the call
|
|
105
|
+
*/
|
|
106
|
+
getBlockTimesAndTc(params) {
|
|
107
|
+
return {
|
|
108
|
+
...params,
|
|
109
|
+
method: 'getBlockTimesAndTc(uint64,uint64)(uint32,uint64)',
|
|
110
|
+
args: Array.isArray(params.args) ? params.args : [params.args.firstRound, params.args.lastRound],
|
|
111
|
+
};
|
|
112
|
+
},
|
|
91
113
|
};
|
|
92
114
|
}
|
|
93
115
|
/**
|
|
@@ -129,6 +151,19 @@ export class AbelReaderParamsFactory {
|
|
|
129
151
|
args: Array.isArray(params.args) ? params.args : [params.args.assetId],
|
|
130
152
|
};
|
|
131
153
|
}
|
|
154
|
+
/**
|
|
155
|
+
* Constructs a no op call for the getBlockTimesAndTc(uint64,uint64)(uint32,uint64) ABI method
|
|
156
|
+
*
|
|
157
|
+
* @param params Parameters for the call
|
|
158
|
+
* @returns An `AppClientMethodCallParams` object for the call
|
|
159
|
+
*/
|
|
160
|
+
static getBlockTimesAndTc(params) {
|
|
161
|
+
return {
|
|
162
|
+
...params,
|
|
163
|
+
method: 'getBlockTimesAndTc(uint64,uint64)(uint32,uint64)',
|
|
164
|
+
args: Array.isArray(params.args) ? params.args : [params.args.firstRound, params.args.lastRound],
|
|
165
|
+
};
|
|
166
|
+
}
|
|
132
167
|
}
|
|
133
168
|
/**
|
|
134
169
|
* 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
|
|
@@ -232,6 +267,15 @@ class AbelReaderFactory {
|
|
|
232
267
|
getAssetLabels: (params) => {
|
|
233
268
|
return this.appFactory.params.create(AbelReaderParamsFactory.create.getAssetLabels(params));
|
|
234
269
|
},
|
|
270
|
+
/**
|
|
271
|
+
* Creates a new instance of the AbelReader smart contract using the getBlockTimesAndTc(uint64,uint64)(uint32,uint64) ABI method.
|
|
272
|
+
*
|
|
273
|
+
* @param params The params for the smart contract call
|
|
274
|
+
* @returns The create params
|
|
275
|
+
*/
|
|
276
|
+
getBlockTimesAndTc: (params) => {
|
|
277
|
+
return this.appFactory.params.create(AbelReaderParamsFactory.create.getBlockTimesAndTc(params));
|
|
278
|
+
},
|
|
235
279
|
},
|
|
236
280
|
/**
|
|
237
281
|
* Gets available deployUpdate methods
|
|
@@ -297,6 +341,15 @@ class AbelReaderFactory {
|
|
|
297
341
|
getAssetLabels: (params) => {
|
|
298
342
|
return this.appFactory.createTransaction.create(AbelReaderParamsFactory.create.getAssetLabels(params));
|
|
299
343
|
},
|
|
344
|
+
/**
|
|
345
|
+
* Creates a new instance of the AbelReader smart contract using the getBlockTimesAndTc(uint64,uint64)(uint32,uint64) ABI method.
|
|
346
|
+
*
|
|
347
|
+
* @param params The params for the smart contract call
|
|
348
|
+
* @returns The create transaction
|
|
349
|
+
*/
|
|
350
|
+
getBlockTimesAndTc: (params) => {
|
|
351
|
+
return this.appFactory.createTransaction.create(AbelReaderParamsFactory.create.getBlockTimesAndTc(params));
|
|
352
|
+
},
|
|
300
353
|
},
|
|
301
354
|
};
|
|
302
355
|
/**
|
|
@@ -337,6 +390,16 @@ class AbelReaderFactory {
|
|
|
337
390
|
const result = await this.appFactory.send.create(AbelReaderParamsFactory.create.getAssetLabels(params));
|
|
338
391
|
return { result: { ...result.result, return: result.result.return }, appClient: new AbelReaderClient(result.appClient) };
|
|
339
392
|
},
|
|
393
|
+
/**
|
|
394
|
+
* Creates a new instance of the AbelReader smart contract using an ABI method call using the getBlockTimesAndTc(uint64,uint64)(uint32,uint64) ABI method.
|
|
395
|
+
*
|
|
396
|
+
* @param params The params for the smart contract call
|
|
397
|
+
* @returns The create result
|
|
398
|
+
*/
|
|
399
|
+
getBlockTimesAndTc: async (params) => {
|
|
400
|
+
const result = await this.appFactory.send.create(AbelReaderParamsFactory.create.getBlockTimesAndTc(params));
|
|
401
|
+
return { result: { ...result.result, return: result.result.return }, appClient: new AbelReaderClient(result.appClient) };
|
|
402
|
+
},
|
|
340
403
|
},
|
|
341
404
|
};
|
|
342
405
|
}
|
|
@@ -473,6 +536,17 @@ class AbelReaderClient {
|
|
|
473
536
|
getAssetLabels: (params) => {
|
|
474
537
|
return this.appClient.params.call(AbelReaderParamsFactory.getAssetLabels(params));
|
|
475
538
|
},
|
|
539
|
+
/**
|
|
540
|
+
* Makes a call to the AbelReader smart contract using the `getBlockTimesAndTc(uint64,uint64)(uint32,uint64)` ABI method.
|
|
541
|
+
*
|
|
542
|
+
* This method is a readonly method; calling it with onComplete of NoOp will result in a simulated transaction rather than a real transaction.
|
|
543
|
+
*
|
|
544
|
+
* @param params The params for the smart contract call
|
|
545
|
+
* @returns The call params
|
|
546
|
+
*/
|
|
547
|
+
getBlockTimesAndTc: (params) => {
|
|
548
|
+
return this.appClient.params.call(AbelReaderParamsFactory.getBlockTimesAndTc(params));
|
|
549
|
+
},
|
|
476
550
|
};
|
|
477
551
|
/**
|
|
478
552
|
* Create transactions for the current app
|
|
@@ -548,6 +622,17 @@ class AbelReaderClient {
|
|
|
548
622
|
getAssetLabels: (params) => {
|
|
549
623
|
return this.appClient.createTransaction.call(AbelReaderParamsFactory.getAssetLabels(params));
|
|
550
624
|
},
|
|
625
|
+
/**
|
|
626
|
+
* Makes a call to the AbelReader smart contract using the `getBlockTimesAndTc(uint64,uint64)(uint32,uint64)` ABI method.
|
|
627
|
+
*
|
|
628
|
+
* This method is a readonly method; calling it with onComplete of NoOp will result in a simulated transaction rather than a real transaction.
|
|
629
|
+
*
|
|
630
|
+
* @param params The params for the smart contract call
|
|
631
|
+
* @returns The call transaction
|
|
632
|
+
*/
|
|
633
|
+
getBlockTimesAndTc: (params) => {
|
|
634
|
+
return this.appClient.createTransaction.call(AbelReaderParamsFactory.getBlockTimesAndTc(params));
|
|
635
|
+
},
|
|
551
636
|
};
|
|
552
637
|
/**
|
|
553
638
|
* Send calls to the current app
|
|
@@ -626,6 +711,18 @@ class AbelReaderClient {
|
|
|
626
711
|
const result = await this.appClient.send.call(AbelReaderParamsFactory.getAssetLabels(params));
|
|
627
712
|
return { ...result, return: result.return };
|
|
628
713
|
},
|
|
714
|
+
/**
|
|
715
|
+
* Makes a call to the AbelReader smart contract using the `getBlockTimesAndTc(uint64,uint64)(uint32,uint64)` ABI method.
|
|
716
|
+
*
|
|
717
|
+
* This method is a readonly method; calling it with onComplete of NoOp will result in a simulated transaction rather than a real transaction.
|
|
718
|
+
*
|
|
719
|
+
* @param params The params for the smart contract call
|
|
720
|
+
* @returns The call result
|
|
721
|
+
*/
|
|
722
|
+
getBlockTimesAndTc: async (params) => {
|
|
723
|
+
const result = await this.appClient.send.call(AbelReaderParamsFactory.getBlockTimesAndTc(params));
|
|
724
|
+
return { ...result, return: result.return };
|
|
725
|
+
},
|
|
629
726
|
};
|
|
630
727
|
/**
|
|
631
728
|
* Clone this app client with different params
|
|
@@ -672,6 +769,18 @@ class AbelReaderClient {
|
|
|
672
769
|
const result = await this.appClient.send.call(AbelReaderParamsFactory.getAssetLabels(params));
|
|
673
770
|
return result.return;
|
|
674
771
|
}
|
|
772
|
+
/**
|
|
773
|
+
* Makes a readonly (simulated) call to the AbelReader smart contract using the `getBlockTimesAndTc(uint64,uint64)(uint32,uint64)` ABI method.
|
|
774
|
+
*
|
|
775
|
+
* This method is a readonly method; calling it with onComplete of NoOp will result in a simulated transaction rather than a real transaction.
|
|
776
|
+
*
|
|
777
|
+
* @param params The params for the smart contract call
|
|
778
|
+
* @returns The call result
|
|
779
|
+
*/
|
|
780
|
+
async getBlockTimesAndTc(params) {
|
|
781
|
+
const result = await this.appClient.send.call(AbelReaderParamsFactory.getBlockTimesAndTc(params));
|
|
782
|
+
return result.return;
|
|
783
|
+
}
|
|
675
784
|
/**
|
|
676
785
|
* Methods to access state for the current AbelReader app
|
|
677
786
|
*/
|
|
@@ -706,6 +815,14 @@ class AbelReaderClient {
|
|
|
706
815
|
resultMappers.push((v) => client.decodeReturnValue('get_asset_labels(asset)string[]', v));
|
|
707
816
|
return this;
|
|
708
817
|
},
|
|
818
|
+
/**
|
|
819
|
+
* Add a getBlockTimesAndTc(uint64,uint64)(uint32,uint64) method call against the AbelReader contract
|
|
820
|
+
*/
|
|
821
|
+
getBlockTimesAndTc(params) {
|
|
822
|
+
promiseChain = promiseChain.then(async () => composer.addAppCallMethodCall(await client.params.getBlockTimesAndTc(params)));
|
|
823
|
+
resultMappers.push((v) => client.decodeReturnValue('getBlockTimesAndTc(uint64,uint64)(uint32,uint64)', v));
|
|
824
|
+
return this;
|
|
825
|
+
},
|
|
709
826
|
get update() {
|
|
710
827
|
return {
|
|
711
828
|
bare: (params) => {
|
|
@@ -872,7 +989,7 @@ export class AbelReaderSDK extends GhostBase {
|
|
|
872
989
|
extraSimulateArgs,
|
|
873
990
|
});
|
|
874
991
|
}
|
|
875
|
-
async
|
|
992
|
+
async getAssetLabels({ methodArgsOrArgsArray, extraMethodCallArgs, extraSimulateArgs, }) {
|
|
876
993
|
return this.execute({
|
|
877
994
|
signature: 'get_asset_labels(asset)string[]',
|
|
878
995
|
txnBuilder: (builder, args) => builder.getAssetLabels(args),
|
|
@@ -881,5 +998,14 @@ export class AbelReaderSDK extends GhostBase {
|
|
|
881
998
|
extraSimulateArgs,
|
|
882
999
|
});
|
|
883
1000
|
}
|
|
1001
|
+
async getBlockTimesAndTc({ methodArgsOrArgsArray, extraMethodCallArgs, extraSimulateArgs, }) {
|
|
1002
|
+
return this.execute({
|
|
1003
|
+
signature: 'getBlockTimesAndTc(uint64,uint64)(uint32,uint64)',
|
|
1004
|
+
txnBuilder: (builder, args) => builder.getBlockTimesAndTc(args),
|
|
1005
|
+
methodArgsOrArgsArray,
|
|
1006
|
+
extraMethodCallArgs,
|
|
1007
|
+
extraSimulateArgs,
|
|
1008
|
+
});
|
|
1009
|
+
}
|
|
884
1010
|
}
|
|
885
1011
|
/* END GHOST SDK CODE */
|
package/dist/index.d.ts
CHANGED
|
@@ -1,8 +1,11 @@
|
|
|
1
1
|
import { AlgorandClient } from "@algorandfoundation/algokit-utils";
|
|
2
|
-
import { AbelReaderSDK, AssetTinyLabels as AssetTinyLabelsInternal, BalanceInfo } from "./generated/AbelReaderSDK.js";
|
|
2
|
+
import { AbelReaderSDK, AssetTinyLabels as AssetTinyLabelsInternal, BalanceInfo, BlockTimeAndTc } from "./generated/AbelReaderSDK.js";
|
|
3
3
|
export interface AssetTinyLabels extends AssetTinyLabelsInternal {
|
|
4
4
|
id: bigint;
|
|
5
5
|
}
|
|
6
|
+
export interface BlockRoundTimeAndTc extends BlockTimeAndTc {
|
|
7
|
+
rnd: bigint;
|
|
8
|
+
}
|
|
6
9
|
export declare class AbelGhostSDK {
|
|
7
10
|
static baseSDK: typeof AbelReaderSDK;
|
|
8
11
|
algorand: AlgorandClient;
|
|
@@ -23,4 +26,5 @@ export declare class AbelGhostSDK {
|
|
|
23
26
|
getAssetLabels(assetId: number | bigint): Promise<string[]>;
|
|
24
27
|
getAllAssetIDs(): Promise<bigint[]>;
|
|
25
28
|
private getBoxesByLength;
|
|
29
|
+
getBlockTimesAndTc(firstRound: number | bigint, lastRound: number | bigint): Promise<BlockRoundTimeAndTc[]>;
|
|
26
30
|
}
|
package/dist/index.js
CHANGED
|
@@ -4,7 +4,7 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
4
4
|
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
5
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
6
|
};
|
|
7
|
-
import { AbelReaderSDK } from "./generated/AbelReaderSDK.js";
|
|
7
|
+
import { AbelReaderSDK, } from "./generated/AbelReaderSDK.js";
|
|
8
8
|
import { chunked } from "./utils/chunked.js";
|
|
9
9
|
import { decodeUint64 } from "algosdk";
|
|
10
10
|
export class AbelGhostSDK {
|
|
@@ -59,6 +59,21 @@ export class AbelGhostSDK {
|
|
|
59
59
|
const boxNames = await this.algorand.app.getBoxNames(this.registryAppId);
|
|
60
60
|
return boxNames.filter((boxName) => boxName.nameRaw.length === length);
|
|
61
61
|
}
|
|
62
|
+
async getBlockTimesAndTc(firstRound, lastRound) {
|
|
63
|
+
const firstDataRound = BigInt(firstRound);
|
|
64
|
+
const lastDataRound = BigInt(lastRound);
|
|
65
|
+
const simRound = BigInt(lastRound);
|
|
66
|
+
const firstValid = simRound + BigInt(1); // simulating with first-valid after simulate round, this is actually valid
|
|
67
|
+
const lastValid = simRound + BigInt(1);
|
|
68
|
+
return (await this.baseSDK.getBlockTimesAndTc({
|
|
69
|
+
methodArgsOrArgsArray: { firstRound: firstDataRound, lastRound: lastDataRound },
|
|
70
|
+
extraMethodCallArgs: { firstValidRound: firstValid, lastValidRound: lastValid },
|
|
71
|
+
extraSimulateArgs: { round: simRound },
|
|
72
|
+
})).map((data, i) => ({
|
|
73
|
+
...data,
|
|
74
|
+
rnd: BigInt(firstDataRound) + BigInt(i),
|
|
75
|
+
}));
|
|
76
|
+
}
|
|
62
77
|
}
|
|
63
78
|
__decorate([
|
|
64
79
|
chunked(63)
|