algosdk 2.0.0 → 2.2.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 (175) hide show
  1. package/README.md +4 -4
  2. package/dist/browser/algosdk.min.js +1 -1
  3. package/dist/browser/algosdk.min.js.map +1 -1
  4. package/dist/cjs/abi/abi_type.js +6 -5
  5. package/dist/cjs/abi/abi_type.js.map +1 -1
  6. package/dist/cjs/bid.js +6 -5
  7. package/dist/cjs/bid.js.map +1 -1
  8. package/dist/cjs/client/client.js +4 -3
  9. package/dist/cjs/client/client.js.map +1 -1
  10. package/dist/cjs/client/kmd.js +12 -11
  11. package/dist/cjs/client/kmd.js.map +1 -1
  12. package/dist/cjs/client/urlTokenBaseHTTPClient.js +2 -1
  13. package/dist/cjs/client/urlTokenBaseHTTPClient.js.map +1 -1
  14. package/dist/cjs/client/v2/algod/algod.js +32 -0
  15. package/dist/cjs/client/v2/algod/algod.js.map +1 -1
  16. package/dist/cjs/client/v2/algod/compile.js +2 -1
  17. package/dist/cjs/client/v2/algod/compile.js.map +1 -1
  18. package/dist/cjs/client/v2/algod/disassemble.js +46 -0
  19. package/dist/cjs/client/v2/algod/disassemble.js.map +1 -0
  20. package/dist/cjs/client/v2/algod/dryrun.js +2 -1
  21. package/dist/cjs/client/v2/algod/dryrun.js.map +1 -1
  22. package/dist/cjs/client/v2/algod/getApplicationBoxByName.js +2 -1
  23. package/dist/cjs/client/v2/algod/getApplicationBoxByName.js.map +1 -1
  24. package/dist/cjs/client/v2/algod/models/types.js +141 -21
  25. package/dist/cjs/client/v2/algod/models/types.js.map +1 -1
  26. package/dist/cjs/client/v2/algod/sendRawTransaction.js +2 -1
  27. package/dist/cjs/client/v2/algod/sendRawTransaction.js.map +1 -1
  28. package/dist/cjs/client/v2/algod/simulateTransaction.js +88 -0
  29. package/dist/cjs/client/v2/algod/simulateTransaction.js.map +1 -0
  30. package/dist/cjs/client/v2/basemodel.js +3 -2
  31. package/dist/cjs/client/v2/basemodel.js.map +1 -1
  32. package/dist/cjs/client/v2/indexer/lookupAccountTransactions.js +2 -1
  33. package/dist/cjs/client/v2/indexer/lookupAccountTransactions.js.map +1 -1
  34. package/dist/cjs/client/v2/indexer/lookupApplicationBoxByIDandName.js +2 -1
  35. package/dist/cjs/client/v2/indexer/lookupApplicationBoxByIDandName.js.map +1 -1
  36. package/dist/cjs/client/v2/indexer/models/types.js +39 -38
  37. package/dist/cjs/client/v2/indexer/models/types.js.map +1 -1
  38. package/dist/cjs/composer.js +75 -23
  39. package/dist/cjs/composer.js.map +1 -1
  40. package/dist/cjs/dryrun.js +6 -5
  41. package/dist/cjs/dryrun.js.map +1 -1
  42. package/dist/cjs/encoding/address.js +2 -1
  43. package/dist/cjs/encoding/address.js.map +1 -1
  44. package/dist/cjs/encoding/bigint.js +2 -1
  45. package/dist/cjs/encoding/bigint.js.map +1 -1
  46. package/dist/cjs/encoding/encoding.js +14 -3
  47. package/dist/cjs/encoding/encoding.js.map +1 -1
  48. package/dist/cjs/encoding/uint64.js +14 -8
  49. package/dist/cjs/encoding/uint64.js.map +1 -1
  50. package/dist/cjs/group.js +6 -5
  51. package/dist/cjs/group.js.map +1 -1
  52. package/dist/cjs/logicsig.js +22 -8
  53. package/dist/cjs/logicsig.js.map +1 -1
  54. package/dist/cjs/main.js +7 -5
  55. package/dist/cjs/main.js.map +1 -1
  56. package/dist/cjs/multisig.js +6 -5
  57. package/dist/cjs/multisig.js.map +1 -1
  58. package/dist/cjs/signer.js +17 -1
  59. package/dist/cjs/signer.js.map +1 -1
  60. package/dist/cjs/transaction.js +81 -64
  61. package/dist/cjs/transaction.js.map +1 -1
  62. package/dist/cjs/types/transactions/encoded.js +0 -3
  63. package/dist/cjs/types/transactions/encoded.js.map +1 -1
  64. package/dist/cjs/utils/utils.js +5 -1
  65. package/dist/cjs/utils/utils.js.map +1 -1
  66. package/dist/esm/abi/abi_type.js +1 -0
  67. package/dist/esm/abi/abi_type.js.map +1 -1
  68. package/dist/esm/bid.js +1 -0
  69. package/dist/esm/bid.js.map +1 -1
  70. package/dist/esm/client/client.js +1 -0
  71. package/dist/esm/client/client.js.map +1 -1
  72. package/dist/esm/client/kmd.js +1 -0
  73. package/dist/esm/client/kmd.js.map +1 -1
  74. package/dist/esm/client/urlTokenBaseHTTPClient.js +1 -0
  75. package/dist/esm/client/urlTokenBaseHTTPClient.js.map +1 -1
  76. package/dist/esm/client/v2/algod/algod.js +32 -0
  77. package/dist/esm/client/v2/algod/algod.js.map +1 -1
  78. package/dist/esm/client/v2/algod/compile.js +1 -0
  79. package/dist/esm/client/v2/algod/compile.js.map +1 -1
  80. package/dist/esm/client/v2/algod/disassemble.js +38 -0
  81. package/dist/esm/client/v2/algod/disassemble.js.map +1 -0
  82. package/dist/esm/client/v2/algod/dryrun.js +1 -0
  83. package/dist/esm/client/v2/algod/dryrun.js.map +1 -1
  84. package/dist/esm/client/v2/algod/getApplicationBoxByName.js +1 -0
  85. package/dist/esm/client/v2/algod/getApplicationBoxByName.js.map +1 -1
  86. package/dist/esm/client/v2/algod/models/types.js +117 -0
  87. package/dist/esm/client/v2/algod/models/types.js.map +1 -1
  88. package/dist/esm/client/v2/algod/sendRawTransaction.js +1 -0
  89. package/dist/esm/client/v2/algod/sendRawTransaction.js.map +1 -1
  90. package/dist/esm/client/v2/algod/simulateTransaction.js +57 -0
  91. package/dist/esm/client/v2/algod/simulateTransaction.js.map +1 -0
  92. package/dist/esm/client/v2/basemodel.js +1 -0
  93. package/dist/esm/client/v2/basemodel.js.map +1 -1
  94. package/dist/esm/client/v2/indexer/lookupAccountTransactions.js +1 -0
  95. package/dist/esm/client/v2/indexer/lookupAccountTransactions.js.map +1 -1
  96. package/dist/esm/client/v2/indexer/lookupApplicationBoxByIDandName.js +1 -0
  97. package/dist/esm/client/v2/indexer/lookupApplicationBoxByIDandName.js.map +1 -1
  98. package/dist/esm/client/v2/indexer/models/types.js +1 -0
  99. package/dist/esm/client/v2/indexer/models/types.js.map +1 -1
  100. package/dist/esm/composer.js +75 -23
  101. package/dist/esm/composer.js.map +1 -1
  102. package/dist/esm/dryrun.js +1 -0
  103. package/dist/esm/dryrun.js.map +1 -1
  104. package/dist/esm/encoding/address.js +1 -0
  105. package/dist/esm/encoding/address.js.map +1 -1
  106. package/dist/esm/encoding/bigint.js +1 -0
  107. package/dist/esm/encoding/bigint.js.map +1 -1
  108. package/dist/esm/encoding/encoding.js +12 -2
  109. package/dist/esm/encoding/encoding.js.map +1 -1
  110. package/dist/esm/encoding/uint64.js +14 -8
  111. package/dist/esm/encoding/uint64.js.map +1 -1
  112. package/dist/esm/group.js +1 -0
  113. package/dist/esm/group.js.map +1 -1
  114. package/dist/esm/logicsig.js +13 -0
  115. package/dist/esm/logicsig.js.map +1 -1
  116. package/dist/esm/main.js +2 -1
  117. package/dist/esm/main.js.map +1 -1
  118. package/dist/esm/multisig.js +1 -0
  119. package/dist/esm/multisig.js.map +1 -1
  120. package/dist/esm/signer.js +15 -0
  121. package/dist/esm/signer.js.map +1 -1
  122. package/dist/esm/transaction.js +16 -0
  123. package/dist/esm/transaction.js.map +1 -1
  124. package/dist/esm/types/transactions/encoded.js +0 -3
  125. package/dist/esm/types/transactions/encoded.js.map +1 -1
  126. package/dist/esm/utils/utils.js +5 -1
  127. package/dist/esm/utils/utils.js.map +1 -1
  128. package/dist/types/client/v2/algod/algod.d.ts +28 -0
  129. package/dist/types/client/v2/algod/disassemble.d.ts +20 -0
  130. package/dist/types/client/v2/algod/models/types.d.ts +103 -0
  131. package/dist/types/client/v2/algod/simulateTransaction.d.ts +19 -0
  132. package/dist/types/client/v2/basemodel.d.ts +0 -3
  133. package/dist/types/composer.d.ts +35 -2
  134. package/dist/types/encoding/encoding.d.ts +7 -0
  135. package/dist/types/logicsig.d.ts +8 -0
  136. package/dist/types/main.d.ts +1 -1
  137. package/dist/types/signer.d.ts +5 -0
  138. package/dist/types/transaction.d.ts +9 -0
  139. package/dist/types/types/transactions/builder.d.ts +1 -1
  140. package/dist/types/types/transactions/encoded.d.ts +1 -1
  141. package/dist/types/types/utils.d.ts +1 -1
  142. package/package.json +2 -3
  143. package/src/abi/abi_type.ts +1 -0
  144. package/src/bid.ts +1 -0
  145. package/src/client/client.ts +1 -0
  146. package/src/client/kmd.ts +1 -0
  147. package/src/client/urlTokenBaseHTTPClient.ts +1 -0
  148. package/src/client/v2/algod/algod.ts +34 -0
  149. package/src/client/v2/algod/compile.ts +1 -0
  150. package/src/client/v2/algod/disassemble.ts +46 -0
  151. package/src/client/v2/algod/dryrun.ts +1 -0
  152. package/src/client/v2/algod/getApplicationBoxByName.ts +1 -0
  153. package/src/client/v2/algod/models/types.ts +223 -0
  154. package/src/client/v2/algod/sendRawTransaction.ts +1 -0
  155. package/src/client/v2/algod/simulateTransaction.ts +74 -0
  156. package/src/client/v2/basemodel.ts +2 -0
  157. package/src/client/v2/indexer/lookupAccountTransactions.ts +1 -0
  158. package/src/client/v2/indexer/lookupApplicationBoxByIDandName.ts +1 -0
  159. package/src/client/v2/indexer/models/types.ts +1 -0
  160. package/src/composer.ts +130 -34
  161. package/src/dryrun.ts +1 -0
  162. package/src/encoding/address.ts +1 -0
  163. package/src/encoding/bigint.ts +2 -0
  164. package/src/encoding/encoding.ts +13 -2
  165. package/src/encoding/uint64.ts +16 -10
  166. package/src/group.ts +1 -0
  167. package/src/logicsig.ts +24 -0
  168. package/src/main.ts +2 -0
  169. package/src/multisig.ts +1 -0
  170. package/src/signer.ts +18 -1
  171. package/src/transaction.ts +19 -0
  172. package/src/types/transactions/builder.ts +4 -4
  173. package/src/types/transactions/encoded.ts +2 -0
  174. package/src/types/utils.ts +1 -1
  175. package/src/utils/utils.ts +3 -0
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';
@@ -495,6 +496,29 @@ export function tealSign(
495
496
  return nacl.sign(toBeSigned, sk);
496
497
  }
497
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
+
498
522
  /**
499
523
  * tealSignFromProgram creates a signature compatible with ed25519verify opcode from raw program bytes
500
524
  * @param sk - uint8array with secret key
package/src/main.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';
@@ -160,6 +161,7 @@ export {
160
161
  logicSigFromByte,
161
162
  tealSign,
162
163
  tealSignFromProgram,
164
+ verifyTealSign,
163
165
  } from './logicsig';
164
166
  export {
165
167
  signMultisigTransaction,
package/src/multisig.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';
package/src/signer.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { Transaction } from './transaction';
1
+ import { encodeUnsignedSimulateTransaction, Transaction } from './transaction';
2
2
  import Account from './types/account';
3
3
  import { LogicSigAccount, signLogicSigTransactionObject } from './logicsig';
4
4
  import { MultisigMetadata } from './types/multisig';
@@ -80,6 +80,23 @@ export function makeMultiSigAccountTransactionSigner(
80
80
  };
81
81
  }
82
82
 
83
+ /**
84
+ * Create a makeEmptyTransactionSigner that does not specify any signer or
85
+ * signing capabilities. This should only be used to simulate transactions.
86
+ */
87
+ export function makeEmptyTransactionSigner(): TransactionSigner {
88
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
89
+ return (txnGroup: Transaction[], indexesToSign: number[]) => {
90
+ const unsigned: Uint8Array[] = [];
91
+
92
+ for (const index of indexesToSign) {
93
+ unsigned.push(encodeUnsignedSimulateTransaction(txnGroup[index]));
94
+ }
95
+
96
+ return Promise.resolve(unsigned);
97
+ };
98
+ }
99
+
83
100
  /** Represents an unsigned transactions and a signer that can authorize that transaction. */
84
101
  export interface TransactionWithSigner {
85
102
  /** An unsigned transaction */
@@ -1,3 +1,4 @@
1
+ import { Buffer } from 'buffer';
1
2
  import base32 from 'hi-base32';
2
3
  import * as address from './encoding/address';
3
4
  import * as encoding from './encoding/encoding';
@@ -1277,6 +1278,24 @@ export class Transaction implements TransactionStorageStructure {
1277
1278
  }
1278
1279
  }
1279
1280
 
1281
+ /**
1282
+ * encodeUnsignedSimulateTransaction takes a txnBuilder.Transaction object,
1283
+ * converts it into a SignedTransaction-like object, and converts it to a Buffer.
1284
+ *
1285
+ * Note: this function should only be used to simulate unsigned transactions.
1286
+ *
1287
+ * @param transactionObject - Transaction object to simulate.
1288
+ */
1289
+ export function encodeUnsignedSimulateTransaction(
1290
+ transactionObject: Transaction
1291
+ ) {
1292
+ const objToEncode: EncodedSignedTransaction = {
1293
+ sig: null,
1294
+ txn: transactionObject.get_obj_for_encoding(),
1295
+ };
1296
+ return encoding.rawEncode(objToEncode);
1297
+ }
1298
+
1280
1299
  /**
1281
1300
  * encodeUnsignedTransaction takes a completed txnBuilder.Transaction object, such as from the makeFoo
1282
1301
  * family of transactions, and converts it to a Buffer
@@ -45,10 +45,10 @@ export type TransactionBase =
45
45
  * - A: Additional parameters on top of the base transaction parameters
46
46
  * - O: A set of overwrites for transaction parameters
47
47
  */
48
- export type ConstructTransaction<A = {}, O = {}> = DistributiveOverwrite<
49
- TransactionBase & A,
50
- O
51
- >;
48
+ export type ConstructTransaction<
49
+ A = {},
50
+ O extends Partial<TransactionBase & A> = {}
51
+ > = DistributiveOverwrite<TransactionBase & A, O>;
52
52
 
53
53
  /**
54
54
  * Only accept transaction objects that include suggestedParams as an object
@@ -1,3 +1,5 @@
1
+ import { Buffer } from 'buffer';
2
+
1
3
  /**
2
4
  * Interfaces for the encoded transaction object. Every property is labelled with its associated Transaction type property
3
5
  */
@@ -27,7 +27,7 @@ export type Overwrite<T, U extends Partial<T>> = Pick<
27
27
  /**
28
28
  * Same as Overwrite, but will distribute the Overwrite over unions
29
29
  */
30
- export type DistributiveOverwrite<T, K> = T extends unknown
30
+ export type DistributiveOverwrite<T, K extends Partial<T>> = T extends unknown
31
31
  ? Overwrite<T, K>
32
32
  : never;
33
33
 
@@ -114,8 +114,11 @@ export function removeUndefinedProperties(
114
114
  */
115
115
  export function isNode() {
116
116
  return (
117
+ // @ts-ignore
117
118
  typeof process === 'object' &&
119
+ // @ts-ignore
118
120
  typeof process.versions === 'object' &&
121
+ // @ts-ignore
119
122
  typeof process.versions.node !== 'undefined'
120
123
  );
121
124
  }