@solana/transactions 2.0.0-experimental.f07dced → 2.0.0-experimental.f27be12
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/index.browser.cjs +229 -113
- package/dist/index.browser.cjs.map +1 -1
- package/dist/index.browser.js +223 -115
- package/dist/index.browser.js.map +1 -1
- package/dist/index.development.js +282 -163
- package/dist/index.development.js.map +1 -1
- package/dist/index.native.js +225 -115
- package/dist/index.native.js.map +1 -1
- package/dist/index.node.cjs +229 -113
- package/dist/index.node.cjs.map +1 -1
- package/dist/index.node.js +223 -115
- package/dist/index.node.js.map +1 -1
- package/dist/index.production.min.js +16 -8
- package/dist/types/accounts.d.ts +2 -2
- package/dist/types/accounts.d.ts.map +1 -0
- package/dist/types/blockhash.d.ts +6 -1
- package/dist/types/blockhash.d.ts.map +1 -0
- package/dist/types/compile-address-table-lookups.d.ts +1 -1
- package/dist/types/compile-address-table-lookups.d.ts.map +1 -0
- package/dist/types/compile-header.d.ts.map +1 -0
- package/dist/types/compile-instructions.d.ts +1 -1
- package/dist/types/compile-instructions.d.ts.map +1 -0
- package/dist/types/compile-lifetime-token.d.ts.map +1 -0
- package/dist/types/compile-static-accounts.d.ts +1 -1
- package/dist/types/compile-static-accounts.d.ts.map +1 -0
- package/dist/types/compile-transaction.d.ts.map +1 -0
- package/dist/types/create-transaction.d.ts.map +1 -0
- package/dist/types/durable-nonce.d.ts +20 -7
- package/dist/types/durable-nonce.d.ts.map +1 -0
- package/dist/types/fee-payer.d.ts +3 -2
- package/dist/types/fee-payer.d.ts.map +1 -0
- package/dist/types/index.d.ts +1 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/instructions.d.ts.map +1 -0
- package/dist/types/message.d.ts.map +1 -0
- package/dist/types/serializers/address-table-lookup.d.ts.map +1 -0
- package/dist/types/serializers/header.d.ts.map +1 -0
- package/dist/types/serializers/index.d.ts +2 -0
- package/dist/types/serializers/index.d.ts.map +1 -0
- package/dist/types/serializers/instruction.d.ts.map +1 -0
- package/dist/types/serializers/message.d.ts.map +1 -0
- package/dist/types/serializers/transaction-version.d.ts.map +1 -0
- package/dist/types/serializers/transaction.d.ts.map +1 -0
- package/dist/types/serializers/unimplemented.d.ts.map +1 -0
- package/dist/types/signatures.d.ts +13 -6
- package/dist/types/signatures.d.ts.map +1 -0
- package/dist/types/types.d.ts +7 -0
- package/dist/types/types.d.ts.map +1 -0
- package/dist/types/unsigned-transaction.d.ts +4 -0
- package/dist/types/unsigned-transaction.d.ts.map +1 -0
- package/dist/types/wire-transaction.d.ts +1 -1
- package/dist/types/wire-transaction.d.ts.map +1 -0
- package/package.json +18 -18
|
@@ -9,7 +9,7 @@ this.globalThis.solanaWeb3 = (function (exports) {
|
|
|
9
9
|
return value;
|
|
10
10
|
};
|
|
11
11
|
|
|
12
|
-
// ../../node_modules/.pnpm/@metaplex-foundation+umi-serializers-core@0.8.
|
|
12
|
+
// ../../node_modules/.pnpm/@metaplex-foundation+umi-serializers-core@0.8.9/node_modules/@metaplex-foundation/umi-serializers-core/dist/esm/bytes.mjs
|
|
13
13
|
var mergeBytes = (bytesArr) => {
|
|
14
14
|
const totalLength = bytesArr.reduce((total, arr) => total + arr.length, 0);
|
|
15
15
|
const result = new Uint8Array(totalLength);
|
|
@@ -29,7 +29,7 @@ this.globalThis.solanaWeb3 = (function (exports) {
|
|
|
29
29
|
};
|
|
30
30
|
var fixBytes = (bytes2, length) => padBytes(bytes2.slice(0, length), length);
|
|
31
31
|
|
|
32
|
-
// ../../node_modules/.pnpm/@metaplex-foundation+umi-serializers-core@0.8.
|
|
32
|
+
// ../../node_modules/.pnpm/@metaplex-foundation+umi-serializers-core@0.8.9/node_modules/@metaplex-foundation/umi-serializers-core/dist/esm/errors.mjs
|
|
33
33
|
var DeserializingEmptyBufferError = class extends Error {
|
|
34
34
|
constructor(serializer) {
|
|
35
35
|
super(`Serializer [${serializer}] cannot deserialize empty buffers.`);
|
|
@@ -50,7 +50,7 @@ this.globalThis.solanaWeb3 = (function (exports) {
|
|
|
50
50
|
}
|
|
51
51
|
};
|
|
52
52
|
|
|
53
|
-
// ../../node_modules/.pnpm/@metaplex-foundation+umi-serializers-core@0.8.
|
|
53
|
+
// ../../node_modules/.pnpm/@metaplex-foundation+umi-serializers-core@0.8.9/node_modules/@metaplex-foundation/umi-serializers-core/dist/esm/fixSerializer.mjs
|
|
54
54
|
function fixSerializer(serializer, fixedBytes, description) {
|
|
55
55
|
return {
|
|
56
56
|
description: description ?? `fixed(${fixedBytes}, ${serializer.description})`,
|
|
@@ -71,7 +71,7 @@ this.globalThis.solanaWeb3 = (function (exports) {
|
|
|
71
71
|
};
|
|
72
72
|
}
|
|
73
73
|
|
|
74
|
-
// ../../node_modules/.pnpm/@metaplex-foundation+umi-serializers-core@0.8.
|
|
74
|
+
// ../../node_modules/.pnpm/@metaplex-foundation+umi-serializers-core@0.8.9/node_modules/@metaplex-foundation/umi-serializers-core/dist/esm/mapSerializer.mjs
|
|
75
75
|
function mapSerializer(serializer, unmap, map) {
|
|
76
76
|
return {
|
|
77
77
|
description: serializer.description,
|
|
@@ -85,7 +85,7 @@ this.globalThis.solanaWeb3 = (function (exports) {
|
|
|
85
85
|
};
|
|
86
86
|
}
|
|
87
87
|
|
|
88
|
-
// ../../node_modules/.pnpm/@metaplex-foundation+umi-serializers-encodings@0.8.
|
|
88
|
+
// ../../node_modules/.pnpm/@metaplex-foundation+umi-serializers-encodings@0.8.9/node_modules/@metaplex-foundation/umi-serializers-encodings/dist/esm/errors.mjs
|
|
89
89
|
var InvalidBaseStringError = class extends Error {
|
|
90
90
|
constructor(value, base, cause) {
|
|
91
91
|
const message = `Expected a string of base ${base}, got [${value}].`;
|
|
@@ -95,7 +95,7 @@ this.globalThis.solanaWeb3 = (function (exports) {
|
|
|
95
95
|
}
|
|
96
96
|
};
|
|
97
97
|
|
|
98
|
-
// ../../node_modules/.pnpm/@metaplex-foundation+umi-serializers-encodings@0.8.
|
|
98
|
+
// ../../node_modules/.pnpm/@metaplex-foundation+umi-serializers-encodings@0.8.9/node_modules/@metaplex-foundation/umi-serializers-encodings/dist/esm/baseX.mjs
|
|
99
99
|
var baseX = (alphabet) => {
|
|
100
100
|
const base = alphabet.length;
|
|
101
101
|
const baseBigInt = BigInt(base);
|
|
@@ -149,16 +149,16 @@ this.globalThis.solanaWeb3 = (function (exports) {
|
|
|
149
149
|
};
|
|
150
150
|
};
|
|
151
151
|
|
|
152
|
-
// ../../node_modules/.pnpm/@metaplex-foundation+umi-serializers-encodings@0.8.
|
|
152
|
+
// ../../node_modules/.pnpm/@metaplex-foundation+umi-serializers-encodings@0.8.9/node_modules/@metaplex-foundation/umi-serializers-encodings/dist/esm/base58.mjs
|
|
153
153
|
var base58 = baseX("123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz");
|
|
154
154
|
|
|
155
|
-
// ../../node_modules/.pnpm/@metaplex-foundation+umi-serializers-encodings@0.8.
|
|
155
|
+
// ../../node_modules/.pnpm/@metaplex-foundation+umi-serializers-encodings@0.8.9/node_modules/@metaplex-foundation/umi-serializers-encodings/dist/esm/nullCharacters.mjs
|
|
156
156
|
var removeNullCharacters = (value) => (
|
|
157
157
|
// eslint-disable-next-line no-control-regex
|
|
158
158
|
value.replace(/\u0000/g, "")
|
|
159
159
|
);
|
|
160
160
|
|
|
161
|
-
// ../../node_modules/.pnpm/@metaplex-foundation+umi-serializers-encodings@0.8.
|
|
161
|
+
// ../../node_modules/.pnpm/@metaplex-foundation+umi-serializers-encodings@0.8.9/node_modules/@metaplex-foundation/umi-serializers-encodings/dist/esm/utf8.mjs
|
|
162
162
|
var utf8 = {
|
|
163
163
|
description: "utf8",
|
|
164
164
|
fixedSize: null,
|
|
@@ -172,14 +172,14 @@ this.globalThis.solanaWeb3 = (function (exports) {
|
|
|
172
172
|
}
|
|
173
173
|
};
|
|
174
174
|
|
|
175
|
-
// ../../node_modules/.pnpm/@metaplex-foundation+umi-serializers-numbers@0.8.
|
|
175
|
+
// ../../node_modules/.pnpm/@metaplex-foundation+umi-serializers-numbers@0.8.9/node_modules/@metaplex-foundation/umi-serializers-numbers/dist/esm/common.mjs
|
|
176
176
|
var Endian;
|
|
177
177
|
(function(Endian2) {
|
|
178
178
|
Endian2["Little"] = "le";
|
|
179
179
|
Endian2["Big"] = "be";
|
|
180
180
|
})(Endian || (Endian = {}));
|
|
181
181
|
|
|
182
|
-
// ../../node_modules/.pnpm/@metaplex-foundation+umi-serializers-numbers@0.8.
|
|
182
|
+
// ../../node_modules/.pnpm/@metaplex-foundation+umi-serializers-numbers@0.8.9/node_modules/@metaplex-foundation/umi-serializers-numbers/dist/esm/errors.mjs
|
|
183
183
|
var NumberOutOfRangeError = class extends RangeError {
|
|
184
184
|
constructor(serializer, min, max, actual) {
|
|
185
185
|
super(`Serializer [${serializer}] expected number to be between ${min} and ${max}, got ${actual}.`);
|
|
@@ -187,7 +187,7 @@ this.globalThis.solanaWeb3 = (function (exports) {
|
|
|
187
187
|
}
|
|
188
188
|
};
|
|
189
189
|
|
|
190
|
-
// ../../node_modules/.pnpm/@metaplex-foundation+umi-serializers-numbers@0.8.
|
|
190
|
+
// ../../node_modules/.pnpm/@metaplex-foundation+umi-serializers-numbers@0.8.9/node_modules/@metaplex-foundation/umi-serializers-numbers/dist/esm/utils.mjs
|
|
191
191
|
function numberFactory(input) {
|
|
192
192
|
let littleEndian;
|
|
193
193
|
let defaultDescription = input.name;
|
|
@@ -231,7 +231,7 @@ this.globalThis.solanaWeb3 = (function (exports) {
|
|
|
231
231
|
}
|
|
232
232
|
};
|
|
233
233
|
|
|
234
|
-
// ../../node_modules/.pnpm/@metaplex-foundation+umi-serializers-numbers@0.8.
|
|
234
|
+
// ../../node_modules/.pnpm/@metaplex-foundation+umi-serializers-numbers@0.8.9/node_modules/@metaplex-foundation/umi-serializers-numbers/dist/esm/u8.mjs
|
|
235
235
|
var u8 = (options = {}) => numberFactory({
|
|
236
236
|
name: "u8",
|
|
237
237
|
size: 1,
|
|
@@ -241,7 +241,7 @@ this.globalThis.solanaWeb3 = (function (exports) {
|
|
|
241
241
|
options
|
|
242
242
|
});
|
|
243
243
|
|
|
244
|
-
// ../../node_modules/.pnpm/@metaplex-foundation+umi-serializers-numbers@0.8.
|
|
244
|
+
// ../../node_modules/.pnpm/@metaplex-foundation+umi-serializers-numbers@0.8.9/node_modules/@metaplex-foundation/umi-serializers-numbers/dist/esm/u32.mjs
|
|
245
245
|
var u32 = (options = {}) => numberFactory({
|
|
246
246
|
name: "u32",
|
|
247
247
|
size: 4,
|
|
@@ -251,7 +251,7 @@ this.globalThis.solanaWeb3 = (function (exports) {
|
|
|
251
251
|
options
|
|
252
252
|
});
|
|
253
253
|
|
|
254
|
-
// ../../node_modules/.pnpm/@metaplex-foundation+umi-serializers-numbers@0.8.
|
|
254
|
+
// ../../node_modules/.pnpm/@metaplex-foundation+umi-serializers-numbers@0.8.9/node_modules/@metaplex-foundation/umi-serializers-numbers/dist/esm/shortU16.mjs
|
|
255
255
|
var shortU16 = (options = {}) => ({
|
|
256
256
|
description: options.description ?? "shortU16",
|
|
257
257
|
fixedSize: null,
|
|
@@ -288,7 +288,7 @@ this.globalThis.solanaWeb3 = (function (exports) {
|
|
|
288
288
|
}
|
|
289
289
|
});
|
|
290
290
|
|
|
291
|
-
// ../../node_modules/.pnpm/@metaplex-foundation+umi-serializers@0.8.
|
|
291
|
+
// ../../node_modules/.pnpm/@metaplex-foundation+umi-serializers@0.8.9/node_modules/@metaplex-foundation/umi-serializers/dist/esm/errors.mjs
|
|
292
292
|
var InvalidNumberOfItemsError = class extends Error {
|
|
293
293
|
constructor(serializer, expected, actual) {
|
|
294
294
|
super(`Expected [${serializer}] to have ${expected} items, got ${actual}.`);
|
|
@@ -308,12 +308,12 @@ this.globalThis.solanaWeb3 = (function (exports) {
|
|
|
308
308
|
}
|
|
309
309
|
};
|
|
310
310
|
|
|
311
|
-
// ../../node_modules/.pnpm/@metaplex-foundation+umi-serializers@0.8.
|
|
311
|
+
// ../../node_modules/.pnpm/@metaplex-foundation+umi-serializers@0.8.9/node_modules/@metaplex-foundation/umi-serializers/dist/esm/sumSerializerSizes.mjs
|
|
312
312
|
function sumSerializerSizes(sizes) {
|
|
313
313
|
return sizes.reduce((all, size) => all === null || size === null ? null : all + size, 0);
|
|
314
314
|
}
|
|
315
315
|
|
|
316
|
-
// ../../node_modules/.pnpm/@metaplex-foundation+umi-serializers@0.8.
|
|
316
|
+
// ../../node_modules/.pnpm/@metaplex-foundation+umi-serializers@0.8.9/node_modules/@metaplex-foundation/umi-serializers/dist/esm/utils.mjs
|
|
317
317
|
function getResolvedSize(size, childrenSizes, bytes2, offset) {
|
|
318
318
|
if (typeof size === "number") {
|
|
319
319
|
return [size, offset];
|
|
@@ -349,7 +349,7 @@ this.globalThis.solanaWeb3 = (function (exports) {
|
|
|
349
349
|
return typeof size === "object" ? size.serialize(realSize) : new Uint8Array();
|
|
350
350
|
}
|
|
351
351
|
|
|
352
|
-
// ../../node_modules/.pnpm/@metaplex-foundation+umi-serializers@0.8.
|
|
352
|
+
// ../../node_modules/.pnpm/@metaplex-foundation+umi-serializers@0.8.9/node_modules/@metaplex-foundation/umi-serializers/dist/esm/array.mjs
|
|
353
353
|
function array(item, options = {}) {
|
|
354
354
|
const size = options.size ?? u32();
|
|
355
355
|
if (size === "remainder" && item.fixedSize === null) {
|
|
@@ -382,7 +382,7 @@ this.globalThis.solanaWeb3 = (function (exports) {
|
|
|
382
382
|
};
|
|
383
383
|
}
|
|
384
384
|
|
|
385
|
-
// ../../node_modules/.pnpm/@metaplex-foundation+umi-serializers@0.8.
|
|
385
|
+
// ../../node_modules/.pnpm/@metaplex-foundation+umi-serializers@0.8.9/node_modules/@metaplex-foundation/umi-serializers/dist/esm/bytes.mjs
|
|
386
386
|
function bytes(options = {}) {
|
|
387
387
|
const size = options.size ?? "variable";
|
|
388
388
|
const description = options.description ?? `bytes(${getSizeDescription(size)})`;
|
|
@@ -429,7 +429,7 @@ this.globalThis.solanaWeb3 = (function (exports) {
|
|
|
429
429
|
};
|
|
430
430
|
}
|
|
431
431
|
|
|
432
|
-
// ../../node_modules/.pnpm/@metaplex-foundation+umi-serializers@0.8.
|
|
432
|
+
// ../../node_modules/.pnpm/@metaplex-foundation+umi-serializers@0.8.9/node_modules/@metaplex-foundation/umi-serializers/dist/esm/string.mjs
|
|
433
433
|
function string(options = {}) {
|
|
434
434
|
const size = options.size ?? u32();
|
|
435
435
|
const encoding = options.encoding ?? utf8;
|
|
@@ -470,7 +470,7 @@ this.globalThis.solanaWeb3 = (function (exports) {
|
|
|
470
470
|
};
|
|
471
471
|
}
|
|
472
472
|
|
|
473
|
-
// ../../node_modules/.pnpm/@metaplex-foundation+umi-serializers@0.8.
|
|
473
|
+
// ../../node_modules/.pnpm/@metaplex-foundation+umi-serializers@0.8.9/node_modules/@metaplex-foundation/umi-serializers/dist/esm/struct.mjs
|
|
474
474
|
function struct(fields, options = {}) {
|
|
475
475
|
const fieldDescriptions = fields.map(([name, serializer]) => `${String(name)}: ${serializer.description}`).join(", ");
|
|
476
476
|
return {
|
|
@@ -493,6 +493,20 @@ this.globalThis.solanaWeb3 = (function (exports) {
|
|
|
493
493
|
};
|
|
494
494
|
}
|
|
495
495
|
|
|
496
|
+
// src/unsigned-transaction.ts
|
|
497
|
+
function getUnsignedTransaction(transaction) {
|
|
498
|
+
if ("signatures" in transaction) {
|
|
499
|
+
const {
|
|
500
|
+
signatures: _,
|
|
501
|
+
// eslint-disable-line @typescript-eslint/no-unused-vars
|
|
502
|
+
...unsignedTransaction
|
|
503
|
+
} = transaction;
|
|
504
|
+
return unsignedTransaction;
|
|
505
|
+
} else {
|
|
506
|
+
return transaction;
|
|
507
|
+
}
|
|
508
|
+
}
|
|
509
|
+
|
|
496
510
|
// src/blockhash.ts
|
|
497
511
|
function assertIsBlockhash(putativeBlockhash) {
|
|
498
512
|
try {
|
|
@@ -514,6 +528,17 @@ this.globalThis.solanaWeb3 = (function (exports) {
|
|
|
514
528
|
});
|
|
515
529
|
}
|
|
516
530
|
}
|
|
531
|
+
function setTransactionLifetimeUsingBlockhash(blockhashLifetimeConstraint, transaction) {
|
|
532
|
+
if ("lifetimeConstraint" in transaction && transaction.lifetimeConstraint.blockhash === blockhashLifetimeConstraint.blockhash && transaction.lifetimeConstraint.lastValidBlockHeight === blockhashLifetimeConstraint.lastValidBlockHeight) {
|
|
533
|
+
return transaction;
|
|
534
|
+
}
|
|
535
|
+
const out = {
|
|
536
|
+
...getUnsignedTransaction(transaction),
|
|
537
|
+
lifetimeConstraint: blockhashLifetimeConstraint
|
|
538
|
+
};
|
|
539
|
+
Object.freeze(out);
|
|
540
|
+
return out;
|
|
541
|
+
}
|
|
517
542
|
|
|
518
543
|
// src/create-transaction.ts
|
|
519
544
|
function createTransaction({
|
|
@@ -527,82 +552,120 @@ this.globalThis.solanaWeb3 = (function (exports) {
|
|
|
527
552
|
return out;
|
|
528
553
|
}
|
|
529
554
|
|
|
555
|
+
// ../instructions/dist/index.browser.js
|
|
556
|
+
var AccountRole = /* @__PURE__ */ ((AccountRole2) => {
|
|
557
|
+
AccountRole2[AccountRole2["WRITABLE_SIGNER"] = /* 3 */
|
|
558
|
+
3] = "WRITABLE_SIGNER";
|
|
559
|
+
AccountRole2[AccountRole2["READONLY_SIGNER"] = /* 2 */
|
|
560
|
+
2] = "READONLY_SIGNER";
|
|
561
|
+
AccountRole2[AccountRole2["WRITABLE"] = /* 1 */
|
|
562
|
+
1] = "WRITABLE";
|
|
563
|
+
AccountRole2[AccountRole2["READONLY"] = /* 0 */
|
|
564
|
+
0] = "READONLY";
|
|
565
|
+
return AccountRole2;
|
|
566
|
+
})(AccountRole || {});
|
|
567
|
+
var IS_WRITABLE_BITMASK = 1;
|
|
568
|
+
function isSignerRole(role) {
|
|
569
|
+
return role >= 2;
|
|
570
|
+
}
|
|
571
|
+
function isWritableRole(role) {
|
|
572
|
+
return (role & IS_WRITABLE_BITMASK) !== 0;
|
|
573
|
+
}
|
|
574
|
+
function mergeRoles(roleA, roleB) {
|
|
575
|
+
return roleA | roleB;
|
|
576
|
+
}
|
|
577
|
+
|
|
578
|
+
// src/durable-nonce.ts
|
|
579
|
+
var RECENT_BLOCKHASHES_SYSVAR_ADDRESS = "SysvarRecentB1ockHashes11111111111111111111";
|
|
580
|
+
var SYSTEM_PROGRAM_ADDRESS = "11111111111111111111111111111111";
|
|
581
|
+
function assertIsDurableNonceTransaction(transaction) {
|
|
582
|
+
if (!isDurableNonceTransaction(transaction)) {
|
|
583
|
+
throw new Error("Transaction is not a durable nonce transaction");
|
|
584
|
+
}
|
|
585
|
+
}
|
|
586
|
+
function createAdvanceNonceAccountInstruction(nonceAccountAddress, nonceAuthorityAddress) {
|
|
587
|
+
return {
|
|
588
|
+
accounts: [
|
|
589
|
+
{ address: nonceAccountAddress, role: AccountRole.WRITABLE },
|
|
590
|
+
{
|
|
591
|
+
address: RECENT_BLOCKHASHES_SYSVAR_ADDRESS,
|
|
592
|
+
role: AccountRole.READONLY
|
|
593
|
+
},
|
|
594
|
+
{ address: nonceAuthorityAddress, role: AccountRole.READONLY_SIGNER }
|
|
595
|
+
],
|
|
596
|
+
data: new Uint8Array([4, 0, 0, 0]),
|
|
597
|
+
programAddress: SYSTEM_PROGRAM_ADDRESS
|
|
598
|
+
};
|
|
599
|
+
}
|
|
600
|
+
function isAdvanceNonceAccountInstruction(instruction) {
|
|
601
|
+
return instruction.programAddress === SYSTEM_PROGRAM_ADDRESS && // Test for `AdvanceNonceAccount` instruction data
|
|
602
|
+
instruction.data != null && isAdvanceNonceAccountInstructionData(instruction.data) && // Test for exactly 3 accounts
|
|
603
|
+
instruction.accounts?.length === 3 && // First account is nonce account address
|
|
604
|
+
instruction.accounts[0].address != null && instruction.accounts[0].role === AccountRole.WRITABLE && // Second account is recent blockhashes sysvar
|
|
605
|
+
instruction.accounts[1].address === RECENT_BLOCKHASHES_SYSVAR_ADDRESS && instruction.accounts[1].role === AccountRole.READONLY && // Third account is nonce authority account
|
|
606
|
+
instruction.accounts[2].address != null && instruction.accounts[2].role === AccountRole.READONLY_SIGNER;
|
|
607
|
+
}
|
|
608
|
+
function isAdvanceNonceAccountInstructionData(data) {
|
|
609
|
+
return data.byteLength === 4 && data[0] === 4 && data[1] === 0 && data[2] === 0 && data[3] === 0;
|
|
610
|
+
}
|
|
611
|
+
function isDurableNonceTransaction(transaction) {
|
|
612
|
+
return "lifetimeConstraint" in transaction && typeof transaction.lifetimeConstraint.nonce === "string" && transaction.instructions[0] != null && isAdvanceNonceAccountInstruction(transaction.instructions[0]);
|
|
613
|
+
}
|
|
614
|
+
function setTransactionLifetimeUsingDurableNonce({
|
|
615
|
+
nonce,
|
|
616
|
+
nonceAccountAddress,
|
|
617
|
+
nonceAuthorityAddress
|
|
618
|
+
}, transaction) {
|
|
619
|
+
const isAlreadyDurableNonceTransaction = isDurableNonceTransaction(transaction);
|
|
620
|
+
if (isAlreadyDurableNonceTransaction && transaction.lifetimeConstraint.nonce === nonce && transaction.instructions[0].accounts[0].address === nonceAccountAddress && transaction.instructions[0].accounts[2].address === nonceAuthorityAddress) {
|
|
621
|
+
return transaction;
|
|
622
|
+
}
|
|
623
|
+
const out = {
|
|
624
|
+
...getUnsignedTransaction(transaction),
|
|
625
|
+
instructions: [
|
|
626
|
+
createAdvanceNonceAccountInstruction(nonceAccountAddress, nonceAuthorityAddress),
|
|
627
|
+
...isAlreadyDurableNonceTransaction ? transaction.instructions.slice(1) : transaction.instructions
|
|
628
|
+
],
|
|
629
|
+
lifetimeConstraint: {
|
|
630
|
+
nonce
|
|
631
|
+
}
|
|
632
|
+
};
|
|
633
|
+
Object.freeze(out);
|
|
634
|
+
return out;
|
|
635
|
+
}
|
|
636
|
+
|
|
530
637
|
// src/fee-payer.ts
|
|
531
638
|
function setTransactionFeePayer(feePayer, transaction) {
|
|
532
639
|
if ("feePayer" in transaction && feePayer === transaction.feePayer) {
|
|
533
640
|
return transaction;
|
|
534
641
|
}
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
// eslint-disable-line @typescript-eslint/no-unused-vars
|
|
540
|
-
...unsignedTransaction
|
|
541
|
-
} = transaction;
|
|
542
|
-
out = {
|
|
543
|
-
...unsignedTransaction,
|
|
544
|
-
feePayer
|
|
545
|
-
};
|
|
546
|
-
} else {
|
|
547
|
-
out = {
|
|
548
|
-
...transaction,
|
|
549
|
-
feePayer
|
|
550
|
-
};
|
|
551
|
-
}
|
|
642
|
+
const out = {
|
|
643
|
+
...getUnsignedTransaction(transaction),
|
|
644
|
+
feePayer
|
|
645
|
+
};
|
|
552
646
|
Object.freeze(out);
|
|
553
647
|
return out;
|
|
554
648
|
}
|
|
555
649
|
|
|
556
650
|
// src/instructions.ts
|
|
557
|
-
function replaceInstructions(transaction, nextInstructions) {
|
|
558
|
-
let out;
|
|
559
|
-
if ("signatures" in transaction) {
|
|
560
|
-
const {
|
|
561
|
-
signatures: _,
|
|
562
|
-
// eslint-disable-line @typescript-eslint/no-unused-vars
|
|
563
|
-
...unsignedTransaction
|
|
564
|
-
} = transaction;
|
|
565
|
-
out = {
|
|
566
|
-
...unsignedTransaction,
|
|
567
|
-
instructions: nextInstructions
|
|
568
|
-
};
|
|
569
|
-
} else {
|
|
570
|
-
out = {
|
|
571
|
-
...transaction,
|
|
572
|
-
instructions: nextInstructions
|
|
573
|
-
};
|
|
574
|
-
}
|
|
575
|
-
return out;
|
|
576
|
-
}
|
|
577
651
|
function appendTransactionInstruction(instruction, transaction) {
|
|
578
|
-
const
|
|
579
|
-
|
|
652
|
+
const out = {
|
|
653
|
+
...getUnsignedTransaction(transaction),
|
|
654
|
+
instructions: [...transaction.instructions, instruction]
|
|
655
|
+
};
|
|
580
656
|
Object.freeze(out);
|
|
581
657
|
return out;
|
|
582
658
|
}
|
|
583
659
|
function prependTransactionInstruction(instruction, transaction) {
|
|
584
|
-
const
|
|
585
|
-
|
|
660
|
+
const out = {
|
|
661
|
+
...getUnsignedTransaction(transaction),
|
|
662
|
+
instructions: [instruction, ...transaction.instructions]
|
|
663
|
+
};
|
|
586
664
|
Object.freeze(out);
|
|
587
665
|
return out;
|
|
588
666
|
}
|
|
589
|
-
|
|
590
|
-
|
|
591
|
-
description: config?.description ?? ("A 32-byte account address" ),
|
|
592
|
-
encoding: base58,
|
|
593
|
-
size: 32
|
|
594
|
-
});
|
|
595
|
-
}
|
|
596
|
-
function getBase58EncodedAddressComparator() {
|
|
597
|
-
return new Intl.Collator("en", {
|
|
598
|
-
caseFirst: "lower",
|
|
599
|
-
ignorePunctuation: false,
|
|
600
|
-
localeMatcher: "best fit",
|
|
601
|
-
numeric: false,
|
|
602
|
-
sensitivity: "variant",
|
|
603
|
-
usage: "sort"
|
|
604
|
-
}).compare;
|
|
605
|
-
}
|
|
667
|
+
|
|
668
|
+
// ../assertions/dist/index.browser.js
|
|
606
669
|
function assertIsSecureContext() {
|
|
607
670
|
if (!globalThis.isSecureContext) {
|
|
608
671
|
throw new Error(
|
|
@@ -622,43 +685,32 @@ this.globalThis.solanaWeb3 = (function (exports) {
|
|
|
622
685
|
throw new Error("No signing implementation could be found");
|
|
623
686
|
}
|
|
624
687
|
}
|
|
625
|
-
|
|
688
|
+
function getAddressCodec(config) {
|
|
689
|
+
return string({
|
|
690
|
+
description: config?.description ?? ("A 32-byte account address" ),
|
|
691
|
+
encoding: base58,
|
|
692
|
+
size: 32
|
|
693
|
+
});
|
|
694
|
+
}
|
|
695
|
+
function getAddressComparator() {
|
|
696
|
+
return new Intl.Collator("en", {
|
|
697
|
+
caseFirst: "lower",
|
|
698
|
+
ignorePunctuation: false,
|
|
699
|
+
localeMatcher: "best fit",
|
|
700
|
+
numeric: false,
|
|
701
|
+
sensitivity: "variant",
|
|
702
|
+
usage: "sort"
|
|
703
|
+
}).compare;
|
|
704
|
+
}
|
|
705
|
+
async function getAddressFromPublicKey(publicKey) {
|
|
626
706
|
await assertKeyExporterIsAvailable();
|
|
627
707
|
if (publicKey.type !== "public" || publicKey.algorithm.name !== "Ed25519") {
|
|
628
708
|
throw new Error("The `CryptoKey` must be an `Ed25519` public key");
|
|
629
709
|
}
|
|
630
710
|
const publicKeyBytes = await crypto.subtle.exportKey("raw", publicKey);
|
|
631
|
-
const [base58EncodedAddress] =
|
|
711
|
+
const [base58EncodedAddress] = getAddressCodec().deserialize(new Uint8Array(publicKeyBytes));
|
|
632
712
|
return base58EncodedAddress;
|
|
633
713
|
}
|
|
634
|
-
async function signBytes(key, data) {
|
|
635
|
-
await assertSigningCapabilityIsAvailable();
|
|
636
|
-
const signedData = await crypto.subtle.sign("Ed25519", key, data);
|
|
637
|
-
return new Uint8Array(signedData);
|
|
638
|
-
}
|
|
639
|
-
|
|
640
|
-
// ../instructions/dist/index.browser.js
|
|
641
|
-
var AccountRole = /* @__PURE__ */ ((AccountRole2) => {
|
|
642
|
-
AccountRole2[AccountRole2["WRITABLE_SIGNER"] = /* 3 */
|
|
643
|
-
3] = "WRITABLE_SIGNER";
|
|
644
|
-
AccountRole2[AccountRole2["READONLY_SIGNER"] = /* 2 */
|
|
645
|
-
2] = "READONLY_SIGNER";
|
|
646
|
-
AccountRole2[AccountRole2["WRITABLE"] = /* 1 */
|
|
647
|
-
1] = "WRITABLE";
|
|
648
|
-
AccountRole2[AccountRole2["READONLY"] = /* 0 */
|
|
649
|
-
0] = "READONLY";
|
|
650
|
-
return AccountRole2;
|
|
651
|
-
})(AccountRole || {});
|
|
652
|
-
var IS_WRITABLE_BITMASK = 1;
|
|
653
|
-
function isSignerRole(role) {
|
|
654
|
-
return role >= 2;
|
|
655
|
-
}
|
|
656
|
-
function isWritableRole(role) {
|
|
657
|
-
return (role & IS_WRITABLE_BITMASK) !== 0;
|
|
658
|
-
}
|
|
659
|
-
function mergeRoles(roleA, roleB) {
|
|
660
|
-
return roleA | roleB;
|
|
661
|
-
}
|
|
662
714
|
|
|
663
715
|
// src/accounts.ts
|
|
664
716
|
function upsert(addressMap, address, update) {
|
|
@@ -713,7 +765,7 @@ this.globalThis.solanaWeb3 = (function (exports) {
|
|
|
713
765
|
const shouldReplaceEntry = (
|
|
714
766
|
// Consider using the new LOOKUP_TABLE if its address is different...
|
|
715
767
|
entry.lookupTableAddress !== accountMeta.lookupTableAddress && // ...and sorts before the existing one.
|
|
716
|
-
(addressComparator || (addressComparator =
|
|
768
|
+
(addressComparator || (addressComparator = getAddressComparator()))(
|
|
717
769
|
accountMeta.lookupTableAddress,
|
|
718
770
|
entry.lookupTableAddress
|
|
719
771
|
) < 0
|
|
@@ -819,7 +871,7 @@ this.globalThis.solanaWeb3 = (function (exports) {
|
|
|
819
871
|
if (leftIsWritable !== isWritableRole(rightEntry.role)) {
|
|
820
872
|
return leftIsWritable ? -1 : 1;
|
|
821
873
|
}
|
|
822
|
-
addressComparator || (addressComparator =
|
|
874
|
+
addressComparator || (addressComparator = getAddressComparator());
|
|
823
875
|
if (leftEntry[TYPE] === 1 /* LOOKUP_TABLE */ && rightEntry[TYPE] === 1 /* LOOKUP_TABLE */ && leftEntry.lookupTableAddress !== rightEntry.lookupTableAddress) {
|
|
824
876
|
return addressComparator(leftEntry.lookupTableAddress, rightEntry.lookupTableAddress);
|
|
825
877
|
} else {
|
|
@@ -850,7 +902,7 @@ this.globalThis.solanaWeb3 = (function (exports) {
|
|
|
850
902
|
entry.readableIndices.push(account.addressIndex);
|
|
851
903
|
}
|
|
852
904
|
}
|
|
853
|
-
return Object.keys(index).sort(
|
|
905
|
+
return Object.keys(index).sort(getAddressComparator()).map((lookupTableAddress) => ({
|
|
854
906
|
lookupTableAddress,
|
|
855
907
|
...index[lookupTableAddress]
|
|
856
908
|
}));
|
|
@@ -930,13 +982,31 @@ this.globalThis.solanaWeb3 = (function (exports) {
|
|
|
930
982
|
};
|
|
931
983
|
}
|
|
932
984
|
|
|
985
|
+
// src/compile-transaction.ts
|
|
986
|
+
function getCompiledTransaction(transaction) {
|
|
987
|
+
const compiledMessage = compileMessage(transaction);
|
|
988
|
+
let signatures;
|
|
989
|
+
if ("signatures" in transaction) {
|
|
990
|
+
signatures = [];
|
|
991
|
+
for (let ii = 0; ii < compiledMessage.header.numSignerAccounts; ii++) {
|
|
992
|
+
signatures[ii] = transaction.signatures[compiledMessage.staticAccounts[ii]] ?? new Uint8Array(Array(64).fill(0));
|
|
993
|
+
}
|
|
994
|
+
} else {
|
|
995
|
+
signatures = Array(compiledMessage.header.numSignerAccounts).fill(new Uint8Array(Array(64).fill(0)));
|
|
996
|
+
}
|
|
997
|
+
return {
|
|
998
|
+
compiledMessage,
|
|
999
|
+
signatures
|
|
1000
|
+
};
|
|
1001
|
+
}
|
|
1002
|
+
|
|
933
1003
|
// src/serializers/address-table-lookup.ts
|
|
934
1004
|
function getAddressTableLookupCodec() {
|
|
935
1005
|
return struct(
|
|
936
1006
|
[
|
|
937
1007
|
[
|
|
938
1008
|
"lookupTableAddress",
|
|
939
|
-
|
|
1009
|
+
getAddressCodec(
|
|
940
1010
|
{
|
|
941
1011
|
description: "The address of the address lookup table account from which instruction addresses should be looked up"
|
|
942
1012
|
}
|
|
@@ -1015,7 +1085,7 @@ this.globalThis.solanaWeb3 = (function (exports) {
|
|
|
1015
1085
|
)
|
|
1016
1086
|
],
|
|
1017
1087
|
[
|
|
1018
|
-
"
|
|
1088
|
+
"accountIndices",
|
|
1019
1089
|
array(
|
|
1020
1090
|
u8({
|
|
1021
1091
|
description: "The index of an account, according to the well-ordered accounts list for this transaction"
|
|
@@ -1035,23 +1105,23 @@ this.globalThis.solanaWeb3 = (function (exports) {
|
|
|
1035
1105
|
]
|
|
1036
1106
|
]),
|
|
1037
1107
|
(value) => {
|
|
1038
|
-
if (value.
|
|
1108
|
+
if (value.accountIndices !== void 0 && value.data !== void 0) {
|
|
1039
1109
|
return value;
|
|
1040
1110
|
}
|
|
1041
1111
|
return {
|
|
1042
1112
|
...value,
|
|
1043
|
-
|
|
1113
|
+
accountIndices: value.accountIndices ?? [],
|
|
1044
1114
|
data: value.data ?? new Uint8Array(0)
|
|
1045
1115
|
};
|
|
1046
1116
|
},
|
|
1047
1117
|
(value) => {
|
|
1048
|
-
if (value.
|
|
1118
|
+
if (value.accountIndices.length && value.data.byteLength) {
|
|
1049
1119
|
return value;
|
|
1050
1120
|
}
|
|
1051
|
-
const {
|
|
1121
|
+
const { accountIndices, data, ...rest } = value;
|
|
1052
1122
|
return {
|
|
1053
1123
|
...rest,
|
|
1054
|
-
...
|
|
1124
|
+
...accountIndices.length ? { accountIndices } : null,
|
|
1055
1125
|
...data.byteLength ? { data } : null
|
|
1056
1126
|
};
|
|
1057
1127
|
}
|
|
@@ -1137,7 +1207,7 @@ this.globalThis.solanaWeb3 = (function (exports) {
|
|
|
1137
1207
|
["header", getMessageHeaderCodec()],
|
|
1138
1208
|
[
|
|
1139
1209
|
"staticAccounts",
|
|
1140
|
-
array(
|
|
1210
|
+
array(getAddressCodec(), {
|
|
1141
1211
|
description: "A compact-array of static account addresses belonging to this transaction" ,
|
|
1142
1212
|
size: shortU16()
|
|
1143
1213
|
})
|
|
@@ -1173,48 +1243,6 @@ this.globalThis.solanaWeb3 = (function (exports) {
|
|
|
1173
1243
|
};
|
|
1174
1244
|
}
|
|
1175
1245
|
|
|
1176
|
-
// src/signatures.ts
|
|
1177
|
-
async function getCompiledMessageSignature(message, secretKey) {
|
|
1178
|
-
const wireMessageBytes = getCompiledMessageEncoder().serialize(message);
|
|
1179
|
-
const signature = await signBytes(secretKey, wireMessageBytes);
|
|
1180
|
-
return signature;
|
|
1181
|
-
}
|
|
1182
|
-
async function signTransaction(keyPair, transaction) {
|
|
1183
|
-
const compiledMessage = compileMessage(transaction);
|
|
1184
|
-
const [signerPublicKey, signature] = await Promise.all([
|
|
1185
|
-
getBase58EncodedAddressFromPublicKey(keyPair.publicKey),
|
|
1186
|
-
getCompiledMessageSignature(compiledMessage, keyPair.privateKey)
|
|
1187
|
-
]);
|
|
1188
|
-
const nextSignatures = {
|
|
1189
|
-
..."signatures" in transaction ? transaction.signatures : null,
|
|
1190
|
-
...{ [signerPublicKey]: signature }
|
|
1191
|
-
};
|
|
1192
|
-
const out = {
|
|
1193
|
-
...transaction,
|
|
1194
|
-
signatures: nextSignatures
|
|
1195
|
-
};
|
|
1196
|
-
Object.freeze(out);
|
|
1197
|
-
return out;
|
|
1198
|
-
}
|
|
1199
|
-
|
|
1200
|
-
// src/compile-transaction.ts
|
|
1201
|
-
function getCompiledTransaction(transaction) {
|
|
1202
|
-
const compiledMessage = compileMessage(transaction);
|
|
1203
|
-
let signatures;
|
|
1204
|
-
if ("signatures" in transaction) {
|
|
1205
|
-
signatures = [];
|
|
1206
|
-
for (let ii = 0; ii < compiledMessage.header.numSignerAccounts; ii++) {
|
|
1207
|
-
signatures[ii] = transaction.signatures[compiledMessage.staticAccounts[ii]] ?? new Uint8Array(Array(64).fill(0));
|
|
1208
|
-
}
|
|
1209
|
-
} else {
|
|
1210
|
-
signatures = Array(compiledMessage.header.numSignerAccounts).fill(new Uint8Array(Array(64).fill(0)));
|
|
1211
|
-
}
|
|
1212
|
-
return {
|
|
1213
|
-
compiledMessage,
|
|
1214
|
-
signatures
|
|
1215
|
-
};
|
|
1216
|
-
}
|
|
1217
|
-
|
|
1218
1246
|
// src/serializers/transaction.ts
|
|
1219
1247
|
var BASE_CONFIG3 = {
|
|
1220
1248
|
description: "The wire format of a Solana transaction" ,
|
|
@@ -1242,6 +1270,89 @@ this.globalThis.solanaWeb3 = (function (exports) {
|
|
|
1242
1270
|
};
|
|
1243
1271
|
}
|
|
1244
1272
|
|
|
1273
|
+
// ../keys/dist/index.browser.js
|
|
1274
|
+
async function signBytes(key, data) {
|
|
1275
|
+
await assertSigningCapabilityIsAvailable();
|
|
1276
|
+
const signedData = await crypto.subtle.sign("Ed25519", key, data);
|
|
1277
|
+
return new Uint8Array(signedData);
|
|
1278
|
+
}
|
|
1279
|
+
|
|
1280
|
+
// src/signatures.ts
|
|
1281
|
+
function assertIsTransactionSignature(putativeTransactionSignature) {
|
|
1282
|
+
try {
|
|
1283
|
+
if (
|
|
1284
|
+
// Lowest value (64 bytes of zeroes)
|
|
1285
|
+
putativeTransactionSignature.length < 64 || // Highest value (64 bytes of 255)
|
|
1286
|
+
putativeTransactionSignature.length > 88
|
|
1287
|
+
) {
|
|
1288
|
+
throw new Error("Expected input string to decode to a byte array of length 64.");
|
|
1289
|
+
}
|
|
1290
|
+
const bytes2 = base58.serialize(putativeTransactionSignature);
|
|
1291
|
+
const numBytes = bytes2.byteLength;
|
|
1292
|
+
if (numBytes !== 64) {
|
|
1293
|
+
throw new Error(`Expected input string to decode to a byte array of length 64. Actual length: ${numBytes}`);
|
|
1294
|
+
}
|
|
1295
|
+
} catch (e) {
|
|
1296
|
+
throw new Error(`\`${putativeTransactionSignature}\` is not a transaction signature`, {
|
|
1297
|
+
cause: e
|
|
1298
|
+
});
|
|
1299
|
+
}
|
|
1300
|
+
}
|
|
1301
|
+
function isTransactionSignature(putativeTransactionSignature) {
|
|
1302
|
+
if (
|
|
1303
|
+
// Lowest value (64 bytes of zeroes)
|
|
1304
|
+
putativeTransactionSignature.length < 64 || // Highest value (64 bytes of 255)
|
|
1305
|
+
putativeTransactionSignature.length > 88
|
|
1306
|
+
) {
|
|
1307
|
+
return false;
|
|
1308
|
+
}
|
|
1309
|
+
const bytes2 = base58.serialize(putativeTransactionSignature);
|
|
1310
|
+
const numBytes = bytes2.byteLength;
|
|
1311
|
+
if (numBytes !== 64) {
|
|
1312
|
+
return false;
|
|
1313
|
+
}
|
|
1314
|
+
return true;
|
|
1315
|
+
}
|
|
1316
|
+
async function getCompiledMessageSignature(message, secretKey) {
|
|
1317
|
+
const wireMessageBytes = getCompiledMessageEncoder().serialize(message);
|
|
1318
|
+
const signature = await signBytes(secretKey, wireMessageBytes);
|
|
1319
|
+
return signature;
|
|
1320
|
+
}
|
|
1321
|
+
function getSignatureFromTransaction(transaction) {
|
|
1322
|
+
const signature = transaction.signatures[transaction.feePayer];
|
|
1323
|
+
if (!signature) {
|
|
1324
|
+
throw new Error(
|
|
1325
|
+
"Could not determine this transaction's signature. Make sure that the transaction has been signed by its fee payer."
|
|
1326
|
+
);
|
|
1327
|
+
}
|
|
1328
|
+
return signature;
|
|
1329
|
+
}
|
|
1330
|
+
async function signTransaction(keyPairs, transaction) {
|
|
1331
|
+
const compiledMessage = compileMessage(transaction);
|
|
1332
|
+
const nextSignatures = "signatures" in transaction ? { ...transaction.signatures } : {};
|
|
1333
|
+
const publicKeySignaturePairs = await Promise.all(
|
|
1334
|
+
keyPairs.map(
|
|
1335
|
+
(keyPair) => Promise.all([
|
|
1336
|
+
getAddressFromPublicKey(keyPair.publicKey),
|
|
1337
|
+
getCompiledMessageSignature(compiledMessage, keyPair.privateKey)
|
|
1338
|
+
])
|
|
1339
|
+
)
|
|
1340
|
+
);
|
|
1341
|
+
for (const [signerPublicKey, signature] of publicKeySignaturePairs) {
|
|
1342
|
+
nextSignatures[signerPublicKey] = signature;
|
|
1343
|
+
}
|
|
1344
|
+
const out = {
|
|
1345
|
+
...transaction,
|
|
1346
|
+
signatures: nextSignatures
|
|
1347
|
+
};
|
|
1348
|
+
Object.freeze(out);
|
|
1349
|
+
return out;
|
|
1350
|
+
}
|
|
1351
|
+
function transactionSignature(putativeTransactionSignature) {
|
|
1352
|
+
assertIsTransactionSignature(putativeTransactionSignature);
|
|
1353
|
+
return putativeTransactionSignature;
|
|
1354
|
+
}
|
|
1355
|
+
|
|
1245
1356
|
// src/wire-transaction.ts
|
|
1246
1357
|
function getBase64EncodedWireTransaction(transaction) {
|
|
1247
1358
|
const wireTransactionBytes = getTransactionEncoder().serialize(transaction);
|
|
@@ -1252,11 +1363,19 @@ this.globalThis.solanaWeb3 = (function (exports) {
|
|
|
1252
1363
|
|
|
1253
1364
|
exports.appendTransactionInstruction = appendTransactionInstruction;
|
|
1254
1365
|
exports.assertIsBlockhash = assertIsBlockhash;
|
|
1366
|
+
exports.assertIsDurableNonceTransaction = assertIsDurableNonceTransaction;
|
|
1367
|
+
exports.assertIsTransactionSignature = assertIsTransactionSignature;
|
|
1255
1368
|
exports.createTransaction = createTransaction;
|
|
1256
1369
|
exports.getBase64EncodedWireTransaction = getBase64EncodedWireTransaction;
|
|
1370
|
+
exports.getSignatureFromTransaction = getSignatureFromTransaction;
|
|
1371
|
+
exports.getTransactionEncoder = getTransactionEncoder;
|
|
1372
|
+
exports.isTransactionSignature = isTransactionSignature;
|
|
1257
1373
|
exports.prependTransactionInstruction = prependTransactionInstruction;
|
|
1258
1374
|
exports.setTransactionFeePayer = setTransactionFeePayer;
|
|
1375
|
+
exports.setTransactionLifetimeUsingBlockhash = setTransactionLifetimeUsingBlockhash;
|
|
1376
|
+
exports.setTransactionLifetimeUsingDurableNonce = setTransactionLifetimeUsingDurableNonce;
|
|
1259
1377
|
exports.signTransaction = signTransaction;
|
|
1378
|
+
exports.transactionSignature = transactionSignature;
|
|
1260
1379
|
|
|
1261
1380
|
return exports;
|
|
1262
1381
|
|