@rainlanguage/ui-components 0.0.1-alpha.10

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 (236) hide show
  1. package/README.md +58 -0
  2. package/dist/__fixtures__/orderDetail.d.ts +99 -0
  3. package/dist/__fixtures__/orderDetail.js +204 -0
  4. package/dist/__fixtures__/settings-12-11-24.json +160 -0
  5. package/dist/__mocks__/MockComponent.d.ts +1 -0
  6. package/dist/__mocks__/MockComponent.js +2 -0
  7. package/dist/__mocks__/MockComponent.svelte +3 -0
  8. package/dist/__mocks__/MockComponent.svelte.d.ts +18 -0
  9. package/dist/__mocks__/mockTransactionStore.d.ts +22 -0
  10. package/dist/__mocks__/mockTransactionStore.js +56 -0
  11. package/dist/__mocks__/mockWeb3Config.d.ts +2 -0
  12. package/dist/__mocks__/mockWeb3Config.js +15 -0
  13. package/dist/__mocks__/queries.d.ts +13 -0
  14. package/dist/__mocks__/queries.js +64 -0
  15. package/dist/__mocks__/settings.d.ts +3 -0
  16. package/dist/__mocks__/settings.js +37 -0
  17. package/dist/__mocks__/stores.d.ts +94 -0
  18. package/dist/__mocks__/stores.js +113 -0
  19. package/dist/app.css +3 -0
  20. package/dist/assets/ledger.svg +6 -0
  21. package/dist/assets/logo-dark.svg +15 -0
  22. package/dist/assets/logo-light.svg +15 -0
  23. package/dist/assets/walletconnect.svg +1 -0
  24. package/dist/components/BadgeActive.svelte +9 -0
  25. package/dist/components/BadgeActive.svelte.d.ts +19 -0
  26. package/dist/components/BlockQuote.svelte +1 -0
  27. package/dist/components/BlockQuote.svelte.d.ts +29 -0
  28. package/dist/components/ButtonDarkMode.svelte +14 -0
  29. package/dist/components/ButtonDarkMode.svelte.d.ts +18 -0
  30. package/dist/components/ButtonLoading.svelte +11 -0
  31. package/dist/components/ButtonLoading.svelte.d.ts +24 -0
  32. package/dist/components/ButtonTab.svelte +7 -0
  33. package/dist/components/ButtonTab.svelte.d.ts +23 -0
  34. package/dist/components/ButtonVaultLink.svelte +29 -0
  35. package/dist/components/ButtonVaultLink.svelte.d.ts +22 -0
  36. package/dist/components/CardProperty.svelte +11 -0
  37. package/dist/components/CardProperty.svelte.d.ts +31 -0
  38. package/dist/components/CheckboxMyItemsOnly.svelte +23 -0
  39. package/dist/components/CheckboxMyItemsOnly.svelte.d.ts +21 -0
  40. package/dist/components/CheckboxZeroBalanceVault.svelte +20 -0
  41. package/dist/components/CheckboxZeroBalanceVault.svelte.d.ts +19 -0
  42. package/dist/components/CodeMirrorDotrain.svelte +35 -0
  43. package/dist/components/CodeMirrorDotrain.svelte.d.ts +23 -0
  44. package/dist/components/CodeMirrorRainlang.svelte +34 -0
  45. package/dist/components/CodeMirrorRainlang.svelte.d.ts +23 -0
  46. package/dist/components/DropdownProperty.svelte +12 -0
  47. package/dist/components/DropdownProperty.svelte.d.ts +19 -0
  48. package/dist/components/EditableSpan.svelte +46 -0
  49. package/dist/components/EditableSpan.svelte.d.ts +21 -0
  50. package/dist/components/Hash.svelte +85 -0
  51. package/dist/components/Hash.svelte.d.ts +28 -0
  52. package/dist/components/Heading.svelte +19 -0
  53. package/dist/components/Heading.svelte.d.ts +29 -0
  54. package/dist/components/IconError.svelte +8 -0
  55. package/dist/components/IconError.svelte.d.ts +16 -0
  56. package/dist/components/IconExternalLink.svelte +18 -0
  57. package/dist/components/IconExternalLink.svelte.d.ts +18 -0
  58. package/dist/components/IconInfo.svelte +8 -0
  59. package/dist/components/IconInfo.svelte.d.ts +16 -0
  60. package/dist/components/IconLedger.svelte +13 -0
  61. package/dist/components/IconLedger.svelte.d.ts +16 -0
  62. package/dist/components/IconSuccess.svelte +8 -0
  63. package/dist/components/IconSuccess.svelte.d.ts +16 -0
  64. package/dist/components/IconTelegram.svelte +12 -0
  65. package/dist/components/IconTelegram.svelte.d.ts +25 -0
  66. package/dist/components/IconWalletConnect.svelte +13 -0
  67. package/dist/components/IconWalletConnect.svelte.d.ts +16 -0
  68. package/dist/components/IconWarning.svelte +8 -0
  69. package/dist/components/IconWarning.svelte.d.ts +16 -0
  70. package/dist/components/License.svelte +29 -0
  71. package/dist/components/License.svelte.d.ts +25 -0
  72. package/dist/components/ListViewOrderbookFilters.svelte +58 -0
  73. package/dist/components/ListViewOrderbookFilters.svelte.d.ts +28 -0
  74. package/dist/components/OrderOrVaultHash.svelte +24 -0
  75. package/dist/components/OrderOrVaultHash.svelte.d.ts +22 -0
  76. package/dist/components/PageHeader.svelte +33 -0
  77. package/dist/components/PageHeader.svelte.d.ts +21 -0
  78. package/dist/components/TanstackAppTable.svelte +73 -0
  79. package/dist/components/TanstackAppTable.svelte.d.ts +30 -0
  80. package/dist/components/Text.svelte +12 -0
  81. package/dist/components/Text.svelte.d.ts +31 -0
  82. package/dist/components/charts/APYTimeFilters.svelte +47 -0
  83. package/dist/components/charts/APYTimeFilters.svelte.d.ts +19 -0
  84. package/dist/components/charts/ChartTimeFilters.svelte +35 -0
  85. package/dist/components/charts/ChartTimeFilters.svelte.d.ts +18 -0
  86. package/dist/components/charts/LightweightChart.svelte +110 -0
  87. package/dist/components/charts/LightweightChart.svelte.d.ts +29 -0
  88. package/dist/components/charts/OrderTradesChart.svelte +36 -0
  89. package/dist/components/charts/OrderTradesChart.svelte.d.ts +21 -0
  90. package/dist/components/charts/TableTimeFilters.svelte +48 -0
  91. package/dist/components/charts/TableTimeFilters.svelte.d.ts +19 -0
  92. package/dist/components/charts/TanstackLightweightChartLine.svelte +24 -0
  93. package/dist/components/charts/TanstackLightweightChartLine.svelte.d.ts +23 -0
  94. package/dist/components/charts/VaultBalanceChart.svelte +37 -0
  95. package/dist/components/charts/VaultBalanceChart.svelte.d.ts +22 -0
  96. package/dist/components/checkbox/Checkbox.svelte +17 -0
  97. package/dist/components/checkbox/Checkbox.svelte.d.ts +21 -0
  98. package/dist/components/deployment/ButtonSelectOption.svelte +14 -0
  99. package/dist/components/deployment/ButtonSelectOption.svelte.d.ts +20 -0
  100. package/dist/components/deployment/ComposedRainlangModal.svelte +35 -0
  101. package/dist/components/deployment/ComposedRainlangModal.svelte.d.ts +19 -0
  102. package/dist/components/deployment/DeploymentSectionHeader.svelte +14 -0
  103. package/dist/components/deployment/DeploymentSectionHeader.svelte.d.ts +19 -0
  104. package/dist/components/deployment/DeploymentSteps.svelte +252 -0
  105. package/dist/components/deployment/DeploymentSteps.svelte.d.ts +38 -0
  106. package/dist/components/deployment/DeploymentTile.svelte +19 -0
  107. package/dist/components/deployment/DeploymentTile.svelte.d.ts +21 -0
  108. package/dist/components/deployment/DeploymentsSection.svelte +20 -0
  109. package/dist/components/deployment/DeploymentsSection.svelte.d.ts +19 -0
  110. package/dist/components/deployment/DepositInput.svelte +93 -0
  111. package/dist/components/deployment/DepositInput.svelte.d.ts +20 -0
  112. package/dist/components/deployment/DepositsSection.svelte +8 -0
  113. package/dist/components/deployment/DepositsSection.svelte.d.ts +20 -0
  114. package/dist/components/deployment/DisclaimerModal.svelte +54 -0
  115. package/dist/components/deployment/DisclaimerModal.svelte.d.ts +19 -0
  116. package/dist/components/deployment/FieldDefinitionInput.svelte +66 -0
  117. package/dist/components/deployment/FieldDefinitionInput.svelte.d.ts +20 -0
  118. package/dist/components/deployment/FieldDefinitionsSection.svelte +9 -0
  119. package/dist/components/deployment/FieldDefinitionsSection.svelte.d.ts +20 -0
  120. package/dist/components/deployment/InvalidStrategiesSection.svelte +19 -0
  121. package/dist/components/deployment/InvalidStrategiesSection.svelte.d.ts +19 -0
  122. package/dist/components/deployment/SelectToken.svelte +88 -0
  123. package/dist/components/deployment/SelectToken.svelte.d.ts +21 -0
  124. package/dist/components/deployment/SelectTokensSection.svelte +17 -0
  125. package/dist/components/deployment/SelectTokensSection.svelte.d.ts +21 -0
  126. package/dist/components/deployment/ShareChoicesButton.svelte +26 -0
  127. package/dist/components/deployment/ShareChoicesButton.svelte.d.ts +18 -0
  128. package/dist/components/deployment/StrategyPage.svelte +70 -0
  129. package/dist/components/deployment/StrategyPage.svelte.d.ts +19 -0
  130. package/dist/components/deployment/TokenIOInput.svelte +62 -0
  131. package/dist/components/deployment/TokenIOInput.svelte.d.ts +22 -0
  132. package/dist/components/deployment/TokenIOSection.svelte +17 -0
  133. package/dist/components/deployment/TokenIOSection.svelte.d.ts +21 -0
  134. package/dist/components/deployment/ValidStrategiesSection.svelte +25 -0
  135. package/dist/components/deployment/ValidStrategiesSection.svelte.d.ts +19 -0
  136. package/dist/components/deployment/getDeploymentTransactionArgs.d.ts +17 -0
  137. package/dist/components/deployment/getDeploymentTransactionArgs.js +24 -0
  138. package/dist/components/detail/DepositOrWithdrawButtons.svelte +44 -0
  139. package/dist/components/detail/DepositOrWithdrawButtons.svelte.d.ts +26 -0
  140. package/dist/components/detail/OrderDetail.svelte +195 -0
  141. package/dist/components/detail/OrderDetail.svelte.d.ts +36 -0
  142. package/dist/components/detail/TanstackOrderQuote.svelte +173 -0
  143. package/dist/components/detail/TanstackOrderQuote.svelte.d.ts +22 -0
  144. package/dist/components/detail/TanstackPageContentDetail.svelte +56 -0
  145. package/dist/components/detail/TanstackPageContentDetail.svelte.d.ts +31 -0
  146. package/dist/components/detail/VaultDetail.svelte +178 -0
  147. package/dist/components/detail/VaultDetail.svelte.d.ts +35 -0
  148. package/dist/components/dropdown/DropdownActiveSubgraphs.svelte +38 -0
  149. package/dist/components/dropdown/DropdownActiveSubgraphs.svelte.d.ts +21 -0
  150. package/dist/components/dropdown/DropdownCheckbox.svelte +77 -0
  151. package/dist/components/dropdown/DropdownCheckbox.svelte.d.ts +26 -0
  152. package/dist/components/dropdown/DropdownOrderListAccounts.svelte +15 -0
  153. package/dist/components/dropdown/DropdownOrderListAccounts.svelte.d.ts +20 -0
  154. package/dist/components/dropdown/DropdownOrderStatus.svelte +31 -0
  155. package/dist/components/dropdown/DropdownOrderStatus.svelte.d.ts +19 -0
  156. package/dist/components/dropdown/DropdownRadio.svelte +45 -0
  157. package/dist/components/dropdown/DropdownRadio.svelte.d.ts +30 -0
  158. package/dist/components/icon/RainLogo.svelte +54 -0
  159. package/dist/components/icon/RainLogo.svelte.d.ts +25 -0
  160. package/dist/components/icon/Refresh.svelte +57 -0
  161. package/dist/components/icon/Refresh.svelte.d.ts +40 -0
  162. package/dist/components/input/InputHex.svelte +42 -0
  163. package/dist/components/input/InputHex.svelte.d.ts +19 -0
  164. package/dist/components/input/InputOrderHash.svelte +22 -0
  165. package/dist/components/input/InputOrderHash.svelte.d.ts +20 -0
  166. package/dist/components/input/InputRegistryUrl.svelte +18 -0
  167. package/dist/components/input/InputRegistryUrl.svelte.d.ts +16 -0
  168. package/dist/components/input/InputToken.svelte +53 -0
  169. package/dist/components/input/InputToken.svelte.d.ts +19 -0
  170. package/dist/components/input/InputTokenAmount.svelte +63 -0
  171. package/dist/components/input/InputTokenAmount.svelte.d.ts +21 -0
  172. package/dist/components/tables/OrderAPY.svelte +57 -0
  173. package/dist/components/tables/OrderAPY.svelte.d.ts +19 -0
  174. package/dist/components/tables/OrderTradesListTable.svelte +145 -0
  175. package/dist/components/tables/OrderTradesListTable.svelte.d.ts +21 -0
  176. package/dist/components/tables/OrderVaultsVolTable.svelte +67 -0
  177. package/dist/components/tables/OrderVaultsVolTable.svelte.d.ts +19 -0
  178. package/dist/components/tables/OrdersListTable.svelte +181 -0
  179. package/dist/components/tables/OrdersListTable.svelte.d.ts +35 -0
  180. package/dist/components/tables/VaultBalanceChangesTable.svelte +74 -0
  181. package/dist/components/tables/VaultBalanceChangesTable.svelte.d.ts +17 -0
  182. package/dist/components/tables/VaultsListTable.svelte +229 -0
  183. package/dist/components/tables/VaultsListTable.svelte.d.ts +40 -0
  184. package/dist/components/wallet/WalletConnect.svelte +28 -0
  185. package/dist/components/wallet/WalletConnect.svelte.d.ts +23 -0
  186. package/dist/errors/DeploymentStepsError.d.ts +24 -0
  187. package/dist/errors/DeploymentStepsError.js +45 -0
  188. package/dist/errors/index.d.ts +1 -0
  189. package/dist/errors/index.js +1 -0
  190. package/dist/index.d.ts +89 -0
  191. package/dist/index.js +89 -0
  192. package/dist/queries/constants.d.ts +2 -0
  193. package/dist/queries/constants.js +2 -0
  194. package/dist/queries/keys.d.ts +9 -0
  195. package/dist/queries/keys.js +9 -0
  196. package/dist/queries/queryClient.d.ts +3 -0
  197. package/dist/queries/queryClient.js +16 -0
  198. package/dist/services/getExplorerLink.d.ts +1 -0
  199. package/dist/services/getExplorerLink.js +10 -0
  200. package/dist/services/handleShareChoices.d.ts +2 -0
  201. package/dist/services/handleShareChoices.js +10 -0
  202. package/dist/services/historicalOrderCharts.d.ts +12 -0
  203. package/dist/services/historicalOrderCharts.js +496 -0
  204. package/dist/services/index.d.ts +2 -0
  205. package/dist/services/index.js +1 -0
  206. package/dist/services/registry.d.ts +25 -0
  207. package/dist/services/registry.js +133 -0
  208. package/dist/services/time.d.ts +6 -0
  209. package/dist/services/time.js +17 -0
  210. package/dist/stores/transactionStore.d.ts +98 -0
  211. package/dist/stores/transactionStore.js +303 -0
  212. package/dist/test/matchers.d.ts +6 -0
  213. package/dist/test/matchers.js +4 -0
  214. package/dist/types/appStores.d.ts +19 -0
  215. package/dist/types/appStores.js +1 -0
  216. package/dist/types/modal.d.ts +20 -0
  217. package/dist/types/modal.js +1 -0
  218. package/dist/types/strategy.d.ts +10 -0
  219. package/dist/types/strategy.js +1 -0
  220. package/dist/types/transaction.d.ts +27 -0
  221. package/dist/types/transaction.js +1 -0
  222. package/dist/utils/breadcrumbs.d.ts +5 -0
  223. package/dist/utils/breadcrumbs.js +9 -0
  224. package/dist/utils/codeMirrorThemes.d.ts +2 -0
  225. package/dist/utils/codeMirrorThemes.js +86 -0
  226. package/dist/utils/hex.d.ts +2 -0
  227. package/dist/utils/hex.js +3 -0
  228. package/dist/utils/lightweightChartsThemes.d.ts +52 -0
  229. package/dist/utils/lightweightChartsThemes.js +21 -0
  230. package/dist/utils/number.d.ts +14 -0
  231. package/dist/utils/number.js +43 -0
  232. package/dist/utils/time.d.ts +12 -0
  233. package/dist/utils/time.js +27 -0
  234. package/dist/utils/vault.d.ts +2 -0
  235. package/dist/utils/vault.js +29 -0
  236. package/package.json +86 -0
@@ -0,0 +1,98 @@
1
+ import type { Hex } from 'viem';
2
+ import type { Config } from '@wagmi/core';
3
+ import type { ApprovalCalldata, DepositAndAddOrderCalldataResult, DepositCalldataResult, RemoveOrderCalldata, SgVault, WithdrawCalldataResult } from '@rainlanguage/orderbook/js_api';
4
+ export declare const ADDRESS_ZERO = "0x0000000000000000000000000000000000000000";
5
+ export declare const ONE: bigint;
6
+ export declare enum TransactionStatus {
7
+ IDLE = "Idle",
8
+ CHECKING_ALLOWANCE = "Checking your allowance...",
9
+ PENDING_WALLET = "Waiting for wallet confirmation...",
10
+ PENDING_APPROVAL = "Approving token spend...",
11
+ PENDING_DEPLOYMENT = "Deploying your order...",
12
+ PENDING_WITHDRAWAL = "Withdrawing tokens...",
13
+ PENDING_DEPOSIT = "Depositing tokens...",
14
+ PENDING_REMOVE_ORDER = "Removing order...",
15
+ PENDING_SUBGRAPH = "Awaiting subgraph...",
16
+ SUCCESS = "Success! Transaction confirmed",
17
+ ERROR = "Something went wrong"
18
+ }
19
+ export declare enum TransactionErrorMessage {
20
+ BAD_CALLLDATA = "Bad calldata.",
21
+ DEPLOY_FAILED = "Lock transaction failed.",
22
+ TIMEOUT = "Transaction timed out.",
23
+ APPROVAL_FAILED = "Approval transaction failed.",
24
+ USER_REJECTED_APPROVAL = "User rejected approval transaction.",
25
+ USER_REJECTED_TRANSACTION = "User rejected the transaction.",
26
+ DEPLOYMENT_FAILED = "Deployment transaction failed.",
27
+ SWITCH_CHAIN_FAILED = "Failed to switch chain.",
28
+ DEPOSIT_FAILED = "Failed to deposit tokens.",
29
+ WITHDRAWAL_FAILED = "Failed to withdraw tokens.",
30
+ REMOVE_ORDER_FAILED = "Failed to remove order."
31
+ }
32
+ export type ExtendedApprovalCalldata = ApprovalCalldata & {
33
+ symbol?: string;
34
+ };
35
+ export type DeploymentTransactionArgs = {
36
+ config: Config;
37
+ approvals: ExtendedApprovalCalldata[];
38
+ deploymentCalldata: DepositAndAddOrderCalldataResult;
39
+ orderbookAddress: Hex;
40
+ chainId: number;
41
+ subgraphUrl: string;
42
+ network: string;
43
+ };
44
+ export type DepositOrWithdrawTransactionArgs = {
45
+ config: Config;
46
+ approvalCalldata?: ApprovalCalldata;
47
+ transactionCalldata: DepositCalldataResult | WithdrawCalldataResult;
48
+ action: 'deposit' | 'withdraw';
49
+ chainId: number;
50
+ vault: SgVault;
51
+ subgraphUrl: string;
52
+ };
53
+ export type RemoveOrderTransactionArgs = {
54
+ config: Config;
55
+ orderbookAddress: Hex;
56
+ removeOrderCalldata: RemoveOrderCalldata;
57
+ chainId: number;
58
+ subgraphUrl: string;
59
+ };
60
+ export type TransactionState = {
61
+ status: TransactionStatus;
62
+ error: string;
63
+ hash: string;
64
+ data: null;
65
+ functionName: string;
66
+ message: string;
67
+ newOrderHash: string;
68
+ network: string;
69
+ explorerLink: string;
70
+ };
71
+ export type TransactionStore = {
72
+ subscribe: (run: (value: TransactionState) => void) => () => void;
73
+ reset: () => void;
74
+ handleDeploymentTransaction: (args: DeploymentTransactionArgs) => Promise<void>;
75
+ handleDepositOrWithdrawTransaction: (args: DepositOrWithdrawTransactionArgs) => Promise<void>;
76
+ handleRemoveOrderTransaction: (args: RemoveOrderTransactionArgs) => Promise<void>;
77
+ checkingWalletAllowance: (message?: string) => void;
78
+ awaitWalletConfirmation: (message?: string) => void;
79
+ awaitApprovalTx: (hash: string) => void;
80
+ transactionSuccess: (hash: string, message?: string) => void;
81
+ transactionError: (message: TransactionErrorMessage, hash?: string) => void;
82
+ };
83
+ declare const _default: {
84
+ subscribe: (this: void, run: import("svelte/store").Subscriber<TransactionState>, invalidate?: import("svelte/store").Invalidator<TransactionState> | undefined) => import("svelte/store").Unsubscriber;
85
+ reset: () => void;
86
+ handleDeploymentTransaction: ({ config, approvals, deploymentCalldata, orderbookAddress, chainId, subgraphUrl, network }: DeploymentTransactionArgs) => Promise<void>;
87
+ handleDepositOrWithdrawTransaction: ({ config, approvalCalldata, transactionCalldata, action, chainId, vault, subgraphUrl }: DepositOrWithdrawTransactionArgs) => Promise<void>;
88
+ handleRemoveOrderTransaction: ({ config, orderbookAddress, removeOrderCalldata, chainId, subgraphUrl }: RemoveOrderTransactionArgs) => Promise<void>;
89
+ checkingWalletAllowance: (message?: string) => void;
90
+ awaitWalletConfirmation: (message?: string) => void;
91
+ awaitApprovalTx: (hash: string, symbol: string | undefined) => void;
92
+ transactionSuccess: (hash: string, message?: string, newOrderHash?: string, network?: string) => void;
93
+ transactionError: (message: TransactionErrorMessage, hash?: string) => void;
94
+ awaitTransactionIndexing: (subgraphUrl: string, txHash: string, successMessage: string) => Promise<void>;
95
+ awaitNewOrderIndexing: (subgraphUrl: string, txHash: string, network?: string) => Promise<void>;
96
+ awaitRemoveOrderIndexing: (subgraphUrl: string, txHash: string) => Promise<void>;
97
+ };
98
+ export default _default;
@@ -0,0 +1,303 @@
1
+ import { writable } from 'svelte/store';
2
+ import { sendTransaction, switchChain, waitForTransactionReceipt } from '@wagmi/core';
3
+ import { getTransaction, getTransactionAddOrders, getTransactionRemoveOrders } from '@rainlanguage/orderbook/js_api';
4
+ import { getExplorerLink } from '../services/getExplorerLink';
5
+ export const ADDRESS_ZERO = '0x0000000000000000000000000000000000000000';
6
+ export const ONE = BigInt('1000000000000000000');
7
+ export var TransactionStatus;
8
+ (function (TransactionStatus) {
9
+ TransactionStatus["IDLE"] = "Idle";
10
+ TransactionStatus["CHECKING_ALLOWANCE"] = "Checking your allowance...";
11
+ TransactionStatus["PENDING_WALLET"] = "Waiting for wallet confirmation...";
12
+ TransactionStatus["PENDING_APPROVAL"] = "Approving token spend...";
13
+ TransactionStatus["PENDING_DEPLOYMENT"] = "Deploying your order...";
14
+ TransactionStatus["PENDING_WITHDRAWAL"] = "Withdrawing tokens...";
15
+ TransactionStatus["PENDING_DEPOSIT"] = "Depositing tokens...";
16
+ TransactionStatus["PENDING_REMOVE_ORDER"] = "Removing order...";
17
+ TransactionStatus["PENDING_SUBGRAPH"] = "Awaiting subgraph...";
18
+ TransactionStatus["SUCCESS"] = "Success! Transaction confirmed";
19
+ TransactionStatus["ERROR"] = "Something went wrong";
20
+ })(TransactionStatus || (TransactionStatus = {}));
21
+ export var TransactionErrorMessage;
22
+ (function (TransactionErrorMessage) {
23
+ TransactionErrorMessage["BAD_CALLLDATA"] = "Bad calldata.";
24
+ TransactionErrorMessage["DEPLOY_FAILED"] = "Lock transaction failed.";
25
+ TransactionErrorMessage["TIMEOUT"] = "Transaction timed out.";
26
+ TransactionErrorMessage["APPROVAL_FAILED"] = "Approval transaction failed.";
27
+ TransactionErrorMessage["USER_REJECTED_APPROVAL"] = "User rejected approval transaction.";
28
+ TransactionErrorMessage["USER_REJECTED_TRANSACTION"] = "User rejected the transaction.";
29
+ TransactionErrorMessage["DEPLOYMENT_FAILED"] = "Deployment transaction failed.";
30
+ TransactionErrorMessage["SWITCH_CHAIN_FAILED"] = "Failed to switch chain.";
31
+ TransactionErrorMessage["DEPOSIT_FAILED"] = "Failed to deposit tokens.";
32
+ TransactionErrorMessage["WITHDRAWAL_FAILED"] = "Failed to withdraw tokens.";
33
+ TransactionErrorMessage["REMOVE_ORDER_FAILED"] = "Failed to remove order.";
34
+ })(TransactionErrorMessage || (TransactionErrorMessage = {}));
35
+ const initialState = {
36
+ status: TransactionStatus.IDLE,
37
+ error: '',
38
+ hash: '',
39
+ data: null,
40
+ functionName: '',
41
+ message: '',
42
+ newOrderHash: '',
43
+ network: '',
44
+ explorerLink: ''
45
+ };
46
+ const transactionStore = () => {
47
+ const { subscribe, set, update } = writable(initialState);
48
+ const reset = () => set(initialState);
49
+ const awaitTransactionIndexing = async (subgraphUrl, txHash, successMessage) => {
50
+ update((state) => ({
51
+ ...state,
52
+ status: TransactionStatus.PENDING_SUBGRAPH,
53
+ message: 'Checking for transaction indexing...'
54
+ }));
55
+ let attempts = 0;
56
+ let newTx;
57
+ const interval = setInterval(async () => {
58
+ attempts++;
59
+ newTx = await getTransaction(subgraphUrl, txHash);
60
+ if (newTx) {
61
+ clearInterval(interval);
62
+ transactionSuccess(txHash, successMessage);
63
+ }
64
+ else if (attempts >= 10) {
65
+ update((state) => ({
66
+ ...state,
67
+ message: 'The subgraph took too long to respond. Please check again later.'
68
+ }));
69
+ clearInterval(interval);
70
+ return transactionError(TransactionErrorMessage.TIMEOUT);
71
+ }
72
+ }, 1000);
73
+ };
74
+ const awaitNewOrderIndexing = async (subgraphUrl, txHash, network) => {
75
+ update((state) => ({
76
+ ...state,
77
+ status: TransactionStatus.PENDING_SUBGRAPH,
78
+ message: 'Waiting for new order to be indexed...'
79
+ }));
80
+ let attempts = 0;
81
+ const interval = setInterval(async () => {
82
+ attempts++;
83
+ const addOrders = await getTransactionAddOrders(subgraphUrl, txHash);
84
+ if (attempts >= 10) {
85
+ update((state) => ({
86
+ ...state,
87
+ message: 'The subgraph took too long to respond. Please check again later.'
88
+ }));
89
+ clearInterval(interval);
90
+ return transactionError(TransactionErrorMessage.TIMEOUT);
91
+ }
92
+ else if (addOrders?.length > 0) {
93
+ clearInterval(interval);
94
+ return transactionSuccess(txHash, '', addOrders[0].order.orderHash, network);
95
+ }
96
+ }, 1000);
97
+ };
98
+ const awaitRemoveOrderIndexing = async (subgraphUrl, txHash) => {
99
+ update((state) => ({
100
+ ...state,
101
+ status: TransactionStatus.PENDING_SUBGRAPH,
102
+ message: 'Waiting for order removal to be indexed...'
103
+ }));
104
+ let attempts = 0;
105
+ const interval = setInterval(async () => {
106
+ attempts++;
107
+ const removeOrders = await getTransactionRemoveOrders(subgraphUrl, txHash);
108
+ if (attempts >= 10) {
109
+ update((state) => ({
110
+ ...state,
111
+ message: 'The subgraph took too long to respond. Please check again later.'
112
+ }));
113
+ clearInterval(interval);
114
+ return transactionError(TransactionErrorMessage.TIMEOUT);
115
+ }
116
+ else if (removeOrders?.length > 0) {
117
+ clearInterval(interval);
118
+ return transactionSuccess(txHash);
119
+ }
120
+ }, 1000);
121
+ };
122
+ const checkingWalletAllowance = (message) => update((state) => ({
123
+ ...state,
124
+ status: TransactionStatus.CHECKING_ALLOWANCE,
125
+ message: message || ''
126
+ }));
127
+ const awaitWalletConfirmation = (message) => update((state) => ({
128
+ ...state,
129
+ status: TransactionStatus.PENDING_WALLET,
130
+ message: message || ''
131
+ }));
132
+ const awaitApprovalTx = (hash, symbol) => update((state) => ({
133
+ ...state,
134
+ hash: hash,
135
+ status: TransactionStatus.PENDING_APPROVAL,
136
+ message: `Approving ${symbol || 'token'} spend...`
137
+ }));
138
+ const awaitTx = (hash, status, explorerLink, message) => update((state) => ({
139
+ ...state,
140
+ hash: hash,
141
+ status: status,
142
+ message: message || 'Waiting for transaction...',
143
+ explorerLink: explorerLink || ''
144
+ }));
145
+ const transactionSuccess = (hash, message, newOrderHash, network) => {
146
+ update((state) => ({
147
+ ...state,
148
+ status: TransactionStatus.SUCCESS,
149
+ hash: hash,
150
+ message: message || '',
151
+ newOrderHash: newOrderHash || '',
152
+ network: network || ''
153
+ }));
154
+ };
155
+ const transactionError = (message, hash) => update((state) => ({
156
+ ...state,
157
+ status: TransactionStatus.ERROR,
158
+ error: message,
159
+ hash: hash || ''
160
+ }));
161
+ const handleDeploymentTransaction = async ({ config, approvals, deploymentCalldata, orderbookAddress, chainId, subgraphUrl, network }) => {
162
+ try {
163
+ await switchChain(config, { chainId });
164
+ }
165
+ catch {
166
+ return transactionError(TransactionErrorMessage.SWITCH_CHAIN_FAILED);
167
+ }
168
+ for (const approval of approvals) {
169
+ let approvalHash;
170
+ try {
171
+ awaitWalletConfirmation(`Please approve ${approval.symbol || approval.token} spend in your wallet...`);
172
+ approvalHash = await sendTransaction(config, {
173
+ to: approval.token,
174
+ data: approval.calldata
175
+ });
176
+ }
177
+ catch {
178
+ return transactionError(TransactionErrorMessage.USER_REJECTED_APPROVAL);
179
+ }
180
+ try {
181
+ awaitApprovalTx(approvalHash, approval.symbol);
182
+ await waitForTransactionReceipt(config, { hash: approvalHash });
183
+ }
184
+ catch {
185
+ return transactionError(TransactionErrorMessage.APPROVAL_FAILED);
186
+ }
187
+ }
188
+ let hash;
189
+ try {
190
+ awaitWalletConfirmation('Please confirm deployment in your wallet...');
191
+ hash = await sendTransaction(config, {
192
+ to: orderbookAddress,
193
+ data: deploymentCalldata
194
+ });
195
+ }
196
+ catch {
197
+ return transactionError(TransactionErrorMessage.USER_REJECTED_TRANSACTION);
198
+ }
199
+ try {
200
+ const transactionExplorerLink = await getExplorerLink(hash, chainId, 'tx');
201
+ awaitTx(hash, TransactionStatus.PENDING_DEPLOYMENT, transactionExplorerLink);
202
+ await waitForTransactionReceipt(config, { hash });
203
+ return awaitNewOrderIndexing(subgraphUrl, hash, network);
204
+ }
205
+ catch {
206
+ return transactionError(TransactionErrorMessage.DEPLOYMENT_FAILED);
207
+ }
208
+ };
209
+ const handleDepositOrWithdrawTransaction = async ({ config, approvalCalldata, transactionCalldata, action, chainId, vault, subgraphUrl }) => {
210
+ try {
211
+ await switchChain(config, { chainId });
212
+ }
213
+ catch {
214
+ return transactionError(TransactionErrorMessage.SWITCH_CHAIN_FAILED);
215
+ }
216
+ if (approvalCalldata) {
217
+ let approvalHash;
218
+ try {
219
+ awaitWalletConfirmation(`Please approve ${vault.token.symbol} spend in your wallet...`);
220
+ approvalHash = await sendTransaction(config, {
221
+ to: vault.token.address,
222
+ data: approvalCalldata
223
+ });
224
+ }
225
+ catch {
226
+ return transactionError(TransactionErrorMessage.USER_REJECTED_APPROVAL);
227
+ }
228
+ try {
229
+ awaitApprovalTx(approvalHash, vault.token.symbol);
230
+ await waitForTransactionReceipt(config, { hash: approvalHash });
231
+ }
232
+ catch {
233
+ return transactionError(TransactionErrorMessage.APPROVAL_FAILED);
234
+ }
235
+ }
236
+ let hash;
237
+ try {
238
+ awaitWalletConfirmation(`Please confirm ${action === 'deposit' ? 'deposit' : 'withdrawal'} in your wallet...`);
239
+ hash = await sendTransaction(config, {
240
+ to: vault.orderbook.id,
241
+ data: transactionCalldata
242
+ });
243
+ }
244
+ catch {
245
+ return transactionError(TransactionErrorMessage.USER_REJECTED_TRANSACTION);
246
+ }
247
+ try {
248
+ awaitTx(hash, action === 'deposit'
249
+ ? TransactionStatus.PENDING_DEPOSIT
250
+ : TransactionStatus.PENDING_WITHDRAWAL);
251
+ await waitForTransactionReceipt(config, { hash });
252
+ return awaitTransactionIndexing(subgraphUrl, hash, `The ${action === 'deposit' ? 'deposit' : 'withdrawal'} was successful.`);
253
+ }
254
+ catch {
255
+ return transactionError(action === 'deposit'
256
+ ? TransactionErrorMessage.DEPOSIT_FAILED
257
+ : TransactionErrorMessage.WITHDRAWAL_FAILED);
258
+ }
259
+ };
260
+ const handleRemoveOrderTransaction = async ({ config, orderbookAddress, removeOrderCalldata, chainId, subgraphUrl }) => {
261
+ try {
262
+ await switchChain(config, { chainId });
263
+ }
264
+ catch {
265
+ return transactionError(TransactionErrorMessage.SWITCH_CHAIN_FAILED);
266
+ }
267
+ let hash;
268
+ try {
269
+ awaitWalletConfirmation('Please confirm order removal in your wallet...');
270
+ hash = await sendTransaction(config, {
271
+ to: orderbookAddress,
272
+ data: removeOrderCalldata
273
+ });
274
+ }
275
+ catch {
276
+ return transactionError(TransactionErrorMessage.USER_REJECTED_TRANSACTION);
277
+ }
278
+ try {
279
+ awaitTx(hash, TransactionStatus.PENDING_REMOVE_ORDER);
280
+ await waitForTransactionReceipt(config, { hash });
281
+ return awaitRemoveOrderIndexing(subgraphUrl, hash);
282
+ }
283
+ catch {
284
+ return transactionError(TransactionErrorMessage.REMOVE_ORDER_FAILED);
285
+ }
286
+ };
287
+ return {
288
+ subscribe,
289
+ reset,
290
+ handleDeploymentTransaction,
291
+ handleDepositOrWithdrawTransaction,
292
+ handleRemoveOrderTransaction,
293
+ checkingWalletAllowance,
294
+ awaitWalletConfirmation,
295
+ awaitApprovalTx,
296
+ transactionSuccess,
297
+ transactionError,
298
+ awaitTransactionIndexing,
299
+ awaitNewOrderIndexing,
300
+ awaitRemoveOrderIndexing
301
+ };
302
+ };
303
+ export default transactionStore();
@@ -0,0 +1,6 @@
1
+ import * as matchers from '@testing-library/jest-dom/matchers';
2
+ export declare const expect: import("vitest").ExpectStatic;
3
+ declare module 'vitest' {
4
+ interface JestAssertion<T = any> extends matchers.TestingLibraryMatchers<ReturnType<typeof expect.stringContaining>, T> {
5
+ }
6
+ }
@@ -0,0 +1,4 @@
1
+ import { expect as vitestExpect } from 'vitest';
2
+ import * as matchers from '@testing-library/jest-dom/matchers';
3
+ vitestExpect.extend(matchers);
4
+ export const expect = vitestExpect;
@@ -0,0 +1,19 @@
1
+ import type { Readable, Writable } from 'svelte/store';
2
+ import type { ConfigSource, OrderbookConfigSource } from '@rainlanguage/orderbook/js_api';
3
+ export interface AppStoresInterface {
4
+ settings: Writable<ConfigSource | undefined>;
5
+ activeSubgraphs: Writable<Record<string, string>>;
6
+ accounts: Readable<Record<string, string>>;
7
+ activeAccountsItems: Writable<Record<string, string>>;
8
+ activeOrderStatus: Writable<boolean | undefined>;
9
+ orderHash: Writable<string>;
10
+ hideZeroBalanceVaults: Writable<boolean>;
11
+ activeNetworkRef: Writable<string | undefined>;
12
+ activeOrderbookRef: Writable<string | undefined>;
13
+ activeOrderbook: Readable<OrderbookConfigSource | undefined>;
14
+ subgraphUrl: Readable<string | undefined>;
15
+ activeAccounts: Readable<{
16
+ [k: string]: string;
17
+ }>;
18
+ showMyItemsOnly: Writable<boolean>;
19
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,20 @@
1
+ import type { SgOrder } from '@rainlanguage/orderbook/js_api';
2
+ import type { DepositOrWithdrawArgs, OrderRemoveArgs, DeploymentArgs } from './transaction';
3
+ export type DepositOrWithdrawModalProps = {
4
+ open: boolean;
5
+ args: DepositOrWithdrawArgs;
6
+ };
7
+ export type OrderRemoveModalProps = {
8
+ open: boolean;
9
+ args: OrderRemoveArgs;
10
+ };
11
+ export type DeployModalProps = {
12
+ open: boolean;
13
+ args: DeploymentArgs;
14
+ };
15
+ export type DisclaimerModalProps = {
16
+ open: boolean;
17
+ onAccept: () => void;
18
+ };
19
+ export type QuoteDebugModalHandler = (order: SgOrder, rpcUrl: string, orderbook: string, inputIOIndex: number, outputIOIndex: number, pair: string, blockNumber?: number) => void;
20
+ export type DebugTradeModalHandler = (hash: string, rpcUrl: string) => void;
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,10 @@
1
+ import type { NameAndDescriptionCfg } from '@rainlanguage/orderbook/js_api';
2
+ export type ValidStrategyDetail = {
3
+ details: NameAndDescriptionCfg;
4
+ name: string;
5
+ dotrain: string;
6
+ };
7
+ export type InvalidStrategyDetail = {
8
+ name: string;
9
+ error: string;
10
+ };
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,27 @@
1
+ import type { ExtendedApprovalCalldata } from '../stores/transactionStore';
2
+ import type { DepositAndAddOrderCalldataResult } from '@rainlanguage/orderbook/js_api';
3
+ import type { Hex } from 'viem';
4
+ import type { SgOrder, SgVault } from '@rainlanguage/orderbook/js_api';
5
+ export type DeploymentArgs = {
6
+ approvals: ExtendedApprovalCalldata[];
7
+ deploymentCalldata: DepositAndAddOrderCalldataResult;
8
+ orderbookAddress: Hex;
9
+ chainId: number;
10
+ subgraphUrl: string;
11
+ network: string;
12
+ };
13
+ export type DepositOrWithdrawArgs = {
14
+ vault: SgVault;
15
+ onDepositOrWithdraw: () => void;
16
+ action: 'deposit' | 'withdraw';
17
+ chainId: number;
18
+ rpcUrl: string;
19
+ subgraphUrl: string;
20
+ };
21
+ export type OrderRemoveArgs = {
22
+ order: SgOrder;
23
+ onRemove: () => void;
24
+ chainId: number;
25
+ orderbookAddress: Hex;
26
+ subgraphUrl: string;
27
+ };
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,5 @@
1
+ export interface BreadCrumb {
2
+ label: string;
3
+ href: string;
4
+ }
5
+ export declare function generateBreadcrumbs(path: string): BreadCrumb[];
@@ -0,0 +1,9 @@
1
+ export function generateBreadcrumbs(path) {
2
+ const crumbs = path.split('/');
3
+ return crumbs
4
+ .map((c, i) => ({
5
+ label: c,
6
+ href: crumbs.slice(0, i + 1).join('/')
7
+ }))
8
+ .slice(1, -1);
9
+ }
@@ -0,0 +1,2 @@
1
+ export declare const lightCodeMirrorTheme: import("@codemirror/state").Extension;
2
+ export declare const darkCodeMirrorTheme: import("@codemirror/state").Extension;
@@ -0,0 +1,86 @@
1
+ import { createTheme } from 'thememirror';
2
+ import { tags } from '@lezer/highlight';
3
+ // configured to resemble vscode default light theme
4
+ export const lightCodeMirrorTheme = createTheme({
5
+ variant: 'light',
6
+ settings: {
7
+ background: '#ffffff',
8
+ foreground: '#001080',
9
+ caret: '#000000',
10
+ selection: '#add6ff',
11
+ lineHighlight: '#77777740',
12
+ gutterBackground: '#eeeeee',
13
+ gutterForeground: '#237893'
14
+ },
15
+ styles: [
16
+ { tag: tags.comment, color: '#008001' },
17
+ { tag: tags.variableName, color: '#0070c1' },
18
+ { tag: [tags.string, tags.special(tags.brace)], color: '#b55b00' },
19
+ { tag: tags.number, color: '#00b97b' },
20
+ { tag: tags.bool, color: '#0000ff' },
21
+ { tag: tags.null, color: '#0000ff' },
22
+ { tag: tags.unit, color: '#0000ff' },
23
+ { tag: tags.keyword, color: '#af01db' },
24
+ { tag: tags.operator, color: '#000000' },
25
+ { tag: tags.className, color: '#257f99' },
26
+ { tag: tags.meta, color: '#0950a9' },
27
+ { tag: tags.definition(tags.typeName), color: '#257f99' },
28
+ { tag: tags.angleBracket, color: '#213CF1' },
29
+ { tag: tags.brace, color: '#213CF1' },
30
+ { tag: tags.bracket, color: '#213CF1' },
31
+ { tag: tags.squareBracket, color: '#213CF1' },
32
+ { tag: tags.paren, color: '#213CF1' },
33
+ { tag: tags.punctuation, color: '#464646' },
34
+ { tag: tags.separator, color: '#464646' },
35
+ { tag: tags.typeName, color: '#257f99' },
36
+ { tag: tags.tagName, color: '#800000' },
37
+ { tag: tags.attributeName, color: '#eb3d36' },
38
+ { tag: tags.attributeValue, color: '#444444' },
39
+ { tag: tags.content, color: '#b55b00' },
40
+ { tag: [tags.propertyName, tags.definition(tags.propertyName)], color: '#0469ff' },
41
+ { tag: tags.labelName, color: '#4fc4ff' },
42
+ { tag: tags.deleted, color: '#cc0000' }
43
+ ]
44
+ });
45
+ // configured to resemble vscode default dark theme
46
+ export const darkCodeMirrorTheme = createTheme({
47
+ variant: 'dark',
48
+ settings: {
49
+ background: '#1e1e1e',
50
+ foreground: '#d4d4d4',
51
+ caret: '#d4d4d4',
52
+ selection: '#ffffff',
53
+ lineHighlight: '#99999940',
54
+ gutterBackground: '#282828',
55
+ gutterForeground: '#858585'
56
+ },
57
+ styles: [
58
+ { tag: [tags.comment, tags.lineComment], color: '#6c9e57' },
59
+ { tag: tags.variableName, color: '#9cdcfe' },
60
+ { tag: [tags.string, tags.special(tags.brace)], color: '#ce9178' },
61
+ { tag: tags.number, color: '#B6CFA9' },
62
+ { tag: tags.bool, color: '#4fc4ff' },
63
+ { tag: tags.null, color: '#4fc4ff' },
64
+ { tag: tags.unit, color: '#608FC2' },
65
+ { tag: tags.keyword, color: '#d18dcc' },
66
+ { tag: tags.operator, color: '#d4d4d4' },
67
+ { tag: tags.className, color: '#4dcab1' },
68
+ { tag: tags.meta, color: '#608FC2' },
69
+ { tag: tags.definition(tags.typeName), color: '#4fcfb5' },
70
+ { tag: tags.angleBracket, color: '#F9D849' },
71
+ { tag: tags.brace, color: '#F9D849' },
72
+ { tag: tags.bracket, color: '#F9D849' },
73
+ { tag: tags.squareBracket, color: '#F9D849' },
74
+ { tag: tags.paren, color: '#F9D849' },
75
+ { tag: tags.punctuation, color: '#d4d4d4' },
76
+ { tag: tags.separator, color: '#d4d4d4' },
77
+ { tag: tags.typeName, color: '#4ecdb4' },
78
+ { tag: tags.tagName, color: '#59a3df' },
79
+ { tag: tags.attributeName, color: '#ffffff' },
80
+ { tag: tags.attributeValue, color: '#ffffff' },
81
+ { tag: tags.content, color: '#ce9178' },
82
+ { tag: [tags.propertyName, tags.definition(tags.propertyName)], color: '#608FC2' },
83
+ { tag: tags.labelName, color: '#4fc4ff' },
84
+ { tag: tags.deleted, color: '#c86464' }
85
+ ]
86
+ });
@@ -0,0 +1,2 @@
1
+ export declare const HEX_INPUT_REGEX: RegExp;
2
+ export declare const bigintStringToHex: (val: string) => `0x${string}`;
@@ -0,0 +1,3 @@
1
+ import { toHex } from 'viem';
2
+ export const HEX_INPUT_REGEX = /^(0x)?([0-9a-f]+)?$/;
3
+ export const bigintStringToHex = (val) => toHex(BigInt(val));