@buildonspark/spark-sdk 0.1.46 → 0.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 (171) hide show
  1. package/CHANGELOG.md +26 -0
  2. package/dist/{chunk-BGGEVUJK.js → chunk-2ENZX6LT.js} +241 -7
  3. package/dist/{chunk-LHRD2WT6.js → chunk-4JD4HIAN.js} +23 -3
  4. package/dist/{chunk-I54FARY2.js → chunk-CDLETEDT.js} +11 -3
  5. package/dist/{chunk-OBFKIEMP.js → chunk-TM6CHQXC.js} +1 -1
  6. package/dist/chunk-UDK3EBE5.js +13514 -0
  7. package/dist/chunk-XYTKKLCV.js +7 -0
  8. package/dist/{RequestLightningSendInput-2cSh_In4.d.cts → client-DKbwpcnl.d.ts} +434 -212
  9. package/dist/{RequestLightningSendInput-CN6BNg_g.d.ts → client-Drs5Lapg.d.cts} +434 -212
  10. package/dist/{services/config.cjs → debug.cjs} +31007 -1003
  11. package/dist/debug.d.cts +126 -0
  12. package/dist/debug.d.ts +126 -0
  13. package/dist/debug.js +21 -0
  14. package/dist/graphql/objects/index.d.cts +4 -11
  15. package/dist/graphql/objects/index.d.ts +4 -11
  16. package/dist/graphql/objects/index.js +2 -4
  17. package/dist/index.cjs +18219 -20818
  18. package/dist/index.d.cts +15 -768
  19. package/dist/index.d.ts +15 -768
  20. package/dist/index.js +82 -76
  21. package/dist/index.node.cjs +23831 -26538
  22. package/dist/index.node.d.cts +191 -33
  23. package/dist/index.node.d.ts +191 -33
  24. package/dist/index.node.js +87 -181
  25. package/dist/native/index.cjs +17835 -20519
  26. package/dist/native/index.d.cts +1466 -1546
  27. package/dist/native/index.d.ts +1466 -1546
  28. package/dist/native/index.js +22605 -25286
  29. package/dist/proto/lrc20.d.cts +2 -2
  30. package/dist/proto/lrc20.d.ts +2 -2
  31. package/dist/proto/lrc20.js +3098 -46
  32. package/dist/proto/spark.cjs +241 -7
  33. package/dist/proto/spark.d.cts +1 -1
  34. package/dist/proto/spark.d.ts +1 -1
  35. package/dist/proto/spark.js +5 -1
  36. package/dist/proto/spark_token.cjs +22 -2
  37. package/dist/proto/spark_token.d.cts +8 -1
  38. package/dist/proto/spark_token.d.ts +8 -1
  39. package/dist/proto/spark_token.js +2 -2
  40. package/dist/{sdk-types-CKBsylfW.d.ts → sdk-types-DCIVdKUT.d.ts} +1 -1
  41. package/dist/{sdk-types-Ct8xmN7l.d.cts → sdk-types-DJ2ve9YY.d.cts} +1 -1
  42. package/dist/{spark-DbzGfse6.d.ts → spark-BUOx3U7Q.d.cts} +103 -5
  43. package/dist/{spark-DbzGfse6.d.cts → spark-BUOx3U7Q.d.ts} +103 -5
  44. package/dist/spark-wallet-CF8Oxjqs.d.ts +935 -0
  45. package/dist/spark-wallet-DOLSa3oF.d.cts +935 -0
  46. package/dist/spark_bindings/native/index.d.cts +1 -1
  47. package/dist/spark_bindings/native/index.d.ts +1 -1
  48. package/dist/spark_bindings/wasm/index.d.cts +1 -1
  49. package/dist/spark_bindings/wasm/index.d.ts +1 -1
  50. package/dist/{services/index.cjs → tests/test-utils.cjs} +9788 -10263
  51. package/dist/tests/test-utils.d.cts +79 -0
  52. package/dist/tests/test-utils.d.ts +79 -0
  53. package/dist/tests/test-utils.js +93 -0
  54. package/dist/types/index.cjs +239 -7
  55. package/dist/types/index.d.cts +5 -9
  56. package/dist/types/index.d.ts +5 -9
  57. package/dist/types/index.js +4 -6
  58. package/dist/{types-C-Rp0Oo7.d.ts → types-BADxR3bm.d.cts} +1 -1
  59. package/dist/{types-C-Rp0Oo7.d.cts → types-BADxR3bm.d.ts} +1 -1
  60. package/dist/{index-COm59SPw.d.ts → xchain-address-C2xMs9nz.d.cts} +6 -94
  61. package/dist/{index-CKL5DodV.d.cts → xchain-address-Ckto9oEz.d.ts} +6 -94
  62. package/package.json +9 -33
  63. package/src/debug.ts +13 -0
  64. package/src/graphql/client.ts +59 -20
  65. package/src/index.node.ts +28 -2
  66. package/src/index.ts +31 -1
  67. package/src/native/index.ts +16 -2
  68. package/src/proto/mock.ts +76 -0
  69. package/src/proto/spark.ts +354 -6
  70. package/src/proto/spark_token.ts +34 -2
  71. package/src/services/config.ts +4 -6
  72. package/src/services/connection.ts +131 -64
  73. package/src/services/coop-exit.ts +6 -3
  74. package/src/services/deposit.ts +9 -8
  75. package/src/services/lightning.ts +4 -3
  76. package/src/services/signing.ts +10 -6
  77. package/src/services/token-transactions.ts +100 -85
  78. package/src/services/transfer.ts +88 -60
  79. package/src/services/tree-creation.ts +17 -9
  80. package/src/services/wallet-config.ts +17 -9
  81. package/src/signer/signer.react-native.ts +5 -10
  82. package/src/signer/signer.ts +269 -339
  83. package/src/signer/types.ts +63 -0
  84. package/src/spark-wallet/spark-wallet.ts +226 -149
  85. package/src/spark-wallet/types.ts +22 -8
  86. package/src/tests/integration/adaptor-signature.test.ts +8 -9
  87. package/src/tests/integration/coop-exit.test.ts +214 -202
  88. package/src/tests/integration/lightning.test.ts +128 -103
  89. package/src/tests/integration/swap.test.ts +116 -84
  90. package/src/tests/integration/transfer.test.ts +291 -214
  91. package/src/tests/integration/tree-creation.test.ts +0 -5
  92. package/src/tests/integration/wallet.test.ts +1 -0
  93. package/src/tests/isHermeticTest.ts +3 -24
  94. package/src/tests/{test-util.ts → test-utils.ts} +13 -11
  95. package/src/tests/token-identifier.test.ts +6 -6
  96. package/src/tests/wrapWithOtelSpan.test.ts +1 -1
  97. package/src/{address → utils}/address.ts +1 -1
  98. package/src/utils/crypto.ts +19 -9
  99. package/src/utils/index.ts +2 -0
  100. package/src/utils/network.ts +17 -0
  101. package/src/utils/secret-sharing.ts +1 -2
  102. package/src/utils/signing.ts +1 -1
  103. package/src/utils/token-identifier.ts +27 -21
  104. package/src/utils/token-transaction-validation.ts +34 -0
  105. package/src/utils/token-transactions.ts +12 -8
  106. package/src/utils/unilateral-exit.ts +32 -0
  107. package/src/utils/xchain-address.ts +1 -1
  108. package/dist/BitcoinNetwork-TnABML0T.d.cts +0 -18
  109. package/dist/BitcoinNetwork-TnABML0T.d.ts +0 -18
  110. package/dist/LightningSendFeeEstimateInput-BgOhEAI-.d.cts +0 -10
  111. package/dist/LightningSendFeeEstimateInput-BgOhEAI-.d.ts +0 -10
  112. package/dist/address/index.cjs +0 -458
  113. package/dist/address/index.d.cts +0 -32
  114. package/dist/address/index.d.ts +0 -32
  115. package/dist/address/index.js +0 -17
  116. package/dist/chunk-4EMV7HHW.js +0 -277
  117. package/dist/chunk-C2S227QR.js +0 -2336
  118. package/dist/chunk-DXR2PXJU.js +0 -1122
  119. package/dist/chunk-GSI4OLXZ.js +0 -117
  120. package/dist/chunk-HHNQ3ZHC.js +0 -170
  121. package/dist/chunk-HMLOC6TE.js +0 -14
  122. package/dist/chunk-HSCLBJEL.js +0 -113
  123. package/dist/chunk-HWJWKEIU.js +0 -75
  124. package/dist/chunk-JB64OQES.js +0 -7095
  125. package/dist/chunk-KMUMFYFX.js +0 -137
  126. package/dist/chunk-N5VZVCGJ.js +0 -622
  127. package/dist/chunk-NSJF5F5O.js +0 -325
  128. package/dist/chunk-NTFKFRQ2.js +0 -3146
  129. package/dist/chunk-OFCJFZ4I.js +0 -24
  130. package/dist/chunk-QNNSEJ4P.js +0 -232
  131. package/dist/chunk-UXDODSDT.js +0 -838
  132. package/dist/chunk-VTUGIIWI.js +0 -0
  133. package/dist/chunk-Z5HIAYFT.js +0 -84
  134. package/dist/network-Css46DAz.d.cts +0 -46
  135. package/dist/network-hynb7iTZ.d.ts +0 -46
  136. package/dist/services/config.d.cts +0 -42
  137. package/dist/services/config.d.ts +0 -42
  138. package/dist/services/config.js +0 -17
  139. package/dist/services/connection.cjs +0 -17691
  140. package/dist/services/connection.d.cts +0 -95
  141. package/dist/services/connection.d.ts +0 -95
  142. package/dist/services/connection.js +0 -11
  143. package/dist/services/index.d.cts +0 -21
  144. package/dist/services/index.d.ts +0 -21
  145. package/dist/services/index.js +0 -58
  146. package/dist/services/lrc-connection.cjs +0 -4713
  147. package/dist/services/lrc-connection.d.cts +0 -34
  148. package/dist/services/lrc-connection.d.ts +0 -34
  149. package/dist/services/lrc-connection.js +0 -11
  150. package/dist/services/token-transactions.cjs +0 -2877
  151. package/dist/services/token-transactions.d.cts +0 -75
  152. package/dist/services/token-transactions.d.ts +0 -75
  153. package/dist/services/token-transactions.js +0 -15
  154. package/dist/services/wallet-config.cjs +0 -340
  155. package/dist/services/wallet-config.d.cts +0 -56
  156. package/dist/services/wallet-config.d.ts +0 -56
  157. package/dist/services/wallet-config.js +0 -33
  158. package/dist/signer/signer.cjs +0 -2004
  159. package/dist/signer/signer.d.cts +0 -10
  160. package/dist/signer/signer.d.ts +0 -10
  161. package/dist/signer/signer.js +0 -24
  162. package/dist/signer-BP6F__oR.d.cts +0 -187
  163. package/dist/signer-BVZJXcq7.d.ts +0 -187
  164. package/dist/utils/index.cjs +0 -2947
  165. package/dist/utils/index.d.cts +0 -18
  166. package/dist/utils/index.d.ts +0 -18
  167. package/dist/utils/index.js +0 -157
  168. package/ios/spark_frost.kt +0 -1900
  169. package/src/address/index.ts +0 -1
  170. package/src/services/lrc-connection.ts +0 -215
  171. /package/dist/{chunk-L3EHBOUX.js → chunk-BYXBJQAS.js} +0 -0
@@ -1,117 +0,0 @@
1
- // src/errors/base.ts
2
- import { bytesToHex } from "@noble/hashes/utils";
3
- var SparkSDKError = class extends Error {
4
- context;
5
- originalError;
6
- constructor(message, context = {}, originalError) {
7
- const msg = getMessage(message, context, originalError);
8
- super(msg);
9
- this.name = this.constructor.name;
10
- this.context = context;
11
- this.originalError = originalError;
12
- if (Error.captureStackTrace) {
13
- Error.captureStackTrace(this, this.constructor);
14
- }
15
- }
16
- toString() {
17
- return this.message;
18
- }
19
- toJSON() {
20
- return {
21
- name: this.name,
22
- message: this.message,
23
- context: this.context,
24
- originalError: this.originalError ? {
25
- name: this.originalError.name,
26
- message: this.originalError.message,
27
- stack: this.originalError.stack
28
- } : void 0,
29
- stack: this.stack
30
- };
31
- }
32
- };
33
- function getMessage(message, context = {}, originalError) {
34
- const contextStr = Object.entries(context).map(([key, value]) => `${key}: ${safeStringify(value)}`).join(", ");
35
- const originalErrorStr = originalError ? `
36
- Original Error: ${originalError.message}` : "";
37
- return `SparkSDKError: ${message}${contextStr ? `
38
- Context: ${contextStr}` : ""}${originalErrorStr}`;
39
- }
40
- function safeStringify(value) {
41
- const replacer = (_, v) => {
42
- if (typeof v === "bigint") {
43
- return v.toString();
44
- }
45
- if (v instanceof Uint8Array) {
46
- return formatUint8Array(v);
47
- }
48
- return v;
49
- };
50
- if (typeof value === "bigint") {
51
- return `"${value.toString()}"`;
52
- }
53
- if (value instanceof Uint8Array) {
54
- return `"${formatUint8Array(value)}"`;
55
- }
56
- try {
57
- const result = JSON.stringify(value, replacer);
58
- return result === void 0 ? String(value) : result;
59
- } catch {
60
- try {
61
- return String(value);
62
- } catch {
63
- return "[Unserializable]";
64
- }
65
- }
66
- }
67
- function formatUint8Array(arr) {
68
- return `Uint8Array(0x${bytesToHex(arr)})`;
69
- }
70
-
71
- // src/errors/types.ts
72
- var NetworkError = class extends SparkSDKError {
73
- constructor(message, context = {}, originalError) {
74
- super(message, context, originalError);
75
- }
76
- };
77
- var ValidationError = class extends SparkSDKError {
78
- constructor(message, context = {}, originalError) {
79
- super(message, context, originalError);
80
- }
81
- };
82
- var InternalValidationError = class extends SparkSDKError {
83
- constructor(message, context = {}, originalError) {
84
- super(message, context, originalError);
85
- }
86
- };
87
- var AuthenticationError = class extends SparkSDKError {
88
- constructor(message, context = {}, originalError) {
89
- super(message, context, originalError);
90
- }
91
- };
92
- var RPCError = class extends SparkSDKError {
93
- constructor(message, context = {}, originalError) {
94
- super(message, context, originalError);
95
- }
96
- };
97
- var ConfigurationError = class extends SparkSDKError {
98
- constructor(message, context = {}, originalError) {
99
- super(message, context, originalError);
100
- }
101
- };
102
- var NotImplementedError = class extends SparkSDKError {
103
- constructor(message, context, originalError) {
104
- super(message, context, originalError);
105
- }
106
- };
107
-
108
- export {
109
- SparkSDKError,
110
- NetworkError,
111
- ValidationError,
112
- InternalValidationError,
113
- AuthenticationError,
114
- RPCError,
115
- ConfigurationError,
116
- NotImplementedError
117
- };
@@ -1,170 +0,0 @@
1
- import {
2
- SparkServiceDefinition
3
- } from "./chunk-NTFKFRQ2.js";
4
- import {
5
- clientEnv,
6
- isBun,
7
- isReactNative
8
- } from "./chunk-OFCJFZ4I.js";
9
- import {
10
- NetworkError
11
- } from "./chunk-GSI4OLXZ.js";
12
-
13
- // src/services/lrc-connection.ts
14
- import { isNode } from "@lightsparkdev/core";
15
- import { retryMiddleware } from "nice-grpc-client-middleware-retry";
16
- import { Metadata } from "nice-grpc-common";
17
- var Lrc20ConnectionManager = class {
18
- config;
19
- lrc20Client;
20
- constructor(config) {
21
- this.config = config;
22
- }
23
- async closeConnection() {
24
- this.lrc20Client?.close?.();
25
- }
26
- async createChannelWithTLS(address, certPath) {
27
- try {
28
- if (isNode && !isBun) {
29
- const grpcModule = await import("nice-grpc");
30
- const { ChannelCredentials, createChannel } = "default" in grpcModule ? grpcModule.default : grpcModule;
31
- if (certPath) {
32
- try {
33
- const fs = await import("fs");
34
- const cert = fs.readFileSync(certPath);
35
- return createChannel(address, ChannelCredentials.createSsl(cert));
36
- } catch (error) {
37
- console.error("Error reading certificate:", error);
38
- return createChannel(
39
- address,
40
- ChannelCredentials.createSsl(null, null, null, {
41
- rejectUnauthorized: false
42
- })
43
- );
44
- }
45
- } else {
46
- return createChannel(
47
- address,
48
- ChannelCredentials.createSsl(null, null, null, {
49
- rejectUnauthorized: false
50
- })
51
- );
52
- }
53
- } else {
54
- const grpcModule = await import("nice-grpc-web");
55
- const { createChannel, FetchTransport } = "default" in grpcModule ? grpcModule.default : grpcModule;
56
- const { XHRTransport } = await import("./xhr-transport-RH6LDRXS.js");
57
- return createChannel(
58
- address,
59
- isReactNative ? XHRTransport() : FetchTransport()
60
- );
61
- }
62
- } catch (error) {
63
- console.error("Channel creation error:", error);
64
- throw new NetworkError(
65
- "Failed to create channel",
66
- {
67
- url: address,
68
- operation: "createChannel",
69
- errorCount: 1,
70
- errors: error instanceof Error ? error.message : String(error)
71
- },
72
- error
73
- );
74
- }
75
- }
76
- async createLrc20Client(certPath) {
77
- if (this.lrc20Client) {
78
- return this.lrc20Client;
79
- }
80
- const channel = await this.createChannelWithTLS(
81
- this.config.getLrc20Address(),
82
- certPath
83
- );
84
- const middleware = this.createMiddleware();
85
- const client = await this.createGrpcClient(
86
- SparkServiceDefinition,
87
- channel,
88
- true,
89
- middleware
90
- );
91
- this.lrc20Client = client;
92
- return client;
93
- }
94
- createMiddleware() {
95
- if (isNode) {
96
- return this.createNodeMiddleware();
97
- } else {
98
- return this.createBrowserMiddleware();
99
- }
100
- }
101
- createNodeMiddleware() {
102
- return async function* (call, options) {
103
- return yield* call.next(call.request, {
104
- ...options,
105
- metadata: Metadata(options.metadata).set("X-Client-Env", clientEnv)
106
- });
107
- }.bind(this);
108
- }
109
- createBrowserMiddleware() {
110
- return async function* (call, options) {
111
- return yield* call.next(call.request, {
112
- ...options,
113
- metadata: Metadata(options.metadata).set("X-Requested-With", "XMLHttpRequest").set("X-Grpc-Web", "1").set("Content-Type", "application/grpc-web+proto").set("X-Client-Env", clientEnv)
114
- });
115
- }.bind(this);
116
- }
117
- async createGrpcClient(defintion, channel, withRetries, middleware) {
118
- let clientFactory;
119
- const retryOptions = {
120
- retry: true,
121
- retryMaxAttempts: 3
122
- };
123
- let options = {};
124
- const isNodeChannel = "close" in channel;
125
- if (isNode && isNodeChannel && !isBun) {
126
- const grpcModule = await import("nice-grpc");
127
- const { openTelemetryClientMiddleware } = await import("nice-grpc-opentelemetry");
128
- const { createClientFactory } = "default" in grpcModule ? grpcModule.default : grpcModule;
129
- clientFactory = createClientFactory();
130
- if (withRetries) {
131
- options = retryOptions;
132
- clientFactory = clientFactory.use(openTelemetryClientMiddleware()).use(retryMiddleware);
133
- }
134
- if (middleware) {
135
- clientFactory = clientFactory.use(middleware);
136
- }
137
- const client = clientFactory.create(defintion, channel, {
138
- "*": options
139
- });
140
- return {
141
- ...client,
142
- close: channel.close.bind(channel)
143
- };
144
- } else if (!isNodeChannel) {
145
- const grpcModule = await import("nice-grpc-web");
146
- const { createClientFactory } = "default" in grpcModule ? grpcModule.default : grpcModule;
147
- clientFactory = createClientFactory();
148
- if (withRetries) {
149
- options = retryOptions;
150
- clientFactory = clientFactory.use(retryMiddleware);
151
- }
152
- if (middleware) {
153
- clientFactory = clientFactory.use(middleware);
154
- }
155
- const client = clientFactory.create(defintion, channel, {
156
- "*": options
157
- });
158
- return {
159
- ...client,
160
- close: void 0
161
- };
162
- } else {
163
- throw new Error("Channel does not have close in NodeJS environment");
164
- }
165
- }
166
- };
167
-
168
- export {
169
- Lrc20ConnectionManager
170
- };
@@ -1,14 +0,0 @@
1
- // src/graphql/objects/BitcoinNetwork.ts
2
- var BitcoinNetwork = /* @__PURE__ */ ((BitcoinNetwork2) => {
3
- BitcoinNetwork2["FUTURE_VALUE"] = "FUTURE_VALUE";
4
- BitcoinNetwork2["MAINNET"] = "MAINNET";
5
- BitcoinNetwork2["REGTEST"] = "REGTEST";
6
- BitcoinNetwork2["SIGNET"] = "SIGNET";
7
- BitcoinNetwork2["TESTNET"] = "TESTNET";
8
- return BitcoinNetwork2;
9
- })(BitcoinNetwork || {});
10
- var BitcoinNetwork_default = BitcoinNetwork;
11
-
12
- export {
13
- BitcoinNetwork_default
14
- };
@@ -1,113 +0,0 @@
1
- import {
2
- Network,
3
- NetworkToProto
4
- } from "./chunk-Z5HIAYFT.js";
5
- import {
6
- LOCAL_WALLET_CONFIG,
7
- MAINNET_WALLET_CONFIG,
8
- REGTEST_WALLET_CONFIG
9
- } from "./chunk-4EMV7HHW.js";
10
- import {
11
- DefaultSparkSigner
12
- } from "./chunk-N5VZVCGJ.js";
13
- import {
14
- ConfigurationError
15
- } from "./chunk-GSI4OLXZ.js";
16
-
17
- // src/services/config.ts
18
- var WalletConfigService = class {
19
- config;
20
- signer;
21
- lrc20ApiConfig;
22
- sspClientOptions;
23
- constructor(options, signer) {
24
- const network = options?.network ?? "REGTEST";
25
- this.config = {
26
- ...this.getDefaultConfig(Network[network]),
27
- ...options
28
- };
29
- this.signer = signer ?? new DefaultSparkSigner();
30
- this.lrc20ApiConfig = this.config.lrc20ApiConfig;
31
- this.sspClientOptions = this.config.sspClientOptions;
32
- }
33
- getDefaultConfig(network) {
34
- switch (network) {
35
- case 0 /* MAINNET */:
36
- return MAINNET_WALLET_CONFIG;
37
- case 3 /* REGTEST */:
38
- return REGTEST_WALLET_CONFIG;
39
- default:
40
- return LOCAL_WALLET_CONFIG;
41
- }
42
- }
43
- getCoordinatorAddress() {
44
- const coordinator = this.config.signingOperators[this.config.coodinatorIdentifier];
45
- if (!coordinator) {
46
- throw new ConfigurationError(
47
- "Coordinator not found in signing operators",
48
- {
49
- configKey: "signingOperators"
50
- }
51
- );
52
- }
53
- return coordinator.address;
54
- }
55
- getLrc20Address() {
56
- return this.config.lrc20Address;
57
- }
58
- getSigningOperators() {
59
- return this.config.signingOperators;
60
- }
61
- getThreshold() {
62
- return this.config.threshold;
63
- }
64
- getCoordinatorIdentifier() {
65
- return this.config.coodinatorIdentifier;
66
- }
67
- getExpectedWithdrawBondSats() {
68
- return this.config.expectedWithdrawBondSats;
69
- }
70
- getExpectedWithdrawRelativeBlockLocktime() {
71
- return this.config.expectedWithdrawRelativeBlockLocktime;
72
- }
73
- getSspNetwork() {
74
- if (this.config.network === "MAINNET") {
75
- return "MAINNET" /* MAINNET */;
76
- } else if (this.config.network === "REGTEST") {
77
- return "REGTEST" /* REGTEST */;
78
- } else if (this.config.network === "TESTNET") {
79
- return "TESTNET" /* TESTNET */;
80
- } else if (this.config.network === "SIGNET") {
81
- return "SIGNET" /* SIGNET */;
82
- }
83
- return "FUTURE_VALUE" /* FUTURE_VALUE */;
84
- }
85
- getNetwork() {
86
- return Network[this.config.network];
87
- }
88
- getNetworkType() {
89
- return this.config.network;
90
- }
91
- getNetworkProto() {
92
- return NetworkToProto[Network[this.config.network]];
93
- }
94
- getTokenSignatures() {
95
- return this.config.tokenSignatures;
96
- }
97
- getTokenTransactionVersion() {
98
- return this.config.tokenTransactionVersion;
99
- }
100
- getTokenValidityDurationSeconds() {
101
- return this.config.tokenValidityDurationSeconds;
102
- }
103
- getElectrsUrl() {
104
- return this.config.electrsUrl;
105
- }
106
- getSspIdentityPublicKey() {
107
- return this.config.sspClientOptions.identityPublicKey;
108
- }
109
- };
110
-
111
- export {
112
- WalletConfigService
113
- };
@@ -1,75 +0,0 @@
1
- import {
2
- NetworkError
3
- } from "./chunk-GSI4OLXZ.js";
4
-
5
- // src/utils/token-transactions.ts
6
- import { bytesToHex, bytesToNumberBE } from "@noble/curves/abstract/utils";
7
- function calculateAvailableTokenAmount(outputLeaves) {
8
- return outputLeaves.reduce(
9
- (sum, output) => sum + BigInt(bytesToNumberBE(output.output.tokenAmount)),
10
- BigInt(0)
11
- );
12
- }
13
- function checkIfSelectedOutputsAreAvailable(selectedOutputs, tokenOutputs, tokenPublicKey) {
14
- const tokenPubKeyHex = bytesToHex(tokenPublicKey);
15
- const tokenOutputsAvailable = tokenOutputs.get(tokenPubKeyHex);
16
- if (!tokenOutputsAvailable) {
17
- return false;
18
- }
19
- if (selectedOutputs.length === 0 || tokenOutputsAvailable.length < selectedOutputs.length) {
20
- return false;
21
- }
22
- const availableOutputIds = new Set(
23
- tokenOutputsAvailable.map((output) => output.output.id)
24
- );
25
- for (const selectedOutput of selectedOutputs) {
26
- if (!selectedOutput.output?.id || !availableOutputIds.has(selectedOutput.output.id)) {
27
- return false;
28
- }
29
- }
30
- return true;
31
- }
32
- function filterTokenBalanceForTokenPublicKey(tokenBalances, publicKey) {
33
- if (!tokenBalances) {
34
- return { balance: 0n };
35
- }
36
- const tokenBalance = [...tokenBalances.entries()].find(
37
- ([, info]) => info.tokenMetadata.tokenPublicKey === publicKey
38
- );
39
- if (!tokenBalance) {
40
- return {
41
- balance: 0n
42
- };
43
- }
44
- return {
45
- balance: tokenBalance[1].balance
46
- };
47
- }
48
-
49
- // src/utils/response-validation.ts
50
- function collectResponses(responses) {
51
- const successfulResponses = responses.filter(
52
- (result) => result.status === "fulfilled"
53
- ).map((result) => result.value);
54
- const failedResponses = responses.filter(
55
- (result) => result.status === "rejected"
56
- );
57
- if (failedResponses.length > 0) {
58
- const errors = failedResponses.map((result) => result.reason).join("\n");
59
- throw new NetworkError(
60
- `${failedResponses.length} out of ${responses.length} requests failed, please try again`,
61
- {
62
- errorCount: failedResponses.length,
63
- errors
64
- }
65
- );
66
- }
67
- return successfulResponses;
68
- }
69
-
70
- export {
71
- calculateAvailableTokenAmount,
72
- checkIfSelectedOutputsAreAvailable,
73
- filterTokenBalanceForTokenPublicKey,
74
- collectResponses
75
- };