algosdk 3.4.0 → 3.5.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 (41) 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/appAccess.js +261 -0
  5. package/dist/cjs/appAccess.js.map +1 -0
  6. package/dist/cjs/client/v2/indexer/models/types.js +266 -8
  7. package/dist/cjs/client/v2/indexer/models/types.js.map +1 -1
  8. package/dist/cjs/logicsig.js +54 -17
  9. package/dist/cjs/logicsig.js.map +1 -1
  10. package/dist/cjs/makeTxn.js +66 -12
  11. package/dist/cjs/makeTxn.js.map +1 -1
  12. package/dist/cjs/signing.js +4 -4
  13. package/dist/cjs/signing.js.map +1 -1
  14. package/dist/cjs/transaction.js +107 -0
  15. package/dist/cjs/transaction.js.map +1 -1
  16. package/dist/esm/appAccess.js +255 -0
  17. package/dist/esm/appAccess.js.map +1 -0
  18. package/dist/esm/client/v2/indexer/models/types.js +261 -6
  19. package/dist/esm/client/v2/indexer/models/types.js.map +1 -1
  20. package/dist/esm/logicsig.js +54 -17
  21. package/dist/esm/logicsig.js.map +1 -1
  22. package/dist/esm/makeTxn.js +66 -12
  23. package/dist/esm/makeTxn.js.map +1 -1
  24. package/dist/esm/signing.js +4 -4
  25. package/dist/esm/signing.js.map +1 -1
  26. package/dist/esm/transaction.js +107 -0
  27. package/dist/esm/transaction.js.map +1 -1
  28. package/dist/types/appAccess.d.ts +28 -0
  29. package/dist/types/client/v2/indexer/models/types.d.ts +157 -8
  30. package/dist/types/logicsig.d.ts +2 -0
  31. package/dist/types/makeTxn.d.ts +9 -9
  32. package/dist/types/transaction.d.ts +17 -0
  33. package/dist/types/types/transactions/base.d.ts +71 -0
  34. package/package.json +1 -1
  35. package/src/appAccess.ts +298 -0
  36. package/src/client/v2/indexer/models/types.ts +423 -5
  37. package/src/logicsig.ts +68 -17
  38. package/src/makeTxn.ts +110 -12
  39. package/src/signing.ts +4 -4
  40. package/src/transaction.ts +162 -0
  41. package/src/types/transactions/base.ts +85 -0
@@ -0,0 +1,261 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.foreignArraysToResourceReferences = exports.convertIndicesToResourceReferences = exports.resourceReferencesToEncodingData = void 0;
4
+ const address_js_1 = require("./encoding/address.js");
5
+ const utils_js_1 = require("./utils/utils.js");
6
+ /**
7
+ * resourceReferencesToEncodingData translates an array of ResourceReferences into an array of encoding data
8
+ * maps.
9
+ */
10
+ function resourceReferencesToEncodingData(appIndex, references) {
11
+ const accessList = [];
12
+ function ensure(target) {
13
+ for (let idx = 0; idx < accessList.length; idx++) {
14
+ const a = accessList[idx];
15
+ if (a.get('d') === target.address &&
16
+ a.get('s') === target.assetIndex &&
17
+ a.get('p') === target.appIndex) {
18
+ return idx + 1; // 1-based index
19
+ }
20
+ }
21
+ if (target.address) {
22
+ accessList.push(new Map([['d', target.address]]));
23
+ }
24
+ if (target.assetIndex) {
25
+ accessList.push(new Map([['s', target.assetIndex]]));
26
+ }
27
+ if (target.appIndex) {
28
+ accessList.push(new Map([['p', target.appIndex]]));
29
+ }
30
+ return accessList.length; // length is 1-based position of new element
31
+ }
32
+ const zeroAddr = address_js_1.Address.zeroAddress();
33
+ for (const rr of references) {
34
+ if (rr.address || rr.assetIndex || rr.appIndex) {
35
+ ensure(rr);
36
+ continue;
37
+ }
38
+ if (rr.holding) {
39
+ const h = rr.holding;
40
+ let addrIdx = 0;
41
+ if (h.address && !h.address.equals(zeroAddr)) {
42
+ addrIdx = ensure({ address: h.address });
43
+ }
44
+ const assetIdx = ensure({ assetIndex: h.assetIndex });
45
+ accessList.push(new Map([
46
+ [
47
+ 'h',
48
+ new Map([
49
+ ['d', addrIdx],
50
+ ['s', assetIdx],
51
+ ]),
52
+ ],
53
+ ]));
54
+ continue;
55
+ }
56
+ if (rr.locals) {
57
+ const l = rr.locals;
58
+ let addrIdx = 0;
59
+ if (l.address && !l.address.equals(zeroAddr)) {
60
+ addrIdx = ensure({ address: l.address });
61
+ }
62
+ let appIdx = 0;
63
+ if (l.appIndex && BigInt(l.appIndex) !== appIndex) {
64
+ appIdx = ensure({ appIndex: l.appIndex });
65
+ }
66
+ accessList.push(new Map([
67
+ [
68
+ 'l',
69
+ new Map([
70
+ ['d', addrIdx],
71
+ ['p', appIdx],
72
+ ]),
73
+ ],
74
+ ]));
75
+ continue;
76
+ }
77
+ if (rr.box) {
78
+ const b = rr.box;
79
+ let appIdx = 0;
80
+ if (b.appIndex && BigInt(b.appIndex) !== appIndex) {
81
+ appIdx = ensure({ appIndex: b.appIndex });
82
+ }
83
+ accessList.push(new Map([
84
+ [
85
+ 'b',
86
+ new Map([
87
+ ['i', appIdx],
88
+ ['n', b.name],
89
+ ]),
90
+ ],
91
+ ]));
92
+ }
93
+ }
94
+ return accessList;
95
+ }
96
+ exports.resourceReferencesToEncodingData = resourceReferencesToEncodingData;
97
+ function convertIndicesToResourceReferences(accessList) {
98
+ const references = [];
99
+ for (const item of accessList) {
100
+ const address = item.get('d');
101
+ const assetIndex = item.get('s');
102
+ const appIndex = item.get('p');
103
+ if (address) {
104
+ references.push({ address });
105
+ continue;
106
+ }
107
+ if (assetIndex) {
108
+ references.push({ assetIndex });
109
+ continue;
110
+ }
111
+ if (appIndex) {
112
+ references.push({ appIndex });
113
+ continue;
114
+ }
115
+ const holding = item.get('h');
116
+ if (holding) {
117
+ const hAddressIndex = (0, utils_js_1.ensureSafeUnsignedInteger)(holding.get('d') ?? 0);
118
+ const hAssetIndex = (0, utils_js_1.ensureSafeUnsignedInteger)(holding.get('s'));
119
+ if (!hAssetIndex) {
120
+ throw new Error(`Holding missing asset index: ${holding}`);
121
+ }
122
+ const hAddress = hAddressIndex === 0
123
+ ? address_js_1.Address.zeroAddress()
124
+ : references[hAddressIndex - 1].address;
125
+ const asset = references[hAssetIndex - 1].assetIndex;
126
+ references.push({ holding: { address: hAddress, assetIndex: asset } });
127
+ continue;
128
+ }
129
+ const locals = item.get('l');
130
+ if (locals) {
131
+ const lAddressIndex = (0, utils_js_1.ensureSafeUnsignedInteger)(locals.get('d') ?? 0);
132
+ const lAppIndex = (0, utils_js_1.ensureSafeUnsignedInteger)(locals.get('p') ?? 0);
133
+ const lAddress = lAddressIndex === 0
134
+ ? address_js_1.Address.zeroAddress()
135
+ : references[lAddressIndex - 1].address;
136
+ const app = lAppIndex === 0
137
+ ? BigInt(0)
138
+ : references[lAppIndex - 1].appIndex;
139
+ references.push({ locals: { address: lAddress, appIndex: app } });
140
+ continue;
141
+ }
142
+ const box = item.get('b');
143
+ if (box) {
144
+ const bAppIndex = (0, utils_js_1.ensureSafeUnsignedInteger)(box.get('i') ?? 0);
145
+ const name = box.get('n');
146
+ if (!name) {
147
+ throw new Error(`Box missing name: ${box}`);
148
+ }
149
+ const app = bAppIndex === 0
150
+ ? BigInt(0)
151
+ : references[bAppIndex - 1].appIndex;
152
+ references.push({ box: { appIndex: app, name } });
153
+ }
154
+ }
155
+ return references;
156
+ }
157
+ exports.convertIndicesToResourceReferences = convertIndicesToResourceReferences;
158
+ /**
159
+ * foreignArraysToResourceReferences makes a single array of ResourceReferences from various foreign resource arrays.
160
+ * Note, runtime representation of ResourceReference uses addresses, app and asset identifiers, not indexes.
161
+ *
162
+ * @param accounts - optional array of accounts
163
+ * @param foreignAssets - optional array of foreign assets
164
+ * @param foreignApps - optional array of foreign apps
165
+ * @param holdings - optional array of holdings
166
+ * @param locals - optional array of locals
167
+ * @param boxes - optional array of boxes
168
+ */
169
+ function foreignArraysToResourceReferences({ appIndex, accounts, foreignAssets, foreignApps, holdings, locals, boxes, }) {
170
+ const accessList = [];
171
+ function ensureAddress(addr) {
172
+ let addr2;
173
+ if (typeof addr === 'string') {
174
+ if (addr === '') {
175
+ return;
176
+ }
177
+ addr2 = address_js_1.Address.fromString(addr);
178
+ }
179
+ else {
180
+ addr2 = addr;
181
+ }
182
+ if (addr2.equals(address_js_1.Address.zeroAddress())) {
183
+ return;
184
+ }
185
+ let addrFound = false;
186
+ for (const rr of accessList) {
187
+ if (!rr.address) {
188
+ continue;
189
+ }
190
+ let rrAddress = rr.address;
191
+ if (typeof rr.address === 'string') {
192
+ rrAddress = address_js_1.Address.fromString(rr.address);
193
+ }
194
+ if (rrAddress.equals(addr2)) {
195
+ addrFound = true;
196
+ break;
197
+ }
198
+ }
199
+ if (!addrFound) {
200
+ accessList.push({ address: addr });
201
+ }
202
+ }
203
+ function ensureAsset(asset) {
204
+ let assetFound = false;
205
+ for (const rr of accessList) {
206
+ if (rr.assetIndex === asset) {
207
+ assetFound = true;
208
+ break;
209
+ }
210
+ }
211
+ if (!assetFound) {
212
+ accessList.push({ assetIndex: asset });
213
+ }
214
+ }
215
+ function ensureApp(app) {
216
+ let appFound = false;
217
+ for (const rr of accessList) {
218
+ if (rr.appIndex === app) {
219
+ appFound = true;
220
+ break;
221
+ }
222
+ }
223
+ if (!appFound) {
224
+ accessList.push({ appIndex: app });
225
+ }
226
+ }
227
+ for (const acct of accounts ?? []) {
228
+ ensureAddress(acct);
229
+ }
230
+ for (const asset of foreignAssets ?? []) {
231
+ ensureAsset(asset);
232
+ }
233
+ for (const app of foreignApps ?? []) {
234
+ ensureApp(app);
235
+ }
236
+ for (const holding of holdings ?? []) {
237
+ if (holding.address) {
238
+ ensureAddress(holding.address);
239
+ }
240
+ ensureAsset(holding.assetIndex);
241
+ accessList.push({ holding });
242
+ }
243
+ for (const local of locals ?? []) {
244
+ if (local.address) {
245
+ ensureAddress(local.address);
246
+ }
247
+ if (local.appIndex && BigInt(local.appIndex) !== appIndex) {
248
+ ensureApp(local.appIndex);
249
+ }
250
+ accessList.push({ locals: local });
251
+ }
252
+ for (const box of boxes ?? []) {
253
+ if (box.appIndex && BigInt(box.appIndex) !== appIndex) {
254
+ ensureApp(box.appIndex);
255
+ }
256
+ accessList.push({ box });
257
+ }
258
+ return accessList;
259
+ }
260
+ exports.foreignArraysToResourceReferences = foreignArraysToResourceReferences;
261
+ //# sourceMappingURL=appAccess.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"appAccess.js","sourceRoot":"","sources":["../../src/appAccess.ts"],"names":[],"mappings":"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"}