@spicenet-io/spiceflow-ui 3.2.1 → 3.2.3

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 (96) hide show
  1. package/README.md +7 -7
  2. package/dist/Button-B1aDv3aK.js +2 -0
  3. package/dist/Button-Hm-OAnzQ.js +2 -0
  4. package/dist/auth-dynamic.cjs.js +1 -1
  5. package/dist/auth-dynamic.js +1 -1
  6. package/dist/auth-privy.cjs.js +1 -1
  7. package/dist/auth-privy.js +1 -1
  8. package/dist/components/AssetSelector/AssetDropdown.d.ts +1 -12
  9. package/dist/components/AssetSelector/ChainIcon.d.ts +1 -7
  10. package/dist/components/AssetSelector/TokenIcon.d.ts +1 -7
  11. package/dist/components/AssetSelector/index.d.ts +1 -3
  12. package/dist/components/ExportWallet/ExportWalletButton.d.ts +2 -7
  13. package/dist/components/ProviderLogins/DynamicLogin.d.ts +2 -8
  14. package/dist/components/ProviderLogins/PrivyLogin.d.ts +2 -8
  15. package/dist/components/ProviderLogins/ProviderLogin.d.ts +2 -8
  16. package/dist/components/SpiceDeposit/DepositRecoveryPrompt.d.ts +1 -14
  17. package/dist/components/SpiceDeposit/DepositStatusModal.d.ts +4 -37
  18. package/dist/components/SpiceDeposit/SelectTokenModal.d.ts +1 -16
  19. package/dist/components/SpiceDeposit/SpiceDeposit.d.ts +2 -35
  20. package/dist/components/SpiceLockModal/LockSubComponents.d.ts +2 -45
  21. package/dist/components/SpicePay/SpicePay.d.ts +2 -29
  22. package/dist/components/SpiceSupply/SupplyEstimate.d.ts +2 -13
  23. package/dist/components/SpiceWithdraw/SelectPopover.d.ts +2 -7
  24. package/dist/components/SpiceWithdraw/SpiceWithdraw.d.ts +2 -26
  25. package/dist/components/StatusDisplay/StatusIcon.d.ts +1 -7
  26. package/dist/components/StatusDisplay/StatusPanel.d.ts +2 -31
  27. package/dist/components/StatusDisplay/StepItem.d.ts +1 -8
  28. package/dist/components/StatusDisplay/index.d.ts +1 -2
  29. package/dist/components/index.d.ts +0 -2
  30. package/dist/components/ui/AddFundsLink.d.ts +3 -0
  31. package/dist/components/ui/Button.d.ts +1 -11
  32. package/dist/components/ui/CloseIcon.d.ts +1 -6
  33. package/dist/components/ui/DetailRow.d.ts +3 -0
  34. package/dist/components/ui/FeeBreakdownCard.d.ts +2 -11
  35. package/dist/components/ui/Input.d.ts +1 -10
  36. package/dist/components/ui/Modal.d.ts +1 -10
  37. package/dist/components/ui/SearchInput.d.ts +15 -0
  38. package/dist/components/ui/SpiceModalShell.d.ts +1 -17
  39. package/dist/components/ui/Spinner.d.ts +1 -6
  40. package/dist/components/ui/StatusBanner.d.ts +1 -10
  41. package/dist/components/ui/icons.d.ts +13 -0
  42. package/dist/components/ui/index.d.ts +7 -8
  43. package/dist/index.cjs.js +29 -40
  44. package/dist/index.d.ts +12 -12
  45. package/dist/index.js +31 -42
  46. package/dist/providerWallet-Ca-gOLIW.js +2 -0
  47. package/dist/providerWallet-uz6t-bDC.js +2 -0
  48. package/dist/providers/custom.css +1 -1
  49. package/dist/types/assets.d.ts +22 -0
  50. package/dist/types/authorization.d.ts +5 -2
  51. package/dist/types/deposit.d.ts +94 -27
  52. package/dist/types/index.d.ts +2 -0
  53. package/dist/types/lock.d.ts +44 -0
  54. package/dist/types/pay.d.ts +30 -0
  55. package/dist/types/status.d.ts +41 -1
  56. package/dist/types/supply.d.ts +15 -1
  57. package/dist/types/ui.d.ts +95 -0
  58. package/dist/types/wallet.d.ts +31 -0
  59. package/dist/types/withdraw.d.ts +30 -0
  60. package/dist/utils/abis/spicenet.d.ts +66 -0
  61. package/dist/utils/loadFonts.d.ts +1 -0
  62. package/dist/utils/rebalancing/index.d.ts +70 -0
  63. package/dist/utils/relayer/index.d.ts +5 -20
  64. package/dist/utils/tokenResolution.d.ts +1 -1
  65. package/dist/utils/tokens.d.ts +43 -0
  66. package/package.json +46 -63
  67. package/dist/Button-D5zwqrrP.js +0 -2
  68. package/dist/Button-KtHGKIo6.js +0 -2
  69. package/dist/auth-starknet.cjs.js +0 -2
  70. package/dist/auth-starknet.d.ts +0 -6
  71. package/dist/auth-starknet.js +0 -2
  72. package/dist/components/Airdrop/Airdrop.d.ts +0 -28
  73. package/dist/components/Airdrop/index.d.ts +0 -2
  74. package/dist/components/DepositWidget/AssetInput.d.ts +0 -23
  75. package/dist/components/DepositWidget/CrossChainDepositModal.d.ts +0 -42
  76. package/dist/components/DepositWidget/DepositWidget.d.ts +0 -3
  77. package/dist/components/DepositWidget/DepositWidgetModal.d.ts +0 -11
  78. package/dist/components/DepositWidget/index.d.ts +0 -8
  79. package/dist/components/LpModal/AmountCard.d.ts +0 -11
  80. package/dist/components/LpModal/CompactAssetSelector.d.ts +0 -11
  81. package/dist/components/LpModal/LpModal.d.ts +0 -3
  82. package/dist/components/LpModal/PairInfoCard.d.ts +0 -14
  83. package/dist/components/LpModal/ProgressIndicators.d.ts +0 -4
  84. package/dist/components/LpModal/index.d.ts +0 -1
  85. package/dist/components/StarknetWallet/StarknetWalletButton.d.ts +0 -9
  86. package/dist/components/StarknetWallet/index.d.ts +0 -2
  87. package/dist/components/ui/Toast.d.ts +0 -10
  88. package/dist/hooks/useStarknetWallet.d.ts +0 -13
  89. package/dist/index-DJQ17ocQ.js +0 -2
  90. package/dist/index-WLbJouQ7.js +0 -2
  91. package/dist/providerWallet-DeNDXTJA.js +0 -2
  92. package/dist/providerWallet-DrwSLBof.js +0 -2
  93. package/dist/providers/StarknetWalletProvider.d.ts +0 -8
  94. package/dist/types/lp.d.ts +0 -43
  95. package/dist/useSpiceBrand-BBtUTOno.js +0 -2
  96. package/dist/useSpiceBrand-D-06ludX.js +0 -2
@@ -0,0 +1,70 @@
1
+ import { type Address } from "viem";
2
+ import type { ChainBatch } from "../../types/authorization";
3
+ import type { Asset } from "../../types/assets";
4
+ export declare const DEFAULT_BRIDGE_FEE_BUFFER_BPS = 1500;
5
+ export declare const DEFAULT_SQUID_INTEGRATOR_ID = "spiceflow-75f053db-70ab-4f37-83cc-abf68cb5b70d";
6
+ export type BridgeProvider = "cctp" | "squid";
7
+ export type CctpTransferMode = "fast" | "standard";
8
+ export interface BridgeFeeQuote {
9
+ provider: BridgeProvider;
10
+ sourceChainId: number;
11
+ destinationChainId: number;
12
+ tokenIn: Address;
13
+ tokenOut: Address;
14
+ amountIn: bigint;
15
+ estimatedAmountOut: bigint;
16
+ quotedBridgeFee: bigint;
17
+ bufferedBridgeFee: bigint;
18
+ bufferBps: number;
19
+ quoteId?: string;
20
+ route?: string;
21
+ minFinalityThreshold?: 1000 | 2000;
22
+ metadata?: Record<string, unknown>;
23
+ }
24
+ export interface SquidQuoteParams {
25
+ sourceChainId: number;
26
+ destinationChainId: number;
27
+ tokenIn: Address;
28
+ tokenOut: Address;
29
+ amountIn: bigint;
30
+ fromAddress: Address;
31
+ toAddress: Address;
32
+ integratorId?: string;
33
+ slippage?: number;
34
+ bufferBps?: number;
35
+ quoteOnly?: boolean;
36
+ baseUrl?: string;
37
+ fetchImpl?: typeof fetch;
38
+ }
39
+ export interface RebalancingRequestParams {
40
+ spicenetChainId: number;
41
+ recipient: Address;
42
+ fromChainId: number;
43
+ fromToken: Address;
44
+ fromAmount: bigint;
45
+ toChainId: number;
46
+ toToken: Address;
47
+ toAmountMin: bigint;
48
+ metadata?: Record<string, unknown>;
49
+ nbf?: bigint;
50
+ exp?: bigint;
51
+ idempotenceKey?: `0x${string}`;
52
+ }
53
+ export declare function quoteCctpFee(params: {
54
+ sourceChainId: number;
55
+ destinationChainId: number;
56
+ tokenIn: Address;
57
+ tokenOut: Address;
58
+ amountIn: bigint;
59
+ transferMode?: CctpTransferMode;
60
+ bufferBps?: number;
61
+ fetchImpl?: typeof fetch;
62
+ }): Promise<BridgeFeeQuote>;
63
+ export declare function quoteSquidFee(params: SquidQuoteParams): Promise<BridgeFeeQuote>;
64
+ export declare function buildRebalancingMetadata(params: {
65
+ bridgeQuote: BridgeFeeQuote;
66
+ sourceAsset?: Pick<Asset, "symbol" | "chainId" | "address" | "decimals">;
67
+ reason?: string;
68
+ extra?: Record<string, unknown>;
69
+ }): Record<string, unknown>;
70
+ export declare function buildRebalancingBatch(params: RebalancingRequestParams): ChainBatch;
@@ -42,26 +42,6 @@ export declare class RelayerService {
42
42
  transactionHash?: string;
43
43
  };
44
44
  }>;
45
- requestSpiceUsdAirdrop(params: {
46
- chainId: number;
47
- address: string;
48
- }): Promise<{
49
- success: boolean;
50
- txHash?: string;
51
- amount?: string;
52
- errorMessage?: string;
53
- }>;
54
- requestAirdrop(params: {
55
- chainId: number;
56
- tokenId: string;
57
- wallet: string;
58
- amount?: string;
59
- tag: string;
60
- }): Promise<{
61
- success: boolean;
62
- txHash?: string;
63
- errorMessage?: string;
64
- }>;
65
45
  createWallet(address: string, request: CreateWalletRequest): Promise<WalletInfo>;
66
46
  getWallet(address: string): Promise<WalletInfo>;
67
47
  createWithdrawal(request: CreateWithdrawalRequest): Promise<CreateWithdrawalResponse>;
@@ -69,4 +49,9 @@ export declare class RelayerService {
69
49
  getRollupTimestamp(): Promise<RollupTimestamp>;
70
50
  }
71
51
  export declare const relayerService: RelayerService;
52
+ type SmartWalletSigner = (message: string) => Promise<string | {
53
+ signature?: string;
54
+ }>;
55
+ export declare function ensureSmartWallet(address: string, signMessage: SmartWalletSigner): Promise<void>;
72
56
  export declare const createInitialSteps: (chainBatches: ChainBatch[], customGetChainName?: (chainId: number) => string) => SwapStep[];
57
+ export {};
@@ -1,4 +1,4 @@
1
- import type { Address } from "viem";
1
+ import { type Address } from "viem";
2
2
  import type { Asset } from "../types/assets";
3
3
  import type { ChainToken } from "@spicenet-io/spiceflow-core";
4
4
  type AssetTokenInput = Pick<Asset, "address" | "symbol" | "name" | "decimals" | "chainId" | "displaySymbol" | "displayName" | "receiptTokenName" | "chainTokens" | "isUniversal">;
@@ -0,0 +1,43 @@
1
+ export declare const z: {
2
+ readonly base: 0;
3
+ readonly raised: 1;
4
+ readonly sticky: 10;
5
+ readonly overlay: 20;
6
+ readonly popover: 40;
7
+ readonly modal: 1000;
8
+ readonly dropdown: 1100;
9
+ readonly toast: 1200;
10
+ readonly tooltip: 1300;
11
+ };
12
+ export type ZIndex = (typeof z)[keyof typeof z];
13
+ export declare const radius: {
14
+ readonly none: "0";
15
+ readonly sm: "4px";
16
+ readonly md: "6px";
17
+ readonly card: "8px";
18
+ readonly input: "10px";
19
+ readonly shell: "9px";
20
+ readonly modal: "12px";
21
+ readonly pill: "9999px";
22
+ readonly circle: "50%";
23
+ };
24
+ export declare const easing: {
25
+ readonly out: "cubic-bezier(0.22, 1, 0.36, 1)";
26
+ readonly inOut: "cubic-bezier(0.65, 0, 0.35, 1)";
27
+ readonly linear: "linear";
28
+ };
29
+ export declare const duration: {
30
+ readonly fast: "120ms";
31
+ readonly normal: "150ms";
32
+ readonly slow: "300ms";
33
+ readonly progress: "400ms";
34
+ };
35
+ export declare const transition: {
36
+ readonly interactive: "transform 150ms cubic-bezier(0.22, 1, 0.36, 1), box-shadow 150ms cubic-bezier(0.22, 1, 0.36, 1), background-color 150ms cubic-bezier(0.22, 1, 0.36, 1), border-color 150ms cubic-bezier(0.22, 1, 0.36, 1), color 150ms cubic-bezier(0.22, 1, 0.36, 1)";
37
+ readonly color: "background-color 150ms cubic-bezier(0.22, 1, 0.36, 1), border-color 150ms cubic-bezier(0.22, 1, 0.36, 1), color 150ms cubic-bezier(0.22, 1, 0.36, 1)";
38
+ readonly popover: "opacity 150ms cubic-bezier(0.22, 1, 0.36, 1), transform 150ms cubic-bezier(0.22, 1, 0.36, 1)";
39
+ };
40
+ export declare const font: {
41
+ readonly ui: "\"Helvetica Neue\", sans-serif";
42
+ readonly mono: "\"IBM Plex Mono\", monospace";
43
+ };
package/package.json CHANGED
@@ -1,8 +1,9 @@
1
1
  {
2
2
  "name": "@spicenet-io/spiceflow-ui",
3
- "version": "3.2.1",
3
+ "version": "3.2.3",
4
4
  "description": "Spiceflow UI SDK",
5
5
  "type": "module",
6
+ "packageManager": "bun@1.3.13",
6
7
  "main": "dist/index.cjs.js",
7
8
  "module": "dist/index.js",
8
9
  "types": "dist/index.d.ts",
@@ -22,11 +23,6 @@
22
23
  "import": "./dist/auth-dynamic.js",
23
24
  "require": "./dist/auth-dynamic.cjs.js"
24
25
  },
25
- "./auth/starknet": {
26
- "types": "./dist/auth-starknet.d.ts",
27
- "import": "./dist/auth-starknet.js",
28
- "require": "./dist/auth-starknet.cjs.js"
29
- },
30
26
  "./styles.css": "./dist/providers/custom.css"
31
27
  },
32
28
  "sideEffects": [
@@ -36,20 +32,17 @@
36
32
  "./dist/auth-privy.cjs.js",
37
33
  "./dist/auth-dynamic.js",
38
34
  "./dist/auth-dynamic.cjs.js",
39
- "./dist/auth-starknet.js",
40
- "./dist/auth-starknet.cjs.js",
41
35
  "./dist/providers/custom.css"
42
36
  ],
43
37
  "files": [
44
- "dist",
45
- ".npmrc"
38
+ "dist"
46
39
  ],
47
40
  "scripts": {
48
41
  "build": "rm -rf dist && tsc -p tsconfig.build.json --emitDeclarationOnly && rollup -c rollup.config.mjs",
49
42
  "dev": "rollup -c rollup.config.mjs --watch",
50
- "dev:link": "npm run build && npm link && echo 'SDK linked globally. Run: npm link @spicenet-io/spiceflow-ui in your project'",
43
+ "dev:link": "bun run build && bun link && echo 'SDK linked globally. Run: bun link @spicenet-io/spiceflow-ui in your project'",
51
44
  "clean": "rm -rf dist",
52
- "prepublishOnly": "npm run build"
45
+ "prepublishOnly": "PATH=$HOME/.bun/bin:$PATH bun run build"
53
46
  },
54
47
  "keywords": [
55
48
  "react",
@@ -65,9 +58,9 @@
65
58
  "author": "",
66
59
  "license": "MIT",
67
60
  "dependencies": {
68
- "@spicenet-io/spiceflow-core": "^0.3.10",
69
- "lucide-react": "^0.562.0",
70
- "tslib": "^2.8.1"
61
+ "@spicenet-io/spiceflow-core": "0.3.10",
62
+ "lucide-react": "0.562.0",
63
+ "tslib": "2.8.1"
71
64
  },
72
65
  "peerDependencies": {
73
66
  "@dynamic-labs/ethereum": ">=4.15.0 <5.0.0",
@@ -76,10 +69,8 @@
76
69
  "@privy-io/react-auth": ">=2.24.0 <4.0.0",
77
70
  "@tanstack/react-query": ">=5.0.0",
78
71
  "axios": ">=1.0.0",
79
- "get-starknet-core": ">=4.0.0",
80
72
  "react": "^18.0.0",
81
73
  "react-dom": "^18.0.0",
82
- "starknet": ">=6.0.0",
83
74
  "viem": ">=2.21.0",
84
75
  "wagmi": ">=2.12.0"
85
76
  },
@@ -95,57 +86,49 @@
95
86
  },
96
87
  "@privy-io/react-auth": {
97
88
  "optional": true
98
- },
99
- "starknet": {
100
- "optional": true
101
- },
102
- "get-starknet-core": {
103
- "optional": true
104
89
  }
105
90
  },
106
91
  "devDependencies": {
107
- "@dynamic-labs/ethereum": "^4.70.0",
108
- "@dynamic-labs/sdk-react-core": "^4.70.0",
109
- "@dynamic-labs/wallet-connector-core": "^4.70.0",
110
- "@privy-io/react-auth": "^2.24.0",
111
- "@rollup/plugin-commonjs": "^28.0.6",
112
- "@rollup/plugin-image": "^3.0.3",
113
- "@rollup/plugin-json": "^6.1.0",
114
- "@rollup/plugin-node-resolve": "^16.0.1",
115
- "@rollup/plugin-replace": "^6.0.2",
116
- "@rollup/plugin-typescript": "^12.1.4",
117
- "@tanstack/react-query": "^5.90.5",
118
- "@types/node": "^24.3.0",
119
- "@types/react": "^18.3.3",
120
- "@types/react-dom": "^18.3.0",
121
- "@typescript-eslint/eslint-plugin": "^6.0.0",
122
- "@typescript-eslint/parser": "^6.0.0",
123
- "axios": "^1.11.0",
124
- "esbuild": "^0.24.0",
125
- "eslint": "^8.45.0",
126
- "eslint-config-prettier": "^10.1.8",
127
- "eslint-plugin-react": "^7.33.0",
128
- "eslint-plugin-react-hooks": "^4.6.0",
129
- "get-starknet-core": "^4.0.0",
130
- "husky": "^9.1.7",
131
- "jest": "^29.6.0",
132
- "lint-staged": "^16.2.5",
133
- "postcss": "^8.5.6",
134
- "postcss-import": "^16.1.1",
92
+ "@dynamic-labs/ethereum": "4.70.0",
93
+ "@dynamic-labs/sdk-react-core": "4.70.0",
94
+ "@dynamic-labs/wallet-connector-core": "4.70.0",
95
+ "@privy-io/react-auth": "2.25.0",
96
+ "@rollup/plugin-commonjs": "28.0.9",
97
+ "@rollup/plugin-image": "3.0.3",
98
+ "@rollup/plugin-json": "6.1.0",
99
+ "@rollup/plugin-node-resolve": "16.0.3",
100
+ "@rollup/plugin-replace": "6.0.3",
101
+ "@rollup/plugin-typescript": "12.3.0",
102
+ "@tanstack/react-query": "5.90.10",
103
+ "@types/node": "24.10.1",
104
+ "@types/react": "18.3.27",
105
+ "@types/react-dom": "18.3.7",
106
+ "@typescript-eslint/eslint-plugin": "6.21.0",
107
+ "@typescript-eslint/parser": "6.21.0",
108
+ "axios": "1.13.5",
109
+ "esbuild": "0.24.2",
110
+ "eslint": "8.57.1",
111
+ "eslint-config-prettier": "10.1.8",
112
+ "eslint-plugin-react": "7.37.5",
113
+ "eslint-plugin-react-hooks": "4.6.2",
114
+ "husky": "9.1.7",
115
+ "jest": "29.7.0",
116
+ "lint-staged": "16.2.6",
117
+ "postcss": "8.5.6",
118
+ "postcss-import": "16.1.1",
135
119
  "prettier": "3.6.2",
136
- "react": "^18.3.1",
137
- "react-dom": "^18.3.1",
138
- "rollup": "^4.50.0",
139
- "rollup-plugin-copy": "^3.5.0",
140
- "rollup-plugin-esbuild": "^6.1.1",
141
- "rollup-plugin-peer-deps-external": "^2.2.4",
142
- "rollup-plugin-postcss": "^4.0.2",
143
- "sharp": "^0.34.5",
144
- "starknet": "^9.4.2",
145
- "ts-node": "^10.9.2",
146
- "typescript": "^5.9.2",
120
+ "react": "18.3.1",
121
+ "react-dom": "18.3.1",
122
+ "rollup": "4.53.2",
123
+ "rollup-plugin-copy": "3.5.0",
124
+ "rollup-plugin-esbuild": "6.2.1",
125
+ "rollup-plugin-peer-deps-external": "2.2.4",
126
+ "rollup-plugin-postcss": "4.0.2",
127
+ "sharp": "0.34.5",
128
+ "ts-node": "10.9.2",
129
+ "typescript": "5.9.3",
147
130
  "viem": "2.33.1",
148
- "wagmi": "^2.18.2"
131
+ "wagmi": "2.19.5"
149
132
  },
150
133
  "lint-staged": {
151
134
  "*.{ts,tsx,js,jsx,json,md}": "prettier --write"
@@ -1,2 +0,0 @@
1
- "use client";
2
- import{jsx as y,jsxs as F}from"react/jsx-runtime";import{useRef as j,useEffect as I,useState as h}from"react";const L={spacing:{xs:"0.25rem",sm:"0.5rem",md:"1rem",lg:"1.5rem",xl:"2rem"},borderRadius:{sm:"0.25rem",md:"0.5rem",lg:"0.75rem",full:"9999px"},typography:{fontFamily:'"Helvetica Neue", sans-serif',fontSize:{xs:"0.75rem",sm:"0.875rem",base:"1rem",lg:"1.125rem",xl:"1.25rem","2xl":"1.5rem","3xl":"1.75rem"},fontWeight:{normal:400,medium:500,semibold:600,bold:700}},shadows:{sm:"0 1px 2px 0 rgb(0 0 0 / 0.05)",md:"0 4px 6px -1px rgb(0 0 0 / 0.1)",lg:"0 10px 15px -3px rgb(0 0 0 / 0.1)"},animation:{fast:"150ms ease-in-out",normal:"200ms ease-in-out",slow:"300ms ease-in-out"}},N={primary:"#EA4B4B",primaryHover:"#E43838",secondary:"#f3f4f6",background:"#ffffff",surface:"#f9fafb",surfaceHover:"#f3f4f6",border:"#e5e7eb",borderHover:"#d1d5db",text:"#111827",textSecondary:"#374151",textMuted:"#6b7280",success:"#10b981",error:"#ef4444",warning:"#f59e0b",info:"#3b82f6"},T={primary:"#EA4B4B",primaryHover:"#E43838",secondary:"#171717",background:"#141414",surface:"#1e1e1e",surfaceHover:"#2a2a2a",border:"#2d2d2d",borderHover:"#3a3a3a",text:"#ffffff",textSecondary:"#888888",textMuted:"#666666",success:"#10b981",error:"#ef4444",warning:"#f59e0b",info:"#3b82f6"},$=(r="light")=>({mode:r,...L,colors:r==="light"?N:T}),S="spiceflow-spinner-keyframes";function A(){if(typeof document>"u"||document.getElementById(S))return;const r=document.createElement("style");r.id=S,r.textContent="@keyframes spiceflow-spin{from{transform:rotate(0deg)}to{transform:rotate(360deg)}}",document.head.appendChild(r)}const k=({size:r=16,borderWidth:d=2,color:s="currentColor",style:p})=>{const n=j(!1);return I(()=>{n.current||(A(),n.current=!0)},[]),y("div",{role:"status","aria-label":"Loading",style:{width:`${r}px`,height:`${r}px`,border:`${d}px solid ${s}`,borderTop:`${d}px solid transparent`,borderRadius:"50%",animation:"spiceflow-spin 1s linear infinite",flexShrink:0,...p}})},D=({variant:r="primary",size:d="md",loading:s=!1,fullWidth:p=!1,disabled:n,children:w,className:z="",style:C,theme:M,styles:e,dark:c=!1,...a})=>{const o=M||$("light"),[f,x]=h(!1),[u,m]=h(!1),b=c?"#111214":"white",v=()=>{switch(r){case"primary":return{backgroundColor:e?.button?.backgroundColor||o.colors.primary,color:e?.button?.color||"#ffffff",border:`1px solid ${e?.button?.backgroundColor||o.colors.primary}`};case"secondary":return{backgroundColor:o.colors.secondary,color:o.colors.text,border:`1px solid ${o.colors.border}`};case"success":return{backgroundColor:o.colors.success,color:o.colors.text,border:`1px solid ${o.colors.success}`};case"error":return{backgroundColor:o.colors.error,color:o.colors.text,border:`1px solid ${o.colors.error}`};case"ghost":return{backgroundColor:"transparent",color:o.colors.textSecondary,border:`1px solid ${o.colors.border}`};case"outline":{const t=e?.button?.backgroundColor||o.colors.primary,g=e?.button?.color||(c?"#ffffff":"#0e0d0b"),i=e?.button?.borderColor||(c?`${o.colors.primary}88`:"#0e0d0b"),l=n||s,R=c?"1px":"1.5px",H=e?.button?.disabledBackgroundColor||`${t}88`,W=e?.button?.disabledColor||g;return{height:"56px",backgroundColor:l?H:u?`${t}cc`:f?`${t}ee`:t,color:l?W:g,border:`${R} solid ${i}`,borderRadius:e?.button?.borderRadius||"12px",fontSize:"22px",fontWeight:500,letterSpacing:"1px",textTransform:"uppercase",fontFamily:'"IBM Plex Mono", monospace',opacity:l?.78:1,transform:l?"none":u?"scale(0.98)":f?"translateY(-2px)":"none",boxShadow:l?`3px 3px 0px ${b}, 4px 4px 0px ${i}`:u?`2px 2px 0px ${i}`:f?`5px 5px 0px ${b}, 6px 6px 0px ${i}`:`3px 3px 0px ${b}, 4px 4px 0px ${i}`,transition:"all 150ms ease"}}default:return{}}},B=()=>{if(r==="outline")return{};switch(d){case"sm":return{padding:`${o.spacing.sm} ${o.spacing.md}`,fontSize:o.typography.fontSize.sm};case"md":return{padding:`${o.spacing.md} ${o.spacing.lg}`,fontSize:o.typography.fontSize.base};case"lg":return{padding:`${o.spacing.lg} ${o.spacing.xl}`,fontSize:o.typography.fontSize.lg};default:return{}}},E={borderRadius:e?.button?.borderRadius||o.borderRadius.md,fontWeight:e?.button?.fontWeight||o.typography.fontWeight.medium,fontFamily:e?.button?.fontFamily||o.typography.fontFamily,fontSize:e?.button?.fontSize||void 0,transition:"all 150ms ease",cursor:n||s?"not-allowed":"pointer",opacity:(n||s)&&r!=="outline"?.6:1,width:p?"100%":"auto",display:"flex",alignItems:"center",justifyContent:"center",gap:o.spacing.sm,...v(),...B(),...e?.button?.fontSize&&{fontSize:e.button.fontSize}};return F("button",{style:{...E,...C},className:z,disabled:n||s,onMouseEnter:t=>{x(!0),a.onMouseEnter?.(t)},onMouseLeave:t=>{x(!1),m(!1),a.onMouseLeave?.(t)},onMouseDown:t=>{m(!0),a.onMouseDown?.(t)},onMouseUp:t=>{m(!1),a.onMouseUp?.(t)},...a,children:[s&&y(k,{size:16}),w]})};export{D as B,k as S,$ as c};
@@ -1,2 +0,0 @@
1
- "use client";
2
- "use strict";const g=require("react/jsx-runtime"),u=require("react"),j={spacing:{xs:"0.25rem",sm:"0.5rem",md:"1rem",lg:"1.5rem",xl:"2rem"},borderRadius:{sm:"0.25rem",md:"0.5rem",lg:"0.75rem",full:"9999px"},typography:{fontFamily:'"Helvetica Neue", sans-serif',fontSize:{xs:"0.75rem",sm:"0.875rem",base:"1rem",lg:"1.125rem",xl:"1.25rem","2xl":"1.5rem","3xl":"1.75rem"},fontWeight:{normal:400,medium:500,semibold:600,bold:700}},shadows:{sm:"0 1px 2px 0 rgb(0 0 0 / 0.05)",md:"0 4px 6px -1px rgb(0 0 0 / 0.1)",lg:"0 10px 15px -3px rgb(0 0 0 / 0.1)"},animation:{fast:"150ms ease-in-out",normal:"200ms ease-in-out",slow:"300ms ease-in-out"}},F={primary:"#EA4B4B",primaryHover:"#E43838",secondary:"#f3f4f6",background:"#ffffff",surface:"#f9fafb",surfaceHover:"#f3f4f6",border:"#e5e7eb",borderHover:"#d1d5db",text:"#111827",textSecondary:"#374151",textMuted:"#6b7280",success:"#10b981",error:"#ef4444",warning:"#f59e0b",info:"#3b82f6"},T={primary:"#EA4B4B",primaryHover:"#E43838",secondary:"#171717",background:"#141414",surface:"#1e1e1e",surfaceHover:"#2a2a2a",border:"#2d2d2d",borderHover:"#3a3a3a",text:"#ffffff",textSecondary:"#888888",textMuted:"#666666",success:"#10b981",error:"#ef4444",warning:"#f59e0b",info:"#3b82f6"},$=(r="light")=>({mode:r,...j,colors:r==="light"?F:T}),S="spiceflow-spinner-keyframes";function I(){if(typeof document>"u"||document.getElementById(S))return;const r=document.createElement("style");r.id=S,r.textContent="@keyframes spiceflow-spin{from{transform:rotate(0deg)}to{transform:rotate(360deg)}}",document.head.appendChild(r)}const k=({size:r=16,borderWidth:d=2,color:s="currentColor",style:p})=>{const n=u.useRef(!1);return u.useEffect(()=>{n.current||(I(),n.current=!0)},[]),g.jsx("div",{role:"status","aria-label":"Loading",style:{width:`${r}px`,height:`${r}px`,border:`${d}px solid ${s}`,borderTop:`${d}px solid transparent`,borderRadius:"50%",animation:"spiceflow-spin 1s linear infinite",flexShrink:0,...p}})},L=({variant:r="primary",size:d="md",loading:s=!1,fullWidth:p=!1,disabled:n,children:w,className:z="",style:C,theme:M,styles:o,dark:c=!1,...a})=>{const e=M||$("light"),[f,y]=u.useState(!1),[m,b]=u.useState(!1),x=c?"#111214":"white",v=()=>{switch(r){case"primary":return{backgroundColor:o?.button?.backgroundColor||e.colors.primary,color:o?.button?.color||"#ffffff",border:`1px solid ${o?.button?.backgroundColor||e.colors.primary}`};case"secondary":return{backgroundColor:e.colors.secondary,color:e.colors.text,border:`1px solid ${e.colors.border}`};case"success":return{backgroundColor:e.colors.success,color:e.colors.text,border:`1px solid ${e.colors.success}`};case"error":return{backgroundColor:e.colors.error,color:e.colors.text,border:`1px solid ${e.colors.error}`};case"ghost":return{backgroundColor:"transparent",color:e.colors.textSecondary,border:`1px solid ${e.colors.border}`};case"outline":{const t=o?.button?.backgroundColor||e.colors.primary,h=o?.button?.color||(c?"#ffffff":"#0e0d0b"),i=o?.button?.borderColor||(c?`${e.colors.primary}88`:"#0e0d0b"),l=n||s,E=c?"1px":"1.5px",H=o?.button?.disabledBackgroundColor||`${t}88`,W=o?.button?.disabledColor||h;return{height:"56px",backgroundColor:l?H:m?`${t}cc`:f?`${t}ee`:t,color:l?W:h,border:`${E} solid ${i}`,borderRadius:o?.button?.borderRadius||"12px",fontSize:"22px",fontWeight:500,letterSpacing:"1px",textTransform:"uppercase",fontFamily:'"IBM Plex Mono", monospace',opacity:l?.78:1,transform:l?"none":m?"scale(0.98)":f?"translateY(-2px)":"none",boxShadow:l?`3px 3px 0px ${x}, 4px 4px 0px ${i}`:m?`2px 2px 0px ${i}`:f?`5px 5px 0px ${x}, 6px 6px 0px ${i}`:`3px 3px 0px ${x}, 4px 4px 0px ${i}`,transition:"all 150ms ease"}}default:return{}}},B=()=>{if(r==="outline")return{};switch(d){case"sm":return{padding:`${e.spacing.sm} ${e.spacing.md}`,fontSize:e.typography.fontSize.sm};case"md":return{padding:`${e.spacing.md} ${e.spacing.lg}`,fontSize:e.typography.fontSize.base};case"lg":return{padding:`${e.spacing.lg} ${e.spacing.xl}`,fontSize:e.typography.fontSize.lg};default:return{}}},R={borderRadius:o?.button?.borderRadius||e.borderRadius.md,fontWeight:o?.button?.fontWeight||e.typography.fontWeight.medium,fontFamily:o?.button?.fontFamily||e.typography.fontFamily,fontSize:o?.button?.fontSize||void 0,transition:"all 150ms ease",cursor:n||s?"not-allowed":"pointer",opacity:(n||s)&&r!=="outline"?.6:1,width:p?"100%":"auto",display:"flex",alignItems:"center",justifyContent:"center",gap:e.spacing.sm,...v(),...B(),...o?.button?.fontSize&&{fontSize:o.button.fontSize}};return g.jsxs("button",{style:{...R,...C},className:z,disabled:n||s,onMouseEnter:t=>{y(!0),a.onMouseEnter?.(t)},onMouseLeave:t=>{y(!1),b(!1),a.onMouseLeave?.(t)},onMouseDown:t=>{b(!0),a.onMouseDown?.(t)},onMouseUp:t=>{b(!1),a.onMouseUp?.(t)},...a,children:[s&&g.jsx(k,{size:16}),w]})};exports.Button=L,exports.Spinner=k,exports.createTheme=$;
@@ -1,2 +0,0 @@
1
- "use client";
2
- "use strict";var A=Object.create;var C=Object.defineProperty;var P=Object.getOwnPropertyDescriptor;var E=Object.getOwnPropertyNames;var R=Object.getPrototypeOf,z=Object.prototype.hasOwnProperty;var _=(e,a,l,u)=>{if(a&&typeof a=="object"||typeof a=="function")for(let t of E(a))!z.call(e,t)&&t!==l&&C(e,t,{get:()=>a[t],enumerable:!(u=P(a,t))||u.enumerable});return e};var h=(e,a,l)=>(l=e!=null?A(R(e)):{},_(a||!e||!e.__esModule?C(l,"default",{value:e,enumerable:!0}):l,e));const r=require("react"),y=require("@spicenet-io/spiceflow-core"),c=require("react/jsx-runtime"),D=require("./useSpiceBrand-BBtUTOno.js"),v=require("./Button-KtHGKIo6.js");require("./index-WLbJouQ7.js"),require("viem"),require("viem/actions");const S="spiceflow:starknet-wallet-connected",T=y.getChainMeta(y.STARKNET_MAINNET_CHAIN_ID)?.rpcUrl??"https://starknet-mainnet.public.blastapi.io",W=(e=T)=>{const[a,l]=r.useState(null),[u,t]=r.useState(!1),[d,p]=r.useState(null),[f,w]=r.useState(null),[g,I]=r.useState(null),x=r.useRef(null);r.useEffect(()=>{import("starknet").then(({RpcProvider:n})=>{I(new n({nodeUrl:e}))}).catch(()=>{})},[e]);const q=r.useCallback(n=>n?`${n.slice(0,6)}...${n.slice(-4)}`:"",[]),k=r.useCallback(async(n,s)=>{const o=await n.enable(s),i=(await o.request({type:"wallet_requestAccounts"}))?.[0];return i?(x.current=o,l(i),w(s.name||s.id),localStorage.setItem(S,s.id),p(o),!0):!1},[g,e]),B=r.useCallback(async()=>{t(!0);try{const{getStarknet:n}=await import("get-starknet-core"),s=n(),o=await s.getAvailableWallets();if(o.length===0)return window.open("https://www.argent.xyz/argent-x/","_blank"),t(!1),!1;const i=o.find(m=>m.id==="argentX")||o.find(m=>m.id==="braavos")||o[0];return await k(s,i)}catch(n){const s=n instanceof Error?n.message:String(n);return console.error("[SpiceFlow:StarkNet] Connection failed:",s),!1}finally{t(!1)}},[k]),j=r.useCallback(()=>{l(null),p(null),w(null),x.current=null,localStorage.removeItem(S)},[]);return r.useEffect(()=>{const n=localStorage.getItem(S);n&&(async()=>{try{const{getStarknet:s}=await import("get-starknet-core"),o=s(),i=(await o.getAuthorizedWallets()).find(m=>m.id===n);if(!i){localStorage.removeItem(S);return}await k(o,i)}catch{localStorage.removeItem(S)}})()},[k]),{address:a,isConnected:!!a,isConnecting:u,account:d,provider:g,walletName:f,connect:B,disconnect:j,formatAddress:q}},b=r.createContext(null),U=({children:e,rpcUrl:a})=>{const l=W(a);return c.jsx(b.Provider,{value:l,children:e})},N=()=>{const e=r.useContext(b);if(!e)throw new Error("useStarknetWalletContext must be used within a <StarknetWalletProvider>. Wrap your StarkNet section with <StarknetWalletProvider> from '@spicenet-io/spiceflow-ui/auth/starknet'.");return e},$=({className:e,styles:a,onConnect:l,onDisconnect:u})=>{const t=N(),{dk:d,dark:p,theme:f}=D.useSpiceBrand(a),w=async()=>{await t.connect()&&l?.()},g=()=>{t.disconnect(),u?.()};return t.isConnected&&t.address?c.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"8px"},className:e,children:[c.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"6px",padding:"6px 12px",borderRadius:"8px",background:d.cardBg,border:`1px solid ${d.cardBorder}`,fontSize:"14px",minWidth:0},children:[c.jsx("span",{style:{fontWeight:500,color:d.textPrimary},children:t.formatAddress(t.address)}),t.walletName&&c.jsxs("span",{style:{color:d.textSecondary,fontSize:"12px",maxWidth:"120px",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:["(",t.walletName,")"]})]}),c.jsx(v.Button,{variant:"ghost",size:"sm",onClick:g,title:"Disconnect StarkNet wallet",dark:p,theme:f,children:"\u2715"})]}):c.jsx(v.Button,{variant:"primary",onClick:w,disabled:t.isConnecting,loading:t.isConnecting,className:e,dark:p,theme:f,children:t.isConnecting?"Connecting...":"Connect StarkNet Wallet"})};exports.StarknetWalletButton=$,exports.StarknetWalletProvider=U,exports.useStarknetWallet=W,exports.useStarknetWalletContext=N;
@@ -1,6 +0,0 @@
1
- export { useStarknetWallet } from "./hooks/useStarknetWallet";
2
- export type { StarknetWalletState } from "./hooks/useStarknetWallet";
3
- export { StarknetWalletProvider, useStarknetWalletContext } from "./providers/StarknetWalletProvider";
4
- export type { StarknetWalletProviderProps } from "./providers/StarknetWalletProvider";
5
- export { StarknetWalletButton } from "./components/StarknetWallet/StarknetWalletButton";
6
- export type { StarknetWalletButtonProps } from "./components/StarknetWallet/StarknetWalletButton";
@@ -1,2 +0,0 @@
1
- "use client";
2
- import{useState as u,useRef as z,useEffect as C,useCallback as h,createContext as E,useContext as R}from"react";import{getChainMeta as _,STARKNET_MAINNET_CHAIN_ID as D}from"@spicenet-io/spiceflow-core";import{jsx as S,jsxs as x}from"react/jsx-runtime";import{u as T}from"./useSpiceBrand-D-06ludX.js";import{B as v}from"./Button-D5zwqrrP.js";import"./index-DJQ17ocQ.js";import"viem";import"viem/actions";const p="spiceflow:starknet-wallet-connected",U=_(D)?.rpcUrl??"https://starknet-mainnet.public.blastapi.io",N=(n=U)=>{const[l,i]=u(null),[k,t]=u(!1),[s,c]=u(null),[m,f]=u(null),[g,I]=u(null),y=z(null);C(()=>{import("starknet").then(({RpcProvider:e})=>{I(new e({nodeUrl:n}))}).catch(()=>{})},[n]);const A=h(e=>e?`${e.slice(0,6)}...${e.slice(-4)}`:"",[]),w=h(async(e,r)=>{const a=await e.enable(r),o=(await a.request({type:"wallet_requestAccounts"}))?.[0];return o?(y.current=a,i(o),f(r.name||r.id),localStorage.setItem(p,r.id),c(a),!0):!1},[g,n]),B=h(async()=>{t(!0);try{const{getStarknet:e}=await import("get-starknet-core"),r=e(),a=await r.getAvailableWallets();if(a.length===0)return window.open("https://www.argent.xyz/argent-x/","_blank"),t(!1),!1;const o=a.find(d=>d.id==="argentX")||a.find(d=>d.id==="braavos")||a[0];return await w(r,o)}catch(e){const r=e instanceof Error?e.message:String(e);return console.error("[SpiceFlow:StarkNet] Connection failed:",r),!1}finally{t(!1)}},[w]),P=h(()=>{i(null),c(null),f(null),y.current=null,localStorage.removeItem(p)},[]);return C(()=>{const e=localStorage.getItem(p);e&&(async()=>{try{const{getStarknet:r}=await import("get-starknet-core"),a=r(),o=(await a.getAuthorizedWallets()).find(d=>d.id===e);if(!o){localStorage.removeItem(p);return}await w(a,o)}catch{localStorage.removeItem(p)}})()},[w]),{address:l,isConnected:!!l,isConnecting:k,account:s,provider:g,walletName:m,connect:B,disconnect:P,formatAddress:A}},W=E(null),$=({children:n,rpcUrl:l})=>{const i=N(l);return S(W.Provider,{value:i,children:n})},b=()=>{const n=R(W);if(!n)throw new Error("useStarknetWalletContext must be used within a <StarknetWalletProvider>. Wrap your StarkNet section with <StarknetWalletProvider> from '@spicenet-io/spiceflow-ui/auth/starknet'.");return n},j=({className:n,styles:l,onConnect:i,onDisconnect:k})=>{const t=b(),{dk:s,dark:c,theme:m}=T(l),f=async()=>{await t.connect()&&i?.()},g=()=>{t.disconnect(),k?.()};return t.isConnected&&t.address?x("div",{style:{display:"flex",alignItems:"center",gap:"8px"},className:n,children:[x("div",{style:{display:"flex",alignItems:"center",gap:"6px",padding:"6px 12px",borderRadius:"8px",background:s.cardBg,border:`1px solid ${s.cardBorder}`,fontSize:"14px",minWidth:0},children:[S("span",{style:{fontWeight:500,color:s.textPrimary},children:t.formatAddress(t.address)}),t.walletName&&x("span",{style:{color:s.textSecondary,fontSize:"12px",maxWidth:"120px",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:["(",t.walletName,")"]})]}),S(v,{variant:"ghost",size:"sm",onClick:g,title:"Disconnect StarkNet wallet",dark:c,theme:m,children:"\u2715"})]}):S(v,{variant:"primary",onClick:f,disabled:t.isConnecting,loading:t.isConnecting,className:n,dark:c,theme:m,children:t.isConnecting?"Connecting...":"Connect StarkNet Wallet"})};export{j as StarknetWalletButton,$ as StarknetWalletProvider,N as useStarknetWallet,b as useStarknetWalletContext};
@@ -1,28 +0,0 @@
1
- import React from "react";
2
- export interface AirdropToken {
3
- address: string;
4
- symbol: string;
5
- name: string;
6
- decimals: number;
7
- balance?: bigint;
8
- balanceFormatted?: number;
9
- }
10
- export interface AirdropModalProps {
11
- isOpen: boolean;
12
- onClose: () => void;
13
- onComplete?: () => void;
14
- title?: string;
15
- description?: string;
16
- chainId: number;
17
- airdropTag?: string;
18
- walletAddress: string;
19
- airdropTokens: string[];
20
- getChainConfig: (chainId: number) => any;
21
- getSupportedTokens: (chainId: number) => Array<{
22
- address: string;
23
- symbol: string;
24
- name: string;
25
- decimals: number;
26
- }>;
27
- }
28
- export declare const AirdropModal: React.FC<AirdropModalProps>;
@@ -1,2 +0,0 @@
1
- export { AirdropModal } from "./Airdrop";
2
- export type { AirdropModalProps, AirdropToken } from "./Airdrop";
@@ -1,23 +0,0 @@
1
- import React from "react";
2
- import { CustomStyles, Theme } from "../../types/theme";
3
- export interface AssetInputAsset {
4
- address: string;
5
- symbol: string;
6
- name: string;
7
- decimals: number;
8
- chainId: number;
9
- logoURI?: string;
10
- balance?: bigint;
11
- balanceFormatted?: number;
12
- }
13
- export interface AssetInputProps {
14
- asset: AssetInputAsset;
15
- amount: string;
16
- onAmountChange: (amount: string) => void;
17
- onPercentageClick: (percentage: number) => void;
18
- usdValue?: string;
19
- disabled?: boolean;
20
- styles?: CustomStyles;
21
- theme: Theme;
22
- }
23
- export declare const AssetInput: React.FC<AssetInputProps>;
@@ -1,42 +0,0 @@
1
- import React from "react";
2
- export interface Asset {
3
- address: string;
4
- symbol: string;
5
- name: string;
6
- decimals: number;
7
- isNative: boolean;
8
- chainId: number;
9
- balance?: bigint;
10
- balanceFormatted?: number;
11
- }
12
- export interface SelectedAssetWithAmount {
13
- asset: Asset;
14
- amount: string;
15
- }
16
- export interface DepositResult {
17
- asset: Asset;
18
- txHash: string;
19
- success: boolean;
20
- error?: string;
21
- }
22
- export interface CrossChainDepositModalProps {
23
- isOpen: boolean;
24
- onClose: () => void;
25
- onComplete: () => void;
26
- title?: string;
27
- description?: string;
28
- chainId: 11155111 | 421614 | 84532 | undefined;
29
- embeddedWalletAddress: string;
30
- externalWalletAddress: string;
31
- escrowAddress?: string;
32
- supportedChains: number[];
33
- airdropTokenSymbol?: string;
34
- getChainConfig: (chainId: number) => any;
35
- getSupportedTokens: (chainId: number) => Array<{
36
- address: string;
37
- symbol: string;
38
- name: string;
39
- decimals: number;
40
- }>;
41
- }
42
- export declare const CrossChainDepositModal: React.FC<CrossChainDepositModalProps>;
@@ -1,3 +0,0 @@
1
- import React from "react";
2
- import { DepositWidgetProps } from "../../types/deposit";
3
- export declare const DepositWidget: React.FC<DepositWidgetProps>;
@@ -1,11 +0,0 @@
1
- import React from "react";
2
- import { DepositWidgetProps } from "../../types/deposit";
3
- export interface DepositWidgetModalProps extends DepositWidgetProps {
4
- isOpen: boolean;
5
- onClose: () => void;
6
- title?: string;
7
- description?: React.ReactNode;
8
- maxWidth?: string;
9
- onComplete?: () => void;
10
- }
11
- export declare const DepositWidgetModal: React.FC<DepositWidgetModalProps>;
@@ -1,8 +0,0 @@
1
- export { DepositWidget } from "./DepositWidget";
2
- export { DepositWidgetModal } from "./DepositWidgetModal";
3
- export type { DepositWidgetProps } from "../../types/deposit";
4
- export type { DepositWidgetModalProps } from "./DepositWidgetModal";
5
- export { CrossChainDepositModal } from "./CrossChainDepositModal";
6
- export type { CrossChainDepositModalProps } from "./CrossChainDepositModal";
7
- export { AssetInput } from "./AssetInput";
8
- export type { AssetInputProps, AssetInputAsset } from "./AssetInput";
@@ -1,11 +0,0 @@
1
- import React from "react";
2
- import { Asset } from "../../types/assets";
3
- import { CustomStyles, Theme } from "../../types/theme";
4
- export declare const AmountCard: React.FC<{
5
- assetInput: any;
6
- availableAssets: Asset[];
7
- onAssetChange: (asset: Asset | null, amount: string) => void;
8
- disabled?: boolean;
9
- styles?: CustomStyles;
10
- theme: Theme;
11
- }>;
@@ -1,11 +0,0 @@
1
- import React from "react";
2
- import { Asset } from "../../types/assets";
3
- import { CustomStyles, Theme } from "../../types/theme";
4
- export declare const CompactAssetSelector: React.FC<{
5
- selectedAsset?: any;
6
- availableAssets: Asset[];
7
- onAssetSelect: (asset: Asset) => void;
8
- disabled?: boolean;
9
- styles?: CustomStyles;
10
- theme: Theme;
11
- }>;
@@ -1,3 +0,0 @@
1
- import React from "react";
2
- import { LpModalProps } from "../../types/lp";
3
- export declare const LpModal: React.FC<LpModalProps>;
@@ -1,14 +0,0 @@
1
- import React from "react";
2
- import { Asset } from "../../types/assets";
3
- import { CustomStyles, Theme } from "../../types/theme";
4
- export declare const PairInfoCard: React.FC<{
5
- pairLabel: string;
6
- pairApr: string;
7
- pairAddressLabel: string;
8
- lpLabel: string;
9
- onViewPool?: () => void;
10
- styles?: CustomStyles;
11
- theme: Theme;
12
- token1?: Asset;
13
- token2?: Asset;
14
- }>;
@@ -1,4 +0,0 @@
1
- import React from "react";
2
- export declare const ProgressIndicators: React.FC<{
3
- progressIndex?: number;
4
- }>;
@@ -1 +0,0 @@
1
- export { LpModal } from "./LpModal";
@@ -1,9 +0,0 @@
1
- import React from "react";
2
- import type { CustomStyles } from "../../types/theme";
3
- export interface StarknetWalletButtonProps {
4
- className?: string;
5
- styles?: CustomStyles;
6
- onConnect?: () => void;
7
- onDisconnect?: () => void;
8
- }
9
- export declare const StarknetWalletButton: React.FC<StarknetWalletButtonProps>;
@@ -1,2 +0,0 @@
1
- export { StarknetWalletButton } from "./StarknetWalletButton";
2
- export type { StarknetWalletButtonProps } from "./StarknetWalletButton";
@@ -1,10 +0,0 @@
1
- import React from "react";
2
- export interface ToastProps {
3
- message: string;
4
- type?: "success" | "error" | "info";
5
- duration?: number;
6
- onClose: () => void;
7
- linkText?: string;
8
- linkUrl?: string;
9
- }
10
- export declare const Toast: React.FC<ToastProps>;
@@ -1,13 +0,0 @@
1
- import type { AccountInterface, RpcProvider as RpcProviderType } from "starknet";
2
- export interface StarknetWalletState {
3
- address: string | null;
4
- isConnected: boolean;
5
- isConnecting: boolean;
6
- account: AccountInterface | null;
7
- provider: RpcProviderType | null;
8
- walletName: string | null;
9
- connect: () => Promise<boolean>;
10
- disconnect: () => void;
11
- formatAddress: (addr: string) => string;
12
- }
13
- export declare const useStarknetWallet: (rpcUrl?: string) => StarknetWalletState;
@@ -1,2 +0,0 @@
1
- "use client";
2
- import{defineChain as h,createPublicClient as C,http as v,isAddress as w,getAddress as g}from"viem";import{readContract as E}from"viem/actions";import{getChainMeta as d,getTokensForChain as I,getDelegateContract as N,ZERO_ADDRESS as k,isNativeToken as m}from"@spicenet-io/spiceflow-core";const y=[{constant:!0,inputs:[],name:"name",outputs:[{name:"",type:"string"}],payable:!1,stateMutability:"view",type:"function"},{constant:!1,inputs:[{name:"_spender",type:"address"},{name:"_value",type:"uint256"}],name:"approve",outputs:[{name:"",type:"bool"}],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!0,inputs:[],name:"totalSupply",outputs:[{name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!1,inputs:[{name:"_from",type:"address"},{name:"_to",type:"address"},{name:"_value",type:"uint256"}],name:"transferFrom",outputs:[{name:"",type:"bool"}],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!0,inputs:[],name:"decimals",outputs:[{name:"",type:"uint8"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[{name:"_owner",type:"address"}],name:"balanceOf",outputs:[{name:"balance",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"symbol",outputs:[{name:"",type:"string"}],payable:!1,stateMutability:"view",type:"function"},{constant:!1,inputs:[{name:"_to",type:"address"},{name:"_value",type:"uint256"}],name:"transfer",outputs:[{name:"",type:"bool"}],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!0,inputs:[{name:"_owner",type:"address"},{name:"_spender",type:"address"}],name:"allowance",outputs:[{name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{payable:!0,stateMutability:"payable",type:"fallback"},{anonymous:!1,inputs:[{indexed:!0,name:"owner",type:"address"},{indexed:!0,name:"spender",type:"address"},{indexed:!1,name:"value",type:"uint256"}],name:"Approval",type:"event"},{anonymous:!1,inputs:[{indexed:!0,name:"from",type:"address"},{indexed:!0,name:"to",type:"address"},{indexed:!1,name:"value",type:"uint256"}],name:"Transfer",type:"event"}],x="0xcA11bde05977b3631167028862bE2a173976CA11",U={4114:"0x860aFc632a6D625B95d8B96f39ECC48E988c6962"},$=new Set([5115]);function _(e){const t=U[e.id]??($.has(e.id)?void 0:x);return h({id:e.id,name:e.name,nativeCurrency:e.nativeCurrency,rpcUrls:{default:{http:[e.rpcUrl]}},blockExplorers:{default:{name:e.displayName,url:e.blockExplorer}},testnet:e.network==="testnet",...t?{contracts:{multicall3:{address:t}}}:{}})}const A=[1,8453,42161,4114,11155111,421614,84532,5115,123420001114,688688,688689],l=Object.fromEntries(A.map(e=>d(e)).filter(e=>e!=null).map(e=>[e.id,{...e,viemChain:_(e),supportedTokens:I(e.id)}])),M=l;let f={};const u=new Map,D=e=>{f={...e||{}},u.clear()},c=e=>{const t=f[e];return t&&typeof t=="string"&&t.length>0?t:l[e]?.rpcUrl},i=e=>l[e],F=e=>{const t=d(e);return t?.displayName||t?.name||`Chain ${e}`},T=e=>{const t=N(e);if(!t)throw new Error(`Unsupported chain ID: ${e}`);return t},R=(e,t,n)=>{const s=i(e);return s?.blockExplorer?`${s.blockExplorer}/tx/${t}`:"#"},b=e=>{const t=i(e);if(!t)throw new Error(`Unsupported chain ID: ${e}`);const n=c(e);if(!n)throw new Error(`No RPC URL configured for chain ID: ${e}`);const s=`${e}:${n}`,r=u.get(s);if(r)return r;const a=C({chain:t.viemChain,transport:v(n,{timeout:15e3,retryCount:2,retryDelay:300}),batch:{multicall:{wait:16}}});return u.set(s,a),a},O=()=>{const e={};return Object.values(l).forEach(t=>{e[t.id]={name:t.name,moralisName:t.moralisId||"",chain:t.viemChain,rpcUrl:c(t.id)||t.rpcUrl}}),e},S=(e,t=[])=>{const n=i(e);if(!n)return[];const s=[];if(![11155111,421614,84532,688689].includes(e)){const a=t.find(o=>o.chainId===e&&o.isNative);a?s.push(a):s.push({address:k,name:n.nativeCurrency.name,symbol:n.nativeCurrency.symbol,decimals:n.nativeCurrency.decimals,balance:BigInt(0),balanceFormatted:0,balanceUsd:0,logoURI:void 0,isNative:!0,chainId:e})}if(!n.supportedTokens)return s;const r=s.some(a=>a.isNative);return n.supportedTokens.forEach(a=>{if(r&&m(a.address))return;const o=t.find(p=>p.chainId===e&&p.address.toLowerCase()===a.address.toLowerCase());o?s.push(o):s.push({address:a.address,name:a.name,symbol:a.symbol,decimals:a.decimals,balance:BigInt(0),balanceFormatted:0,balanceUsd:0,logoURI:a.logo,isNative:!1,chainId:e})}),s},L=async(e,t)=>{const n=i(e);if(!n)throw new Error(`Unsupported chain ID: ${e}`);const s=t.toLowerCase();if(m(s)){if(!n.nativeCurrency?.decimals)throw new Error(`Native currency decimals not configured for chain ${e}`);return n.nativeCurrency.decimals}if(n.supportedTokens){const r=n.supportedTokens.find(a=>a.address.toLowerCase()===s);if(r)return r.decimals}try{if(!w(t,{strict:!1}))throw new Error(`Invalid token address: ${t}`);const r=g(t),a=b(e),o=await E(a,{address:r,abi:y,functionName:"decimals"});return Number(o)}catch{throw new Error(`Could not determine decimals for token ${t} on chain ${e}`)}};export{M as C,y as K,F as a,b,O as c,R as d,T as e,S as f,i as g,c as h,L as i,D as s};