@cromix-dev/payment-component 0.0.2

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.
@@ -0,0 +1,2 @@
1
+ export * from "./src/index.js";
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,2 @@
1
+ export * from "./src/index.js";
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC"}
@@ -0,0 +1,13 @@
1
+ import { Decimal } from "decimal.js";
2
+ import type { PaymentConfig, CreatePaymentRequest, CreatePaymentResponse, SignatureResponse } from "../types/index.js";
3
+ interface CryptoPaymentProps {
4
+ usdAmount: Decimal.Value;
5
+ paymentConfig: PaymentConfig;
6
+ onCreatePayment: (request: CreatePaymentRequest) => Promise<CreatePaymentResponse>;
7
+ onGetSignature: (paymentId: string) => Promise<SignatureResponse>;
8
+ onSuccess: (paymentId: string) => void;
9
+ onCancel: () => void;
10
+ }
11
+ export default function CryptoPayment({ usdAmount, paymentConfig, onCreatePayment, onGetSignature, onSuccess, onCancel, }: CryptoPaymentProps): import("react/jsx-runtime").JSX.Element;
12
+ export {};
13
+ //# sourceMappingURL=CryptoPayment.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CryptoPayment.d.ts","sourceRoot":"","sources":["../../../src/components/CryptoPayment.tsx"],"names":[],"mappings":"AAUA,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAErC,OAAO,KAAK,EAGV,aAAa,EACb,oBAAoB,EACpB,qBAAqB,EACrB,iBAAiB,EAClB,MAAM,mBAAmB,CAAC;AAE3B,UAAU,kBAAkB;IAC1B,SAAS,EAAE,OAAO,CAAC,KAAK,CAAC;IACzB,aAAa,EAAE,aAAa,CAAC;IAC7B,eAAe,EAAE,CACf,OAAO,EAAE,oBAAoB,KAC1B,OAAO,CAAC,qBAAqB,CAAC,CAAC;IACpC,cAAc,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC,iBAAiB,CAAC,CAAC;IAClE,SAAS,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;IACvC,QAAQ,EAAE,MAAM,IAAI,CAAC;CACtB;AAED,MAAM,CAAC,OAAO,UAAU,aAAa,CAAC,EACpC,SAAS,EACT,aAAa,EACb,eAAe,EACf,cAAc,EACd,SAAS,EACT,QAAQ,GACT,EAAE,kBAAkB,2CA0XpB"}
@@ -0,0 +1,150 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useState } from "react";
3
+ import { useAccount, useWalletClient, usePublicClient, useSwitchChain, useDisconnect, } from "wagmi";
4
+ import { useAppKit } from "@reown/appkit/react";
5
+ import { Decimal } from "decimal.js";
6
+ import { PaymentRouterAbi } from "@cromix-dev/evm";
7
+ export default function CryptoPayment({ usdAmount, paymentConfig, onCreatePayment, onGetSignature, onSuccess, onCancel, }) {
8
+ const { address, chain: currentChain, isConnected } = useAccount();
9
+ const { data: walletClient } = useWalletClient();
10
+ const publicClient = usePublicClient();
11
+ const { switchChain } = useSwitchChain();
12
+ const { disconnect } = useDisconnect();
13
+ const { open } = useAppKit();
14
+ const [selectedChainId, setSelectedChainId] = useState(null);
15
+ const [selectedPaymentSetting, setSelectedPaymentSetting] = useState(null);
16
+ const [status, setStatus] = useState("idle");
17
+ const [error, setError] = useState(null);
18
+ const getPaymentRouterByChainId = (chainId) => {
19
+ return (paymentConfig.paymentRouters.find((router) => router.chainId === chainId) || null);
20
+ };
21
+ const getPaymentSettingsByChainId = (chainId) => {
22
+ return paymentConfig.paymentSettings.filter((setting) => setting.chainId === chainId && setting.isActive);
23
+ };
24
+ const getAvailableChainIds = () => {
25
+ const chainIds = new Set();
26
+ paymentConfig.paymentSettings.forEach((setting) => {
27
+ if (setting.isActive) {
28
+ chainIds.add(setting.chainId);
29
+ }
30
+ });
31
+ return Array.from(chainIds);
32
+ };
33
+ const availableChainIds = getAvailableChainIds();
34
+ const selectedPaymentRouter = selectedChainId
35
+ ? getPaymentRouterByChainId(selectedChainId)
36
+ : null;
37
+ const availablePaymentSettings = selectedChainId
38
+ ? getPaymentSettingsByChainId(selectedChainId)
39
+ : [];
40
+ const targetChainId = selectedPaymentSetting
41
+ ? parseInt(selectedPaymentSetting.chainId)
42
+ : null;
43
+ const isCorrectNetwork = targetChainId
44
+ ? currentChain?.id === targetChainId
45
+ : false;
46
+ const handleConnectWallet = () => {
47
+ open();
48
+ };
49
+ const handleChainIdSelect = (chainId) => {
50
+ setSelectedChainId(chainId);
51
+ const settings = getPaymentSettingsByChainId(chainId);
52
+ if (settings.length > 0) {
53
+ setSelectedPaymentSetting(settings[0]);
54
+ }
55
+ };
56
+ const handleSwitchNetwork = async () => {
57
+ if (!targetChainId)
58
+ return;
59
+ try {
60
+ setStatus("switching");
61
+ setError(null);
62
+ await switchChain({ chainId: targetChainId });
63
+ setStatus("idle");
64
+ }
65
+ catch (err) {
66
+ console.error("Failed to switch network:", err);
67
+ setError(err instanceof Error ? err.message : "Failed to switch network");
68
+ setStatus("idle");
69
+ }
70
+ };
71
+ const handlePay = async () => {
72
+ if (!address ||
73
+ !walletClient ||
74
+ !selectedPaymentSetting ||
75
+ !selectedPaymentRouter)
76
+ return;
77
+ if (!isCorrectNetwork) {
78
+ setError(`Please switch to Chain ID ${targetChainId}`);
79
+ return;
80
+ }
81
+ let createdPaymentId = null;
82
+ try {
83
+ setError(null);
84
+ setStatus("creating");
85
+ // Create payment via merchant's API
86
+ const createResponse = await onCreatePayment({
87
+ usdAmount: usdAmount.toString(),
88
+ chainId: selectedPaymentSetting.chainId,
89
+ tokenAddress: selectedPaymentSetting.tokenAddress,
90
+ sender: address,
91
+ });
92
+ createdPaymentId = createResponse.id;
93
+ setStatus("signing");
94
+ // Get signature from merchant's API
95
+ const signatureResponse = await onGetSignature(createdPaymentId);
96
+ const { signature, paymentData } = signatureResponse;
97
+ setStatus("sending");
98
+ console.log("Sending transaction:", {
99
+ paymentId: createdPaymentId,
100
+ paymentRouter: selectedPaymentRouter.address,
101
+ paymentData,
102
+ });
103
+ // Send transaction to PaymentRouter contract
104
+ const hash = await walletClient.writeContract({
105
+ address: selectedPaymentRouter.address,
106
+ abi: PaymentRouterAbi,
107
+ functionName: "payETH",
108
+ args: [
109
+ BigInt(paymentData.id),
110
+ paymentData.receiver,
111
+ BigInt(paymentData.feeRate),
112
+ BigInt(paymentData.expirationTimestamp),
113
+ signature,
114
+ ],
115
+ value: BigInt(paymentData.amount),
116
+ });
117
+ console.log("Transaction sent:", hash);
118
+ setStatus("confirming");
119
+ // Wait for confirmation
120
+ let receipt = null;
121
+ if (publicClient) {
122
+ receipt = await publicClient.waitForTransactionReceipt({ hash });
123
+ console.log("Transaction confirmed:", receipt);
124
+ }
125
+ if (!receipt) {
126
+ throw new Error("Transaction receipt not found");
127
+ }
128
+ setStatus("success");
129
+ setTimeout(() => onSuccess(createdPaymentId), 1000);
130
+ }
131
+ catch (err) {
132
+ console.error("Payment error:", err);
133
+ setError(err instanceof Error ? err.message : "Payment failed");
134
+ setStatus("idle");
135
+ }
136
+ };
137
+ return (_jsxs("div", { className: "space-y-6", children: [!isConnected && (_jsxs("div", { className: "text-center py-8", children: [_jsx("h5", { className: "text-lg mb-2 text-white", children: "Connect Your Wallet" }), _jsx("p", { className: "text-gray-400 mb-6", children: "Connect your wallet to proceed with crypto payment" }), _jsx("button", { onClick: handleConnectWallet, className: "bg-blue-600 text-white px-6 py-3 rounded hover:bg-blue-700 font-semibold transition", children: "Connect Wallet" })] })), isConnected && (_jsxs("div", { className: "bg-green-900 bg-opacity-30 border border-green-700 p-3 rounded flex justify-between items-center", children: [_jsxs("div", { children: [_jsx("div", { className: "text-sm text-green-400", children: "Wallet Connected" }), _jsx("div", { className: "text-white font-mono text-sm", children: address ? `${address.slice(0, 6)}...${address.slice(-4)}` : "" })] }), _jsx("button", { onClick: () => disconnect(), className: "bg-red-600 text-white px-3 py-1 text-sm rounded hover:bg-red-700 transition", children: "Disconnect" })] })), isConnected && !selectedChainId && (_jsxs("div", { children: [_jsx("h5", { className: "font-semibold mb-3 text-white", children: "Select Network" }), _jsx("div", { className: "grid grid-cols-2 gap-3", children: availableChainIds.map((chainId) => {
138
+ const settings = getPaymentSettingsByChainId(chainId);
139
+ return (_jsxs("button", { onClick: () => handleChainIdSelect(chainId), className: "p-4 border-2 border-gray-600 rounded-lg hover:border-blue-500 hover:bg-gray-700 text-left transition", children: [_jsxs("div", { className: "font-semibold text-white", children: ["Chain ID: ", chainId] }), _jsxs("div", { className: "text-sm text-gray-400", children: [settings.length, " token(s)"] })] }, chainId));
140
+ }) })] })), isConnected && selectedChainId && !selectedPaymentSetting && (_jsxs("div", { children: [_jsxs("div", { className: "flex items-center mb-3", children: [_jsx("button", { onClick: () => {
141
+ setSelectedChainId(null);
142
+ setSelectedPaymentSetting(null);
143
+ }, className: "text-blue-400 hover:text-blue-300 mr-3", children: "\u2190 Back" }), _jsxs("h5", { className: "font-semibold text-white", children: ["Select Token (Chain ID ", selectedChainId, ")"] })] }), _jsx("div", { className: "grid grid-cols-2 gap-3", children: availablePaymentSettings.map((setting) => (_jsxs("button", { onClick: () => setSelectedPaymentSetting(setting), className: "p-4 border-2 border-gray-600 rounded-lg hover:border-blue-500 hover:bg-gray-700 text-left transition", children: [_jsx("div", { className: "font-semibold text-white", children: setting.tokenSymbol }), _jsx("div", { className: "text-sm text-gray-400", children: setting.tokenName })] }, setting.id))) })] })), isConnected && selectedPaymentSetting && selectedPaymentRouter && (_jsxs("div", { className: "space-y-4", children: [_jsxs("div", { className: "bg-gray-700 p-4 rounded-lg border border-gray-600", children: [_jsx("h4", { className: "font-semibold mb-2 text-white", children: "Payment Details" }), _jsxs("div", { className: "space-y-1 text-sm text-gray-300", children: [_jsxs("div", { className: "flex justify-between", children: [_jsx("span", { children: "Amount:" }), _jsxs("span", { className: "text-white", children: ["$", new Decimal(usdAmount).toFixed(2), " USD"] })] }), _jsxs("div", { className: "flex justify-between", children: [_jsx("span", { children: "Chain ID:" }), _jsx("span", { className: "text-white", children: selectedPaymentSetting.chainId })] }), _jsxs("div", { className: "flex justify-between", children: [_jsx("span", { children: "Token:" }), _jsx("span", { className: "text-white", children: selectedPaymentSetting.tokenSymbol })] }), _jsxs("div", { className: "flex justify-between", children: [_jsx("span", { children: "Receiver:" }), _jsxs("span", { className: "font-mono text-xs text-white", children: [selectedPaymentSetting.receiver.slice(0, 10), "..."] })] })] })] }), !isCorrectNetwork && currentChain && (_jsxs("div", { className: "bg-yellow-900 bg-opacity-30 border border-yellow-700 p-3 rounded", children: [_jsx("div", { className: "text-sm mb-2 text-yellow-300 font-semibold", children: "\u26A0\uFE0F Wrong Network" }), _jsxs("div", { className: "text-sm mb-3 text-yellow-200", children: ["Current: Chain ID ", currentChain.id, _jsx("br", {}), "Required: Chain ID ", targetChainId] }), _jsx("button", { onClick: handleSwitchNetwork, disabled: status === "switching", className: "w-full bg-yellow-600 text-white py-2 rounded hover:bg-yellow-700 disabled:opacity-50 transition", children: status === "switching" ? "Switching..." : "Switch Network" })] })), isCorrectNetwork && (_jsxs("div", { className: "bg-green-900 bg-opacity-30 border border-green-700 p-2 rounded text-sm text-green-300", children: ["\u2713 Connected to Chain ID ", targetChainId] })), error && (_jsx("div", { className: "bg-red-900 bg-opacity-30 border border-red-700 p-3 rounded text-red-300 text-sm", children: error })), status !== "idle" && (_jsxs("div", { className: "bg-blue-900 bg-opacity-30 border border-blue-700 p-3 rounded text-sm text-blue-300", children: [status === "switching" && "Switching network...", status === "creating" && "Creating payment...", status === "signing" && "Getting signature...", status === "sending" && "Sending transaction...", status === "confirming" && "Confirming...", status === "success" && "✓ Payment successful!"] })), _jsxs("div", { className: "flex gap-3", children: [_jsx("button", { onClick: () => {
144
+ setSelectedChainId(null);
145
+ setSelectedPaymentSetting(null);
146
+ }, disabled: status !== "idle", className: "flex-1 bg-gray-600 text-white py-3 rounded hover:bg-gray-700 disabled:opacity-50 transition", children: "Back" }), _jsx("button", { onClick: handlePay, disabled: status !== "idle" || !address || !isCorrectNetwork, className: "flex-1 bg-blue-600 text-white py-3 rounded hover:bg-blue-700 disabled:opacity-50 font-semibold transition", children: status === "idle"
147
+ ? `Pay ${selectedPaymentSetting.tokenSymbol}`
148
+ : "Processing..." })] })] })), _jsx("div", { className: "border-t border-gray-600 pt-4", children: _jsx("button", { onClick: onCancel, disabled: status !== "idle", className: "w-full bg-gray-600 text-white py-2 rounded hover:bg-gray-700 disabled:opacity-50 transition", children: "Cancel Payment" }) })] }));
149
+ }
150
+ //# sourceMappingURL=CryptoPayment.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CryptoPayment.js","sourceRoot":"","sources":["../../../src/components/CryptoPayment.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACjC,OAAO,EACL,UAAU,EACV,eAAe,EACf,eAAe,EACf,cAAc,EACd,aAAa,GACd,MAAM,OAAO,CAAC;AACf,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAEhD,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AACrC,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAqBnD,MAAM,CAAC,OAAO,UAAU,aAAa,CAAC,EACpC,SAAS,EACT,aAAa,EACb,eAAe,EACf,cAAc,EACd,SAAS,EACT,QAAQ,GACW;IACnB,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,GAAG,UAAU,EAAE,CAAC;IACnE,MAAM,EAAE,IAAI,EAAE,YAAY,EAAE,GAAG,eAAe,EAAE,CAAC;IACjD,MAAM,YAAY,GAAG,eAAe,EAAE,CAAC;IACvC,MAAM,EAAE,WAAW,EAAE,GAAG,cAAc,EAAE,CAAC;IACzC,MAAM,EAAE,UAAU,EAAE,GAAG,aAAa,EAAE,CAAC;IACvC,MAAM,EAAE,IAAI,EAAE,GAAG,SAAS,EAAE,CAAC;IAE7B,MAAM,CAAC,eAAe,EAAE,kBAAkB,CAAC,GAAG,QAAQ,CAAgB,IAAI,CAAC,CAAC;IAC5E,MAAM,CAAC,sBAAsB,EAAE,yBAAyB,CAAC,GACvD,QAAQ,CAAwB,IAAI,CAAC,CAAC;IACxC,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,CAQlC,MAAM,CAAC,CAAC;IACV,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAgB,IAAI,CAAC,CAAC;IAExD,MAAM,yBAAyB,GAAG,CAAC,OAAe,EAAwB,EAAE;QAC1E,OAAO,CACL,aAAa,CAAC,cAAc,CAAC,IAAI,CAC/B,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,KAAK,OAAO,CACvC,IAAI,IAAI,CACV,CAAC;IACJ,CAAC,CAAC;IAEF,MAAM,2BAA2B,GAAG,CAAC,OAAe,EAAoB,EAAE;QACxE,OAAO,aAAa,CAAC,eAAe,CAAC,MAAM,CACzC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,OAAO,KAAK,OAAO,IAAI,OAAO,CAAC,QAAQ,CAC7D,CAAC;IACJ,CAAC,CAAC;IAEF,MAAM,oBAAoB,GAAG,GAAa,EAAE;QAC1C,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAU,CAAC;QACnC,aAAa,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;YAChD,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;gBACrB,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YAChC,CAAC;QACH,CAAC,CAAC,CAAC;QACH,OAAO,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC9B,CAAC,CAAC;IAEF,MAAM,iBAAiB,GAAG,oBAAoB,EAAE,CAAC;IACjD,MAAM,qBAAqB,GAAG,eAAe;QAC3C,CAAC,CAAC,yBAAyB,CAAC,eAAe,CAAC;QAC5C,CAAC,CAAC,IAAI,CAAC;IACT,MAAM,wBAAwB,GAAG,eAAe;QAC9C,CAAC,CAAC,2BAA2B,CAAC,eAAe,CAAC;QAC9C,CAAC,CAAC,EAAE,CAAC;IAEP,MAAM,aAAa,GAAG,sBAAsB;QAC1C,CAAC,CAAC,QAAQ,CAAC,sBAAsB,CAAC,OAAO,CAAC;QAC1C,CAAC,CAAC,IAAI,CAAC;IACT,MAAM,gBAAgB,GAAG,aAAa;QACpC,CAAC,CAAC,YAAY,EAAE,EAAE,KAAK,aAAa;QACpC,CAAC,CAAC,KAAK,CAAC;IAEV,MAAM,mBAAmB,GAAG,GAAG,EAAE;QAC/B,IAAI,EAAE,CAAC;IACT,CAAC,CAAC;IAEF,MAAM,mBAAmB,GAAG,CAAC,OAAe,EAAE,EAAE;QAC9C,kBAAkB,CAAC,OAAO,CAAC,CAAC;QAC5B,MAAM,QAAQ,GAAG,2BAA2B,CAAC,OAAO,CAAC,CAAC;QACtD,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACxB,yBAAyB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;QACzC,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,mBAAmB,GAAG,KAAK,IAAI,EAAE;QACrC,IAAI,CAAC,aAAa;YAAE,OAAO;QAC3B,IAAI,CAAC;YACH,SAAS,CAAC,WAAW,CAAC,CAAC;YACvB,QAAQ,CAAC,IAAI,CAAC,CAAC;YACf,MAAM,WAAW,CAAC,EAAE,OAAO,EAAE,aAAa,EAAE,CAAC,CAAC;YAC9C,SAAS,CAAC,MAAM,CAAC,CAAC;QACpB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,KAAK,CAAC,2BAA2B,EAAE,GAAG,CAAC,CAAC;YAChD,QAAQ,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,0BAA0B,CAAC,CAAC;YAC1E,SAAS,CAAC,MAAM,CAAC,CAAC;QACpB,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,SAAS,GAAG,KAAK,IAAI,EAAE;QAC3B,IACE,CAAC,OAAO;YACR,CAAC,YAAY;YACb,CAAC,sBAAsB;YACvB,CAAC,qBAAqB;YAEtB,OAAO;QAET,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACtB,QAAQ,CAAC,6BAA6B,aAAa,EAAE,CAAC,CAAC;YACvD,OAAO;QACT,CAAC;QAED,IAAI,gBAAgB,GAAkB,IAAI,CAAC;QAE3C,IAAI,CAAC;YACH,QAAQ,CAAC,IAAI,CAAC,CAAC;YACf,SAAS,CAAC,UAAU,CAAC,CAAC;YAEtB,oCAAoC;YACpC,MAAM,cAAc,GAAG,MAAM,eAAe,CAAC;gBAC3C,SAAS,EAAE,SAAS,CAAC,QAAQ,EAAE;gBAC/B,OAAO,EAAE,sBAAsB,CAAC,OAAO;gBACvC,YAAY,EAAE,sBAAsB,CAAC,YAAY;gBACjD,MAAM,EAAE,OAAO;aAChB,CAAC,CAAC;YAEH,gBAAgB,GAAG,cAAc,CAAC,EAAE,CAAC;YAErC,SAAS,CAAC,SAAS,CAAC,CAAC;YAErB,oCAAoC;YACpC,MAAM,iBAAiB,GAAG,MAAM,cAAc,CAAC,gBAAgB,CAAC,CAAC;YACjE,MAAM,EAAE,SAAS,EAAE,WAAW,EAAE,GAAG,iBAAiB,CAAC;YAErD,SAAS,CAAC,SAAS,CAAC,CAAC;YAErB,OAAO,CAAC,GAAG,CAAC,sBAAsB,EAAE;gBAClC,SAAS,EAAE,gBAAgB;gBAC3B,aAAa,EAAE,qBAAqB,CAAC,OAAO;gBAC5C,WAAW;aACZ,CAAC,CAAC;YAEH,6CAA6C;YAC7C,MAAM,IAAI,GAAG,MAAM,YAAY,CAAC,aAAa,CAAC;gBAC5C,OAAO,EAAE,qBAAqB,CAAC,OAAkB;gBACjD,GAAG,EAAE,gBAAgB;gBACrB,YAAY,EAAE,QAAQ;gBACtB,IAAI,EAAE;oBACJ,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC;oBACtB,WAAW,CAAC,QAAmB;oBAC/B,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC;oBAC3B,MAAM,CAAC,WAAW,CAAC,mBAAmB,CAAC;oBACvC,SAAgB;iBACjB;gBACD,KAAK,EAAE,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC;aAClC,CAAC,CAAC;YAEH,OAAO,CAAC,GAAG,CAAC,mBAAmB,EAAE,IAAI,CAAC,CAAC;YAEvC,SAAS,CAAC,YAAY,CAAC,CAAC;YAExB,wBAAwB;YACxB,IAAI,OAAO,GAA8B,IAAI,CAAC;YAC9C,IAAI,YAAY,EAAE,CAAC;gBACjB,OAAO,GAAG,MAAM,YAAY,CAAC,yBAAyB,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;gBACjE,OAAO,CAAC,GAAG,CAAC,wBAAwB,EAAE,OAAO,CAAC,CAAC;YACjD,CAAC;YAED,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;YACnD,CAAC;YAED,SAAS,CAAC,SAAS,CAAC,CAAC;YACrB,UAAU,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,gBAAiB,CAAC,EAAE,IAAI,CAAC,CAAC;QACvD,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,KAAK,CAAC,gBAAgB,EAAE,GAAG,CAAC,CAAC;YACrC,QAAQ,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC;YAChE,SAAS,CAAC,MAAM,CAAC,CAAC;QACpB,CAAC;IACH,CAAC,CAAC;IAEF,OAAO,CACL,eAAK,SAAS,EAAC,WAAW,aAEvB,CAAC,WAAW,IAAI,CACf,eAAK,SAAS,EAAC,kBAAkB,aAC/B,aAAI,SAAS,EAAC,yBAAyB,oCAAyB,EAChE,YAAG,SAAS,EAAC,oBAAoB,mEAE7B,EACJ,iBACE,OAAO,EAAE,mBAAmB,EAC5B,SAAS,EAAC,qFAAqF,+BAGxF,IACL,CACP,EAGA,WAAW,IAAI,CACd,eAAK,SAAS,EAAC,kGAAkG,aAC/G,0BACE,cAAK,SAAS,EAAC,wBAAwB,iCAAuB,EAC9D,cAAK,SAAS,EAAC,8BAA8B,YAC1C,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,GAC3D,IACF,EACN,iBACE,OAAO,EAAE,GAAG,EAAE,CAAC,UAAU,EAAE,EAC3B,SAAS,EAAC,6EAA6E,2BAGhF,IACL,CACP,EAGA,WAAW,IAAI,CAAC,eAAe,IAAI,CAClC,0BACE,aAAI,SAAS,EAAC,+BAA+B,+BAAoB,EACjE,cAAK,SAAS,EAAC,wBAAwB,YACpC,iBAAiB,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE;4BACjC,MAAM,QAAQ,GAAG,2BAA2B,CAAC,OAAO,CAAC,CAAC;4BACtD,OAAO,CACL,kBAEE,OAAO,EAAE,GAAG,EAAE,CAAC,mBAAmB,CAAC,OAAO,CAAC,EAC3C,SAAS,EAAC,sGAAsG,aAEhH,eAAK,SAAS,EAAC,0BAA0B,2BAC5B,OAAO,IACd,EACN,eAAK,SAAS,EAAC,uBAAuB,aACnC,QAAQ,CAAC,MAAM,iBACZ,KATD,OAAO,CAUL,CACV,CAAC;wBACJ,CAAC,CAAC,GACE,IACF,CACP,EAGA,WAAW,IAAI,eAAe,IAAI,CAAC,sBAAsB,IAAI,CAC5D,0BACE,eAAK,SAAS,EAAC,wBAAwB,aACrC,iBACE,OAAO,EAAE,GAAG,EAAE;oCACZ,kBAAkB,CAAC,IAAI,CAAC,CAAC;oCACzB,yBAAyB,CAAC,IAAI,CAAC,CAAC;gCAClC,CAAC,EACD,SAAS,EAAC,wCAAwC,4BAG3C,EACT,cAAI,SAAS,EAAC,0BAA0B,wCACd,eAAe,SACpC,IACD,EACN,cAAK,SAAS,EAAC,wBAAwB,YACpC,wBAAwB,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CACzC,kBAEE,OAAO,EAAE,GAAG,EAAE,CAAC,yBAAyB,CAAC,OAAO,CAAC,EACjD,SAAS,EAAC,sGAAsG,aAEhH,cAAK,SAAS,EAAC,0BAA0B,YACtC,OAAO,CAAC,WAAW,GAChB,EACN,cAAK,SAAS,EAAC,uBAAuB,YAAE,OAAO,CAAC,SAAS,GAAO,KAP3D,OAAO,CAAC,EAAE,CAQR,CACV,CAAC,GACE,IACF,CACP,EAGA,WAAW,IAAI,sBAAsB,IAAI,qBAAqB,IAAI,CACjE,eAAK,SAAS,EAAC,WAAW,aACxB,eAAK,SAAS,EAAC,mDAAmD,aAChE,aAAI,SAAS,EAAC,+BAA+B,gCAAqB,EAClE,eAAK,SAAS,EAAC,iCAAiC,aAC9C,eAAK,SAAS,EAAC,sBAAsB,aACnC,qCAAoB,EACpB,gBAAM,SAAS,EAAC,YAAY,kBACxB,IAAI,OAAO,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,YAC9B,IACH,EACN,eAAK,SAAS,EAAC,sBAAsB,aACnC,uCAAsB,EACtB,eAAM,SAAS,EAAC,YAAY,YACzB,sBAAsB,CAAC,OAAO,GAC1B,IACH,EACN,eAAK,SAAS,EAAC,sBAAsB,aACnC,oCAAmB,EACnB,eAAM,SAAS,EAAC,YAAY,YACzB,sBAAsB,CAAC,WAAW,GAC9B,IACH,EACN,eAAK,SAAS,EAAC,sBAAsB,aACnC,uCAAsB,EACtB,gBAAM,SAAS,EAAC,8BAA8B,aAC3C,sBAAsB,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,WACxC,IACH,IACF,IACF,EAEL,CAAC,gBAAgB,IAAI,YAAY,IAAI,CACpC,eAAK,SAAS,EAAC,kEAAkE,aAC/E,cAAK,SAAS,EAAC,4CAA4C,2CAErD,EACN,eAAK,SAAS,EAAC,8BAA8B,mCACxB,YAAY,CAAC,EAAE,EAClC,cAAM,yBACc,aAAa,IAC7B,EACN,iBACE,OAAO,EAAE,mBAAmB,EAC5B,QAAQ,EAAE,MAAM,KAAK,WAAW,EAChC,SAAS,EAAC,iGAAiG,YAE1G,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,gBAAgB,GACpD,IACL,CACP,EAEA,gBAAgB,IAAI,CACnB,eAAK,SAAS,EAAC,uFAAuF,8CAC3E,aAAa,IAClC,CACP,EAEA,KAAK,IAAI,CACR,cAAK,SAAS,EAAC,iFAAiF,YAC7F,KAAK,GACF,CACP,EAEA,MAAM,KAAK,MAAM,IAAI,CACpB,eAAK,SAAS,EAAC,oFAAoF,aAChG,MAAM,KAAK,WAAW,IAAI,sBAAsB,EAChD,MAAM,KAAK,UAAU,IAAI,qBAAqB,EAC9C,MAAM,KAAK,SAAS,IAAI,sBAAsB,EAC9C,MAAM,KAAK,SAAS,IAAI,wBAAwB,EAChD,MAAM,KAAK,YAAY,IAAI,eAAe,EAC1C,MAAM,KAAK,SAAS,IAAI,uBAAuB,IAC5C,CACP,EAED,eAAK,SAAS,EAAC,YAAY,aACzB,iBACE,OAAO,EAAE,GAAG,EAAE;oCACZ,kBAAkB,CAAC,IAAI,CAAC,CAAC;oCACzB,yBAAyB,CAAC,IAAI,CAAC,CAAC;gCAClC,CAAC,EACD,QAAQ,EAAE,MAAM,KAAK,MAAM,EAC3B,SAAS,EAAC,6FAA6F,qBAGhG,EACT,iBACE,OAAO,EAAE,SAAS,EAClB,QAAQ,EAAE,MAAM,KAAK,MAAM,IAAI,CAAC,OAAO,IAAI,CAAC,gBAAgB,EAC5D,SAAS,EAAC,2GAA2G,YAEpH,MAAM,KAAK,MAAM;oCAChB,CAAC,CAAC,OAAO,sBAAsB,CAAC,WAAW,EAAE;oCAC7C,CAAC,CAAC,eAAe,GACZ,IACL,IACF,CACP,EAGD,cAAK,SAAS,EAAC,+BAA+B,YAC5C,iBACE,OAAO,EAAE,QAAQ,EACjB,QAAQ,EAAE,MAAM,KAAK,MAAM,EAC3B,SAAS,EAAC,6FAA6F,+BAGhG,GACL,IACF,CACP,CAAC;AACJ,CAAC"}
@@ -0,0 +1,8 @@
1
+ import { Config } from "wagmi";
2
+ interface PaymentProviderProps {
3
+ wagmiConfig: Config;
4
+ children: React.ReactNode;
5
+ }
6
+ export default function PaymentProvider({ wagmiConfig, children, }: PaymentProviderProps): import("react/jsx-runtime").JSX.Element;
7
+ export {};
8
+ //# sourceMappingURL=PaymentProvider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PaymentProvider.d.ts","sourceRoot":"","sources":["../../../src/components/PaymentProvider.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAiB,MAAM,OAAO,CAAC;AAI9C,UAAU,oBAAoB;IAC5B,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B;AAED,MAAM,CAAC,OAAO,UAAU,eAAe,CAAC,EACtC,WAAW,EACX,QAAQ,GACT,EAAE,oBAAoB,2CAMtB"}
@@ -0,0 +1,8 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { QueryClient, QueryClientProvider } from "@tanstack/react-query";
3
+ import { WagmiProvider } from "wagmi";
4
+ const queryClient = new QueryClient();
5
+ export default function PaymentProvider({ wagmiConfig, children, }) {
6
+ return (_jsx(WagmiProvider, { config: wagmiConfig, children: _jsx(QueryClientProvider, { client: queryClient, children: children }) }));
7
+ }
8
+ //# sourceMappingURL=PaymentProvider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PaymentProvider.js","sourceRoot":"","sources":["../../../src/components/PaymentProvider.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AACzE,OAAO,EAAU,aAAa,EAAE,MAAM,OAAO,CAAC;AAE9C,MAAM,WAAW,GAAG,IAAI,WAAW,EAAE,CAAC;AAOtC,MAAM,CAAC,OAAO,UAAU,eAAe,CAAC,EACtC,WAAW,EACX,QAAQ,GACa;IACrB,OAAO,CACL,KAAC,aAAa,IAAC,MAAM,EAAE,WAAW,YAChC,KAAC,mBAAmB,IAAC,MAAM,EAAE,WAAW,YAAG,QAAQ,GAAuB,GAC5D,CACjB,CAAC;AACJ,CAAC"}
@@ -0,0 +1,5 @@
1
+ export type * from "./types/index.js";
2
+ export { createPaymentWalletConfig } from "./libs/payment-wallet.js";
3
+ export { default as PaymentProvider } from "./components/PaymentProvider.js";
4
+ export { default as CryptoPayment } from "./components/CryptoPayment.js";
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,mBAAmB,kBAAkB,CAAC;AACtC,OAAO,EAAE,yBAAyB,EAAE,MAAM,0BAA0B,CAAC;AACrE,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAC7E,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,+BAA+B,CAAC"}
@@ -0,0 +1,4 @@
1
+ export { createPaymentWalletConfig } from "./libs/payment-wallet.js";
2
+ export { default as PaymentProvider } from "./components/PaymentProvider.js";
3
+ export { default as CryptoPayment } from "./components/CryptoPayment.js";
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,yBAAyB,EAAE,MAAM,0BAA0B,CAAC;AACrE,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAC7E,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,+BAA+B,CAAC"}
@@ -0,0 +1,10 @@
1
+ import { AppKitOptions } from "@reown/appkit/react";
2
+ export declare function createPaymentWalletConfig(config: {
3
+ projectId: string;
4
+ metadata: AppKitOptions["metadata"];
5
+ includeTestnets?: boolean;
6
+ }): {
7
+ wagmiConfig: import("wagmi").Config;
8
+ appKit: import("@reown/appkit/react").AppKit;
9
+ };
10
+ //# sourceMappingURL=payment-wallet.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"payment-wallet.d.ts","sourceRoot":"","sources":["../../../src/libs/payment-wallet.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAgB,MAAM,qBAAqB,CAAC;AAelE,wBAAgB,yBAAyB,CAAC,MAAM,EAAE;IAChD,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,aAAa,CAAC,UAAU,CAAC,CAAC;IACpC,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;;;EAwBA"}
@@ -0,0 +1,28 @@
1
+ import { createAppKit } from "@reown/appkit/react";
2
+ import { WagmiAdapter } from "@reown/appkit-adapter-wagmi";
3
+ import { mainnet, sepolia, polygon, polygonAmoy, bsc, bscTestnet, anvil, } from "viem/chains";
4
+ const DEFAULT_TESTNETS = [anvil, sepolia, polygonAmoy, bscTestnet];
5
+ const DEFAULT_MAINNETS = [mainnet, polygon, bsc];
6
+ export function createPaymentWalletConfig(config) {
7
+ const { projectId, metadata, includeTestnets } = config;
8
+ const chains = [
9
+ ...DEFAULT_MAINNETS,
10
+ ...(includeTestnets ? DEFAULT_TESTNETS : []),
11
+ ];
12
+ const wagmiAdapter = new WagmiAdapter({
13
+ networks: chains,
14
+ projectId,
15
+ ssr: true,
16
+ });
17
+ const appKit = createAppKit({
18
+ adapters: [wagmiAdapter],
19
+ networks: chains,
20
+ projectId,
21
+ metadata,
22
+ });
23
+ return {
24
+ wagmiConfig: wagmiAdapter.wagmiConfig,
25
+ appKit,
26
+ };
27
+ }
28
+ //# sourceMappingURL=payment-wallet.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"payment-wallet.js","sourceRoot":"","sources":["../../../src/libs/payment-wallet.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAClE,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,EACL,OAAO,EACP,OAAO,EACP,OAAO,EACP,WAAW,EACX,GAAG,EACH,UAAU,EACV,KAAK,GACN,MAAM,aAAa,CAAC;AAErB,MAAM,gBAAgB,GAAG,CAAC,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,UAAU,CAAU,CAAC;AAC5E,MAAM,gBAAgB,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,CAAU,CAAC;AAE1D,MAAM,UAAU,yBAAyB,CAAC,MAIzC;IACC,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,eAAe,EAAE,GAAG,MAAM,CAAC;IACxD,MAAM,MAAM,GAAG;QACb,GAAG,gBAAgB;QACnB,GAAG,CAAC,eAAe,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,CAAC;KACpC,CAAC;IAEX,MAAM,YAAY,GAAG,IAAI,YAAY,CAAC;QACpC,QAAQ,EAAE,MAAa;QACvB,SAAS;QACT,GAAG,EAAE,IAAI;KACV,CAAC,CAAC;IAEH,MAAM,MAAM,GAAG,YAAY,CAAC;QAC1B,QAAQ,EAAE,CAAC,YAAY,CAAC;QACxB,QAAQ,EAAE,MAAa;QACvB,SAAS;QACT,QAAQ;KACT,CAAC,CAAC;IAEH,OAAO;QACL,WAAW,EAAE,YAAY,CAAC,WAAW;QACrC,MAAM;KACP,CAAC;AACJ,CAAC"}
@@ -0,0 +1,41 @@
1
+ export interface PaymentRouter {
2
+ id: string;
3
+ chainId: string;
4
+ address: string;
5
+ }
6
+ export interface PaymentSetting {
7
+ id: string;
8
+ chainId: string;
9
+ tokenAddress: string;
10
+ tokenName: string;
11
+ tokenSymbol: string;
12
+ tokenDecimals: number;
13
+ receiver: string;
14
+ isActive: boolean;
15
+ }
16
+ export interface PaymentConfig {
17
+ paymentRouters: PaymentRouter[];
18
+ paymentSettings: PaymentSetting[];
19
+ }
20
+ export interface CreatePaymentRequest {
21
+ usdAmount: string;
22
+ chainId: string;
23
+ tokenAddress: string;
24
+ sender: string;
25
+ }
26
+ export interface CreatePaymentResponse {
27
+ id: string;
28
+ }
29
+ export interface SignatureResponse {
30
+ signature: string;
31
+ paymentData: {
32
+ id: string;
33
+ erc20: string;
34
+ sender: string;
35
+ receiver: string;
36
+ amount: string;
37
+ feeRate: string;
38
+ expirationTimestamp: string;
39
+ };
40
+ }
41
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/types/index.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,aAAa;IAC5B,cAAc,EAAE,aAAa,EAAE,CAAC;IAChC,eAAe,EAAE,cAAc,EAAE,CAAC;CACnC;AAED,MAAM,WAAW,oBAAoB;IACnC,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,qBAAqB;IACpC,EAAE,EAAE,MAAM,CAAC;CACZ;AAED,MAAM,WAAW,iBAAiB;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE;QACX,EAAE,EAAE,MAAM,CAAC;QACX,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;QACf,QAAQ,EAAE,MAAM,CAAC;QACjB,MAAM,EAAE,MAAM,CAAC;QACf,OAAO,EAAE,MAAM,CAAC;QAChB,mBAAmB,EAAE,MAAM,CAAC;KAC7B,CAAC;CACH"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/types/index.ts"],"names":[],"mappings":""}
package/package.json ADDED
@@ -0,0 +1,53 @@
1
+ {
2
+ "name": "@cromix-dev/payment-component",
3
+ "version": "0.0.2",
4
+ "type": "module",
5
+ "main": "./dist/index.js",
6
+ "types": "./dist/index.d.ts",
7
+ "exports": {
8
+ ".": {
9
+ "types": "./dist/index.d.ts",
10
+ "import": "./dist/index.js",
11
+ "default": "./dist/index.js"
12
+ }
13
+ },
14
+ "files": [
15
+ "dist"
16
+ ],
17
+ "keywords": [],
18
+ "author": "",
19
+ "license": "ISC",
20
+ "dependencies": {
21
+ "@reown/appkit": "^1.8.6",
22
+ "@reown/appkit-adapter-wagmi": "^1.8.6",
23
+ "@tanstack/react-query": "^5.89.0",
24
+ "decimal.js": "^10.6.0",
25
+ "react": "^19.1.0",
26
+ "react-dom": "^19.1.0",
27
+ "viem": "^2.37.6",
28
+ "wagmi": "^2.17.0",
29
+ "@cromix-dev/evm": "0.0.2"
30
+ },
31
+ "devDependencies": {
32
+ "@eslint/eslintrc": "^3",
33
+ "@tailwindcss/postcss": "^4",
34
+ "@types/node": "^20",
35
+ "@types/react": "^19",
36
+ "@types/react-dom": "^19",
37
+ "eslint": "^9",
38
+ "eslint-config-next": "^15.5.3",
39
+ "tailwindcss": "^4",
40
+ "tsx": "^4.20.5",
41
+ "prettier": "^3.6.2",
42
+ "rimraf": "^6.0.1",
43
+ "typescript": "^5.9.2"
44
+ },
45
+ "publishConfig": {
46
+ "access": "public"
47
+ },
48
+ "scripts": {
49
+ "format": "prettier --write '**/*.{js,ts,jsx,tsx,json}'",
50
+ "build": "rimraf dist && tsc",
51
+ "prepublish": "pnpm build"
52
+ }
53
+ }