algosdk 1.24.1 → 2.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (222) hide show
  1. package/README.md +4 -4
  2. package/dist/browser/algosdk.min.js +1 -1
  3. package/dist/browser/algosdk.min.js.LICENSE.txt +0 -18
  4. package/dist/browser/algosdk.min.js.map +1 -1
  5. package/dist/cjs/abi/abi_type.js +6 -5
  6. package/dist/cjs/abi/abi_type.js.map +1 -1
  7. package/dist/cjs/bid.js +6 -5
  8. package/dist/cjs/bid.js.map +1 -1
  9. package/dist/cjs/client/client.js +4 -3
  10. package/dist/cjs/client/client.js.map +1 -1
  11. package/dist/cjs/client/kmd.js +12 -11
  12. package/dist/cjs/client/kmd.js.map +1 -1
  13. package/dist/cjs/client/urlTokenBaseHTTPClient.js +2 -1
  14. package/dist/cjs/client/urlTokenBaseHTTPClient.js.map +1 -1
  15. package/dist/cjs/client/v2/algod/algod.js +17 -1
  16. package/dist/cjs/client/v2/algod/algod.js.map +1 -1
  17. package/dist/cjs/client/v2/algod/compile.js +2 -1
  18. package/dist/cjs/client/v2/algod/compile.js.map +1 -1
  19. package/dist/cjs/client/v2/algod/disassemble.js +46 -0
  20. package/dist/cjs/client/v2/algod/disassemble.js.map +1 -0
  21. package/dist/cjs/client/v2/algod/dryrun.js +2 -1
  22. package/dist/cjs/client/v2/algod/dryrun.js.map +1 -1
  23. package/dist/cjs/client/v2/algod/getApplicationBoxByName.js +2 -1
  24. package/dist/cjs/client/v2/algod/getApplicationBoxByName.js.map +1 -1
  25. package/dist/cjs/client/v2/algod/models/types.js +182 -143
  26. package/dist/cjs/client/v2/algod/models/types.js.map +1 -1
  27. package/dist/cjs/client/v2/algod/sendRawTransaction.js +2 -1
  28. package/dist/cjs/client/v2/algod/sendRawTransaction.js.map +1 -1
  29. package/dist/cjs/client/v2/basemodel.js +3 -2
  30. package/dist/cjs/client/v2/basemodel.js.map +1 -1
  31. package/dist/cjs/client/v2/indexer/lookupAccountTransactions.js +2 -1
  32. package/dist/cjs/client/v2/indexer/lookupAccountTransactions.js.map +1 -1
  33. package/dist/cjs/client/v2/indexer/lookupApplicationBoxByIDandName.js +2 -1
  34. package/dist/cjs/client/v2/indexer/lookupApplicationBoxByIDandName.js.map +1 -1
  35. package/dist/cjs/client/v2/indexer/lookupAssetTransactions.js +0 -7
  36. package/dist/cjs/client/v2/indexer/lookupAssetTransactions.js.map +1 -1
  37. package/dist/cjs/client/v2/indexer/models/types.js +39 -38
  38. package/dist/cjs/client/v2/indexer/models/types.js.map +1 -1
  39. package/dist/cjs/composer.js +7 -6
  40. package/dist/cjs/composer.js.map +1 -1
  41. package/dist/cjs/dryrun.js +22 -12
  42. package/dist/cjs/dryrun.js.map +1 -1
  43. package/dist/cjs/encoding/address.js +2 -1
  44. package/dist/cjs/encoding/address.js.map +1 -1
  45. package/dist/cjs/encoding/bigint.js +2 -1
  46. package/dist/cjs/encoding/bigint.js.map +1 -1
  47. package/dist/cjs/encoding/uint64.js +14 -8
  48. package/dist/cjs/encoding/uint64.js.map +1 -1
  49. package/dist/cjs/group.js +6 -5
  50. package/dist/cjs/group.js.map +1 -1
  51. package/dist/cjs/logicsig.js +24 -21
  52. package/dist/cjs/logicsig.js.map +1 -1
  53. package/dist/cjs/main.js +8 -9
  54. package/dist/cjs/main.js.map +1 -1
  55. package/dist/cjs/makeTxn.js +1 -193
  56. package/dist/cjs/makeTxn.js.map +1 -1
  57. package/dist/cjs/multisig.js +6 -5
  58. package/dist/cjs/multisig.js.map +1 -1
  59. package/dist/cjs/transaction.js +64 -63
  60. package/dist/cjs/transaction.js.map +1 -1
  61. package/dist/cjs/types/transactions/encoded.js +0 -3
  62. package/dist/cjs/types/transactions/encoded.js.map +1 -1
  63. package/dist/cjs/utils/utils.js +5 -1
  64. package/dist/cjs/utils/utils.js.map +1 -1
  65. package/dist/esm/abi/abi_type.js +1 -0
  66. package/dist/esm/abi/abi_type.js.map +1 -1
  67. package/dist/esm/bid.js +1 -0
  68. package/dist/esm/bid.js.map +1 -1
  69. package/dist/esm/client/client.js +1 -0
  70. package/dist/esm/client/client.js.map +1 -1
  71. package/dist/esm/client/kmd.js +1 -0
  72. package/dist/esm/client/kmd.js.map +1 -1
  73. package/dist/esm/client/urlTokenBaseHTTPClient.js +1 -0
  74. package/dist/esm/client/urlTokenBaseHTTPClient.js.map +1 -1
  75. package/dist/esm/client/v2/algod/algod.js +17 -1
  76. package/dist/esm/client/v2/algod/algod.js.map +1 -1
  77. package/dist/esm/client/v2/algod/compile.js +1 -0
  78. package/dist/esm/client/v2/algod/compile.js.map +1 -1
  79. package/dist/esm/client/v2/algod/disassemble.js +38 -0
  80. package/dist/esm/client/v2/algod/disassemble.js.map +1 -0
  81. package/dist/esm/client/v2/algod/dryrun.js +1 -0
  82. package/dist/esm/client/v2/algod/dryrun.js.map +1 -1
  83. package/dist/esm/client/v2/algod/getApplicationBoxByName.js +1 -0
  84. package/dist/esm/client/v2/algod/getApplicationBoxByName.js.map +1 -1
  85. package/dist/esm/client/v2/algod/models/types.js +161 -120
  86. package/dist/esm/client/v2/algod/models/types.js.map +1 -1
  87. package/dist/esm/client/v2/algod/sendRawTransaction.js +1 -0
  88. package/dist/esm/client/v2/algod/sendRawTransaction.js.map +1 -1
  89. package/dist/esm/client/v2/basemodel.js +1 -0
  90. package/dist/esm/client/v2/basemodel.js.map +1 -1
  91. package/dist/esm/client/v2/indexer/lookupAccountTransactions.js +1 -0
  92. package/dist/esm/client/v2/indexer/lookupAccountTransactions.js.map +1 -1
  93. package/dist/esm/client/v2/indexer/lookupApplicationBoxByIDandName.js +1 -0
  94. package/dist/esm/client/v2/indexer/lookupApplicationBoxByIDandName.js.map +1 -1
  95. package/dist/esm/client/v2/indexer/lookupAssetTransactions.js +0 -7
  96. package/dist/esm/client/v2/indexer/lookupAssetTransactions.js.map +1 -1
  97. package/dist/esm/client/v2/indexer/models/types.js +1 -0
  98. package/dist/esm/client/v2/indexer/models/types.js.map +1 -1
  99. package/dist/esm/composer.js +5 -4
  100. package/dist/esm/composer.js.map +1 -1
  101. package/dist/esm/dryrun.js +17 -7
  102. package/dist/esm/dryrun.js.map +1 -1
  103. package/dist/esm/encoding/address.js +1 -0
  104. package/dist/esm/encoding/address.js.map +1 -1
  105. package/dist/esm/encoding/bigint.js +1 -0
  106. package/dist/esm/encoding/bigint.js.map +1 -1
  107. package/dist/esm/encoding/uint64.js +14 -8
  108. package/dist/esm/encoding/uint64.js.map +1 -1
  109. package/dist/esm/group.js +1 -0
  110. package/dist/esm/group.js.map +1 -1
  111. package/dist/esm/logicsig.js +15 -12
  112. package/dist/esm/logicsig.js.map +1 -1
  113. package/dist/esm/main.js +2 -4
  114. package/dist/esm/main.js.map +1 -1
  115. package/dist/esm/makeTxn.js +0 -185
  116. package/dist/esm/makeTxn.js.map +1 -1
  117. package/dist/esm/multisig.js +1 -0
  118. package/dist/esm/multisig.js.map +1 -1
  119. package/dist/esm/transaction.js +1 -0
  120. package/dist/esm/transaction.js.map +1 -1
  121. package/dist/esm/types/transactions/encoded.js +0 -3
  122. package/dist/esm/types/transactions/encoded.js.map +1 -1
  123. package/dist/esm/utils/utils.js +5 -1
  124. package/dist/esm/utils/utils.js.map +1 -1
  125. package/dist/types/client/v2/algod/algod.d.ts +15 -1
  126. package/dist/types/client/v2/algod/disassemble.d.ts +20 -0
  127. package/dist/types/client/v2/algod/models/types.d.ts +122 -67
  128. package/dist/types/client/v2/basemodel.d.ts +0 -3
  129. package/dist/types/client/v2/indexer/lookupAssetTransactions.d.ts +0 -4
  130. package/dist/types/composer.d.ts +7 -1
  131. package/dist/types/logicsig.d.ts +10 -10
  132. package/dist/types/main.d.ts +1 -3
  133. package/dist/types/makeTxn.d.ts +1 -147
  134. package/dist/types/types/transactions/encoded.d.ts +1 -16
  135. package/package.json +2 -3
  136. package/src/abi/abi_type.ts +1 -0
  137. package/src/bid.ts +1 -0
  138. package/src/client/client.ts +1 -0
  139. package/src/client/kmd.ts +1 -0
  140. package/src/client/urlTokenBaseHTTPClient.ts +1 -0
  141. package/src/client/v2/algod/algod.ts +19 -2
  142. package/src/client/v2/algod/compile.ts +1 -0
  143. package/src/client/v2/algod/disassemble.ts +46 -0
  144. package/src/client/v2/algod/dryrun.ts +1 -0
  145. package/src/client/v2/algod/getApplicationBoxByName.ts +1 -0
  146. package/src/client/v2/algod/models/types.ts +319 -249
  147. package/src/client/v2/algod/sendRawTransaction.ts +1 -0
  148. package/src/client/v2/basemodel.ts +2 -0
  149. package/src/client/v2/indexer/lookupAccountTransactions.ts +1 -0
  150. package/src/client/v2/indexer/lookupApplicationBoxByIDandName.ts +1 -0
  151. package/src/client/v2/indexer/lookupAssetTransactions.ts +0 -8
  152. package/src/client/v2/indexer/models/types.ts +1 -0
  153. package/src/composer.ts +16 -3
  154. package/src/dryrun.ts +14 -13
  155. package/src/encoding/address.ts +1 -0
  156. package/src/encoding/bigint.ts +2 -0
  157. package/src/encoding/uint64.ts +16 -10
  158. package/src/group.ts +1 -0
  159. package/src/logicsig.ts +26 -13
  160. package/src/main.ts +3 -5
  161. package/src/makeTxn.ts +0 -421
  162. package/src/multisig.ts +1 -0
  163. package/src/transaction.ts +1 -0
  164. package/src/types/transactions/encoded.ts +2 -17
  165. package/src/utils/utils.ts +3 -0
  166. package/dist/cjs/client/algod.js +0 -295
  167. package/dist/cjs/client/algod.js.map +0 -1
  168. package/dist/cjs/logic/langspec.json +0 -2014
  169. package/dist/cjs/logic/logic.js +0 -262
  170. package/dist/cjs/logic/logic.js.map +0 -1
  171. package/dist/cjs/logicTemplates/dynamicfee.js +0 -192
  172. package/dist/cjs/logicTemplates/dynamicfee.js.map +0 -1
  173. package/dist/cjs/logicTemplates/htlc.js +0 -145
  174. package/dist/cjs/logicTemplates/htlc.js.map +0 -1
  175. package/dist/cjs/logicTemplates/index.js +0 -19
  176. package/dist/cjs/logicTemplates/index.js.map +0 -1
  177. package/dist/cjs/logicTemplates/limitorder.js +0 -167
  178. package/dist/cjs/logicTemplates/limitorder.js.map +0 -1
  179. package/dist/cjs/logicTemplates/periodicpayment.js +0 -163
  180. package/dist/cjs/logicTemplates/periodicpayment.js.map +0 -1
  181. package/dist/cjs/logicTemplates/split.js +0 -154
  182. package/dist/cjs/logicTemplates/split.js.map +0 -1
  183. package/dist/cjs/logicTemplates/templates.js +0 -67
  184. package/dist/cjs/logicTemplates/templates.js.map +0 -1
  185. package/dist/esm/client/algod.js +0 -295
  186. package/dist/esm/client/algod.js.map +0 -1
  187. package/dist/esm/logic/langspec.json +0 -2014
  188. package/dist/esm/logic/logic.js +0 -249
  189. package/dist/esm/logic/logic.js.map +0 -1
  190. package/dist/esm/logicTemplates/dynamicfee.js +0 -192
  191. package/dist/esm/logicTemplates/dynamicfee.js.map +0 -1
  192. package/dist/esm/logicTemplates/htlc.js +0 -145
  193. package/dist/esm/logicTemplates/htlc.js.map +0 -1
  194. package/dist/esm/logicTemplates/index.js +0 -19
  195. package/dist/esm/logicTemplates/index.js.map +0 -1
  196. package/dist/esm/logicTemplates/limitorder.js +0 -167
  197. package/dist/esm/logicTemplates/limitorder.js.map +0 -1
  198. package/dist/esm/logicTemplates/periodicpayment.js +0 -163
  199. package/dist/esm/logicTemplates/periodicpayment.js.map +0 -1
  200. package/dist/esm/logicTemplates/split.js +0 -154
  201. package/dist/esm/logicTemplates/split.js.map +0 -1
  202. package/dist/esm/logicTemplates/templates.js +0 -67
  203. package/dist/esm/logicTemplates/templates.js.map +0 -1
  204. package/dist/types/client/algod.d.ts +0 -162
  205. package/dist/types/logic/logic.d.ts +0 -45
  206. package/dist/types/logicTemplates/dynamicfee.d.ts +0 -59
  207. package/dist/types/logicTemplates/htlc.d.ts +0 -51
  208. package/dist/types/logicTemplates/index.d.ts +0 -16
  209. package/dist/types/logicTemplates/limitorder.d.ts +0 -70
  210. package/dist/types/logicTemplates/periodicpayment.d.ts +0 -58
  211. package/dist/types/logicTemplates/split.d.ts +0 -57
  212. package/dist/types/logicTemplates/templates.d.ts +0 -6
  213. package/src/client/algod.js +0 -365
  214. package/src/logic/langspec.json +0 -2014
  215. package/src/logic/logic.ts +0 -316
  216. package/src/logicTemplates/dynamicfee.js +0 -219
  217. package/src/logicTemplates/htlc.js +0 -165
  218. package/src/logicTemplates/index.js +0 -20
  219. package/src/logicTemplates/limitorder.js +0 -227
  220. package/src/logicTemplates/periodicpayment.js +0 -208
  221. package/src/logicTemplates/split.js +0 -208
  222. package/src/logicTemplates/templates.js +0 -78
@@ -1,3 +1,4 @@
1
+ import { Buffer } from 'buffer';
1
2
  import JSONRequest from '../jsonrequest';
2
3
  import HTTPClient from '../../client';
3
4
  import { concatArrays } from '../../../utils/utils';
@@ -1,3 +1,5 @@
1
+ import { Buffer } from 'buffer';
2
+
1
3
  /**
2
4
  * Base class for models
3
5
  */
@@ -1,3 +1,4 @@
1
+ import { Buffer } from 'buffer';
1
2
  import JSONRequest from '../jsonrequest';
2
3
  import HTTPClient from '../../client';
3
4
  import IntDecoding from '../../../types/intDecoding';
@@ -1,3 +1,4 @@
1
+ import { Buffer } from 'buffer';
1
2
  import JSONRequest from '../jsonrequest';
2
3
  import HTTPClient from '../../client';
3
4
  import IntDecoding from '../../../types/intDecoding';
@@ -176,14 +176,6 @@ export default class LookupAssetTransactions extends JSONRequest {
176
176
  return this;
177
177
  }
178
178
 
179
- /**
180
- * @deprecated Redundant query parameter. Asset ID is already passed into the method.
181
- */
182
- assetID(id: number) {
183
- this.query['asset-id'] = id;
184
- return this;
185
- }
186
-
187
179
  /**
188
180
  * Maximum number of results to return.
189
181
  *
@@ -3,6 +3,7 @@
3
3
  */
4
4
 
5
5
  /* eslint-disable no-use-before-define */
6
+ import { Buffer } from 'buffer';
6
7
  import BaseModel from '../../basemodel';
7
8
 
8
9
  /**
package/src/composer.ts CHANGED
@@ -1,3 +1,4 @@
1
+ import { Buffer } from 'buffer';
1
2
  import {
2
3
  ABIType,
3
4
  ABITupleType,
@@ -202,6 +203,9 @@ export class AtomicTransactionComposer {
202
203
  numLocalInts,
203
204
  numLocalByteSlices,
204
205
  extraPages,
206
+ appAccounts,
207
+ appForeignApps,
208
+ appForeignAssets,
205
209
  boxes,
206
210
  note,
207
211
  lease,
@@ -234,6 +238,12 @@ export class AtomicTransactionComposer {
234
238
  numLocalByteSlices?: number;
235
239
  /** The number of extra pages to allocate for the application's programs. Only set this if this is an application creation call. If omitted, defaults to 0. */
236
240
  extraPages?: number;
241
+ /** Array of Address strings that represent external accounts supplied to this application. If accounts are provided here, the accounts specified in the method args will appear after these. */
242
+ appAccounts?: string[];
243
+ /** Array of App ID numbers that represent external apps supplied to this application. If apps are provided here, the apps specified in the method args will appear after these. */
244
+ appForeignApps?: number[];
245
+ /** Array of Asset ID numbers that represent external assets supplied to this application. If assets are provided here, the assets specified in the method args will appear after these. */
246
+ appForeignAssets?: number[];
237
247
  /** The box references for this application call */
238
248
  boxes?: BoxReference[];
239
249
  /** The note value for this application call */
@@ -370,9 +380,12 @@ export class AtomicTransactionComposer {
370
380
  }
371
381
 
372
382
  const resolvedRefIndexes: number[] = [];
373
- const foreignAccounts: string[] = [];
374
- const foreignApps: number[] = [];
375
- const foreignAssets: number[] = [];
383
+ const foreignAccounts: string[] =
384
+ appAccounts == null ? [] : appAccounts.slice();
385
+ const foreignApps: number[] =
386
+ appForeignApps == null ? [] : appForeignApps.slice();
387
+ const foreignAssets: number[] =
388
+ appForeignAssets == null ? [] : appForeignAssets.slice();
376
389
  for (let i = 0; i < refArgTypes.length; i++) {
377
390
  const refType = refArgTypes[i];
378
391
  const refValue = refArgValues[i];
package/src/dryrun.ts CHANGED
@@ -1,3 +1,4 @@
1
+ import { Buffer } from 'buffer';
1
2
  import AlgodClient from './client/v2/algod/algod';
2
3
  import {
3
4
  AccountStateDelta,
@@ -92,22 +93,22 @@ export async function createDryrun({
92
93
  // Create application,
93
94
  if (t.txn.appIndex === undefined || t.txn.appIndex === 0) {
94
95
  appInfos.push(
95
- new Application(
96
- defaultAppId,
97
- new ApplicationParams({
96
+ new Application({
97
+ id: defaultAppId,
98
+ params: new ApplicationParams({
98
99
  creator: encodeAddress(t.txn.from.publicKey),
99
100
  approvalProgram: t.txn.appApprovalProgram,
100
101
  clearStateProgram: t.txn.appClearProgram,
101
- localStateSchema: new ApplicationStateSchema(
102
- t.txn.appLocalInts,
103
- t.txn.appLocalByteSlices
104
- ),
105
- globalStateSchema: new ApplicationStateSchema(
106
- t.txn.appGlobalInts,
107
- t.txn.appGlobalByteSlices
108
- ),
109
- })
110
- )
102
+ localStateSchema: new ApplicationStateSchema({
103
+ numUint: t.txn.appLocalInts,
104
+ numByteSlice: t.txn.appLocalByteSlices,
105
+ }),
106
+ globalStateSchema: new ApplicationStateSchema({
107
+ numUint: t.txn.appGlobalInts,
108
+ numByteSlice: t.txn.appGlobalByteSlices,
109
+ }),
110
+ }),
111
+ })
111
112
  );
112
113
  } else {
113
114
  apps.push(t.txn.appIndex);
@@ -1,3 +1,4 @@
1
+ import { Buffer } from 'buffer';
1
2
  import base32 from 'hi-base32';
2
3
  import * as nacl from '../nacl/naclWrappers';
3
4
  import * as utils from '../utils/utils';
@@ -1,3 +1,5 @@
1
+ import { Buffer } from 'buffer';
2
+
1
3
  /**
2
4
  * bigIntToBytes converts a BigInt to a big-endian Uint8Array for encoding.
3
5
  * @param bi - The bigint to convert.
@@ -1,3 +1,10 @@
1
+ import { concatArrays } from '../utils/utils';
2
+
3
+ // NOTE: at the moment we specifically do not use Buffer.writeBigUInt64BE and
4
+ // Buffer.readBigUInt64BE. This is because projects using webpack v4
5
+ // automatically include an old version of the npm `buffer` package (v4.9.2 at
6
+ // the time of writing), and this old version does not have these methods.
7
+
1
8
  /**
2
9
  * encodeUint64 converts an integer to its binary representation.
3
10
  * @param num - The number to convert. This must be an unsigned integer less than
@@ -12,11 +19,11 @@ export function encodeUint64(num: number | bigint) {
12
19
  throw new Error('Input is not a 64-bit unsigned integer');
13
20
  }
14
21
 
15
- const buf = Buffer.allocUnsafe(8);
22
+ const encoding = new Uint8Array(8);
23
+ const view = new DataView(encoding.buffer);
24
+ view.setBigUint64(0, BigInt(num));
16
25
 
17
- buf.writeBigUInt64BE(BigInt(num));
18
-
19
- return new Uint8Array(buf);
26
+ return encoding;
20
27
  }
21
28
 
22
29
  /**
@@ -59,13 +66,12 @@ export function decodeUint64(data: any, decodingMode: any = 'safe') {
59
66
  }
60
67
 
61
68
  // insert 0s at the beginning if data is smaller than 8 bytes
62
- const padding = Buffer.allocUnsafe(8 - data.byteLength);
63
- padding.fill(0);
64
-
65
- const buf = Buffer.concat([padding, Buffer.from(data)]);
69
+ const padding = new Uint8Array(8 - data.byteLength);
70
+ const encoding = concatArrays(padding, data);
71
+ const view = new DataView(encoding.buffer);
66
72
 
67
- const num = buf.readBigUInt64BE();
68
- const isBig = num > Number.MAX_SAFE_INTEGER;
73
+ const num = view.getBigUint64(0);
74
+ const isBig = num > BigInt(Number.MAX_SAFE_INTEGER);
69
75
 
70
76
  if (decodingMode === 'safe') {
71
77
  if (isBig) {
package/src/group.ts CHANGED
@@ -1,3 +1,4 @@
1
+ import { Buffer } from 'buffer';
1
2
  import * as txnBuilder from './transaction';
2
3
  import * as nacl from './nacl/naclWrappers';
3
4
  import * as encoding from './encoding/encoding';
package/src/logicsig.ts CHANGED
@@ -1,3 +1,4 @@
1
+ import { Buffer } from 'buffer';
1
2
  import * as nacl from './nacl/naclWrappers';
2
3
  import * as address from './encoding/address';
3
4
  import * as encoding from './encoding/encoding';
@@ -54,6 +55,8 @@ export function sanityCheckProgram(program: Uint8Array) {
54
55
 
55
56
  /**
56
57
  LogicSig implementation
58
+
59
+ LogicSig cannot sign transactions in all cases. Instead, use LogicSigAccount as a safe, general purpose signing mechanism. Since LogicSig does not track the provided signature's public key, LogicSig cannot sign transactions when delegated to a non-multisig account _and_ the sender is not the delegating account.
57
60
  */
58
61
  export class LogicSig implements LogicSigStorageStructure {
59
62
  tag = Buffer.from('Program');
@@ -375,19 +378,6 @@ export class LogicSigAccount {
375
378
  }
376
379
  }
377
380
 
378
- /**
379
- * makeLogicSig creates LogicSig object from program and arguments
380
- *
381
- * @deprecated Use new LogicSigAccount(...) instead
382
- *
383
- * @param program - Program to make LogicSig from
384
- * @param args - Arguments as array of Uint8Array
385
- * @returns LogicSig object
386
- */
387
- export function makeLogicSig(program: Uint8Array, args?: Uint8Array[]) {
388
- return new LogicSig(program, args);
389
- }
390
-
391
381
  function signLogicSigTransactionWithAddress(
392
382
  txn: txnBuilder.Transaction,
393
383
  lsig: LogicSig,
@@ -506,6 +496,29 @@ export function tealSign(
506
496
  return nacl.sign(toBeSigned, sk);
507
497
  }
508
498
 
499
+ /**
500
+ * verifyTealSign verifies a signature as would the ed25519verify opcode
501
+ * @param data - buffer with original signed data
502
+ * @param programHash - string representation of teal program hash (= contract address for LogicSigs)
503
+ * @param sig - uint8array with the signature to verify (produced by tealSign/tealSignFromProgram)
504
+ * @param pk - uint8array with public key to verify against
505
+ */
506
+ export function verifyTealSign(
507
+ data: Uint8Array | Buffer,
508
+ programHash: string,
509
+ sig: Uint8Array,
510
+ pk: Uint8Array
511
+ ) {
512
+ const parts = utils.concatArrays(
513
+ address.decodeAddress(programHash).publicKey,
514
+ data
515
+ );
516
+ const toBeSigned = Buffer.from(
517
+ utils.concatArrays(SIGN_PROGRAM_DATA_PREFIX, parts)
518
+ );
519
+ return nacl.verify(toBeSigned, sig, pk);
520
+ }
521
+
509
522
  /**
510
523
  * tealSignFromProgram creates a signature compatible with ed25519verify opcode from raw program bytes
511
524
  * @param sk - uint8array with secret key
package/src/main.ts CHANGED
@@ -1,8 +1,8 @@
1
+ import { Buffer } from 'buffer';
1
2
  import * as nacl from './nacl/naclWrappers';
2
3
  import * as address from './encoding/address';
3
4
  import * as encoding from './encoding/encoding';
4
5
  import * as txnBuilder from './transaction';
5
- import * as LogicTemplatesCommonJSExport from './logicTemplates';
6
6
  import Bid, { BidOptions } from './bid';
7
7
  import * as convert from './convert';
8
8
  import * as utils from './utils/utils';
@@ -117,7 +117,6 @@ export const ERROR_INVALID_MICROALGOS = new Error(
117
117
  convert.INVALID_MICROALGOS_ERROR_MSG
118
118
  );
119
119
 
120
- export * from './client/algod';
121
120
  export { default as Algodv2 } from './client/v2/algod/algod';
122
121
  export { default as Kmd } from './client/kmd';
123
122
  export { default as IntDecoding } from './types/intDecoding';
@@ -155,13 +154,14 @@ export {
155
154
  } from './convert';
156
155
  export { computeGroupID, assignGroupID } from './group';
157
156
  export {
157
+ LogicSig,
158
158
  LogicSigAccount,
159
- makeLogicSig,
160
159
  signLogicSigTransaction,
161
160
  signLogicSigTransactionObject,
162
161
  logicSigFromByte,
163
162
  tealSign,
164
163
  tealSignFromProgram,
164
+ verifyTealSign,
165
165
  } from './logicsig';
166
166
  export {
167
167
  signMultisigTransaction,
@@ -174,8 +174,6 @@ export {
174
174
  } from './multisig';
175
175
  export { SourceMap } from './logic/sourcemap';
176
176
 
177
- export const LogicTemplates = LogicTemplatesCommonJSExport.default;
178
-
179
177
  export * from './dryrun';
180
178
  export * from './makeTxn';
181
179
  export * from './transaction';