@rainlanguage/ui-components 0.0.1-alpha.13 → 0.0.1-alpha.131

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 (188) hide show
  1. package/dist/__fixtures__/orderDetail.d.ts +1 -1
  2. package/dist/__fixtures__/settings.yaml +183 -0
  3. package/dist/__mocks__/MockComponent.svelte +4 -0
  4. package/dist/__mocks__/MockComponent.svelte.d.ts +3 -1
  5. package/dist/__mocks__/settings.d.ts +7 -3
  6. package/dist/__mocks__/settings.js +68 -33
  7. package/dist/__mocks__/stores.d.ts +94 -27
  8. package/dist/__mocks__/stores.js +45 -22
  9. package/dist/components/ButtonLoading.svelte +1 -1
  10. package/dist/components/ButtonVaultLink.svelte +3 -3
  11. package/dist/components/ButtonVaultLink.svelte.d.ts +1 -1
  12. package/dist/components/CheckboxMyItemsOnly.svelte +3 -2
  13. package/dist/components/CheckboxMyItemsOnly.svelte.d.ts +2 -3
  14. package/dist/components/CheckboxZeroBalanceVault.svelte.d.ts +2 -2
  15. package/dist/components/CodeMirrorDotrain.svelte +4 -0
  16. package/dist/components/CodeMirrorDotrain.svelte.d.ts +1 -0
  17. package/dist/components/CodeMirrorRainlang.svelte +11 -3
  18. package/dist/components/CodeMirrorRainlang.svelte.d.ts +1 -1
  19. package/dist/components/EditableSpan.svelte +3 -14
  20. package/dist/components/EditableSpan.svelte.d.ts +0 -1
  21. package/dist/components/Hash.svelte +3 -3
  22. package/dist/components/License.svelte +5 -4
  23. package/dist/components/ListViewOrderbookFilters.svelte +16 -15
  24. package/dist/components/ListViewOrderbookFilters.svelte.d.ts +9 -13
  25. package/dist/components/OrderOrVaultHash.svelte +10 -7
  26. package/dist/components/OrderOrVaultHash.svelte.d.ts +1 -1
  27. package/dist/components/PageHeader.svelte +1 -1
  28. package/dist/components/TanstackAppTable.svelte +2 -3
  29. package/dist/components/TanstackAppTable.svelte.d.ts +1 -1
  30. package/dist/components/ToastDetail.svelte +42 -0
  31. package/dist/components/ToastDetail.svelte.d.ts +20 -0
  32. package/dist/components/Tooltip.svelte +8 -0
  33. package/dist/components/Tooltip.svelte.d.ts +21 -0
  34. package/dist/components/charts/OrderTradesChart.svelte +3 -2
  35. package/dist/components/charts/TanstackLightweightChartLine.svelte +5 -9
  36. package/dist/components/charts/VaultBalanceChart.svelte +6 -6
  37. package/dist/components/charts/VaultBalanceChart.svelte.d.ts +1 -1
  38. package/dist/components/charts/transformAndSortData.d.ts +24 -0
  39. package/dist/components/charts/transformAndSortData.js +111 -0
  40. package/dist/components/checkbox/CheckboxActiveOrders.svelte +11 -0
  41. package/dist/components/checkbox/CheckboxActiveOrders.svelte.d.ts +19 -0
  42. package/dist/components/deployment/ButtonSelectOption.svelte +2 -0
  43. package/dist/components/deployment/ButtonSelectOption.svelte.d.ts +1 -0
  44. package/dist/components/deployment/ComposedRainlangModal.svelte +7 -5
  45. package/dist/components/deployment/ComposedRainlangModal.svelte.d.ts +1 -4
  46. package/dist/components/deployment/DeploymentSectionHeader.svelte +7 -4
  47. package/dist/components/deployment/DeploymentSteps.svelte +169 -185
  48. package/dist/components/deployment/DeploymentSteps.svelte.d.ts +7 -13
  49. package/dist/components/deployment/DeploymentsSection.svelte +18 -14
  50. package/dist/components/deployment/DepositInput.svelte +32 -14
  51. package/dist/components/deployment/DepositInput.svelte.d.ts +1 -2
  52. package/dist/components/deployment/DisclaimerModal.svelte +1 -0
  53. package/dist/components/deployment/FieldDefinitionInput.svelte +22 -14
  54. package/dist/components/deployment/FieldDefinitionInput.svelte.d.ts +1 -2
  55. package/dist/components/deployment/SelectToken.svelte +16 -4
  56. package/dist/components/deployment/SelectToken.svelte.d.ts +1 -2
  57. package/dist/components/deployment/StrategyPage.svelte +6 -2
  58. package/dist/components/deployment/TokenIOInput.svelte +16 -5
  59. package/dist/components/deployment/TokenIOInput.svelte.d.ts +1 -2
  60. package/dist/components/detail/OrderDetail.svelte +60 -44
  61. package/dist/components/detail/OrderDetail.svelte.d.ts +11 -8
  62. package/dist/components/detail/TanstackOrderQuote.svelte +17 -7
  63. package/dist/components/detail/TanstackOrderQuote.svelte.d.ts +1 -1
  64. package/dist/components/detail/VaultDetail.svelte +43 -43
  65. package/dist/components/detail/VaultDetail.svelte.d.ts +11 -11
  66. package/dist/components/dropdown/DropdownActiveSubgraphs.svelte +2 -2
  67. package/dist/components/dropdown/DropdownActiveSubgraphs.svelte.d.ts +4 -4
  68. package/dist/components/dropdown/DropdownOrderListAccounts.svelte +2 -1
  69. package/dist/components/dropdown/DropdownOrderListAccounts.svelte.d.ts +3 -3
  70. package/dist/components/icon/Refresh.svelte +2 -1
  71. package/dist/components/icon/Refresh.svelte.d.ts +1 -0
  72. package/dist/components/input/InputOrderHash.svelte +1 -1
  73. package/dist/components/input/InputOrderHash.svelte.d.ts +2 -2
  74. package/dist/components/input/InputRegistryUrl.svelte +36 -14
  75. package/dist/components/input/InputToken.svelte +2 -2
  76. package/dist/components/input/InputTokenAmount.svelte +1 -1
  77. package/dist/components/tables/OrderAPY.svelte +4 -9
  78. package/dist/components/tables/OrderTradesListTable.svelte +7 -3
  79. package/dist/components/tables/OrderVaultsVolTable.svelte +11 -2
  80. package/dist/components/tables/OrdersListTable.svelte +27 -31
  81. package/dist/components/tables/OrdersListTable.svelte.d.ts +2 -8
  82. package/dist/components/tables/VaultBalanceChangesTable.svelte +8 -6
  83. package/dist/components/tables/VaultsListTable.svelte +53 -67
  84. package/dist/components/tables/VaultsListTable.svelte.d.ts +12 -20
  85. package/dist/components/transactions/FixedBottomTransaction.svelte +63 -0
  86. package/dist/components/transactions/FixedBottomTransaction.svelte.d.ts +16 -0
  87. package/dist/components/transactions/TransactionDetail.svelte +31 -0
  88. package/dist/components/transactions/TransactionDetail.svelte.d.ts +20 -0
  89. package/dist/components/transactions/TransactionList.svelte +17 -0
  90. package/dist/components/transactions/TransactionList.svelte.d.ts +16 -0
  91. package/dist/components/transactions/getStatusEmoji.d.ts +2 -0
  92. package/dist/components/transactions/getStatusEmoji.js +20 -0
  93. package/dist/components/wallet/WalletConnect.svelte +5 -4
  94. package/dist/components/wallet/WalletConnect.svelte.d.ts +0 -1
  95. package/dist/consts.d.ts +1 -0
  96. package/dist/consts.js +1 -0
  97. package/dist/errors/DeploymentStepsError.d.ts +6 -2
  98. package/dist/errors/DeploymentStepsError.js +5 -1
  99. package/dist/hooks/useGui.d.ts +3 -0
  100. package/dist/hooks/useGui.js +11 -0
  101. package/dist/index.d.ts +27 -11
  102. package/dist/index.js +28 -8
  103. package/dist/models/Transaction.d.ts +80 -0
  104. package/dist/models/Transaction.js +134 -0
  105. package/dist/providers/GuiProvider.svelte +8 -0
  106. package/dist/providers/GuiProvider.svelte.d.ts +21 -0
  107. package/dist/providers/registry/RegistryManager.d.ts +65 -0
  108. package/dist/providers/registry/RegistryManager.js +133 -0
  109. package/dist/providers/registry/RegistryProvider.svelte +6 -0
  110. package/dist/providers/registry/RegistryProvider.svelte.d.ts +21 -0
  111. package/dist/providers/registry/context.d.ts +10 -0
  112. package/dist/providers/registry/context.js +46 -0
  113. package/dist/providers/registry/useRegistry.d.ts +7 -0
  114. package/dist/providers/registry/useRegistry.js +29 -0
  115. package/dist/providers/toasts/ToastProvider.svelte +17 -0
  116. package/dist/providers/toasts/ToastProvider.svelte.d.ts +18 -0
  117. package/dist/providers/toasts/context.d.ts +14 -0
  118. package/dist/providers/toasts/context.js +22 -0
  119. package/dist/providers/toasts/useToasts.d.ts +16 -0
  120. package/dist/providers/toasts/useToasts.js +63 -0
  121. package/dist/providers/transactions/TransactionManager.d.ts +183 -0
  122. package/dist/providers/transactions/TransactionManager.js +353 -0
  123. package/dist/providers/transactions/TransactionProvider.svelte +11 -0
  124. package/dist/providers/transactions/TransactionProvider.svelte.d.ts +24 -0
  125. package/dist/providers/transactions/context.d.ts +19 -0
  126. package/dist/providers/transactions/context.js +28 -0
  127. package/dist/providers/transactions/useTransactions.d.ts +13 -0
  128. package/dist/providers/transactions/useTransactions.js +18 -0
  129. package/dist/providers/wallet/WalletProvider.svelte +7 -0
  130. package/dist/providers/wallet/WalletProvider.svelte.d.ts +21 -0
  131. package/dist/providers/wallet/context.d.ts +10 -0
  132. package/dist/providers/wallet/context.js +47 -0
  133. package/dist/providers/wallet/useAccount.d.ts +8 -0
  134. package/dist/providers/wallet/useAccount.js +148 -0
  135. package/dist/queries/queryClient.d.ts +1 -1
  136. package/dist/queries/queryClient.js +11 -6
  137. package/dist/services/awaitTransactionIndexing.d.ts +100 -0
  138. package/dist/services/awaitTransactionIndexing.js +57 -0
  139. package/dist/services/handleShareChoices.d.ts +2 -2
  140. package/dist/services/handleShareChoices.js +7 -2
  141. package/dist/services/historicalOrderCharts.d.ts +1 -1
  142. package/dist/services/historicalOrderCharts.js +1 -1
  143. package/dist/services/index.d.ts +2 -1
  144. package/dist/services/index.js +2 -1
  145. package/dist/services/loadRegistryUrl.d.ts +2 -0
  146. package/dist/services/loadRegistryUrl.js +19 -0
  147. package/dist/services/registry.d.ts +6 -0
  148. package/dist/services/registry.js +33 -77
  149. package/dist/services/time.d.ts +12 -0
  150. package/dist/services/time.js +88 -6
  151. package/dist/storesGeneric/cachedWritableStore.d.ts +57 -0
  152. package/dist/storesGeneric/cachedWritableStore.js +93 -0
  153. package/dist/types/account.d.ts +3 -0
  154. package/dist/types/account.js +1 -0
  155. package/dist/types/appStores.d.ts +10 -9
  156. package/dist/types/modal.d.ts +24 -12
  157. package/dist/types/strategy.d.ts +1 -1
  158. package/dist/types/toast.d.ts +11 -0
  159. package/dist/types/toast.js +1 -0
  160. package/dist/types/transaction.d.ts +54 -15
  161. package/dist/types/transaction.js +29 -1
  162. package/dist/utils/configHelpers.d.ts +8 -0
  163. package/dist/utils/configHelpers.js +38 -0
  164. package/dist/utils/constructHashLink.d.ts +23 -0
  165. package/dist/utils/constructHashLink.js +110 -0
  166. package/dist/utils/vault.d.ts +1 -1
  167. package/package.json +34 -34
  168. package/dist/__fixtures__/settings-12-11-24.json +0 -160
  169. package/dist/__mocks__/mockTransactionStore.d.ts +0 -22
  170. package/dist/__mocks__/mockTransactionStore.js +0 -56
  171. package/dist/components/deployment/DepositsSection.svelte +0 -8
  172. package/dist/components/deployment/DepositsSection.svelte.d.ts +0 -20
  173. package/dist/components/deployment/FieldDefinitionsSection.svelte +0 -9
  174. package/dist/components/deployment/FieldDefinitionsSection.svelte.d.ts +0 -20
  175. package/dist/components/deployment/SelectTokensSection.svelte +0 -17
  176. package/dist/components/deployment/SelectTokensSection.svelte.d.ts +0 -21
  177. package/dist/components/deployment/TokenIOSection.svelte +0 -17
  178. package/dist/components/deployment/TokenIOSection.svelte.d.ts +0 -21
  179. package/dist/components/deployment/getDeploymentTransactionArgs.d.ts +0 -17
  180. package/dist/components/deployment/getDeploymentTransactionArgs.js +0 -24
  181. package/dist/components/detail/DepositOrWithdrawButtons.svelte +0 -44
  182. package/dist/components/detail/DepositOrWithdrawButtons.svelte.d.ts +0 -26
  183. package/dist/components/dropdown/DropdownOrderStatus.svelte +0 -31
  184. package/dist/components/dropdown/DropdownOrderStatus.svelte.d.ts +0 -19
  185. package/dist/stores/transactionStore.d.ts +0 -98
  186. package/dist/stores/transactionStore.js +0 -303
  187. package/dist/utils/time.d.ts +0 -12
  188. package/dist/utils/time.js +0 -27
@@ -1,7 +1,8 @@
1
- <script generics="T">import { invalidateIdQuery } from "../../queries/queryClient";
1
+ <script generics="T">import { useToasts } from "../../providers/toasts/useToasts";
2
+ import { invalidateTanstackQueries } from "../../queries/queryClient";
2
3
  import Refresh from "../icon/Refresh.svelte";
3
4
  import EditableSpan from "../EditableSpan.svelte";
4
- import { getOrderQuote } from "@rainlanguage/orderbook/quote";
5
+ import { getOrderQuote } from "@rainlanguage/orderbook";
5
6
  import { QKEY_ORDER_QUOTE } from "../../queries/keys";
6
7
  import { formatUnits, hexToNumber, isHex } from "viem";
7
8
  import { createQuery, useQueryClient } from "@tanstack/svelte-query";
@@ -11,10 +12,10 @@ import {
11
12
  TableBodyCell,
12
13
  TableBodyRow,
13
14
  TableHead,
14
- TableHeadCell,
15
- Tooltip
15
+ TableHeadCell
16
16
  } from "flowbite-svelte";
17
17
  import { BugOutline, PauseSolid, PlaySolid } from "flowbite-svelte-icons";
18
+ import Tooltip from "../Tooltip.svelte";
18
19
  export let id;
19
20
  export let order;
20
21
  export let rpcUrl;
@@ -22,12 +23,21 @@ export let orderbookAddress;
22
23
  export let handleQuoteDebugModal = void 0;
23
24
  let enabled = true;
24
25
  const queryClient = useQueryClient();
26
+ const { errToast } = useToasts();
25
27
  const refreshQuotes = async () => {
26
- await invalidateIdQuery(queryClient, id);
28
+ try {
29
+ await invalidateTanstackQueries(queryClient, [id, QKEY_ORDER_QUOTE + id]);
30
+ } catch {
31
+ errToast("Failed to refresh");
32
+ }
27
33
  };
28
34
  $: orderQuoteQuery = createQuery({
29
35
  queryKey: [id, QKEY_ORDER_QUOTE + id],
30
- queryFn: () => getOrderQuote([order], rpcUrl),
36
+ queryFn: async () => {
37
+ const result = await getOrderQuote([order], rpcUrl);
38
+ if (result.error) throw new Error(result.error.msg);
39
+ return result.value;
40
+ },
31
41
  enabled: !!id && enabled
32
42
  });
33
43
  let blockNumber;
@@ -36,7 +46,7 @@ $: orderModalArg = order;
36
46
 
37
47
  <div class="mt-4">
38
48
  <div class="mb-4 flex items-center justify-between">
39
- <h2 class="text-lg font-semibold">Order Quotes</h2>
49
+ <h2 class="text-lg font-semibold">Order quotes</h2>
40
50
  <div class="flex items-center gap-x-1">
41
51
  {#if $orderQuoteQuery.data && $orderQuoteQuery.data.length > 0 && isHex($orderQuoteQuery.data[0].blockNumber)}
42
52
  <EditableSpan
@@ -1,6 +1,6 @@
1
1
  import { SvelteComponent } from "svelte";
2
2
  import type { Hex } from 'viem';
3
- import type { SgOrder } from '@rainlanguage/orderbook/js_api';
3
+ import type { SgOrder } from '@rainlanguage/orderbook';
4
4
  declare class __sveltets_Render<T> {
5
5
  props(): {
6
6
  id: string;
@@ -1,41 +1,40 @@
1
- <script>import { Button } from "flowbite-svelte";
2
- import { bigintStringToHex } from "../../utils/hex";
1
+ <script>import { bigintStringToHex } from "../../utils/hex";
3
2
  import Hash, { HashType } from "../Hash.svelte";
4
3
  import VaultBalanceChangesTable from "../tables/VaultBalanceChangesTable.svelte";
5
4
  import VaultBalanceChart from "../charts/VaultBalanceChart.svelte";
6
5
  import TanstackPageContentDetail from "./TanstackPageContentDetail.svelte";
7
6
  import CardProperty from "../CardProperty.svelte";
8
7
  import { QKEY_VAULT } from "../../queries/keys";
9
- import { getVault } from "@rainlanguage/orderbook/js_api";
8
+ import { getVault } from "@rainlanguage/orderbook";
10
9
  import { formatUnits } from "viem";
11
10
  import { createQuery } from "@tanstack/svelte-query";
12
11
  import { onDestroy } from "svelte";
13
12
  import { useQueryClient } from "@tanstack/svelte-query";
14
- import { ArrowDownOutline, ArrowUpOutline } from "flowbite-svelte-icons";
15
13
  import OrderOrVaultHash from "../OrderOrVaultHash.svelte";
16
- import DepositOrWithdrawButtons from "./DepositOrWithdrawButtons.svelte";
17
14
  import Refresh from "../icon/Refresh.svelte";
18
- import { invalidateIdQuery } from "../../queries/queryClient";
19
- export let handleDepositOrWithdrawModal = void 0;
15
+ import { invalidateTanstackQueries } from "../../queries/queryClient";
16
+ import { useAccount } from "../../providers/wallet/useAccount";
17
+ import { Button } from "flowbite-svelte";
18
+ import { ArrowDownToBracketOutline, ArrowUpFromBracketOutline } from "flowbite-svelte-icons";
19
+ import { useToasts } from "../../providers/toasts/useToasts";
20
20
  export let id;
21
21
  export let network;
22
- export let walletAddressMatchesOrBlank = void 0;
23
- export let handleDepositModal = void 0;
24
- export let handleWithdrawModal = void 0;
25
22
  export let lightweightChartsTheme = void 0;
26
23
  export let activeNetworkRef;
27
24
  export let activeOrderbookRef;
28
25
  export let settings;
29
- export let wagmiConfig = void 0;
30
- export let signerAddress = void 0;
31
- const subgraphUrl = $settings?.subgraphs?.[network] || "";
32
- const chainId = $settings?.networks?.[network]?.["chain-id"] || 0;
33
- const rpcUrl = $settings?.networks?.[network]?.["rpc"] || "";
26
+ export let onDeposit;
27
+ export let onWithdraw;
28
+ const subgraphUrl = $settings.orderbook.subgraphs[network].url || "";
34
29
  const queryClient = useQueryClient();
30
+ const { matchesAccount } = useAccount();
31
+ const { errToast } = useToasts();
35
32
  $: vaultDetailQuery = createQuery({
36
33
  queryKey: [id, QKEY_VAULT + id],
37
- queryFn: () => {
38
- return getVault(subgraphUrl || "", id);
34
+ queryFn: async () => {
35
+ const result = await getVault(subgraphUrl || "", id);
36
+ if (result.error) throw new Error(result.error.msg);
37
+ return result.value;
39
38
  },
40
39
  enabled: !!subgraphUrl
41
40
  });
@@ -44,15 +43,18 @@ const updateActiveNetworkAndOrderbook = (subgraphName) => {
44
43
  activeOrderbookRef.set(subgraphName);
45
44
  };
46
45
  const interval = setInterval(async () => {
47
- await queryClient.invalidateQueries({
48
- queryKey: [id],
49
- refetchType: "active",
50
- exact: false
51
- });
46
+ invalidateTanstackQueries(queryClient, [id, QKEY_VAULT + id]);
52
47
  }, 5e3);
53
48
  onDestroy(() => {
54
49
  clearInterval(interval);
55
50
  });
51
+ const handleRefresh = async () => {
52
+ try {
53
+ await invalidateTanstackQueries(queryClient, [id, QKEY_VAULT + id]);
54
+ } catch {
55
+ errToast("Failed to refresh");
56
+ }
57
+ };
56
58
  </script>
57
59
 
58
60
  <TanstackPageContentDetail query={vaultDetailQuery} emptyMessage="Vault not found">
@@ -64,32 +66,30 @@ onDestroy(() => {
64
66
  {data.token.name}
65
67
  </div>
66
68
  <div class="flex items-center gap-2">
67
- {#if $wagmiConfig && handleDepositOrWithdrawModal && $signerAddress === data.owner}
68
- <DepositOrWithdrawButtons
69
- vault={data}
70
- {chainId}
71
- {rpcUrl}
72
- query={vaultDetailQuery}
73
- {handleDepositOrWithdrawModal}
74
- {subgraphUrl}
75
- />
76
- {:else if handleDepositModal && handleWithdrawModal && $walletAddressMatchesOrBlank?.(data.owner)}
69
+ {#if matchesAccount(data.owner)}
77
70
  <Button
78
- data-testid="vaultDetailDepositButton"
79
- color="dark"
80
- on:click={() => handleDepositModal(data, $vaultDetailQuery.refetch)}
81
- ><ArrowDownOutline size="xs" class="mr-2" />Deposit</Button
71
+ color="light"
72
+ size="xs"
73
+ data-testid="deposit-button"
74
+ aria-label="Deposit to vault"
75
+ on:click={() => onDeposit(data)}
82
76
  >
77
+ <ArrowDownToBracketOutline size="xs" />
78
+ </Button>
83
79
  <Button
84
- data-testid="vaultDetailWithdrawButton"
85
- color="dark"
86
- on:click={() => handleWithdrawModal(data, $vaultDetailQuery.refetch)}
87
- ><ArrowUpOutline size="xs" class="mr-2" />Withdraw</Button
80
+ color="light"
81
+ size="xs"
82
+ data-testid="withdraw-button"
83
+ aria-label="Withdraw from vault"
84
+ on:click={() => onWithdraw(data)}
88
85
  >
86
+ <ArrowUpFromBracketOutline size="xs" />
87
+ </Button>
89
88
  {/if}
90
89
 
91
90
  <Refresh
92
- on:click={async () => await invalidateIdQuery(queryClient, id)}
91
+ testId="top-refresh"
92
+ on:click={handleRefresh}
93
93
  spin={$vaultDetailQuery.isLoading || $vaultDetailQuery.isFetching}
94
94
  />
95
95
  </div>
@@ -108,7 +108,7 @@ onDestroy(() => {
108
108
  </CardProperty>
109
109
 
110
110
  <CardProperty data-testid="vaultDetailOwnerAddress">
111
- <svelte:fragment slot="key">Owner Address</svelte:fragment>
111
+ <svelte:fragment slot="key">Owner address</svelte:fragment>
112
112
  <svelte:fragment slot="value">
113
113
  <Hash type={HashType.Wallet} value={data.owner} />
114
114
  </svelte:fragment>
@@ -152,7 +152,7 @@ onDestroy(() => {
152
152
  <CardProperty>
153
153
  <svelte:fragment slot="key">Orders as output</svelte:fragment>
154
154
  <svelte:fragment slot="value">
155
- <p data-testid="vaulDetailOrdersAsOutput" class="flex flex-wrap justify-start">
155
+ <p data-testid="vaultDetailOrdersAsOutput" class="flex flex-wrap justify-start">
156
156
  {#if data.ordersAsOutput && data.ordersAsOutput.length > 0}
157
157
  {#each data.ordersAsOutput as order}
158
158
  <OrderOrVaultHash
@@ -1,24 +1,24 @@
1
1
  import { SvelteComponent } from "svelte";
2
+ import { type SgVault } from '@rainlanguage/orderbook';
2
3
  import type { ChartTheme } from '../../utils/lightweightChartsThemes';
3
- import type { Readable, Writable } from 'svelte/store';
4
- import type { SgVault } from '@rainlanguage/orderbook/js_api';
4
+ import type { Readable } from 'svelte/store';
5
5
  import type { AppStoresInterface } from '../../types/appStores';
6
- import type { Config } from 'wagmi';
7
- import type { DepositOrWithdrawModalProps } from '../../types/modal';
8
6
  declare const __propDef: {
9
7
  props: {
10
- handleDepositOrWithdrawModal?: ((args: DepositOrWithdrawModalProps) => void) | undefined;
11
8
  id: string;
12
9
  network: string;
13
- walletAddressMatchesOrBlank?: Readable<(otherAddress: string) => boolean> | undefined;
14
- handleDepositModal?: ((vault: SgVault, onDeposit: () => void) => void) | undefined;
15
- handleWithdrawModal?: ((vault: SgVault, onWithdraw: () => void) => void) | undefined;
16
10
  lightweightChartsTheme?: Readable<ChartTheme> | undefined;
17
11
  activeNetworkRef: AppStoresInterface["activeNetworkRef"];
18
12
  activeOrderbookRef: AppStoresInterface["activeOrderbookRef"];
19
- settings: any;
20
- wagmiConfig?: Writable<Config> | undefined;
21
- signerAddress?: Writable<string | null> | undefined;
13
+ settings: AppStoresInterface["settings"];
14
+ /**
15
+ * Required callback function when deposit action is triggered for a vault
16
+ * @param vault The vault to deposit into
17
+ */ onDeposit: (vault: SgVault) => void;
18
+ /**
19
+ * Required callback function when withdraw action is triggered for a vault
20
+ * @param vault The vault to withdraw from
21
+ */ onWithdraw: (vault: SgVault) => void;
22
22
  };
23
23
  events: {
24
24
  [evt: string]: CustomEvent<any>;
@@ -1,7 +1,7 @@
1
1
  <script>import DropdownCheckbox from "./DropdownCheckbox.svelte";
2
2
  export let settings;
3
3
  export let activeSubgraphs;
4
- $: dropdownOptions = Object.keys(settings?.subgraphs ?? {}).reduce(
4
+ $: dropdownOptions = Object.keys(settings.orderbook.subgraphs ?? {}).reduce(
5
5
  (acc, key) => ({
6
6
  ...acc,
7
7
  [key]: key
@@ -12,7 +12,7 @@ function handleStatusChange(event) {
12
12
  let items = Object.keys(event.detail);
13
13
  activeSubgraphs.set(
14
14
  Object.values(items).reduce(
15
- (acc, key) => ({ ...acc, [key]: (settings?.subgraphs ?? {})[key] }),
15
+ (acc, key) => ({ ...acc, [key]: (settings.orderbook.subgraphs ?? {})[key] }),
16
16
  {}
17
17
  )
18
18
  );
@@ -1,10 +1,10 @@
1
1
  import { SvelteComponent } from "svelte";
2
- import type { Writable } from 'svelte/store';
3
- import type { ConfigSource } from '@rainlanguage/orderbook/js_api';
2
+ import type { NewConfig } from '@rainlanguage/orderbook';
3
+ import type { AppStoresInterface } from '../../types/appStores';
4
4
  declare const __propDef: {
5
5
  props: {
6
- settings: ConfigSource;
7
- activeSubgraphs: Writable<Record<string, string>>;
6
+ settings: NewConfig;
7
+ activeSubgraphs: AppStoresInterface["activeSubgraphs"];
8
8
  };
9
9
  events: {
10
10
  [evt: string]: CustomEvent<any>;
@@ -1,7 +1,8 @@
1
1
  <script>import DropdownCheckbox from "./DropdownCheckbox.svelte";
2
+ import { getAccountsAsOptions } from "../../utils/configHelpers";
2
3
  export let accounts;
3
4
  export let activeAccountsItems;
4
- $: options = $accounts;
5
+ $: options = getAccountsAsOptions($accounts);
5
6
  </script>
6
7
 
7
8
  <div data-testid="accounts-dropdown">
@@ -1,9 +1,9 @@
1
1
  import { SvelteComponent } from "svelte";
2
- import type { Writable, Readable } from 'svelte/store';
2
+ import type { AppStoresInterface } from '../../types/appStores';
3
3
  declare const __propDef: {
4
4
  props: {
5
- accounts: Readable<Record<string, string>> | undefined;
6
- activeAccountsItems: Writable<Record<string, string>> | undefined;
5
+ accounts: AppStoresInterface["accounts"];
6
+ activeAccountsItems: AppStoresInterface["activeAccountsItems"];
7
7
  };
8
8
  events: {
9
9
  [evt: string]: CustomEvent<any>;
@@ -12,10 +12,11 @@ export let size = ctx.size || "md";
12
12
  export let role = ctx.role || "img";
13
13
  export let ariaLabel = "refresh";
14
14
  export let spin = false;
15
+ export let testId = "refresh-button";
15
16
  </script>
16
17
 
17
18
  <svg
18
- data-testid="refresh-button"
19
+ data-testid={testId}
19
20
  xmlns="http://www.w3.org/2000/svg"
20
21
  fill="none"
21
22
  {...$$restProps}
@@ -7,6 +7,7 @@ declare const __propDef: {
7
7
  role?: AriaRole | undefined;
8
8
  ariaLabel?: string | undefined;
9
9
  spin?: boolean | undefined;
10
+ testId?: string | undefined;
10
11
  };
11
12
  events: {
12
13
  click: MouseEvent;
@@ -9,7 +9,7 @@ function handleChange(event) {
9
9
  </script>
10
10
 
11
11
  <div data-testid="order-hash-input" class="flex flex-col gap-x-2">
12
- <Label>Order Hash</Label>
12
+ <Label>Order hash</Label>
13
13
  <div class="w-full lg:w-32">
14
14
  <input
15
15
  type="text"
@@ -1,8 +1,8 @@
1
1
  import { SvelteComponent } from "svelte";
2
- import type { Writable } from 'svelte/store';
2
+ import type { AppStoresInterface } from '../../types/appStores';
3
3
  declare const __propDef: {
4
4
  props: {
5
- orderHash: Writable<string>;
5
+ orderHash: AppStoresInterface["orderHash"];
6
6
  value?: string;
7
7
  };
8
8
  events: {
@@ -1,18 +1,40 @@
1
1
  <script>import { Button, Input } from "flowbite-svelte";
2
- let newRegistryUrl = localStorage.getItem("registry") || "";
3
- const loadRegistryUrl = () => {
4
- window.history.pushState({}, "", window.location.pathname + "?registry=" + newRegistryUrl);
5
- window.location.reload();
6
- localStorage.setItem("registry", newRegistryUrl);
7
- };
2
+ import { useRegistry } from "../../providers/registry/useRegistry";
3
+ import { loadRegistryUrl } from "../../services/loadRegistryUrl";
4
+ const registry = useRegistry();
5
+ let newRegistryUrl = registry.getCurrentRegistry();
6
+ let error = null;
7
+ let loading = false;
8
+ async function handleClick() {
9
+ loading = true;
10
+ error = null;
11
+ try {
12
+ if (!registry) {
13
+ throw new Error("Registry manager not yet available.");
14
+ }
15
+ await loadRegistryUrl(newRegistryUrl, registry);
16
+ } catch (err) {
17
+ error = err instanceof Error ? err.message : "Unknown error";
18
+ }
19
+ loading = false;
20
+ }
8
21
  </script>
9
22
 
10
- <div class="mb-4 flex w-full items-start gap-4">
11
- <Input
12
- id="strategy-url"
13
- type="url"
14
- placeholder="Enter URL to raw strategy registry file"
15
- bind:value={newRegistryUrl}
16
- />
17
- <Button class="text-nowrap" on:click={loadRegistryUrl}>Load Registry URL</Button>
23
+ <div class="flex w-full flex-col items-end gap-2">
24
+ <div class="flex w-full items-start gap-4" data-testid="registry-input">
25
+ <Input
26
+ id="strategy-url"
27
+ type="url"
28
+ placeholder="Enter URL to raw strategy registry file"
29
+ bind:value={newRegistryUrl}
30
+ />
31
+ <Button class="w-36 text-nowrap" on:click={handleClick} disabled={loading}>
32
+ {loading ? 'Loading registry...' : 'Load registry URL'}
33
+ </Button>
34
+ </div>
35
+ <div class="h-4">
36
+ {#if error}
37
+ <p data-testid="registry-error" class="text-red-500">{error}</p>
38
+ {/if}
39
+ </div>
18
40
  </div>
@@ -35,10 +35,10 @@ function decimalsComplete({ detail }) {
35
35
  </div>
36
36
 
37
37
  {#if !isAddressValid && address.length > 0}
38
- <Helper class="mt-2 text-sm" color="red">Invalid Address</Helper>
38
+ <Helper class="mt-2 text-sm" color="red">Invalid address</Helper>
39
39
  {/if}
40
40
 
41
- <Helper class="mt-2 text-sm">Token Address</Helper>
41
+ <Helper class="mt-2 text-sm">Token address</Helper>
42
42
  </div>
43
43
  <div class="w-32 grow-0 break-all" data-testid="token-decimals-input">
44
44
  <input
@@ -39,7 +39,7 @@ function fillMaxValue() {
39
39
  />
40
40
 
41
41
  {#if maxValue}
42
- <div class="absolute right-4 flex h-10 flex-col justify-center">
42
+ <div class="absolute right-2 flex h-10 flex-col justify-center">
43
43
  <Button color="blue" class="px-2 py-1" size="xs" pill on:click={fillMaxValue}>MAX</Button>
44
44
  </div>
45
45
  {/if}
@@ -1,7 +1,7 @@
1
1
  <script>import { createInfiniteQuery } from "@tanstack/svelte-query";
2
2
  import TanstackAppTable from "../TanstackAppTable.svelte";
3
3
  import { QKEY_ORDER_APY } from "../../queries/keys";
4
- import { getOrderPerformance } from "@rainlanguage/orderbook/js_api";
4
+ import { getOrderPerformance } from "@rainlanguage/orderbook";
5
5
  import { TableBodyCell, TableHeadCell } from "flowbite-svelte";
6
6
  import ApyTimeFilters from "../charts/APYTimeFilters.svelte";
7
7
  import { bigintStringToPercentage } from "../../utils/number";
@@ -14,14 +14,9 @@ $: queryEndTime = endTimestamp ? BigInt(endTimestamp) : void 0;
14
14
  $: orderPerformance = createInfiniteQuery({
15
15
  queryKey: [id, QKEY_ORDER_APY + id],
16
16
  queryFn: async () => {
17
- return [
18
- await getOrderPerformance(
19
- subgraphUrl || "",
20
- id,
21
- queryStartTime,
22
- queryEndTime
23
- )
24
- ];
17
+ const result = await getOrderPerformance(subgraphUrl || "", id, queryStartTime, queryEndTime);
18
+ if (result.error) throw new Error(result.error.msg);
19
+ return [result.value];
25
20
  },
26
21
  initialPageParam: 0,
27
22
  getNextPageParam: () => void 0,
@@ -1,10 +1,10 @@
1
1
  <script>import { createInfiniteQuery } from "@tanstack/svelte-query";
2
2
  import TanstackAppTable from "../TanstackAppTable.svelte";
3
3
  import { QKEY_ORDER_TRADES_LIST } from "../../queries/keys";
4
- import { getOrderTradesList, getOrderTradesCount } from "@rainlanguage/orderbook/js_api";
4
+ import { getOrderTradesList, getOrderTradesCount } from "@rainlanguage/orderbook";
5
5
  import { DEFAULT_PAGE_SIZE } from "../../queries/constants";
6
6
  import { TableBodyCell, TableHeadCell } from "flowbite-svelte";
7
- import { formatTimestampSecondsAsLocal } from "../../utils/time";
7
+ import { formatTimestampSecondsAsLocal } from "../../services/time";
8
8
  import Hash, { HashType } from "../Hash.svelte";
9
9
  import { formatUnits } from "viem";
10
10
  import { BugOutline } from "flowbite-svelte-icons";
@@ -20,7 +20,7 @@ $: orderTradesQuery = createInfiniteQuery({
20
20
  queryKey: [id, QKEY_ORDER_TRADES_LIST + id],
21
21
  queryFn: async ({ pageParam }) => {
22
22
  tradesCount = void 0;
23
- const [count, trades] = await Promise.all([
23
+ const [countResult, tradesResult] = await Promise.all([
24
24
  getOrderTradesCount(
25
25
  subgraphUrl || "",
26
26
  id,
@@ -35,6 +35,10 @@ $: orderTradesQuery = createInfiniteQuery({
35
35
  endTimestamp ? BigInt(endTimestamp) : void 0
36
36
  )
37
37
  ]);
38
+ if (countResult.error) throw new Error(countResult.error.msg);
39
+ if (tradesResult.error) throw new Error(tradesResult.error.msg);
40
+ const count = countResult.value;
41
+ const trades = tradesResult.value;
38
42
  if (typeof count === "number") {
39
43
  tradesCount = count;
40
44
  }
@@ -1,7 +1,7 @@
1
1
  <script>import { createInfiniteQuery } from "@tanstack/svelte-query";
2
2
  import TanstackAppTable from "../TanstackAppTable.svelte";
3
3
  import { QKEY_VAULTS_VOL_LIST } from "../../queries/keys";
4
- import { getOrderVaultsVolume } from "@rainlanguage/orderbook/js_api";
4
+ import { getOrderVaultsVolume } from "@rainlanguage/orderbook";
5
5
  import { TableBodyCell, TableHeadCell } from "flowbite-svelte";
6
6
  import Hash, { HashType } from "../Hash.svelte";
7
7
  import { formatUnits } from "viem";
@@ -15,7 +15,16 @@ $: queryStartTime = startTimestamp ? BigInt(startTimestamp) : void 0;
15
15
  $: queryEndTime = endTimestamp ? BigInt(endTimestamp) : void 0;
16
16
  $: vaultsVol = createInfiniteQuery({
17
17
  queryKey: [id, QKEY_VAULTS_VOL_LIST + id],
18
- queryFn: () => getOrderVaultsVolume(subgraphUrl || "", id, queryStartTime, queryEndTime),
18
+ queryFn: async () => {
19
+ const result = await getOrderVaultsVolume(
20
+ subgraphUrl || "",
21
+ id,
22
+ queryStartTime,
23
+ queryEndTime
24
+ );
25
+ if (result.error) throw new Error(result.error.msg);
26
+ return result.value;
27
+ },
19
28
  initialPageParam: 0,
20
29
  getNextPageParam: () => void 0,
21
30
  enabled: !!subgraphUrl