lampamazaza-new-intents-sdk 0.47.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 (179) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +1083 -0
  3. package/dist/_virtual/rolldown_runtime.cjs +29 -0
  4. package/dist/index.cjs +124 -0
  5. package/dist/index.d.cts +22 -0
  6. package/dist/index.d.ts +22 -0
  7. package/dist/index.js +19 -0
  8. package/dist/src/bridges/aurora-engine-bridge/aurora-engine-bridge-constants.cjs +10 -0
  9. package/dist/src/bridges/aurora-engine-bridge/aurora-engine-bridge-constants.js +7 -0
  10. package/dist/src/bridges/aurora-engine-bridge/aurora-engine-bridge-utils.cjs +44 -0
  11. package/dist/src/bridges/aurora-engine-bridge/aurora-engine-bridge-utils.js +42 -0
  12. package/dist/src/bridges/aurora-engine-bridge/aurora-engine-bridge.cjs +111 -0
  13. package/dist/src/bridges/aurora-engine-bridge/aurora-engine-bridge.js +110 -0
  14. package/dist/src/bridges/direct-bridge/direct-bridge-constants.cjs +8 -0
  15. package/dist/src/bridges/direct-bridge/direct-bridge-constants.js +6 -0
  16. package/dist/src/bridges/direct-bridge/direct-bridge-utils.cjs +47 -0
  17. package/dist/src/bridges/direct-bridge/direct-bridge-utils.js +44 -0
  18. package/dist/src/bridges/direct-bridge/direct-bridge.cjs +155 -0
  19. package/dist/src/bridges/direct-bridge/direct-bridge.js +154 -0
  20. package/dist/src/bridges/direct-bridge/error.cjs +16 -0
  21. package/dist/src/bridges/direct-bridge/error.d.cts +12 -0
  22. package/dist/src/bridges/direct-bridge/error.d.ts +12 -0
  23. package/dist/src/bridges/direct-bridge/error.js +15 -0
  24. package/dist/src/bridges/hot-bridge/error.cjs +23 -0
  25. package/dist/src/bridges/hot-bridge/error.d.cts +19 -0
  26. package/dist/src/bridges/hot-bridge/error.d.ts +19 -0
  27. package/dist/src/bridges/hot-bridge/error.js +21 -0
  28. package/dist/src/bridges/hot-bridge/hot-bridge-chains.cjs +21 -0
  29. package/dist/src/bridges/hot-bridge/hot-bridge-chains.d.cts +6 -0
  30. package/dist/src/bridges/hot-bridge/hot-bridge-chains.d.ts +6 -0
  31. package/dist/src/bridges/hot-bridge/hot-bridge-chains.js +20 -0
  32. package/dist/src/bridges/hot-bridge/hot-bridge-constants.cjs +11 -0
  33. package/dist/src/bridges/hot-bridge/hot-bridge-constants.js +9 -0
  34. package/dist/src/bridges/hot-bridge/hot-bridge-utils.cjs +66 -0
  35. package/dist/src/bridges/hot-bridge/hot-bridge-utils.js +61 -0
  36. package/dist/src/bridges/hot-bridge/hot-bridge.cjs +241 -0
  37. package/dist/src/bridges/hot-bridge/hot-bridge.js +239 -0
  38. package/dist/src/bridges/intents-bridge/intents-bridge.cjs +59 -0
  39. package/dist/src/bridges/intents-bridge/intents-bridge.js +59 -0
  40. package/dist/src/bridges/omni-bridge/error.cjs +54 -0
  41. package/dist/src/bridges/omni-bridge/error.d.cts +41 -0
  42. package/dist/src/bridges/omni-bridge/error.d.ts +41 -0
  43. package/dist/src/bridges/omni-bridge/error.js +49 -0
  44. package/dist/src/bridges/omni-bridge/omni-bridge-constants.cjs +12 -0
  45. package/dist/src/bridges/omni-bridge/omni-bridge-constants.js +8 -0
  46. package/dist/src/bridges/omni-bridge/omni-bridge-utils.cjs +153 -0
  47. package/dist/src/bridges/omni-bridge/omni-bridge-utils.js +143 -0
  48. package/dist/src/bridges/omni-bridge/omni-bridge.cjs +316 -0
  49. package/dist/src/bridges/omni-bridge/omni-bridge.js +314 -0
  50. package/dist/src/bridges/poa-bridge/poa-bridge-utils.cjs +76 -0
  51. package/dist/src/bridges/poa-bridge/poa-bridge-utils.js +73 -0
  52. package/dist/src/bridges/poa-bridge/poa-bridge.cjs +175 -0
  53. package/dist/src/bridges/poa-bridge/poa-bridge.js +173 -0
  54. package/dist/src/bridges/poa-bridge/poa-constants.cjs +6 -0
  55. package/dist/src/bridges/poa-bridge/poa-constants.js +5 -0
  56. package/dist/src/classes/errors.cjs +87 -0
  57. package/dist/src/classes/errors.d.cts +48 -0
  58. package/dist/src/classes/errors.d.ts +48 -0
  59. package/dist/src/classes/errors.js +81 -0
  60. package/dist/src/constants/bridge-name-enum.cjs +11 -0
  61. package/dist/src/constants/bridge-name-enum.d.cts +11 -0
  62. package/dist/src/constants/bridge-name-enum.d.ts +11 -0
  63. package/dist/src/constants/bridge-name-enum.js +10 -0
  64. package/dist/src/constants/poa-tokens-routable-through-omni-bridge.cjs +17 -0
  65. package/dist/src/constants/poa-tokens-routable-through-omni-bridge.d.cts +12 -0
  66. package/dist/src/constants/poa-tokens-routable-through-omni-bridge.d.ts +12 -0
  67. package/dist/src/constants/poa-tokens-routable-through-omni-bridge.js +16 -0
  68. package/dist/src/constants/public-rpc-urls.cjs +25 -0
  69. package/dist/src/constants/public-rpc-urls.js +24 -0
  70. package/dist/src/constants/route-enum.cjs +13 -0
  71. package/dist/src/constants/route-enum.d.cts +13 -0
  72. package/dist/src/constants/route-enum.d.ts +13 -0
  73. package/dist/src/constants/route-enum.js +12 -0
  74. package/dist/src/constants/withdrawal-timing.cjs +68 -0
  75. package/dist/src/constants/withdrawal-timing.js +68 -0
  76. package/dist/src/core/withdrawal-watcher.cjs +86 -0
  77. package/dist/src/core/withdrawal-watcher.d.cts +18 -0
  78. package/dist/src/core/withdrawal-watcher.d.ts +19 -0
  79. package/dist/src/core/withdrawal-watcher.js +82 -0
  80. package/dist/src/intents/expirable-nonce.cjs +90 -0
  81. package/dist/src/intents/expirable-nonce.d.cts +44 -0
  82. package/dist/src/intents/expirable-nonce.d.ts +45 -0
  83. package/dist/src/intents/expirable-nonce.js +82 -0
  84. package/dist/src/intents/intent-executer-impl/intent-executer.cjs +85 -0
  85. package/dist/src/intents/intent-executer-impl/intent-executer.d.cts +20 -0
  86. package/dist/src/intents/intent-executer-impl/intent-executer.d.ts +24 -0
  87. package/dist/src/intents/intent-executer-impl/intent-executer.js +85 -0
  88. package/dist/src/intents/intent-hash.cjs +48 -0
  89. package/dist/src/intents/intent-hash.d.cts +8 -0
  90. package/dist/src/intents/intent-hash.d.ts +8 -0
  91. package/dist/src/intents/intent-hash.js +47 -0
  92. package/dist/src/intents/intent-hashes/erc191.cjs +38 -0
  93. package/dist/src/intents/intent-hashes/erc191.js +37 -0
  94. package/dist/src/intents/intent-hashes/nep413.cjs +23 -0
  95. package/dist/src/intents/intent-hashes/nep413.js +22 -0
  96. package/dist/src/intents/intent-hashes/raw-ed25519.cjs +26 -0
  97. package/dist/src/intents/intent-hashes/raw-ed25519.js +25 -0
  98. package/dist/src/intents/intent-hashes/sep53.cjs +36 -0
  99. package/dist/src/intents/intent-hashes/sep53.js +35 -0
  100. package/dist/src/intents/intent-hashes/tip191.cjs +39 -0
  101. package/dist/src/intents/intent-hashes/tip191.js +38 -0
  102. package/dist/src/intents/intent-hashes/ton-connect.cjs +105 -0
  103. package/dist/src/intents/intent-hashes/ton-connect.js +104 -0
  104. package/dist/src/intents/intent-hashes/webauthn.cjs +26 -0
  105. package/dist/src/intents/intent-hashes/webauthn.js +25 -0
  106. package/dist/src/intents/intent-payload-builder.cjs +208 -0
  107. package/dist/src/intents/intent-payload-builder.d.cts +161 -0
  108. package/dist/src/intents/intent-payload-builder.d.ts +161 -0
  109. package/dist/src/intents/intent-payload-builder.js +207 -0
  110. package/dist/src/intents/intent-payload-factory.cjs +23 -0
  111. package/dist/src/intents/intent-payload-factory.js +21 -0
  112. package/dist/src/intents/intent-relayer-impl/intent-relayer-public.cjs +43 -0
  113. package/dist/src/intents/intent-relayer-impl/intent-relayer-public.js +42 -0
  114. package/dist/src/intents/intent-signer-impl/factories.cjs +19 -0
  115. package/dist/src/intents/intent-signer-impl/factories.d.cts +11 -0
  116. package/dist/src/intents/intent-signer-impl/factories.d.ts +11 -0
  117. package/dist/src/intents/intent-signer-impl/factories.js +17 -0
  118. package/dist/src/intents/intent-signer-impl/intent-signer-near-keypair.cjs +22 -0
  119. package/dist/src/intents/intent-signer-impl/intent-signer-near-keypair.d.cts +15 -0
  120. package/dist/src/intents/intent-signer-impl/intent-signer-near-keypair.d.ts +16 -0
  121. package/dist/src/intents/intent-signer-impl/intent-signer-near-keypair.js +21 -0
  122. package/dist/src/intents/intent-signer-impl/intent-signer-nep413.cjs +37 -0
  123. package/dist/src/intents/intent-signer-impl/intent-signer-nep413.d.cts +14 -0
  124. package/dist/src/intents/intent-signer-impl/intent-signer-nep413.d.ts +14 -0
  125. package/dist/src/intents/intent-signer-impl/intent-signer-nep413.js +36 -0
  126. package/dist/src/intents/intent-signer-impl/intent-signer-noop.cjs +8 -0
  127. package/dist/src/intents/intent-signer-impl/intent-signer-noop.js +7 -0
  128. package/dist/src/intents/intent-signer-impl/intent-signer-viem.cjs +31 -0
  129. package/dist/src/intents/intent-signer-impl/intent-signer-viem.d.cts +17 -0
  130. package/dist/src/intents/intent-signer-impl/intent-signer-viem.d.ts +17 -0
  131. package/dist/src/intents/intent-signer-impl/intent-signer-viem.js +30 -0
  132. package/dist/src/intents/interfaces/intent-executer.d.ts +2 -0
  133. package/dist/src/intents/interfaces/intent-relayer.d.cts +43 -0
  134. package/dist/src/intents/interfaces/intent-relayer.d.ts +43 -0
  135. package/dist/src/intents/interfaces/intent-signer.d.cts +8 -0
  136. package/dist/src/intents/interfaces/intent-signer.d.ts +8 -0
  137. package/dist/src/intents/interfaces/salt-manager.d.cts +9 -0
  138. package/dist/src/intents/interfaces/salt-manager.d.ts +9 -0
  139. package/dist/src/intents/salt-manager.cjs +74 -0
  140. package/dist/src/intents/salt-manager.js +72 -0
  141. package/dist/src/intents/shared-types.d.cts +20 -0
  142. package/dist/src/intents/shared-types.d.ts +20 -0
  143. package/dist/src/lib/array.cjs +11 -0
  144. package/dist/src/lib/array.js +10 -0
  145. package/dist/src/lib/caip2.cjs +50 -0
  146. package/dist/src/lib/caip2.d.cts +38 -0
  147. package/dist/src/lib/caip2.d.ts +38 -0
  148. package/dist/src/lib/caip2.js +48 -0
  149. package/dist/src/lib/configure-rpc-config.cjs +20 -0
  150. package/dist/src/lib/configure-rpc-config.js +18 -0
  151. package/dist/src/lib/estimate-fee.cjs +96 -0
  152. package/dist/src/lib/estimate-fee.js +94 -0
  153. package/dist/src/lib/hex.cjs +11 -0
  154. package/dist/src/lib/hex.js +10 -0
  155. package/dist/src/lib/nep413.cjs +42 -0
  156. package/dist/src/lib/nep413.d.cts +14 -0
  157. package/dist/src/lib/nep413.d.ts +14 -0
  158. package/dist/src/lib/nep413.js +41 -0
  159. package/dist/src/lib/object.cjs +10 -0
  160. package/dist/src/lib/object.js +9 -0
  161. package/dist/src/lib/parse-defuse-asset-id.cjs +15 -0
  162. package/dist/src/lib/parse-defuse-asset-id.js +14 -0
  163. package/dist/src/lib/route-config-factory.cjs +43 -0
  164. package/dist/src/lib/route-config-factory.d.cts +13 -0
  165. package/dist/src/lib/route-config-factory.d.ts +13 -0
  166. package/dist/src/lib/route-config-factory.js +37 -0
  167. package/dist/src/lib/tokensUsdPricesHttpClient/apis.cjs +17 -0
  168. package/dist/src/lib/tokensUsdPricesHttpClient/apis.js +16 -0
  169. package/dist/src/lib/validateAddress.cjs +271 -0
  170. package/dist/src/lib/validateAddress.d.cts +14 -0
  171. package/dist/src/lib/validateAddress.d.ts +14 -0
  172. package/dist/src/lib/validateAddress.js +270 -0
  173. package/dist/src/sdk.cjs +435 -0
  174. package/dist/src/sdk.d.cts +231 -0
  175. package/dist/src/sdk.d.ts +231 -0
  176. package/dist/src/sdk.js +433 -0
  177. package/dist/src/shared-types.d.cts +378 -0
  178. package/dist/src/shared-types.d.ts +378 -0
  179. package/package.json +62 -0
@@ -0,0 +1,30 @@
1
+ import { utils } from "lampamazaza-internal-utils";
2
+
3
+ //#region src/intents/intent-signer-impl/intent-signer-viem.ts
4
+ var IntentSignerViem = class {
5
+ constructor(config) {
6
+ this.config = config;
7
+ }
8
+ async signIntent(intent) {
9
+ const payload = JSON.stringify({
10
+ signer_id: intent.signer_id ?? this.config.accountId ?? utils.authHandleToIntentsUserId({
11
+ identifier: this.config.signer.address,
12
+ method: "evm"
13
+ }),
14
+ verifying_contract: intent.verifying_contract,
15
+ deadline: intent.deadline,
16
+ nonce: intent.nonce,
17
+ intents: intent.intents
18
+ });
19
+ const signature = await this.config.signer.signMessage?.({ message: payload });
20
+ if (signature == null) throw new Error("No signature is returned");
21
+ return {
22
+ standard: "erc191",
23
+ payload,
24
+ signature: utils.transformERC191Signature(signature)
25
+ };
26
+ }
27
+ };
28
+
29
+ //#endregion
30
+ export { IntentSignerViem };
@@ -0,0 +1,2 @@
1
+ import "../expirable-nonce.js";
2
+ import "../../shared-types.js";
@@ -0,0 +1,43 @@
1
+ import { MultiPayload, RelayParamsDefault } from "../shared-types.cjs";
2
+ import { NearTxInfo } from "../../shared-types.cjs";
3
+ import { ILogger } from "lampamazaza-internal-utils";
4
+
5
+ //#region src/intents/interfaces/intent-relayer.d.ts
6
+ interface IIntentRelayer<Ticket, RelayParams = RelayParamsDefault> {
7
+ /**
8
+ * Publishes a single intent to the relayer.
9
+ * @param params - The relay parameters including the signed multi-payload
10
+ * @param ctx - Optional context with logger
11
+ * @returns A ticket (typically an intent hash) for tracking the intent
12
+ */
13
+ publishIntent(params: RelayParams, ctx?: {
14
+ logger?: ILogger;
15
+ }): Promise<Ticket>;
16
+ /**
17
+ * Publishes multiple intents atomically to the relayer.
18
+ * All intents will be executed together or not at all.
19
+ * @param params - Parameters including array of multi-payloads and quote hashes
20
+ * @param ctx - Optional context with logger
21
+ * @returns Array of tickets (typically intent hashes) for tracking the intents
22
+ */
23
+ publishIntents(params: {
24
+ multiPayloads: MultiPayload[];
25
+ quoteHashes: string[];
26
+ }, ctx?: {
27
+ logger?: ILogger;
28
+ }): Promise<Ticket[]>;
29
+ /**
30
+ * Waits for an intent to be settled on-chain.
31
+ * @param ticket - The ticket returned from publishIntent
32
+ * @param ctx - Optional context with logger and signal
33
+ * @returns Transaction information once settled
34
+ */
35
+ waitForSettlement(ticket: Ticket, ctx?: {
36
+ logger?: ILogger;
37
+ signal?: AbortSignal;
38
+ }): Promise<{
39
+ tx: NearTxInfo;
40
+ }>;
41
+ }
42
+ //#endregion
43
+ export { IIntentRelayer };
@@ -0,0 +1,43 @@
1
+ import { MultiPayload, RelayParamsDefault } from "../shared-types.js";
2
+ import { NearTxInfo } from "../../shared-types.js";
3
+ import { ILogger } from "lampamazaza-internal-utils";
4
+
5
+ //#region src/intents/interfaces/intent-relayer.d.ts
6
+ interface IIntentRelayer<Ticket, RelayParams = RelayParamsDefault> {
7
+ /**
8
+ * Publishes a single intent to the relayer.
9
+ * @param params - The relay parameters including the signed multi-payload
10
+ * @param ctx - Optional context with logger
11
+ * @returns A ticket (typically an intent hash) for tracking the intent
12
+ */
13
+ publishIntent(params: RelayParams, ctx?: {
14
+ logger?: ILogger;
15
+ }): Promise<Ticket>;
16
+ /**
17
+ * Publishes multiple intents atomically to the relayer.
18
+ * All intents will be executed together or not at all.
19
+ * @param params - Parameters including array of multi-payloads and quote hashes
20
+ * @param ctx - Optional context with logger
21
+ * @returns Array of tickets (typically intent hashes) for tracking the intents
22
+ */
23
+ publishIntents(params: {
24
+ multiPayloads: MultiPayload[];
25
+ quoteHashes: string[];
26
+ }, ctx?: {
27
+ logger?: ILogger;
28
+ }): Promise<Ticket[]>;
29
+ /**
30
+ * Waits for an intent to be settled on-chain.
31
+ * @param ticket - The ticket returned from publishIntent
32
+ * @param ctx - Optional context with logger and signal
33
+ * @returns Transaction information once settled
34
+ */
35
+ waitForSettlement(ticket: Ticket, ctx?: {
36
+ logger?: ILogger;
37
+ signal?: AbortSignal;
38
+ }): Promise<{
39
+ tx: NearTxInfo;
40
+ }>;
41
+ }
42
+ //#endregion
43
+ export { IIntentRelayer };
@@ -0,0 +1,8 @@
1
+ import { IntentPayload, MultiPayload } from "../shared-types.cjs";
2
+
3
+ //#region src/intents/interfaces/intent-signer.d.ts
4
+ interface IIntentSigner {
5
+ signIntent(intent: IntentPayload): Promise<MultiPayload>;
6
+ }
7
+ //#endregion
8
+ export { IIntentSigner };
@@ -0,0 +1,8 @@
1
+ import { IntentPayload, MultiPayload } from "../shared-types.js";
2
+
3
+ //#region src/intents/interfaces/intent-signer.d.ts
4
+ interface IIntentSigner {
5
+ signIntent(intent: IntentPayload): Promise<MultiPayload>;
6
+ }
7
+ //#endregion
8
+ export { IIntentSigner };
@@ -0,0 +1,9 @@
1
+ import { Salt } from "../expirable-nonce.cjs";
2
+
3
+ //#region src/intents/interfaces/salt-manager.d.ts
4
+ interface ISaltManager {
5
+ getCachedSalt(): Promise<Salt>;
6
+ refresh(): Promise<Salt>;
7
+ }
8
+ //#endregion
9
+ export { ISaltManager };
@@ -0,0 +1,9 @@
1
+ import { Salt } from "../expirable-nonce.js";
2
+
3
+ //#region src/intents/interfaces/salt-manager.d.ts
4
+ interface ISaltManager {
5
+ getCachedSalt(): Promise<Salt>;
6
+ refresh(): Promise<Salt>;
7
+ }
8
+ //#endregion
9
+ export { ISaltManager };
@@ -0,0 +1,74 @@
1
+ const require_rolldown_runtime = require('../../_virtual/rolldown_runtime.cjs');
2
+ let lampamazaza_internal_utils = require("lampamazaza-internal-utils");
3
+ let _scure_base = require("@scure/base");
4
+ let valibot = require("valibot");
5
+ valibot = require_rolldown_runtime.__toESM(valibot);
6
+
7
+ //#region src/intents/salt-manager.ts
8
+ const SALT_TTL_MS = 300 * 1e3;
9
+ var SaltManager = class {
10
+ constructor({ envConfig, nearProvider }) {
11
+ this.currentSalt = null;
12
+ this.fetchPromise = null;
13
+ this.lastFetchTime = 0;
14
+ this.intentsContract = envConfig.contractID;
15
+ this.nearProvider = nearProvider;
16
+ }
17
+ /**
18
+ * Returns the cached salt if it's valid, otherwise fetches a new one
19
+ * Deduplicates concurrent requests so only one fetch runs at a time
20
+ */
21
+ async getCachedSalt() {
22
+ if (this.isCacheValid()) return this.currentSalt;
23
+ if (this.fetchPromise) return this.fetchPromise;
24
+ this.fetchPromise = this.fetchAndCache().finally(() => {
25
+ this.fetchPromise = null;
26
+ });
27
+ return this.fetchPromise;
28
+ }
29
+ /**
30
+ * Fetches a new salt from the contract and updates the cache
31
+ */
32
+ async refresh() {
33
+ this.invalidateCache();
34
+ return this.getCachedSalt();
35
+ }
36
+ async fetchAndCache() {
37
+ try {
38
+ this.currentSalt = await fetchSalt(this.nearProvider, this.intentsContract);
39
+ this.lastFetchTime = Date.now();
40
+ return this.currentSalt;
41
+ } catch (err) {
42
+ this.fetchPromise = null;
43
+ throw new Error(`Failed to fetch salt`, { cause: err });
44
+ }
45
+ }
46
+ isCacheValid() {
47
+ return this.currentSalt != null && Date.now() - this.lastFetchTime < SALT_TTL_MS;
48
+ }
49
+ invalidateCache() {
50
+ this.currentSalt = null;
51
+ this.lastFetchTime = 0;
52
+ }
53
+ };
54
+ /**
55
+ * Fetches the current salt from the NEAR contract
56
+ *
57
+ * @param nearProvider Near provider used for querying the contract
58
+ * @param contractId The NEAR contract ID to query
59
+ * @returns Promise resolving to the salt
60
+ */
61
+ async function fetchSalt(nearProvider, contractId) {
62
+ const value = await lampamazaza_internal_utils.utils.queryContract({
63
+ contractId,
64
+ methodName: "current_salt",
65
+ args: {},
66
+ finality: "optimistic",
67
+ nearClient: nearProvider,
68
+ schema: valibot.string()
69
+ });
70
+ return _scure_base.hex.decode(value);
71
+ }
72
+
73
+ //#endregion
74
+ exports.SaltManager = SaltManager;
@@ -0,0 +1,72 @@
1
+ import { utils } from "lampamazaza-internal-utils";
2
+ import { hex } from "@scure/base";
3
+ import * as v from "valibot";
4
+
5
+ //#region src/intents/salt-manager.ts
6
+ const SALT_TTL_MS = 300 * 1e3;
7
+ var SaltManager = class {
8
+ constructor({ envConfig, nearProvider }) {
9
+ this.currentSalt = null;
10
+ this.fetchPromise = null;
11
+ this.lastFetchTime = 0;
12
+ this.intentsContract = envConfig.contractID;
13
+ this.nearProvider = nearProvider;
14
+ }
15
+ /**
16
+ * Returns the cached salt if it's valid, otherwise fetches a new one
17
+ * Deduplicates concurrent requests so only one fetch runs at a time
18
+ */
19
+ async getCachedSalt() {
20
+ if (this.isCacheValid()) return this.currentSalt;
21
+ if (this.fetchPromise) return this.fetchPromise;
22
+ this.fetchPromise = this.fetchAndCache().finally(() => {
23
+ this.fetchPromise = null;
24
+ });
25
+ return this.fetchPromise;
26
+ }
27
+ /**
28
+ * Fetches a new salt from the contract and updates the cache
29
+ */
30
+ async refresh() {
31
+ this.invalidateCache();
32
+ return this.getCachedSalt();
33
+ }
34
+ async fetchAndCache() {
35
+ try {
36
+ this.currentSalt = await fetchSalt(this.nearProvider, this.intentsContract);
37
+ this.lastFetchTime = Date.now();
38
+ return this.currentSalt;
39
+ } catch (err) {
40
+ this.fetchPromise = null;
41
+ throw new Error(`Failed to fetch salt`, { cause: err });
42
+ }
43
+ }
44
+ isCacheValid() {
45
+ return this.currentSalt != null && Date.now() - this.lastFetchTime < SALT_TTL_MS;
46
+ }
47
+ invalidateCache() {
48
+ this.currentSalt = null;
49
+ this.lastFetchTime = 0;
50
+ }
51
+ };
52
+ /**
53
+ * Fetches the current salt from the NEAR contract
54
+ *
55
+ * @param nearProvider Near provider used for querying the contract
56
+ * @param contractId The NEAR contract ID to query
57
+ * @returns Promise resolving to the salt
58
+ */
59
+ async function fetchSalt(nearProvider, contractId) {
60
+ const value = await utils.queryContract({
61
+ contractId,
62
+ methodName: "current_salt",
63
+ args: {},
64
+ finality: "optimistic",
65
+ nearClient: nearProvider,
66
+ schema: v.string()
67
+ });
68
+ return hex.decode(value);
69
+ }
70
+
71
+ //#endregion
72
+ export { SaltManager };
@@ -0,0 +1,20 @@
1
+ import { Intent, MultiPayload as MultiPayload$1 } from "lampamazaza-contract-types";
2
+
3
+ //#region src/intents/shared-types.d.ts
4
+ type IntentPrimitive = Intent;
5
+ interface IntentPayload {
6
+ verifying_contract: string;
7
+ deadline: string;
8
+ nonce: string;
9
+ intents: IntentPrimitive[];
10
+ signer_id: string | undefined;
11
+ }
12
+ type IntentPayloadFactory = (intentParams: IntentPayload) => Promise<Partial<IntentPayload>> | Partial<IntentPayload>;
13
+ type IntentHash = string;
14
+ interface RelayParamsDefault {
15
+ multiPayload: MultiPayload$1;
16
+ quoteHashes?: string[];
17
+ }
18
+ type IntentRelayParamsFactory<RelayParams = Omit<RelayParamsDefault, "multiPayload">> = () => RelayParams | Promise<RelayParams>;
19
+ //#endregion
20
+ export { IntentHash, IntentPayload, IntentPayloadFactory, IntentPrimitive, IntentRelayParamsFactory, type MultiPayload$1 as MultiPayload, RelayParamsDefault };
@@ -0,0 +1,20 @@
1
+ import { Intent, MultiPayload as MultiPayload$1 } from "lampamazaza-contract-types";
2
+
3
+ //#region src/intents/shared-types.d.ts
4
+ type IntentPrimitive = Intent;
5
+ interface IntentPayload {
6
+ verifying_contract: string;
7
+ deadline: string;
8
+ nonce: string;
9
+ intents: IntentPrimitive[];
10
+ signer_id: string | undefined;
11
+ }
12
+ type IntentPayloadFactory = (intentParams: IntentPayload) => Promise<Partial<IntentPayload>> | Partial<IntentPayload>;
13
+ type IntentHash = string;
14
+ interface RelayParamsDefault {
15
+ multiPayload: MultiPayload$1;
16
+ quoteHashes?: string[];
17
+ }
18
+ type IntentRelayParamsFactory<RelayParams = Omit<RelayParamsDefault, "multiPayload">> = () => RelayParams | Promise<RelayParams>;
19
+ //#endregion
20
+ export { IntentHash, IntentPayload, IntentPayloadFactory, IntentPrimitive, IntentRelayParamsFactory, type MultiPayload$1 as MultiPayload, RelayParamsDefault };
@@ -0,0 +1,11 @@
1
+ const require_rolldown_runtime = require('../../_virtual/rolldown_runtime.cjs');
2
+ let lampamazaza_internal_utils = require("lampamazaza-internal-utils");
3
+
4
+ //#region src/lib/array.ts
5
+ function zip(arr1, arr2) {
6
+ (0, lampamazaza_internal_utils.assert)(arr1.length === arr2.length, "Arrays must have the same length");
7
+ return arr1.map((v, i) => [v, arr2[i]]);
8
+ }
9
+
10
+ //#endregion
11
+ exports.zip = zip;
@@ -0,0 +1,10 @@
1
+ import { assert } from "lampamazaza-internal-utils";
2
+
3
+ //#region src/lib/array.ts
4
+ function zip(arr1, arr2) {
5
+ assert(arr1.length === arr2.length, "Arrays must have the same length");
6
+ return arr1.map((v, i) => [v, arr2[i]]);
7
+ }
8
+
9
+ //#endregion
10
+ export { zip };
@@ -0,0 +1,50 @@
1
+ const require_rolldown_runtime = require('../../_virtual/rolldown_runtime.cjs');
2
+ let lampamazaza_internal_utils = require("lampamazaza-internal-utils");
3
+
4
+ //#region src/lib/caip2.ts
5
+ /**
6
+ * CAIP2 identifiers
7
+ */
8
+ const Chains = {
9
+ Bitcoin: "bip122:000000000019d6689c085ae165831e93",
10
+ BitcoinCash: "bip122:000000000000000000651ef99cb9fcbe",
11
+ Zcash: "bip122:00040fe8ec8471911baa1db1266ea15d",
12
+ Dogecoin: "bip122:1a91e3dace36e2be3bf030a65679fe82",
13
+ Litecoin: "bip122:12a765e31ffd4059bada1e25190f6e98",
14
+ Ethereum: "eip155:1",
15
+ Optimism: "eip155:10",
16
+ BNB: "eip155:56",
17
+ Gnosis: "eip155:100",
18
+ Polygon: "eip155:137",
19
+ Monad: "eip155:143",
20
+ LayerX: "eip155:196",
21
+ Adi: "eip155:36900",
22
+ Base: "eip155:8453",
23
+ Arbitrum: "eip155:42161",
24
+ Avalanche: "eip155:43114",
25
+ Berachain: "eip155:80085",
26
+ Near: "near:mainnet",
27
+ Solana: "solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp",
28
+ Tron: "tron:27Lqcw",
29
+ XRPL: "xrpl:0",
30
+ TON: "tvm:-239",
31
+ Sui: "sui:mainnet",
32
+ Aptos: "aptos:mainnet",
33
+ Stellar: "stellar:pubnet",
34
+ Cardano: "cip34:1-764824073",
35
+ Starknet: "starknet:SN_MAIN",
36
+ Plasma: "eip155:9745",
37
+ Scroll: "eip155:534352"
38
+ };
39
+ function getEIP155ChainId(chain) {
40
+ (0, lampamazaza_internal_utils.assert)(chain.startsWith("eip155:"), "Chain is not an EIP-155 chain");
41
+ const chainIdStr = chain.slice(7);
42
+ (0, lampamazaza_internal_utils.assert)(chainIdStr.length > 0, "Chain is not an EIP-155 chain");
43
+ const chainId = Number(chainIdStr);
44
+ (0, lampamazaza_internal_utils.assert)(!Number.isNaN(chainId), "Chain is not an EIP-155 chain");
45
+ return chainId;
46
+ }
47
+
48
+ //#endregion
49
+ exports.Chains = Chains;
50
+ exports.getEIP155ChainId = getEIP155ChainId;
@@ -0,0 +1,38 @@
1
+ //#region src/lib/caip2.d.ts
2
+ /**
3
+ * CAIP2 identifiers
4
+ */
5
+ declare const Chains: {
6
+ readonly Bitcoin: "bip122:000000000019d6689c085ae165831e93";
7
+ readonly BitcoinCash: "bip122:000000000000000000651ef99cb9fcbe";
8
+ readonly Zcash: "bip122:00040fe8ec8471911baa1db1266ea15d";
9
+ readonly Dogecoin: "bip122:1a91e3dace36e2be3bf030a65679fe82";
10
+ readonly Litecoin: "bip122:12a765e31ffd4059bada1e25190f6e98";
11
+ readonly Ethereum: "eip155:1";
12
+ readonly Optimism: "eip155:10";
13
+ readonly BNB: "eip155:56";
14
+ readonly Gnosis: "eip155:100";
15
+ readonly Polygon: "eip155:137";
16
+ readonly Monad: "eip155:143";
17
+ readonly LayerX: "eip155:196";
18
+ readonly Adi: "eip155:36900";
19
+ readonly Base: "eip155:8453";
20
+ readonly Arbitrum: "eip155:42161";
21
+ readonly Avalanche: "eip155:43114";
22
+ readonly Berachain: "eip155:80085";
23
+ readonly Near: "near:mainnet";
24
+ readonly Solana: "solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp";
25
+ readonly Tron: "tron:27Lqcw";
26
+ readonly XRPL: "xrpl:0";
27
+ readonly TON: "tvm:-239";
28
+ readonly Sui: "sui:mainnet";
29
+ readonly Aptos: "aptos:mainnet";
30
+ readonly Stellar: "stellar:pubnet";
31
+ readonly Cardano: "cip34:1-764824073";
32
+ readonly Starknet: "starknet:SN_MAIN";
33
+ readonly Plasma: "eip155:9745";
34
+ readonly Scroll: "eip155:534352";
35
+ };
36
+ type Chain = (typeof Chains)[keyof typeof Chains];
37
+ //#endregion
38
+ export { Chain, Chains };
@@ -0,0 +1,38 @@
1
+ //#region src/lib/caip2.d.ts
2
+ /**
3
+ * CAIP2 identifiers
4
+ */
5
+ declare const Chains: {
6
+ readonly Bitcoin: "bip122:000000000019d6689c085ae165831e93";
7
+ readonly BitcoinCash: "bip122:000000000000000000651ef99cb9fcbe";
8
+ readonly Zcash: "bip122:00040fe8ec8471911baa1db1266ea15d";
9
+ readonly Dogecoin: "bip122:1a91e3dace36e2be3bf030a65679fe82";
10
+ readonly Litecoin: "bip122:12a765e31ffd4059bada1e25190f6e98";
11
+ readonly Ethereum: "eip155:1";
12
+ readonly Optimism: "eip155:10";
13
+ readonly BNB: "eip155:56";
14
+ readonly Gnosis: "eip155:100";
15
+ readonly Polygon: "eip155:137";
16
+ readonly Monad: "eip155:143";
17
+ readonly LayerX: "eip155:196";
18
+ readonly Adi: "eip155:36900";
19
+ readonly Base: "eip155:8453";
20
+ readonly Arbitrum: "eip155:42161";
21
+ readonly Avalanche: "eip155:43114";
22
+ readonly Berachain: "eip155:80085";
23
+ readonly Near: "near:mainnet";
24
+ readonly Solana: "solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp";
25
+ readonly Tron: "tron:27Lqcw";
26
+ readonly XRPL: "xrpl:0";
27
+ readonly TON: "tvm:-239";
28
+ readonly Sui: "sui:mainnet";
29
+ readonly Aptos: "aptos:mainnet";
30
+ readonly Stellar: "stellar:pubnet";
31
+ readonly Cardano: "cip34:1-764824073";
32
+ readonly Starknet: "starknet:SN_MAIN";
33
+ readonly Plasma: "eip155:9745";
34
+ readonly Scroll: "eip155:534352";
35
+ };
36
+ type Chain = (typeof Chains)[keyof typeof Chains];
37
+ //#endregion
38
+ export { Chain, Chains };
@@ -0,0 +1,48 @@
1
+ import { assert } from "lampamazaza-internal-utils";
2
+
3
+ //#region src/lib/caip2.ts
4
+ /**
5
+ * CAIP2 identifiers
6
+ */
7
+ const Chains = {
8
+ Bitcoin: "bip122:000000000019d6689c085ae165831e93",
9
+ BitcoinCash: "bip122:000000000000000000651ef99cb9fcbe",
10
+ Zcash: "bip122:00040fe8ec8471911baa1db1266ea15d",
11
+ Dogecoin: "bip122:1a91e3dace36e2be3bf030a65679fe82",
12
+ Litecoin: "bip122:12a765e31ffd4059bada1e25190f6e98",
13
+ Ethereum: "eip155:1",
14
+ Optimism: "eip155:10",
15
+ BNB: "eip155:56",
16
+ Gnosis: "eip155:100",
17
+ Polygon: "eip155:137",
18
+ Monad: "eip155:143",
19
+ LayerX: "eip155:196",
20
+ Adi: "eip155:36900",
21
+ Base: "eip155:8453",
22
+ Arbitrum: "eip155:42161",
23
+ Avalanche: "eip155:43114",
24
+ Berachain: "eip155:80085",
25
+ Near: "near:mainnet",
26
+ Solana: "solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp",
27
+ Tron: "tron:27Lqcw",
28
+ XRPL: "xrpl:0",
29
+ TON: "tvm:-239",
30
+ Sui: "sui:mainnet",
31
+ Aptos: "aptos:mainnet",
32
+ Stellar: "stellar:pubnet",
33
+ Cardano: "cip34:1-764824073",
34
+ Starknet: "starknet:SN_MAIN",
35
+ Plasma: "eip155:9745",
36
+ Scroll: "eip155:534352"
37
+ };
38
+ function getEIP155ChainId(chain) {
39
+ assert(chain.startsWith("eip155:"), "Chain is not an EIP-155 chain");
40
+ const chainIdStr = chain.slice(7);
41
+ assert(chainIdStr.length > 0, "Chain is not an EIP-155 chain");
42
+ const chainId = Number(chainIdStr);
43
+ assert(!Number.isNaN(chainId), "Chain is not an EIP-155 chain");
44
+ return chainId;
45
+ }
46
+
47
+ //#endregion
48
+ export { Chains, getEIP155ChainId };
@@ -0,0 +1,20 @@
1
+ const require_rolldown_runtime = require('../../_virtual/rolldown_runtime.cjs');
2
+ const require_caip2 = require('./caip2.cjs');
3
+ const require_object = require('./object.cjs');
4
+ let lampamazaza_internal_utils = require("lampamazaza-internal-utils");
5
+
6
+ //#region src/lib/configure-rpc-config.ts
7
+ function configureEvmRpcUrls(defaultRpcUrls, userRpcUrls, supportedChains) {
8
+ const evmRpcUrls = Object.fromEntries(Object.entries(require_object.pick(Object.assign({}, defaultRpcUrls, userRpcUrls ?? {}), supportedChains)).map(([caip2, urls]) => [require_caip2.getEIP155ChainId(caip2), urls]));
9
+ for (const [chainId, urls] of Object.entries(evmRpcUrls)) (0, lampamazaza_internal_utils.assert)(urls.length > 0, `EVM RPC URLs for chain ${chainId} are not provided`);
10
+ return evmRpcUrls;
11
+ }
12
+ function configureStellarRpcUrls(defaultRpcUrls, userRpcUrls) {
13
+ const stellarRpcUrls = Object.assign({}, defaultRpcUrls, userRpcUrls?.[require_caip2.Chains.Stellar] ?? {});
14
+ for (const [key, value] of Object.entries(stellarRpcUrls)) (0, lampamazaza_internal_utils.assert)(value.length > 0, `Stellar RPC URL for ${key} is not provided`);
15
+ return stellarRpcUrls;
16
+ }
17
+
18
+ //#endregion
19
+ exports.configureEvmRpcUrls = configureEvmRpcUrls;
20
+ exports.configureStellarRpcUrls = configureStellarRpcUrls;
@@ -0,0 +1,18 @@
1
+ import { Chains, getEIP155ChainId } from "./caip2.js";
2
+ import { pick } from "./object.js";
3
+ import { assert } from "lampamazaza-internal-utils";
4
+
5
+ //#region src/lib/configure-rpc-config.ts
6
+ function configureEvmRpcUrls(defaultRpcUrls, userRpcUrls, supportedChains) {
7
+ const evmRpcUrls = Object.fromEntries(Object.entries(pick(Object.assign({}, defaultRpcUrls, userRpcUrls ?? {}), supportedChains)).map(([caip2, urls]) => [getEIP155ChainId(caip2), urls]));
8
+ for (const [chainId, urls] of Object.entries(evmRpcUrls)) assert(urls.length > 0, `EVM RPC URLs for chain ${chainId} are not provided`);
9
+ return evmRpcUrls;
10
+ }
11
+ function configureStellarRpcUrls(defaultRpcUrls, userRpcUrls) {
12
+ const stellarRpcUrls = Object.assign({}, defaultRpcUrls, userRpcUrls?.[Chains.Stellar] ?? {});
13
+ for (const [key, value] of Object.entries(stellarRpcUrls)) assert(value.length > 0, `Stellar RPC URL for ${key} is not provided`);
14
+ return stellarRpcUrls;
15
+ }
16
+
17
+ //#endregion
18
+ export { configureEvmRpcUrls, configureStellarRpcUrls };