@b3dotfun/sdk 0.0.3 → 0.0.4-alpha.0
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.
- package/dist/cjs/anyspend/index.js +1 -0
- package/dist/cjs/anyspend/react/components/index.d.ts +6 -5
- package/dist/cjs/anyspend/react/components/index.js +13 -11
- package/dist/cjs/anyspend/react/components/webview/WebviewOnrampPayment.d.ts +11 -0
- package/dist/cjs/anyspend/react/components/webview/WebviewOnrampPayment.js +93 -0
- package/dist/cjs/global-account/react/hooks/useTokenFromUrl.d.ts +1 -1
- package/dist/cjs/global-account/react/hooks/useTokenFromUrl.js +51 -13
- package/dist/cjs/shared/constants/chains/supported.d.ts +14 -4
- package/dist/cjs/shared/constants/chains/supported.js +11 -8
- package/dist/cjs/shared/generated/coingecko-chains.json +1072 -0
- package/dist/esm/anyspend/index.js +1 -0
- package/dist/esm/anyspend/react/components/index.d.ts +6 -5
- package/dist/esm/anyspend/react/components/index.js +6 -5
- package/dist/esm/anyspend/react/components/webview/WebviewOnrampPayment.d.ts +11 -0
- package/dist/esm/anyspend/react/components/webview/WebviewOnrampPayment.js +87 -0
- package/dist/esm/global-account/react/hooks/useTokenFromUrl.d.ts +1 -1
- package/dist/esm/global-account/react/hooks/useTokenFromUrl.js +51 -13
- package/dist/esm/shared/constants/chains/supported.d.ts +14 -4
- package/dist/esm/shared/constants/chains/supported.js +9 -7
- package/dist/esm/shared/generated/coingecko-chains.json +1072 -0
- package/dist/types/anyspend/react/components/index.d.ts +6 -5
- package/dist/types/anyspend/react/components/webview/WebviewOnrampPayment.d.ts +11 -0
- package/dist/types/global-account/react/hooks/useTokenFromUrl.d.ts +1 -1
- package/dist/types/shared/constants/chains/supported.d.ts +14 -4
- package/package.json +3 -3
- package/src/anyspend/index.ts +2 -0
- package/src/anyspend/react/components/index.ts +6 -5
- package/src/anyspend/react/components/webview/WebviewOnrampPayment.tsx +207 -0
- package/src/global-account/react/hooks/useTokenFromUrl.tsx +72 -14
- package/src/shared/constants/chains/supported.ts +23 -12
- package/src/shared/generated/coingecko-chains.json +1072 -0
- /package/dist/cjs/{generated → shared/generated}/chain-networks.json +0 -0
- /package/dist/esm/{generated → shared/generated}/chain-networks.json +0 -0
- /package/src/{generated → shared/generated}/chain-networks.json +0 -0
|
@@ -1,14 +1,15 @@
|
|
|
1
1
|
export { AnySpend } from "./AnySpend";
|
|
2
|
+
export { AnySpendBuySpin } from "./AnySpendBuySpin";
|
|
2
3
|
export { AnySpendCustom } from "./AnySpendCustom";
|
|
3
4
|
export { AnySpendNFT } from "./AnySpendNFT";
|
|
4
5
|
export { AnySpendNFTButton } from "./AnySpendNFTButton";
|
|
5
|
-
export { AnySpendTournament } from "./AnySpendTournament";
|
|
6
6
|
export { AnySpendStakeB3 } from "./AnySpendStakeB3";
|
|
7
|
-
export {
|
|
8
|
-
export { OrderHistoryItem } from "./common/OrderHistoryItem";
|
|
9
|
-
export { OrderHistory } from "./common/OrderHistory";
|
|
7
|
+
export { AnySpendTournament } from "./AnySpendTournament";
|
|
10
8
|
export { OrderDetails } from "./common/OrderDetails";
|
|
9
|
+
export { OrderHistory } from "./common/OrderHistory";
|
|
10
|
+
export { OrderHistoryItem } from "./common/OrderHistoryItem";
|
|
11
|
+
export { OrderStatus } from "./common/OrderStatus";
|
|
11
12
|
export { OrderToken } from "./common/OrderToken";
|
|
12
13
|
export { OrderTokenAmount } from "./common/OrderTokenAmount";
|
|
13
|
-
export { OrderStatus } from "./common/OrderStatus";
|
|
14
14
|
export { TokenBalance } from "./common/TokenBalance";
|
|
15
|
+
export { WebviewOnrampPayment } from "./webview/WebviewOnrampPayment";
|
|
@@ -1,33 +1,35 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.WebviewOnrampPayment = exports.TokenBalance = exports.OrderTokenAmount = exports.OrderToken = exports.OrderStatus = exports.OrderHistoryItem = exports.OrderHistory = exports.OrderDetails = exports.AnySpendTournament = exports.AnySpendStakeB3 = exports.AnySpendNFTButton = exports.AnySpendNFT = exports.AnySpendCustom = exports.AnySpendBuySpin = exports.AnySpend = void 0;
|
|
4
4
|
// Components
|
|
5
5
|
var AnySpend_1 = require("./AnySpend");
|
|
6
6
|
Object.defineProperty(exports, "AnySpend", { enumerable: true, get: function () { return AnySpend_1.AnySpend; } });
|
|
7
|
+
var AnySpendBuySpin_1 = require("./AnySpendBuySpin");
|
|
8
|
+
Object.defineProperty(exports, "AnySpendBuySpin", { enumerable: true, get: function () { return AnySpendBuySpin_1.AnySpendBuySpin; } });
|
|
7
9
|
var AnySpendCustom_1 = require("./AnySpendCustom");
|
|
8
10
|
Object.defineProperty(exports, "AnySpendCustom", { enumerable: true, get: function () { return AnySpendCustom_1.AnySpendCustom; } });
|
|
9
11
|
var AnySpendNFT_1 = require("./AnySpendNFT");
|
|
10
12
|
Object.defineProperty(exports, "AnySpendNFT", { enumerable: true, get: function () { return AnySpendNFT_1.AnySpendNFT; } });
|
|
11
13
|
var AnySpendNFTButton_1 = require("./AnySpendNFTButton");
|
|
12
14
|
Object.defineProperty(exports, "AnySpendNFTButton", { enumerable: true, get: function () { return AnySpendNFTButton_1.AnySpendNFTButton; } });
|
|
13
|
-
var AnySpendTournament_1 = require("./AnySpendTournament");
|
|
14
|
-
Object.defineProperty(exports, "AnySpendTournament", { enumerable: true, get: function () { return AnySpendTournament_1.AnySpendTournament; } });
|
|
15
15
|
var AnySpendStakeB3_1 = require("./AnySpendStakeB3");
|
|
16
16
|
Object.defineProperty(exports, "AnySpendStakeB3", { enumerable: true, get: function () { return AnySpendStakeB3_1.AnySpendStakeB3; } });
|
|
17
|
-
var
|
|
18
|
-
Object.defineProperty(exports, "
|
|
17
|
+
var AnySpendTournament_1 = require("./AnySpendTournament");
|
|
18
|
+
Object.defineProperty(exports, "AnySpendTournament", { enumerable: true, get: function () { return AnySpendTournament_1.AnySpendTournament; } });
|
|
19
19
|
// Common Components
|
|
20
|
-
var OrderHistoryItem_1 = require("./common/OrderHistoryItem");
|
|
21
|
-
Object.defineProperty(exports, "OrderHistoryItem", { enumerable: true, get: function () { return OrderHistoryItem_1.OrderHistoryItem; } });
|
|
22
|
-
var OrderHistory_1 = require("./common/OrderHistory");
|
|
23
|
-
Object.defineProperty(exports, "OrderHistory", { enumerable: true, get: function () { return OrderHistory_1.OrderHistory; } });
|
|
24
20
|
var OrderDetails_1 = require("./common/OrderDetails");
|
|
25
21
|
Object.defineProperty(exports, "OrderDetails", { enumerable: true, get: function () { return OrderDetails_1.OrderDetails; } });
|
|
22
|
+
var OrderHistory_1 = require("./common/OrderHistory");
|
|
23
|
+
Object.defineProperty(exports, "OrderHistory", { enumerable: true, get: function () { return OrderHistory_1.OrderHistory; } });
|
|
24
|
+
var OrderHistoryItem_1 = require("./common/OrderHistoryItem");
|
|
25
|
+
Object.defineProperty(exports, "OrderHistoryItem", { enumerable: true, get: function () { return OrderHistoryItem_1.OrderHistoryItem; } });
|
|
26
|
+
var OrderStatus_1 = require("./common/OrderStatus");
|
|
27
|
+
Object.defineProperty(exports, "OrderStatus", { enumerable: true, get: function () { return OrderStatus_1.OrderStatus; } });
|
|
26
28
|
var OrderToken_1 = require("./common/OrderToken");
|
|
27
29
|
Object.defineProperty(exports, "OrderToken", { enumerable: true, get: function () { return OrderToken_1.OrderToken; } });
|
|
28
30
|
var OrderTokenAmount_1 = require("./common/OrderTokenAmount");
|
|
29
31
|
Object.defineProperty(exports, "OrderTokenAmount", { enumerable: true, get: function () { return OrderTokenAmount_1.OrderTokenAmount; } });
|
|
30
|
-
var OrderStatus_1 = require("./common/OrderStatus");
|
|
31
|
-
Object.defineProperty(exports, "OrderStatus", { enumerable: true, get: function () { return OrderStatus_1.OrderStatus; } });
|
|
32
32
|
var TokenBalance_1 = require("./common/TokenBalance");
|
|
33
33
|
Object.defineProperty(exports, "TokenBalance", { enumerable: true, get: function () { return TokenBalance_1.TokenBalance; } });
|
|
34
|
+
var WebviewOnrampPayment_1 = require("./webview/WebviewOnrampPayment");
|
|
35
|
+
Object.defineProperty(exports, "WebviewOnrampPayment", { enumerable: true, get: function () { return WebviewOnrampPayment_1.WebviewOnrampPayment; } });
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { GetQuoteResponse, Token } from "../../../../anyspend";
|
|
2
|
+
interface WebviewOnrampPaymentProps {
|
|
3
|
+
srcAmountOnRamp: string;
|
|
4
|
+
recipientAddress?: string;
|
|
5
|
+
destinationToken: Token;
|
|
6
|
+
anyspendQuote: GetQuoteResponse | undefined;
|
|
7
|
+
onOrderCreated: (orderId: string) => void;
|
|
8
|
+
userId?: string;
|
|
9
|
+
}
|
|
10
|
+
export declare function WebviewOnrampPayment({ srcAmountOnRamp, recipientAddress, destinationToken, anyspendQuote, onOrderCreated, userId }: WebviewOnrampPaymentProps): import("react/jsx-runtime").JSX.Element;
|
|
11
|
+
export {};
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.WebviewOnrampPayment = WebviewOnrampPayment;
|
|
7
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
8
|
+
const anyspend_1 = require("../../../../anyspend");
|
|
9
|
+
const react_1 = require("../../../../global-account/react");
|
|
10
|
+
const centerTruncate_1 = __importDefault(require("../../../../shared/utils/centerTruncate"));
|
|
11
|
+
const framer_motion_1 = require("framer-motion");
|
|
12
|
+
const lucide_react_1 = require("lucide-react");
|
|
13
|
+
const react_2 = require("react");
|
|
14
|
+
const sonner_1 = require("sonner");
|
|
15
|
+
const viem_1 = require("viem");
|
|
16
|
+
function WebviewOnrampPayment({ srcAmountOnRamp, recipientAddress, destinationToken, anyspendQuote, onOrderCreated, userId }) {
|
|
17
|
+
// Use a stable amount for geo onramp options to prevent unnecessary refetches
|
|
18
|
+
const [stableAmountForGeo, setStableAmountForGeo] = (0, react_2.useState)(srcAmountOnRamp);
|
|
19
|
+
const hasInitialized = (0, react_2.useRef)(false);
|
|
20
|
+
// Only update the stable amount on first render or when explicitly needed
|
|
21
|
+
(0, react_2.useEffect)(() => {
|
|
22
|
+
if (!hasInitialized.current && srcAmountOnRamp) {
|
|
23
|
+
setStableAmountForGeo(srcAmountOnRamp);
|
|
24
|
+
hasInitialized.current = true;
|
|
25
|
+
}
|
|
26
|
+
}, [srcAmountOnRamp]);
|
|
27
|
+
const { geoData, isStripeWeb2Supported, isLoading: isLoadingGeoOnramp } = (0, anyspend_1.useGeoOnrampOptions)(true, stableAmountForGeo);
|
|
28
|
+
console.log("isStripeWeb2Supported", isStripeWeb2Supported);
|
|
29
|
+
const { createOrder, isCreatingOrder } = (0, anyspend_1.useAnyspendCreateOnrampOrder)({
|
|
30
|
+
onSuccess: data => {
|
|
31
|
+
const orderId = data.data.id;
|
|
32
|
+
window.location.href = `${window.location.origin}/?orderId=${orderId}`;
|
|
33
|
+
},
|
|
34
|
+
onError: error => {
|
|
35
|
+
console.error(error);
|
|
36
|
+
sonner_1.toast.error("Failed to create order: " + error.message);
|
|
37
|
+
}
|
|
38
|
+
});
|
|
39
|
+
const handleContinueToPayment = async () => {
|
|
40
|
+
try {
|
|
41
|
+
if (!recipientAddress) {
|
|
42
|
+
sonner_1.toast.error("Please select a recipient");
|
|
43
|
+
return;
|
|
44
|
+
}
|
|
45
|
+
if (!srcAmountOnRamp || parseFloat(srcAmountOnRamp) <= 0) {
|
|
46
|
+
sonner_1.toast.error("Please enter a valid amount");
|
|
47
|
+
return;
|
|
48
|
+
}
|
|
49
|
+
if (!isStripeWeb2Supported) {
|
|
50
|
+
sonner_1.toast.error("Stripe credit card not available");
|
|
51
|
+
return;
|
|
52
|
+
}
|
|
53
|
+
if (!anyspendQuote) {
|
|
54
|
+
sonner_1.toast.error("Failed to get quote");
|
|
55
|
+
return;
|
|
56
|
+
}
|
|
57
|
+
const getDstToken = () => {
|
|
58
|
+
return {
|
|
59
|
+
...destinationToken,
|
|
60
|
+
chainId: destinationToken.chainId,
|
|
61
|
+
address: destinationToken.address
|
|
62
|
+
};
|
|
63
|
+
};
|
|
64
|
+
createOrder({
|
|
65
|
+
isMainnet: true,
|
|
66
|
+
recipientAddress,
|
|
67
|
+
orderType: anyspend_1.OrderType.Swap,
|
|
68
|
+
dstChain: getDstToken().chainId,
|
|
69
|
+
dstToken: getDstToken(),
|
|
70
|
+
srcFiatAmount: srcAmountOnRamp,
|
|
71
|
+
onramp: {
|
|
72
|
+
vendor: anyspend_1.OnrampVendor.StripeWeb2,
|
|
73
|
+
paymentMethod: "",
|
|
74
|
+
country: geoData?.country || "US",
|
|
75
|
+
ipAddress: geoData?.ip,
|
|
76
|
+
redirectUrl: `${window.location.origin}${userId ? `?userId=${userId}` : ""}`
|
|
77
|
+
},
|
|
78
|
+
expectedDstAmount: anyspendQuote?.data?.currencyOut?.amount?.toString() || "0"
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
catch (err) {
|
|
82
|
+
console.error(err);
|
|
83
|
+
sonner_1.toast.error("Failed to create order: " + err.message);
|
|
84
|
+
}
|
|
85
|
+
};
|
|
86
|
+
return ((0, jsx_runtime_1.jsxs)("div", { className: "mx-auto flex w-full max-w-[460px] flex-col gap-6", children: [(0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)("h2", { className: "-mb-3 text-lg font-semibold", children: "Order summary" }), (0, jsx_runtime_1.jsxs)("div", { className: "bg-b3-react-background border-b3-react-border flex flex-col gap-3 rounded-lg border p-4", children: [(0, jsx_runtime_1.jsxs)("div", { className: "flex items-center justify-between", children: [(0, jsx_runtime_1.jsx)("p", { className: "text-b3-react-foreground/60", children: "Receiving" }), (0, jsx_runtime_1.jsxs)("div", { className: "flex items-center gap-2", children: [destinationToken.metadata?.logoURI && ((0, jsx_runtime_1.jsx)("img", { src: destinationToken.metadata.logoURI, alt: destinationToken.symbol, className: "h-6 w-6 rounded-full" })), (0, jsx_runtime_1.jsxs)("span", { className: "text-b3-react-foreground/80", children: [anyspendQuote?.data?.currencyOut?.amount
|
|
87
|
+
? Number((0, viem_1.formatUnits)(BigInt(anyspendQuote.data.currencyOut.amount), destinationToken.decimals)).toFixed(4)
|
|
88
|
+
: "0", " ", destinationToken.symbol] })] })] }), (0, jsx_runtime_1.jsxs)("div", { className: "flex items-center justify-between", children: [(0, jsx_runtime_1.jsx)("p", { className: "text-b3-react-foreground/60", children: "Network" }), (0, jsx_runtime_1.jsx)("span", { className: "text-b3-react-foreground/80", children: (0, anyspend_1.getChainName)(destinationToken.chainId) })] }), recipientAddress && ((0, jsx_runtime_1.jsxs)(framer_motion_1.motion.div, { initial: false, animate: {
|
|
89
|
+
opacity: 1,
|
|
90
|
+
y: 0,
|
|
91
|
+
filter: "blur(0px)"
|
|
92
|
+
}, transition: { duration: 0.3, delay: 0.2, ease: "easeInOut" }, className: "flex items-center justify-between", children: [(0, jsx_runtime_1.jsx)("p", { className: "text-b3-react-foreground/60", children: "Recipient" }), (0, jsx_runtime_1.jsx)("div", { className: "flex items-center gap-2", children: (0, jsx_runtime_1.jsx)("span", { className: "text-b3-react-foreground/80", children: (0, centerTruncate_1.default)(recipientAddress) }) })] })), (0, jsx_runtime_1.jsx)("div", { className: "border-b3-react-border border-t pt-3", children: (0, jsx_runtime_1.jsxs)("div", { className: "flex items-center justify-between", children: [(0, jsx_runtime_1.jsx)("p", { className: "text-b3-react-foreground font-semibold", children: "You Pay" }), (0, jsx_runtime_1.jsxs)("p", { className: "text-b3-react-foreground text-xl font-semibold", children: ["$", parseFloat(srcAmountOnRamp).toFixed(2)] })] }) })] })] }), isCreatingOrder ? ((0, jsx_runtime_1.jsxs)("div", { className: "bg-b3-react-background border-b3-react-border flex items-center justify-center gap-3 rounded-lg border p-6", children: [(0, jsx_runtime_1.jsx)(lucide_react_1.Loader2, { className: "h-4 w-4 animate-spin" }), (0, jsx_runtime_1.jsx)("span", { className: "text-as-primary/70", children: "Creating payment session..." })] })) : isLoadingGeoOnramp ? ((0, jsx_runtime_1.jsxs)("div", { className: "bg-b3-react-background border-b3-react-border flex items-center justify-center gap-3 rounded-lg border p-6", children: [(0, jsx_runtime_1.jsx)(lucide_react_1.Loader2, { className: "h-4 w-4 animate-spin" }), (0, jsx_runtime_1.jsx)("span", { className: "text-as-primary/70", children: "Loading payment options..." })] })) : ((0, jsx_runtime_1.jsx)("div", { className: "flex flex-col gap-4", children: (0, jsx_runtime_1.jsx)(react_1.Button, { onClick: handleContinueToPayment, disabled: isCreatingOrder || !isStripeWeb2Supported, className: "bg-as-brand hover:bg-as-brand/90 text-as-primary h-14 w-full rounded-xl text-lg font-medium", children: isCreatingOrder ? "Creating Payment..." : "Continue to Payment" }) }))] }));
|
|
93
|
+
}
|
|
@@ -10,7 +10,7 @@ interface UseTokenFromUrlOptions {
|
|
|
10
10
|
prefix: string;
|
|
11
11
|
}
|
|
12
12
|
/**
|
|
13
|
-
* Hook to parse token data from URL parameters.
|
|
13
|
+
* Hook to parse token data from URL parameters and fetch additional token info.
|
|
14
14
|
* Looks for parameters: [prefix]Currency
|
|
15
15
|
*/
|
|
16
16
|
export declare function useTokenFromUrl({ defaultToken, prefix }: UseTokenFromUrlOptions): Token;
|
|
@@ -2,29 +2,67 @@
|
|
|
2
2
|
"use client";
|
|
3
3
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
4
|
exports.useTokenFromUrl = useTokenFromUrl;
|
|
5
|
+
const supported_1 = require("../../../shared/constants/chains/supported");
|
|
6
|
+
const react_query_1 = require("@tanstack/react-query");
|
|
5
7
|
const navigation_1 = require("next/navigation");
|
|
8
|
+
async function fetchTokenInfo(network, address) {
|
|
9
|
+
const response = await fetch("https://api.b3.fun/tokens", {
|
|
10
|
+
method: "POST",
|
|
11
|
+
headers: {
|
|
12
|
+
"Content-Type": "application/json",
|
|
13
|
+
"X-Service-Method": "getCoinGeckoTokenInfo"
|
|
14
|
+
},
|
|
15
|
+
body: JSON.stringify({
|
|
16
|
+
network,
|
|
17
|
+
address
|
|
18
|
+
})
|
|
19
|
+
});
|
|
20
|
+
if (!response.ok) {
|
|
21
|
+
throw new Error("Failed to fetch token info");
|
|
22
|
+
}
|
|
23
|
+
return response.json();
|
|
24
|
+
}
|
|
6
25
|
/**
|
|
7
|
-
* Hook to parse token data from URL parameters.
|
|
26
|
+
* Hook to parse token data from URL parameters and fetch additional token info.
|
|
8
27
|
* Looks for parameters: [prefix]Currency
|
|
9
28
|
*/
|
|
10
29
|
function useTokenFromUrl({ defaultToken, prefix }) {
|
|
11
30
|
const searchParams = (0, navigation_1.useSearchParams)();
|
|
12
|
-
if (!searchParams) {
|
|
13
|
-
return defaultToken;
|
|
14
|
-
}
|
|
15
31
|
// Get parameters from URL
|
|
16
|
-
const currencyParam = searchParams
|
|
17
|
-
const chainIdParam = searchParams
|
|
18
|
-
if
|
|
32
|
+
const currencyParam = searchParams?.get(`${prefix}Currency`);
|
|
33
|
+
const chainIdParam = searchParams?.get(`${prefix}ChainId`);
|
|
34
|
+
// Determine if we should fetch token info
|
|
35
|
+
const shouldFetchToken = Boolean(currencyParam && chainIdParam && currencyParam.toLowerCase() !== defaultToken.address.toLowerCase());
|
|
36
|
+
// Determine network based on chainId
|
|
37
|
+
const network = chainIdParam ? (0, supported_1.getCoingeckoChainInfo)(Number(chainIdParam)).coingecko_id : "";
|
|
38
|
+
const { data: tokenInfo, isError } = (0, react_query_1.useQuery)({
|
|
39
|
+
queryKey: ["tokenInfo", network, currencyParam],
|
|
40
|
+
queryFn: () => fetchTokenInfo(network, currencyParam),
|
|
41
|
+
enabled: shouldFetchToken,
|
|
42
|
+
staleTime: Infinity,
|
|
43
|
+
gcTime: Infinity
|
|
44
|
+
});
|
|
45
|
+
// Return default token if no params or same as default
|
|
46
|
+
if (!shouldFetchToken) {
|
|
19
47
|
return defaultToken;
|
|
20
48
|
}
|
|
21
|
-
//
|
|
22
|
-
if (
|
|
23
|
-
return
|
|
49
|
+
// Return basic token info if API call fails or while loading
|
|
50
|
+
if (isError || !tokenInfo) {
|
|
51
|
+
return {
|
|
52
|
+
...defaultToken,
|
|
53
|
+
address: currencyParam,
|
|
54
|
+
chainId: Number(chainIdParam)
|
|
55
|
+
};
|
|
24
56
|
}
|
|
57
|
+
// Return enhanced token with API data
|
|
25
58
|
return {
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
59
|
+
address: tokenInfo.data.attributes.address,
|
|
60
|
+
chainId: Number(chainIdParam),
|
|
61
|
+
name: tokenInfo.data.attributes.name,
|
|
62
|
+
symbol: tokenInfo.data.attributes.symbol,
|
|
63
|
+
decimals: tokenInfo.data.attributes.decimals,
|
|
64
|
+
metadata: {
|
|
65
|
+
logoURI: tokenInfo.data.attributes.image_url
|
|
66
|
+
}
|
|
29
67
|
};
|
|
30
68
|
}
|
|
@@ -43,12 +43,22 @@ export declare const supportedChainNetworks: {
|
|
|
43
43
|
};
|
|
44
44
|
_id: string | {};
|
|
45
45
|
}[];
|
|
46
|
-
export declare const
|
|
47
|
-
|
|
46
|
+
export declare const coingeckoChains: Record<number, {
|
|
47
|
+
coingecko_id: string;
|
|
48
|
+
name: string;
|
|
49
|
+
native_coin_id: string;
|
|
50
|
+
}>;
|
|
51
|
+
export declare function getCoingeckoChainInfo(chainId: number): {
|
|
52
|
+
coingecko_id: string;
|
|
53
|
+
name: string;
|
|
54
|
+
native_coin_id: string;
|
|
55
|
+
};
|
|
56
|
+
export declare const b3Mainnet: import("viem").Chain | undefined;
|
|
57
|
+
export declare const b3Testnet: import("viem").Chain | undefined;
|
|
48
58
|
export declare const baseMainnet: import("viem").Chain | undefined;
|
|
49
59
|
export declare const b3MainnetThirdWeb: Readonly<import("thirdweb/dist/types/chains/types").ChainOptions & {
|
|
50
60
|
rpc: string;
|
|
51
|
-
}
|
|
61
|
+
}> | undefined;
|
|
52
62
|
export declare const b3TestnetThirdWeb: Readonly<import("thirdweb/dist/types/chains/types").ChainOptions & {
|
|
53
63
|
rpc: string;
|
|
54
|
-
}
|
|
64
|
+
}> | undefined;
|
|
@@ -3,12 +3,14 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.b3TestnetThirdWeb = exports.b3MainnetThirdWeb = exports.baseMainnet = exports.b3Testnet = exports.b3Mainnet = exports.supportedChainNetworks = exports.supportedChainsTW = exports.supportedChains = void 0;
|
|
6
|
+
exports.b3TestnetThirdWeb = exports.b3MainnetThirdWeb = exports.baseMainnet = exports.b3Testnet = exports.b3Mainnet = exports.coingeckoChains = exports.supportedChainNetworks = exports.supportedChainsTW = exports.supportedChains = void 0;
|
|
7
|
+
exports.getCoingeckoChainInfo = getCoingeckoChainInfo;
|
|
7
8
|
const chain_transformers_1 = require("../../../shared/utils/chain-transformers");
|
|
8
9
|
// Import the JSON directly
|
|
9
10
|
// @ts-ignore
|
|
10
|
-
const chain_networks_json_1 = __importDefault(require("
|
|
11
|
-
|
|
11
|
+
const chain_networks_json_1 = __importDefault(require("../../generated/chain-networks.json"));
|
|
12
|
+
// @ts-ignore
|
|
13
|
+
const coingecko_chains_json_1 = __importDefault(require("../../generated/coingecko-chains.json"));
|
|
12
14
|
const chainNetworks = chain_networks_json_1.default;
|
|
13
15
|
// Convert custom chains to Viem format
|
|
14
16
|
const viemChains = chainNetworks.map(chain_transformers_1.toViemChain);
|
|
@@ -26,13 +28,14 @@ exports.supportedChainsTW = [
|
|
|
26
28
|
];
|
|
27
29
|
// Original format from chain-networks.json
|
|
28
30
|
exports.supportedChainNetworks = chainNetworks;
|
|
31
|
+
// CoinGecko chain mapping
|
|
32
|
+
exports.coingeckoChains = coingecko_chains_json_1.default;
|
|
33
|
+
// Helper function to get CoinGecko chain info
|
|
34
|
+
function getCoingeckoChainInfo(chainId) {
|
|
35
|
+
return exports.coingeckoChains[chainId];
|
|
36
|
+
}
|
|
29
37
|
exports.b3Mainnet = exports.supportedChains.find(chain => chain.id === 8333);
|
|
30
|
-
(0, invariant_1.default)(exports.b3Mainnet, "B3 mainnet chain not found in supported chains");
|
|
31
38
|
exports.b3Testnet = exports.supportedChains.find(chain => chain.id === 1993);
|
|
32
|
-
(0, invariant_1.default)(exports.b3Testnet, "B3 testnet chain not found in supported chains");
|
|
33
39
|
exports.baseMainnet = exports.supportedChains.find(chain => chain.id === 8453);
|
|
34
|
-
(0, invariant_1.default)(exports.baseMainnet, "Base mainnet chain not found in supported chains");
|
|
35
40
|
exports.b3MainnetThirdWeb = exports.supportedChainsTW.find(chain => chain.id === 8333);
|
|
36
|
-
(0, invariant_1.default)(exports.b3MainnetThirdWeb, "B3 mainnet chain not found in supported chains TW");
|
|
37
41
|
exports.b3TestnetThirdWeb = exports.supportedChainsTW.find(chain => chain.id === 1993);
|
|
38
|
-
(0, invariant_1.default)(exports.b3TestnetThirdWeb, "B3 testnet chain not found in supported chains TW");
|