algosdk 1.12.0 → 1.13.0-beta.1

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 (83) 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/src/abi/abi_type.js +665 -0
  5. package/dist/cjs/src/abi/abi_type.js.map +1 -0
  6. package/dist/cjs/src/abi/contract.js +25 -0
  7. package/dist/cjs/src/abi/contract.js.map +1 -0
  8. package/dist/cjs/src/abi/index.js +17 -0
  9. package/dist/cjs/src/abi/index.js.map +1 -0
  10. package/dist/cjs/src/abi/interface.js +21 -0
  11. package/dist/cjs/src/abi/interface.js.map +1 -0
  12. package/dist/cjs/src/abi/method.js +117 -0
  13. package/dist/cjs/src/abi/method.js.map +1 -0
  14. package/dist/cjs/src/client/v2/algod/models/types.js +2 -2
  15. package/dist/cjs/src/composer.js +319 -0
  16. package/dist/cjs/src/composer.js.map +1 -0
  17. package/dist/cjs/src/encoding/bigint.js +38 -0
  18. package/dist/cjs/src/encoding/bigint.js.map +1 -0
  19. package/dist/cjs/src/logicsig.js +2 -2
  20. package/dist/cjs/src/logicsig.js.map +1 -1
  21. package/dist/cjs/src/main.js +11 -87
  22. package/dist/cjs/src/main.js.map +1 -1
  23. package/dist/cjs/src/makeTxn.js +29 -1
  24. package/dist/cjs/src/makeTxn.js.map +1 -1
  25. package/dist/cjs/src/multisig.js +77 -2
  26. package/dist/cjs/src/multisig.js.map +1 -1
  27. package/dist/cjs/src/signer.js +66 -0
  28. package/dist/cjs/src/signer.js.map +1 -0
  29. package/dist/cjs/src/transaction.js +2 -0
  30. package/dist/cjs/src/transaction.js.map +1 -1
  31. package/dist/cjs/src/types/intDecoding.js +0 -2
  32. package/dist/cjs/src/types/intDecoding.js.map +1 -1
  33. package/dist/cjs/src/types/transactions/base.js +0 -1
  34. package/dist/cjs/src/types/transactions/base.js.map +1 -1
  35. package/dist/cjs/src/wait.js +40 -0
  36. package/dist/cjs/src/wait.js.map +1 -0
  37. package/dist/esm/src/abi/abi_type.js +652 -0
  38. package/dist/esm/src/abi/abi_type.js.map +1 -0
  39. package/dist/esm/src/abi/contract.js +21 -0
  40. package/dist/esm/src/abi/contract.js.map +1 -0
  41. package/dist/esm/src/abi/index.js +5 -0
  42. package/dist/esm/src/abi/index.js.map +1 -0
  43. package/dist/esm/src/abi/interface.js +17 -0
  44. package/dist/esm/src/abi/interface.js.map +1 -0
  45. package/dist/esm/src/abi/method.js +112 -0
  46. package/dist/esm/src/abi/method.js.map +1 -0
  47. package/dist/esm/src/client/v2/algod/models/types.js +2 -2
  48. package/dist/esm/src/composer.js +315 -0
  49. package/dist/esm/src/composer.js.map +1 -0
  50. package/dist/esm/src/encoding/bigint.js +33 -0
  51. package/dist/esm/src/encoding/bigint.js.map +1 -0
  52. package/dist/esm/src/logicsig.js +2 -2
  53. package/dist/esm/src/logicsig.js.map +1 -1
  54. package/dist/esm/src/main.js +5 -82
  55. package/dist/esm/src/main.js.map +1 -1
  56. package/dist/esm/src/makeTxn.js +27 -0
  57. package/dist/esm/src/makeTxn.js.map +1 -1
  58. package/dist/esm/src/multisig.js +73 -1
  59. package/dist/esm/src/multisig.js.map +1 -1
  60. package/dist/esm/src/signer.js +59 -0
  61. package/dist/esm/src/signer.js.map +1 -0
  62. package/dist/esm/src/transaction.js +2 -0
  63. package/dist/esm/src/transaction.js.map +1 -1
  64. package/dist/esm/src/types/intDecoding.js +0 -2
  65. package/dist/esm/src/types/intDecoding.js.map +1 -1
  66. package/dist/esm/src/types/transactions/base.js +0 -1
  67. package/dist/esm/src/types/transactions/base.js.map +1 -1
  68. package/dist/esm/src/wait.js +36 -0
  69. package/dist/esm/src/wait.js.map +1 -0
  70. package/dist/types/src/abi/abi_type.d.ts +102 -0
  71. package/dist/types/src/abi/contract.d.ts +13 -0
  72. package/dist/types/src/abi/index.d.ts +4 -0
  73. package/dist/types/src/abi/interface.d.ts +11 -0
  74. package/dist/types/src/abi/method.d.ts +37 -0
  75. package/dist/types/src/client/v2/algod/models/types.d.ts +4 -4
  76. package/dist/types/src/composer.d.ts +146 -0
  77. package/dist/types/src/encoding/bigint.d.ts +14 -0
  78. package/dist/types/src/main.d.ts +5 -45
  79. package/dist/types/src/makeTxn.d.ts +18 -1
  80. package/dist/types/src/multisig.d.ts +39 -1
  81. package/dist/types/src/signer.d.ts +40 -0
  82. package/dist/types/src/wait.d.ts +11 -0
  83. package/package.json +2 -2
@@ -1 +1 @@
1
- {"version":3,"file":"base.js","sourceRoot":"","sources":["../../../../../src/types/transactions/base.ts"],"names":[],"mappings":"AAAA,6CAA6C;AAE7C;;;;GAIG;AACH,MAAM,CAAN,IAAY,eA8BX;AA9BD,WAAY,eAAe;IACzB;;OAEG;IACH,8BAAW,CAAA;IAEX;;OAEG;IACH,oCAAiB,CAAA;IAEjB;;OAEG;IACH,gCAAa,CAAA;IAEb;;OAEG;IACH,kCAAe,CAAA;IAEf;;OAEG;IACH,gCAAa,CAAA;IAEb;;OAEG;IACH,gCAAa,CAAA;AACf,CAAC,EA9BW,eAAe,KAAf,eAAe,QA8B1B;AAED;;GAEG;AACH,MAAM,CAAN,IAAY,qBAsCX;AAtCD,WAAY,qBAAqB;IAC/B;;;OAGG;IACH,qEAAM,CAAA;IAEN;;;OAGG;IACH,uEAAO,CAAA;IAEP;;;OAGG;IACH,6EAAU,CAAA;IAEV;;;;OAIG;IACH,iFAAY,CAAA;IAEZ;;;OAGG;IACH,+FAAmB,CAAA;IAEnB;;;;OAIG;IACH,+FAAmB,CAAA;AACrB,CAAC,EAtCW,qBAAqB,KAArB,qBAAqB,QAsChC"}
1
+ {"version":3,"file":"base.js","sourceRoot":"","sources":["../../../../../src/types/transactions/base.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,MAAM,CAAN,IAAY,eA8BX;AA9BD,WAAY,eAAe;IACzB;;OAEG;IACH,8BAAW,CAAA;IAEX;;OAEG;IACH,oCAAiB,CAAA;IAEjB;;OAEG;IACH,gCAAa,CAAA;IAEb;;OAEG;IACH,kCAAe,CAAA;IAEf;;OAEG;IACH,gCAAa,CAAA;IAEb;;OAEG;IACH,gCAAa,CAAA;AACf,CAAC,EA9BW,eAAe,KAAf,eAAe,QA8B1B;AAED;;GAEG;AACH,MAAM,CAAN,IAAY,qBAsCX;AAtCD,WAAY,qBAAqB;IAC/B;;;OAGG;IACH,qEAAM,CAAA;IAEN;;;OAGG;IACH,uEAAO,CAAA;IAEP;;;OAGG;IACH,6EAAU,CAAA;IAEV;;;;OAIG;IACH,iFAAY,CAAA;IAEZ;;;OAGG;IACH,+FAAmB,CAAA;IAEnB;;;;OAIG;IACH,+FAAmB,CAAA;AACrB,CAAC,EAtCW,qBAAqB,KAArB,qBAAqB,QAsChC"}
@@ -0,0 +1,36 @@
1
+ /**
2
+ * Wait until a transaction has been confirmed or rejected by the network, or
3
+ * until 'waitRounds' number of rounds have passed.
4
+ * @param client - An Algodv2 client
5
+ * @param txid - The ID of the transaction to wait for.
6
+ * @param waitRounds - The maximum number of rounds to wait for.
7
+ * @returns A promise that, upon success, will resolve to the output of the
8
+ * `pendingTransactionInformation` call for the confirmed transaction.
9
+ */
10
+ export async function waitForConfirmation(client, txid, waitRounds) {
11
+ // Wait until the transaction is confirmed or rejected, or until 'waitRounds'
12
+ // number of rounds have passed.
13
+ const status = await client.status().do();
14
+ if (typeof status === 'undefined') {
15
+ throw new Error('Unable to get node status');
16
+ }
17
+ const startRound = status['last-round'] + 1;
18
+ let currentRound = startRound;
19
+ /* eslint-disable no-await-in-loop */
20
+ while (currentRound < startRound + waitRounds) {
21
+ const pendingInfo = await client.pendingTransactionInformation(txid).do();
22
+ if (pendingInfo['confirmed-round']) {
23
+ // Got the completed Transaction
24
+ return pendingInfo;
25
+ }
26
+ if (pendingInfo['pool-error']) {
27
+ // If there was a pool error, then the transaction has been rejected!
28
+ throw new Error(`Transaction Rejected: ${pendingInfo['pool-error']}`);
29
+ }
30
+ await client.statusAfterBlock(currentRound).do();
31
+ currentRound += 1;
32
+ }
33
+ /* eslint-enable no-await-in-loop */
34
+ throw new Error(`Transaction not confirmed after ${waitRounds} rounds!`);
35
+ }
36
+ //# sourceMappingURL=wait.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wait.js","sourceRoot":"","sources":["../../../src/wait.ts"],"names":[],"mappings":"AAEA;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,MAAe,EACf,IAAY,EACZ,UAAkB;IAElB,6EAA6E;IAC7E,gCAAgC;IAEhC,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;IAC1C,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE;QACjC,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;KAC9C;IACD,MAAM,UAAU,GAAG,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;IAC5C,IAAI,YAAY,GAAG,UAAU,CAAC;IAE9B,qCAAqC;IACrC,OAAO,YAAY,GAAG,UAAU,GAAG,UAAU,EAAE;QAC7C,MAAM,WAAW,GAAG,MAAM,MAAM,CAAC,6BAA6B,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC;QAE1E,IAAI,WAAW,CAAC,iBAAiB,CAAC,EAAE;YAClC,gCAAgC;YAChC,OAAO,WAAW,CAAC;SACpB;QAED,IAAI,WAAW,CAAC,YAAY,CAAC,EAAE;YAC7B,qEAAqE;YACrE,MAAM,IAAI,KAAK,CAAC,yBAAyB,WAAW,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;SACvE;QAED,MAAM,MAAM,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC,EAAE,EAAE,CAAC;QACjD,YAAY,IAAI,CAAC,CAAC;KACnB;IACD,oCAAoC;IACpC,MAAM,IAAI,KAAK,CAAC,mCAAmC,UAAU,UAAU,CAAC,CAAC;AAC3E,CAAC"}
@@ -0,0 +1,102 @@
1
+ export declare const MAX_LEN: number;
2
+ export declare const ADDR_BYTE_SIZE = 32;
3
+ export declare const SINGLE_BYTE_SIZE = 1;
4
+ export declare const SINGLE_BOOL_SIZE = 1;
5
+ export declare const LENGTH_ENCODE_BYTE_SIZE = 2;
6
+ export declare type ABIValue = boolean | number | bigint | string | Uint8Array | ABIValue[];
7
+ export declare abstract class ABIType {
8
+ abstract toString(): string;
9
+ abstract equal(other: ABIType): boolean;
10
+ abstract isDynamic(): boolean;
11
+ abstract byteLen(): number;
12
+ abstract encode(value: ABIValue): Uint8Array;
13
+ abstract decode(byteString: Uint8Array): ABIValue;
14
+ static from(str: string): ABIType;
15
+ }
16
+ export declare class ABIUintType extends ABIType {
17
+ bitSize: number;
18
+ constructor(size: number);
19
+ toString(): string;
20
+ equal(other: ABIUintType): boolean;
21
+ isDynamic(): boolean;
22
+ byteLen(): number;
23
+ encode(value: bigint | number): Uint8Array;
24
+ decode(byteString: Uint8Array): bigint;
25
+ }
26
+ export declare class ABIUfixedType extends ABIType {
27
+ bitSize: number;
28
+ precision: number;
29
+ constructor(size: number, denominator: number);
30
+ toString(): string;
31
+ equal(other: ABIUfixedType): boolean;
32
+ isDynamic(): boolean;
33
+ byteLen(): number;
34
+ encode(value: bigint | number): Uint8Array;
35
+ decode(byteString: Uint8Array): bigint;
36
+ }
37
+ export declare class ABIAddressType extends ABIType {
38
+ toString(): string;
39
+ equal(other: ABIAddressType): boolean;
40
+ isDynamic(): boolean;
41
+ byteLen(): number;
42
+ encode(value: string | Uint8Array): Uint8Array;
43
+ decode(byteString: Uint8Array): string;
44
+ }
45
+ export declare class ABIBoolType extends ABIType {
46
+ toString(): string;
47
+ equal(other: ABIBoolType): boolean;
48
+ isDynamic(): boolean;
49
+ byteLen(): number;
50
+ encode(value: boolean): Uint8Array;
51
+ decode(byteString: Uint8Array): boolean;
52
+ }
53
+ export declare class ABIByteType extends ABIType {
54
+ toString(): string;
55
+ equal(other: ABIByteType): boolean;
56
+ isDynamic(): boolean;
57
+ byteLen(): number;
58
+ encode(value: number): Uint8Array;
59
+ decode(byteString: Uint8Array): number;
60
+ }
61
+ export declare class ABIStringType extends ABIType {
62
+ toString(): string;
63
+ equal(other: ABIStringType): boolean;
64
+ isDynamic(): boolean;
65
+ byteLen(): never;
66
+ encode(value: string): Uint8Array;
67
+ decode(byteString: Uint8Array): string;
68
+ }
69
+ export declare class ABIArrayStaticType extends ABIType {
70
+ childType: ABIType;
71
+ staticLength: number;
72
+ constructor(argType: ABIType, arrayLength: number);
73
+ toString(): string;
74
+ equal(other: ABIArrayStaticType): boolean;
75
+ isDynamic(): boolean;
76
+ byteLen(): number;
77
+ encode(values: ABIValue[]): Uint8Array;
78
+ decode(byteString: Uint8Array): ABIValue[];
79
+ toABITupleType(): ABITupleType;
80
+ }
81
+ export declare class ABIArrayDynamicType extends ABIType {
82
+ childType: ABIType;
83
+ constructor(argType: ABIType);
84
+ toString(): string;
85
+ equal(other: ABIArrayDynamicType): boolean;
86
+ isDynamic(): boolean;
87
+ byteLen(): never;
88
+ encode(values: ABIValue[]): Uint8Array;
89
+ decode(byteString: Uint8Array): ABIValue[];
90
+ toABITupleType(length: number): ABITupleType;
91
+ }
92
+ export declare class ABITupleType extends ABIType {
93
+ childTypes: ABIType[];
94
+ constructor(argTypes: ABIType[]);
95
+ toString(): string;
96
+ equal(other: ABITupleType): boolean;
97
+ isDynamic(): boolean;
98
+ byteLen(): number;
99
+ encode(values: ABIValue[]): Uint8Array;
100
+ decode(byteString: Uint8Array): ABIValue[];
101
+ static parseTupleContent(str: string): string[];
102
+ }
@@ -0,0 +1,13 @@
1
+ import { ABIMethod, ABIMethodParams } from './method';
2
+ export interface ABIContractParams {
3
+ name: string;
4
+ appId: number;
5
+ methods: ABIMethodParams[];
6
+ }
7
+ export declare class ABIContract {
8
+ readonly name: string;
9
+ readonly appId: number;
10
+ readonly methods: ABIMethod[];
11
+ constructor(params: ABIContractParams);
12
+ toJSON(): ABIContractParams;
13
+ }
@@ -0,0 +1,4 @@
1
+ export * from './abi_type';
2
+ export * from './contract';
3
+ export * from './interface';
4
+ export * from './method';
@@ -0,0 +1,11 @@
1
+ import { ABIMethod, ABIMethodParams } from './method';
2
+ export interface ABIInterfaceParams {
3
+ name: string;
4
+ methods: ABIMethodParams[];
5
+ }
6
+ export declare class ABIInterface {
7
+ readonly name: string;
8
+ readonly methods: ABIMethod[];
9
+ constructor(params: ABIInterfaceParams);
10
+ toJSON(): ABIInterfaceParams;
11
+ }
@@ -0,0 +1,37 @@
1
+ import { TransactionType } from '../types/transactions/base';
2
+ import { ABIType } from './abi_type';
3
+ export declare function abiTypeIsTransaction(type: string): type is TransactionType;
4
+ export interface ABIMethodParams {
5
+ name: string;
6
+ desc?: string;
7
+ args: Array<{
8
+ type: string;
9
+ name?: string;
10
+ desc?: string;
11
+ }>;
12
+ returns: {
13
+ type: string;
14
+ desc?: string;
15
+ };
16
+ }
17
+ export declare type ABIArgumentType = ABIType | TransactionType;
18
+ export declare type ABIReturnType = ABIType | 'void';
19
+ export declare class ABIMethod {
20
+ readonly name: string;
21
+ readonly description?: string;
22
+ readonly args: Array<{
23
+ type: ABIArgumentType;
24
+ name?: string;
25
+ description?: string;
26
+ }>;
27
+ readonly returns: {
28
+ type: ABIReturnType;
29
+ description?: string;
30
+ };
31
+ constructor(params: ABIMethodParams);
32
+ getSignature(): string;
33
+ getSelector(): Uint8Array;
34
+ txnCount(): number;
35
+ toJSON(): ABIMethodParams;
36
+ static fromSignature(signature: string): ABIMethod;
37
+ }
@@ -286,7 +286,7 @@ export declare class ApplicationParams extends BaseModel {
286
286
  */
287
287
  globalState?: TealKeyValue[];
288
288
  /**
289
- * [\lsch) global schema
289
+ * [\gsch) global schema
290
290
  */
291
291
  globalStateSchema?: ApplicationStateSchema;
292
292
  /**
@@ -301,7 +301,7 @@ export declare class ApplicationParams extends BaseModel {
301
301
  * parameters and global state for this application can be found.
302
302
  * @param extraProgramPages - (epp) the amount of extra program pages available to this app.
303
303
  * @param globalState - [\gs) global schema
304
- * @param globalStateSchema - [\lsch) global schema
304
+ * @param globalStateSchema - [\gsch) global schema
305
305
  * @param localStateSchema - [\lsch) local schema
306
306
  */
307
307
  constructor({ approvalProgram, clearStateProgram, creator, extraProgramPages, globalState, globalStateSchema, localStateSchema, }: {
@@ -1156,7 +1156,7 @@ export declare class TealKeyValue extends BaseModel {
1156
1156
  */
1157
1157
  export declare class TealValue extends BaseModel {
1158
1158
  /**
1159
- * (tt) value type.
1159
+ * (tt) value type. Value `1` refers to **bytes**, value `2` refers to **uint**
1160
1160
  */
1161
1161
  type: number | bigint;
1162
1162
  /**
@@ -1169,7 +1169,7 @@ export declare class TealValue extends BaseModel {
1169
1169
  uint: number | bigint;
1170
1170
  /**
1171
1171
  * Creates a new `TealValue` object.
1172
- * @param type - (tt) value type.
1172
+ * @param type - (tt) value type. Value `1` refers to **bytes**, value `2` refers to **uint**
1173
1173
  * @param bytes - (tb) bytes value.
1174
1174
  * @param uint - (ui) uint value.
1175
1175
  */
@@ -0,0 +1,146 @@
1
+ import { ABIValue, ABIMethod } from './abi';
2
+ import Algodv2 from './client/v2/algod/algod';
3
+ import { TransactionSigner, TransactionWithSigner } from './signer';
4
+ import { OnApplicationComplete, SuggestedParams } from './types/transactions/base';
5
+ export declare type ABIArgument = ABIValue | TransactionWithSigner;
6
+ /** Represents the output from a successful ABI method call. */
7
+ export interface ABIResult {
8
+ /** The TxID of the transaction that invoked the ABI method call. */
9
+ txID: string;
10
+ /**
11
+ * The raw bytes of the return value from the ABI method call. This will be empty if the method
12
+ * does not return a value (return type "void").
13
+ */
14
+ rawReturnValue: Uint8Array;
15
+ /**
16
+ * The return value from the ABI method call. This will be undefined if the method does not return
17
+ * a value (return type "void"), or if the SDK was unable to decode the returned value.
18
+ */
19
+ returnValue?: ABIValue;
20
+ /** If the SDK was unable to decode a return value, the error will be here. */
21
+ decodeError?: Error;
22
+ }
23
+ export declare enum AtomicTransactionComposerStatus {
24
+ /** The atomic group is still under construction. */
25
+ BUILDING = 0,
26
+ /** The atomic group has been finalized, but not yet signed. */
27
+ BUILT = 1,
28
+ /** The atomic group has been finalized and signed, but not yet submitted to the network. */
29
+ SIGNED = 2,
30
+ /** The atomic group has been finalized, signed, and submitted to the network. */
31
+ SUBMITTED = 3,
32
+ /** The atomic group has been finalized, signed, submitted, and successfully committed to a block. */
33
+ COMMITTED = 4
34
+ }
35
+ /** A class used to construct and execute atomic transaction groups */
36
+ export declare class AtomicTransactionComposer {
37
+ /** The maximum size of an atomic transaction group. */
38
+ static MAX_GROUP_SIZE: number;
39
+ private status;
40
+ private transactions;
41
+ private methodCalls;
42
+ private signedTxns;
43
+ private txIDs;
44
+ /**
45
+ * Get the status of this composer's transaction group.
46
+ */
47
+ getStatus(): AtomicTransactionComposerStatus;
48
+ /**
49
+ * Get the number of transactions currently in this atomic group.
50
+ */
51
+ count(): number;
52
+ /**
53
+ * Create a new composer with the same underlying transactions. The new composer's status will be
54
+ * BUILDING, so additional transactions may be added to it.
55
+ */
56
+ clone(): AtomicTransactionComposer;
57
+ /**
58
+ * Add a transaction to this atomic group.
59
+ *
60
+ * An error will be thrown if the transaction has a nonzero group ID, the composer's status is
61
+ * not BUILDING, or if adding this transaction causes the current group to exceed MAX_GROUP_SIZE.
62
+ */
63
+ addTransaction(txnAndSigner: TransactionWithSigner): void;
64
+ /**
65
+ * Add a smart contract method call to this atomic group.
66
+ *
67
+ * An error will be thrown if the composer's status is not BUILDING, if adding this transaction
68
+ * causes the current group to exceed MAX_GROUP_SIZE, or if the provided arguments are invalid
69
+ * for the given method.
70
+ */
71
+ addMethodCall({ appId, method, methodArgs, sender, suggestedParams, onComplete, note, lease, rekeyTo, signer, }: {
72
+ /** The ID of the smart contract to call */
73
+ appId: number;
74
+ /** The method to call on the smart contract */
75
+ method: ABIMethod;
76
+ /** The arguments to include in the method call. If omitted, no arguments will be passed to the method. */
77
+ methodArgs?: ABIArgument[];
78
+ /** The address of the sender of this application call */
79
+ sender: string;
80
+ /** Transactions params to use for this application call */
81
+ suggestedParams: SuggestedParams;
82
+ /** The OnComplete action to take for this application call. If omitted, OnApplicationComplete.NoOpOC will be used. */
83
+ onComplete?: OnApplicationComplete;
84
+ /** The note value for this application call */
85
+ note?: Uint8Array;
86
+ /** The lease value for this application call */
87
+ lease?: Uint8Array;
88
+ /** If provided, the address that the sender will be rekeyed to at the conclusion of this application call */
89
+ rekeyTo?: string;
90
+ /** A transaction signer that can authorize this application call from sender */
91
+ signer: TransactionSigner;
92
+ }): void;
93
+ /**
94
+ * Finalize the transaction group and returned the finalized transactions.
95
+ *
96
+ * The composer's status will be at least BUILT after executing this method.
97
+ */
98
+ buildGroup(): TransactionWithSigner[];
99
+ /**
100
+ * Obtain signatures for each transaction in this group. If signatures have already been obtained,
101
+ * this method will return cached versions of the signatures.
102
+ *
103
+ * The composer's status will be at least SIGNED after executing this method.
104
+ *
105
+ * An error will be thrown if signing any of the transactions fails.
106
+ *
107
+ * @returns A promise that resolves to an array of signed transactions.
108
+ */
109
+ gatherSignatures(): Promise<Uint8Array[]>;
110
+ /**
111
+ * Send the transaction group to the network, but don't wait for it to be committed to a block. An
112
+ * error will be thrown if submission fails.
113
+ *
114
+ * The composer's status must be SUBMITTED or lower before calling this method. If submission is
115
+ * successful, this composer's status will update to SUBMITTED.
116
+ *
117
+ * Note: a group can only be submitted again if it fails.
118
+ *
119
+ * @param client - An Algodv2 client
120
+ *
121
+ * @returns A promise that, upon success, resolves to a list of TxIDs of the submitted transactions.
122
+ */
123
+ submit(client: Algodv2): Promise<string[]>;
124
+ /**
125
+ * Send the transaction group to the network and wait until it's committed to a block. An error
126
+ * will be thrown if submission or execution fails.
127
+ *
128
+ * The composer's status must be SUBMITTED or lower before calling this method, since execution is
129
+ * only allowed once. If submission is successful, this composer's status will update to SUBMITTED.
130
+ * If the execution is also successful, this composer's status will update to COMMITTED.
131
+ *
132
+ * Note: a group can only be submitted again if it fails.
133
+ *
134
+ * @param client - An Algodv2 client
135
+ * @param waitRounds - The maximum number of rounds to wait for transaction confirmation
136
+ *
137
+ * @returns A promise that, upon success, resolves to an object containing the confirmed round for
138
+ * this transaction, the txIDs of the submitted transactions, and an array of results containing
139
+ * one element for each method call transaction in this group.
140
+ */
141
+ execute(client: Algodv2, waitRounds: number): Promise<{
142
+ confirmedRound: number;
143
+ txIDs: string[];
144
+ methodResults: ABIResult[];
145
+ }>;
146
+ }
@@ -0,0 +1,14 @@
1
+ /**
2
+ * bigIntToBytes converts a BigInt to a big-endian Uint8Array for encoding.
3
+ * @param bi - The bigint to convert.
4
+ * @param size - The size of the resulting byte array.
5
+ * @returns A byte array containing the big-endian encoding of the input bigint
6
+ */
7
+ export declare function bigIntToBytes(bi: bigint | number, size: number): Uint8Array;
8
+ /**
9
+ * bytesToBigInt produces a bigint from a binary representation.
10
+ *
11
+ * @param bytes - The Uint8Array to convert.
12
+ * @returns The bigint that was encoded in the input data.
13
+ */
14
+ export declare function bytesToBigInt(bytes: Uint8Array): bigint;
@@ -1,6 +1,5 @@
1
1
  import * as txnBuilder from './transaction';
2
2
  import { BidOptions } from './bid';
3
- import { MultisigMetadata } from './types/multisig';
4
3
  export declare const MULTISIG_BAD_SENDER_ERROR_MSG = "The transaction sender address and multisig preimage do not match.";
5
4
  /**
6
5
  * signTransaction takes an object with either payment or key registration fields and
@@ -46,50 +45,6 @@ export declare function signBytes(bytes: Uint8Array, sk: Uint8Array): Uint8Array
46
45
  * @returns bool
47
46
  */
48
47
  export declare function verifyBytes(bytes: Uint8Array, signature: Uint8Array, addr: string): boolean;
49
- /**
50
- * signMultisigTransaction takes a raw transaction (see signTransaction), a multisig preimage, a secret key, and returns
51
- * a multisig transaction, which is a blob representing a transaction and multisignature account preimage. The returned
52
- * multisig txn can accumulate additional signatures through mergeMultisigTransactions or appendMultisigTransaction.
53
- * @param txn - object with either payment or key registration fields
54
- * @param version - multisig version
55
- * @param threshold - multisig threshold
56
- * @param addrs - a list of Algorand addresses representing possible signers for this multisig. Order is important.
57
- * @param sk - Algorand secret key. The corresponding pk should be in the pre image.
58
- * @returns object containing txID, and blob of partially signed multisig transaction (with multisig preimage information)
59
- * If the final calculated fee is lower than the protocol minimum fee, the fee will be increased to match the minimum.
60
- */
61
- export declare function signMultisigTransaction(txn: txnBuilder.TransactionLike, { version, threshold, addrs }: MultisigMetadata, sk: Uint8Array): {
62
- txID: string;
63
- blob: Uint8Array;
64
- };
65
- /**
66
- * mergeMultisigTransactions takes a list of multisig transaction blobs, and merges them.
67
- * @param multisigTxnBlobs - a list of blobs representing encoded multisig txns
68
- * @returns blob representing encoded multisig txn
69
- */
70
- export declare function mergeMultisigTransactions(multisigTxnBlobs: Uint8Array[]): Uint8Array;
71
- /**
72
- * appendSignMultisigTransaction takes a multisig transaction blob, and appends our signature to it.
73
- * While we could derive public key preimagery from the partially-signed multisig transaction,
74
- * we ask the caller to pass it back in, to ensure they know what they are signing.
75
- * @param multisigTxnBlob - an encoded multisig txn. Supports non-payment txn types.
76
- * @param version - multisig version
77
- * @param threshold - multisig threshold
78
- * @param addrs - a list of Algorand addresses representing possible signers for this multisig. Order is important.
79
- * @param sk - Algorand secret key
80
- * @returns object containing txID, and blob representing encoded multisig txn
81
- */
82
- export declare function appendSignMultisigTransaction(multisigTxnBlob: Uint8Array, { version, threshold, addrs }: MultisigMetadata, sk: Uint8Array): {
83
- txID: string;
84
- blob: Uint8Array;
85
- };
86
- /**
87
- * multisigAddress takes multisig metadata (preimage) and returns the corresponding human readable Algorand address.
88
- * @param version - mutlisig version
89
- * @param threshold - multisig threshold
90
- * @param addrs - list of Algorand addresses
91
- */
92
- export declare function multisigAddress({ version, threshold, addrs, }: MultisigMetadata): string;
93
48
  /**
94
49
  * encodeObj takes a javascript object and returns its msgpack encoding
95
50
  * Note that the encoding sorts the fields alphabetically
@@ -111,6 +66,7 @@ export { default as Kmd } from './client/kmd';
111
66
  export { default as IntDecoding } from './types/intDecoding';
112
67
  export { default as Account } from './types/account';
113
68
  export { default as Indexer } from './client/v2/indexer/indexer';
69
+ export { waitForConfirmation } from './wait';
114
70
  export { isValidAddress, encodeAddress, decodeAddress, getApplicationAddress, } from './encoding/address';
115
71
  export { encodeUint64, decodeUint64 } from './encoding/uint64';
116
72
  export { default as generateAccount } from './account';
@@ -119,7 +75,11 @@ export { mnemonicToMasterDerivationKey, masterDerivationKeyToMnemonic, secretKey
119
75
  export { microalgosToAlgos, algosToMicroalgos, INVALID_MICROALGOS_ERROR_MSG, } from './convert';
120
76
  export { computeGroupID, assignGroupID } from './group';
121
77
  export { LogicSigAccount, makeLogicSig, signLogicSigTransaction, signLogicSigTransactionObject, logicSigFromByte, tealSign, tealSignFromProgram, } from './logicsig';
78
+ export { signMultisigTransaction, mergeMultisigTransactions, appendSignMultisigTransaction, multisigAddress, } from './multisig';
122
79
  export declare const LogicTemplates: any;
123
80
  export * from './makeTxn';
124
81
  export * from './transaction';
82
+ export * from './signer';
83
+ export * from './composer';
125
84
  export * from './types';
85
+ export * from './abi';
@@ -455,7 +455,7 @@ export declare function makeApplicationDeleteTxnFromObject(o: Pick<RenamePropert
455
455
  * @param lease - Lease a transaction
456
456
  * @param rekeyTo - String representation of the Algorand address that will be used to authorize all future transactions
457
457
  */
458
- export declare function makeApplicationOptInTxn(from: AppOptInTxn['from'], suggestedParams: MustHaveSuggestedParams<AppOptInTxn>['suggestedParams'], appIndex: AppOptInTxn['appIndex'], appArgs?: AppOptInTxn['appArgs'], accounts?: AppOptInTxn['appAccounts'], foreignApps?: AppOptInTxn['appForeignApps'], foreignAssets?: AppOptInTxn['appForeignApps'], note?: AppOptInTxn['note'], lease?: AppOptInTxn['lease'], rekeyTo?: AppOptInTxn['reKeyTo']): txnBuilder.Transaction;
458
+ export declare function makeApplicationOptInTxn(from: AppOptInTxn['from'], suggestedParams: MustHaveSuggestedParams<AppOptInTxn>['suggestedParams'], appIndex: AppOptInTxn['appIndex'], appArgs?: AppOptInTxn['appArgs'], accounts?: AppOptInTxn['appAccounts'], foreignApps?: AppOptInTxn['appForeignApps'], foreignAssets?: AppOptInTxn['appForeignAssets'], note?: AppOptInTxn['note'], lease?: AppOptInTxn['lease'], rekeyTo?: AppOptInTxn['reKeyTo']): txnBuilder.Transaction;
459
459
  export declare function makeApplicationOptInTxnFromObject(o: Pick<RenameProperties<MustHaveSuggestedParams<AppOptInTxn>, {
460
460
  appAccounts: 'accounts';
461
461
  appForeignApps: 'foreignApps';
@@ -544,3 +544,20 @@ export declare function makeApplicationNoOpTxnFromObject(o: Pick<RenamePropertie
544
544
  reKeyTo: 'rekeyTo';
545
545
  }>, 'from' | 'suggestedParams' | 'appIndex' | 'appArgs' | 'accounts' | 'foreignApps' | 'foreignAssets' | 'note' | 'lease' | 'rekeyTo'>): txnBuilder.Transaction;
546
546
  export { OnApplicationComplete } from './types/transactions/base';
547
+ /**
548
+ * Generic function for creating any application call transaction.
549
+ */
550
+ export declare function makeApplicationCallTxnFromObject(options: Pick<RenameProperties<MustHaveSuggestedParams<AppCreateTxn>, {
551
+ appOnComplete: 'onComplete';
552
+ appAccounts: 'accounts';
553
+ appForeignApps: 'foreignApps';
554
+ appForeignAssets: 'foreignAssets';
555
+ reKeyTo: 'rekeyTo';
556
+ }>, 'from' | 'suggestedParams' | 'appIndex' | 'onComplete' | 'appArgs' | 'accounts' | 'foreignApps' | 'foreignAssets' | 'note' | 'lease' | 'rekeyTo' | 'extraPages'> & Partial<Pick<RenameProperties<MustHaveSuggestedParams<AppCreateTxn>, {
557
+ appApprovalProgram: 'approvalProgram';
558
+ appClearProgram: 'clearProgram';
559
+ appLocalInts: 'numLocalInts';
560
+ appLocalByteSlices: 'numLocalByteSlices';
561
+ appGlobalInts: 'numGlobalInts';
562
+ appGlobalByteSlices: 'numGlobalByteSlices';
563
+ }>, 'approvalProgram' | 'clearProgram' | 'numLocalInts' | 'numLocalByteSlices' | 'numGlobalInts' | 'numGlobalByteSlices'>>): txnBuilder.Transaction;
@@ -50,4 +50,42 @@ export declare class MultisigTransaction extends txnBuilder.Transaction {
50
50
  */
51
51
  export declare function mergeMultisigTransactions(multisigTxnBlobs: Uint8Array[]): Uint8Array;
52
52
  export declare function verifyMultisig(toBeVerified: Uint8Array, msig: EncodedMultisig, publicKey: Uint8Array): boolean;
53
- export default MultisigTransaction;
53
+ /**
54
+ * signMultisigTransaction takes a raw transaction (see signTransaction), a multisig preimage, a secret key, and returns
55
+ * a multisig transaction, which is a blob representing a transaction and multisignature account preimage. The returned
56
+ * multisig txn can accumulate additional signatures through mergeMultisigTransactions or appendMultisigTransaction.
57
+ * @param txn - object with either payment or key registration fields
58
+ * @param version - multisig version
59
+ * @param threshold - multisig threshold
60
+ * @param addrs - a list of Algorand addresses representing possible signers for this multisig. Order is important.
61
+ * @param sk - Algorand secret key. The corresponding pk should be in the pre image.
62
+ * @returns object containing txID, and blob of partially signed multisig transaction (with multisig preimage information)
63
+ * If the final calculated fee is lower than the protocol minimum fee, the fee will be increased to match the minimum.
64
+ */
65
+ export declare function signMultisigTransaction(txn: txnBuilder.TransactionLike, { version, threshold, addrs }: MultisigMetadata, sk: Uint8Array): {
66
+ txID: string;
67
+ blob: Uint8Array;
68
+ };
69
+ /**
70
+ * appendSignMultisigTransaction takes a multisig transaction blob, and appends our signature to it.
71
+ * While we could derive public key preimagery from the partially-signed multisig transaction,
72
+ * we ask the caller to pass it back in, to ensure they know what they are signing.
73
+ * @param multisigTxnBlob - an encoded multisig txn. Supports non-payment txn types.
74
+ * @param version - multisig version
75
+ * @param threshold - multisig threshold
76
+ * @param addrs - a list of Algorand addresses representing possible signers for this multisig. Order is important.
77
+ * @param sk - Algorand secret key
78
+ * @returns object containing txID, and blob representing encoded multisig txn
79
+ */
80
+ export declare function appendSignMultisigTransaction(multisigTxnBlob: Uint8Array, { version, threshold, addrs }: MultisigMetadata, sk: Uint8Array): {
81
+ txID: string;
82
+ blob: Uint8Array;
83
+ };
84
+ /**
85
+ * multisigAddress takes multisig metadata (preimage) and returns the corresponding human readable Algorand address.
86
+ * @param version - mutlisig version
87
+ * @param threshold - multisig threshold
88
+ * @param addrs - list of Algorand addresses
89
+ */
90
+ export declare function multisigAddress({ version, threshold, addrs, }: MultisigMetadata): string;
91
+ export {};
@@ -0,0 +1,40 @@
1
+ import { Transaction } from './transaction';
2
+ import Account from './types/account';
3
+ import { LogicSigAccount } from './logicsig';
4
+ import { MultisigMetadata } from './types/multisig';
5
+ /**
6
+ * This type represents a function which can sign transactions from an atomic transaction group.
7
+ * @param txnGroup - The atomic group containing transactions to be signed
8
+ * @param indexesToSign - An array of indexes in the atomic transaction group that should be signed
9
+ * @returns A promise which resolves an array of encoded signed transactions. The length of the
10
+ * array will be the same as the length of indexesToSign, and each index i in the array
11
+ * corresponds to the signed transaction from txnGroup[indexesToSign[i]]
12
+ */
13
+ export declare type TransactionSigner = (txnGroup: Transaction[], indexesToSign: number[]) => Promise<Uint8Array[]>;
14
+ /**
15
+ * Create a TransactionSigner that can sign transactions for the provided basic Account.
16
+ */
17
+ export declare function makeBasicAccountTransactionSigner(account: Account): TransactionSigner;
18
+ /**
19
+ * Create a TransactionSigner that can sign transactions for the provided LogicSigAccount.
20
+ */
21
+ export declare function makeLogicSigAccountTransactionSigner(account: LogicSigAccount): TransactionSigner;
22
+ /**
23
+ * Create a TransactionSigner that can sign transactions for the provided Multisig account.
24
+ * @param msig - The Multisig account metadata
25
+ * @param sks - An array of private keys belonging to the msig which should sign the transactions.
26
+ */
27
+ export declare function makeMultiSigAccountTransactionSigner(msig: MultisigMetadata, sks: Uint8Array[]): TransactionSigner;
28
+ /** Represents an unsigned transactions and a signer that can authorize that transaction. */
29
+ export interface TransactionWithSigner {
30
+ /** An unsigned transaction */
31
+ txn: Transaction;
32
+ /** A transaction signer that can authorize txn */
33
+ signer: TransactionSigner;
34
+ }
35
+ /**
36
+ * Check if a value conforms to the TransactionWithSigner structure.
37
+ * @param value - The value to check.
38
+ * @returns True if an only if the value has the structure of a TransactionWithSigner.
39
+ */
40
+ export declare function isTransactionWithSigner(value: any): value is TransactionWithSigner;
@@ -0,0 +1,11 @@
1
+ import Algodv2 from './client/v2/algod/algod';
2
+ /**
3
+ * Wait until a transaction has been confirmed or rejected by the network, or
4
+ * until 'waitRounds' number of rounds have passed.
5
+ * @param client - An Algodv2 client
6
+ * @param txid - The ID of the transaction to wait for.
7
+ * @param waitRounds - The maximum number of rounds to wait for.
8
+ * @returns A promise that, upon success, will resolve to the output of the
9
+ * `pendingTransactionInformation` call for the confirmed transaction.
10
+ */
11
+ export declare function waitForConfirmation(client: Algodv2, txid: string, waitRounds: number): Promise<Record<string, any>>;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "algosdk",
3
- "version": "1.12.0",
3
+ "version": "1.13.0-beta.1",
4
4
  "description": "The official JavaScript SDK for Algorand",
5
5
  "main": "dist/cjs/index.js",
6
6
  "module": "dist/esm/index.js",
@@ -36,7 +36,7 @@
36
36
  "@typescript-eslint/eslint-plugin": "^4.26.1",
37
37
  "@typescript-eslint/parser": "^4.26.1",
38
38
  "assert": "^2.0.0",
39
- "chromedriver": "^93.0.1",
39
+ "chromedriver": "^95.0.0",
40
40
  "concurrently": "^6.2.0",
41
41
  "coveralls": "^3.1.0",
42
42
  "cucumber": "^5.1.0",