UNPKG

@0xsplits/splits-sdk-react

Version:

React wrapper for the 0xSplits SDK

997 lines 48.6 kB
"use strict"; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; var __generator = (this && this.__generator) || function (thisArg, body) { var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype); return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; function verb(n) { return function (v) { return step([n, v]); }; } function step(op) { if (f) throw new TypeError("Generator is already executing."); while (g && (g = 0, op[0] && (_ = 0)), _) try { if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; if (y = 0, t) op = [op[0] & 2, t.value]; switch (op[0]) { case 0: case 1: t = op; break; case 4: _.label++; return { value: op[1], done: false }; case 5: _.label++; y = op[1]; op = [0]; continue; case 7: op = _.ops.pop(); _.trys.pop(); continue; default: if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } if (t[2]) _.ops.pop(); _.trys.pop(); continue; } op = body.call(thisArg, _); } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; } }; Object.defineProperty(exports, "__esModule", { value: true }); exports.useWaterfallMetadata = exports.useVestingMetadata = exports.useUserEarningsByContract = exports.useUserEarnings = exports.useSwapperMetadata = exports.useLiquidSplitMetadata = exports.useContractEarnings = exports.useSplitEarnings = exports.useSplitMetadata = exports.useSplitMetadataViaProvider = void 0; var react_1 = require("react"); var viem_1 = require("viem"); var chains_1 = require("viem/chains"); var splits_sdk_1 = require("@0xsplits/splits-sdk"); var constants_1 = require("@0xsplits/splits-sdk/constants"); var utils_1 = require("@0xsplits/splits-sdk/utils"); var types_1 = require("@0xsplits/splits-sdk/types"); var utils_2 = require("../utils"); var context_1 = require("../context"); var errors_1 = require("./errors"); var useSplitMetadataViaProvider = function (chainId, splitAddress, options) { var _a, _b, _c, _d, _e, _f, _g, _h; var context = (0, react_1.useContext)(context_1.SplitsContext); var splitsV1Client = (0, utils_2.getSplitsClient)(context).splitV1; var splitsV2Client = (0, utils_2.getSplitsClient)(context).splitV2; var _j = (0, react_1.useState)(), splitMetadata = _j[0], setSplitMetadata = _j[1]; var _k = (0, react_1.useState)(!!splitAddress), isLoading = _k[0], setIsLoading = _k[1]; var _l = (0, react_1.useState)(splitAddress ? 'loading' : undefined), status = _l[0], setStatus = _l[1]; var _m = (0, react_1.useState)(), error = _m[0], setError = _m[1]; var _o = (0, react_1.useState)(), currentBlockRange = _o[0], setCurrentBlockRange = _o[1]; var _p = (0, react_1.useState)(), cacheData = _p[0], setCacheData = _p[1]; var cachedBlockRange = (_a = options === null || options === void 0 ? void 0 : options.cacheData) === null || _a === void 0 ? void 0 : _a.blockRange; var cachedCreateBlock = (_c = (_b = options === null || options === void 0 ? void 0 : options.cacheData) === null || _b === void 0 ? void 0 : _b.blocks) === null || _c === void 0 ? void 0 : _c.createBlock; var cachedUpdateBlock = (_e = (_d = options === null || options === void 0 ? void 0 : options.cacheData) === null || _d === void 0 ? void 0 : _d.blocks) === null || _e === void 0 ? void 0 : _e.updateBlock; var cachedLatestScannedBlock = (_g = (_f = options === null || options === void 0 ? void 0 : options.cacheData) === null || _f === void 0 ? void 0 : _f.blocks) === null || _g === void 0 ? void 0 : _g.latestScannedBlock; var cachedController = (_h = options === null || options === void 0 ? void 0 : options.cacheData) === null || _h === void 0 ? void 0 : _h.controller; (0, react_1.useEffect)(function () { var isActive = true; var fetchMetadata = function () { return __awaiter(void 0, void 0, void 0, function () { var split, createLog, updateLog, formattedSplitAddress, publicClient, _a, splitV1Exists, splitV2Exists, addresses, splitCreatedEvent, splitUpdatedEvent, version, _b, blockRange, _c, lastBlockNumber, shouldSearch, currentBlockNumber, splitV2StartBlock, splitV1StartBlock, rangeStart, startBlock, _d, searchBlockRange, searchCreateLog, searchUpdateLog, _e, cachedCreateLog, cachedUpdateLog, e_1; var _f, _g; return __generator(this, function (_h) { switch (_h.label) { case 0: _h.trys.push([0, 19, 20, 21]); split = void 0; createLog = void 0, updateLog = void 0; formattedSplitAddress = (0, viem_1.getAddress)(splitAddress); publicClient = splitsV2Client._getPublicClient(chainId); return [4 /*yield*/, Promise.all([ splitsV1Client._doesSplitExist({ splitAddress: formattedSplitAddress, chainId: chainId, }), splitsV2Client._doesSplitExist({ splitAddress: formattedSplitAddress, chainId: chainId, }), ])]; case 1: _a = _h.sent(), splitV1Exists = _a[0], splitV2Exists = _a[1]; if (splitV1Exists && splitV2Exists) throw new Error('Found v1 and v2 split'); if (!splitV1Exists && !splitV2Exists) throw new splits_sdk_1.AccountNotFoundError('split', formattedSplitAddress, chainId); if (splitV1Exists && chainId === chains_1.mainnet.id) { throw new errors_1.V1MainnetNotSupportedError(); } addresses = splitV1Exists ? [(0, constants_1.getSplitMainAddress)(chainId)] : [ formattedSplitAddress, (0, constants_1.getSplitV2FactoryAddress)(chainId, types_1.SplitV2Type.Pull), (0, constants_1.getSplitV2FactoryAddress)(chainId, types_1.SplitV2Type.Push), ]; splitCreatedEvent = splitV1Exists ? constants_1.splitV1CreatedEvent : constants_1.splitV2CreatedEvent; splitUpdatedEvent = splitV1Exists ? constants_1.splitV1UpdatedEvent : constants_1.splitV2UpdatedEvent; if (!splitV2Exists) return [3 /*break*/, 3]; return [4 /*yield*/, splitsV2Client.getSplitVersion({ splitAddress: formattedSplitAddress, chainId: chainId, })]; case 2: _b = _h.sent(); return [3 /*break*/, 4]; case 3: _b = undefined; _h.label = 4; case 4: version = _b; if (!(cachedBlockRange !== null && cachedBlockRange !== void 0)) return [3 /*break*/, 5]; _c = cachedBlockRange; return [3 /*break*/, 7]; case 5: return [4 /*yield*/, (0, utils_1.getLargestValidBlockRange)({ publicClient: publicClient })]; case 6: _c = (_h.sent()); _h.label = 7; case 7: blockRange = _c; return [4 /*yield*/, publicClient.getBlockNumber()]; case 8: lastBlockNumber = _h.sent(); shouldSearch = !cachedCreateBlock || (cachedController && cachedController !== viem_1.zeroAddress); if (!shouldSearch) return [3 /*break*/, 11]; currentBlockNumber = lastBlockNumber; splitV2StartBlock = cachedLatestScannedBlock !== null && cachedLatestScannedBlock !== void 0 ? cachedLatestScannedBlock : (0, constants_1.getSplitV2FactoriesStartBlock)(chainId); splitV1StartBlock = cachedLatestScannedBlock !== null && cachedLatestScannedBlock !== void 0 ? cachedLatestScannedBlock : (0, constants_1.getSplitV1StartBlock)(chainId); _h.label = 9; case 9: if (!(currentBlockNumber > splitV1StartBlock && currentBlockNumber > splitV2StartBlock)) return [3 /*break*/, 11]; rangeStart = currentBlockNumber - blockRange * BigInt(utils_1.LOGS_SEARCH_BATCH_SIZE); startBlock = rangeStart >= BigInt(0) ? rangeStart : BigInt(0); setCurrentBlockRange({ from: startBlock, to: currentBlockNumber }); return [4 /*yield*/, (0, utils_1.searchLogs)({ formattedSplitAddress: formattedSplitAddress, publicClient: publicClient, addresses: addresses, splitCreatedEvent: splitCreatedEvent, splitUpdatedEvent: splitUpdatedEvent, endBlock: currentBlockNumber, startBlock: startBlock, defaultBlockRange: blockRange, splitV2Version: version, })]; case 10: _d = _h.sent(), searchBlockRange = _d.blockRange, searchCreateLog = _d.createLog, searchUpdateLog = _d.updateLog; blockRange = searchBlockRange; createLog = searchCreateLog; updateLog = searchUpdateLog; if (createLog) return [3 /*break*/, 11]; if (updateLog && cachedCreateBlock) return [3 /*break*/, 11]; if ((updateLog && version === 'splitV2o1') || (updateLog && version === 'splitV2o2')) return [3 /*break*/, 11]; currentBlockNumber = startBlock - BigInt(1); return [3 /*break*/, 9]; case 11: if (!!createLog) return [3 /*break*/, 14]; if (!cachedCreateBlock) return [3 /*break*/, 13]; return [4 /*yield*/, (0, utils_1.getSplitCreateAndUpdateLogs)({ splitAddress: formattedSplitAddress, publicClient: publicClient, currentEndBlockNumber: cachedLatestScannedBlock, startBlockNumber: cachedLatestScannedBlock, defaultBlockRange: blockRange, cachedBlocks: { createBlock: cachedCreateBlock, updateBlock: cachedUpdateBlock, latestScannedBlock: cachedLatestScannedBlock, }, splitCreatedEvent: splitCreatedEvent, splitUpdatedEvent: splitUpdatedEvent, addresses: addresses, })]; case 12: _e = _h.sent(), cachedCreateLog = _e.createLog, cachedUpdateLog = _e.updateLog; createLog = cachedCreateLog; // Only use cached update log if we did not find a more recent one updateLog = updateLog ? updateLog : cachedUpdateLog; _h.label = 13; case 13: if (!createLog && (splitV1Exists || version === 'splitV2')) throw new splits_sdk_1.AccountNotFoundError('split', formattedSplitAddress, chainId); _h.label = 14; case 14: if (!splitV1Exists) return [3 /*break*/, 16]; return [4 /*yield*/, splitsV1Client._getSplitFromLogs({ splitAddress: formattedSplitAddress, chainId: chainId, createLog: createLog, updateLog: updateLog, })]; case 15: split = _h.sent(); return [3 /*break*/, 18]; case 16: return [4 /*yield*/, splitsV2Client._getSplitFromLogs({ splitAddress: formattedSplitAddress, chainId: chainId, createLog: createLog, updateLog: updateLog, })]; case 17: split = _h.sent(); _h.label = 18; case 18: if (!isActive) return [2 /*return*/]; setSplitMetadata(split); setCacheData({ blockRange: blockRange, controller: (_g = (_f = split.controller) === null || _f === void 0 ? void 0 : _f.address) !== null && _g !== void 0 ? _g : viem_1.zeroAddress, blocks: { createBlock: createLog === null || createLog === void 0 ? void 0 : createLog.blockNumber, updateBlock: updateLog === null || updateLog === void 0 ? void 0 : updateLog.blockNumber, latestScannedBlock: lastBlockNumber, }, }); setStatus('success'); return [3 /*break*/, 21]; case 19: e_1 = _h.sent(); if (isActive) { setStatus('error'); setError(e_1); } return [3 /*break*/, 21]; case 20: if (isActive) setIsLoading(false); return [7 /*endfinally*/]; case 21: return [2 /*return*/]; } }); }); }; setError(undefined); if (splitAddress) { setIsLoading(true); setStatus('loading'); fetchMetadata(); } else { setStatus(undefined); setIsLoading(false); setSplitMetadata(undefined); } return function () { isActive = false; }; }, [splitsV1Client, splitsV2Client, chainId, splitAddress]); return { isLoading: isLoading, data: splitMetadata, currentBlockRange: currentBlockRange, cacheData: cacheData, error: error, status: status, }; }; exports.useSplitMetadataViaProvider = useSplitMetadataViaProvider; var useSplitMetadata = function (chainId, splitAddress, options) { var _a; var context = (0, react_1.useContext)(context_1.SplitsContext); var dataClient = (0, utils_2.getSplitsClient)(context).dataClient; var splitsV1Client = (0, utils_2.getSplitsClient)(context).splitV1; var splitsV2Client = (0, utils_2.getSplitsClient)(context).splitV2; var _b = (0, react_1.useState)(), splitMetadata = _b[0], setSplitMetadata = _b[1]; var _c = (0, react_1.useState)(!!splitAddress), isLoading = _c[0], setIsLoading = _c[1]; var _d = (0, react_1.useState)(splitAddress ? 'loading' : undefined), status = _d[0], setStatus = _d[1]; var _e = (0, react_1.useState)(), error = _e[0], setError = _e[1]; var requireDataClient = (_a = options === null || options === void 0 ? void 0 : options.requireDataClient) !== null && _a !== void 0 ? _a : true; (0, react_1.useEffect)(function () { var isActive = true; var fetchMetadata = function () { return __awaiter(void 0, void 0, void 0, function () { var split, _a, splitV1Result, splitV2Result, e_2; return __generator(this, function (_b) { switch (_b.label) { case 0: if (requireDataClient && !dataClient) throw new Error('Missing api key for data client'); _b.label = 1; case 1: _b.trys.push([1, 6, 7, 8]); split = void 0; if (!dataClient) return [3 /*break*/, 3]; return [4 /*yield*/, dataClient.getSplitMetadata({ chainId: chainId, splitAddress: splitAddress, })]; case 2: split = _b.sent(); return [3 /*break*/, 5]; case 3: return [4 /*yield*/, Promise.allSettled([ splitsV1Client.getSplitMetadataViaProvider({ chainId: chainId, splitAddress: splitAddress, }), splitsV2Client.getSplitMetadataViaProvider({ chainId: chainId, splitAddress: splitAddress, }), ])]; case 4: _a = _b.sent(), splitV1Result = _a[0], splitV2Result = _a[1]; if (splitV1Result.status === 'fulfilled') split = splitV1Result.value.split; else if (splitV2Result.status === 'fulfilled') split = splitV2Result.value.split; else throw new splits_sdk_1.AccountNotFoundError('split', splitAddress, chainId); _b.label = 5; case 5: if (!isActive) return [2 /*return*/]; setSplitMetadata(split); setStatus('success'); return [3 /*break*/, 8]; case 6: e_2 = _b.sent(); if (isActive) { setStatus('error'); setError(e_2); } return [3 /*break*/, 8]; case 7: if (isActive) setIsLoading(false); return [7 /*endfinally*/]; case 8: return [2 /*return*/]; } }); }); }; setError(undefined); if (splitAddress) { setIsLoading(true); setStatus('loading'); fetchMetadata(); } else { setStatus(undefined); setIsLoading(false); setSplitMetadata(undefined); } return function () { isActive = false; }; }, [ requireDataClient, dataClient, splitsV1Client, splitsV2Client, chainId, splitAddress, ]); return { isLoading: isLoading, data: splitMetadata, error: error, status: status, }; }; exports.useSplitMetadata = useSplitMetadata; var useSplitEarnings = function (chainId, splitAddress, options) { var _a, _b; var context = (0, react_1.useContext)(context_1.SplitsContext); var dataClient = (0, utils_2.getSplitsClient)(context).dataClient; var splitsV1Client = (0, utils_2.getSplitsClient)(context).splitV1; var splitsV2Client = (0, utils_2.getSplitsClient)(context).splitV2; var requireDataClient = (_a = options === null || options === void 0 ? void 0 : options.requireDataClient) !== null && _a !== void 0 ? _a : true; var erc20TokenList = options === null || options === void 0 ? void 0 : options.erc20TokenList; var includeActiveBalances = (_b = options === null || options === void 0 ? void 0 : options.includeActiveBalances) !== null && _b !== void 0 ? _b : false; var _c = (0, react_1.useState)(), splitEarnings = _c[0], setSplitEarnings = _c[1]; var _d = (0, react_1.useState)(!!splitAddress), isLoading = _d[0], setIsLoading = _d[1]; var _e = (0, react_1.useState)(splitAddress ? 'loading' : undefined), status = _e[0], setStatus = _e[1]; var _f = (0, react_1.useState)(), error = _f[0], setError = _f[1]; var _g = (0, react_1.useState)(false), manualTrigger = _g[0], setManualTrigger = _g[1]; var refetch = function () { return setManualTrigger(function (prev) { return !prev; }); }; var stringErc20List = erc20TokenList !== undefined ? JSON.stringify(erc20TokenList) : undefined; (0, react_1.useEffect)(function () { var isActive = true; var fetchEarnings = function () { return __awaiter(void 0, void 0, void 0, function () { var earnings, _a, splitV1Result, splitV2Result, e_3; return __generator(this, function (_b) { switch (_b.label) { case 0: if (requireDataClient && !dataClient) throw new Error('Missing api key for data client'); setIsLoading(true); setStatus('loading'); _b.label = 1; case 1: _b.trys.push([1, 6, 7, 8]); earnings = void 0; if (!dataClient) return [3 /*break*/, 3]; return [4 /*yield*/, dataClient.getSplitEarnings({ chainId: chainId, splitAddress: splitAddress, includeActiveBalances: includeActiveBalances, erc20TokenList: stringErc20List !== undefined ? JSON.parse(stringErc20List) : undefined, })]; case 2: earnings = _b.sent(); return [3 /*break*/, 5]; case 3: return [4 /*yield*/, Promise.allSettled([ splitsV1Client.getSplitActiveBalances({ chainId: chainId, splitAddress: splitAddress, erc20TokenList: stringErc20List !== undefined ? JSON.parse(stringErc20List) : undefined, }), splitsV2Client.getSplitActiveBalances({ chainId: chainId, splitAddress: splitAddress, erc20TokenList: stringErc20List !== undefined ? JSON.parse(stringErc20List) : undefined, }), ])]; case 4: _a = _b.sent(), splitV1Result = _a[0], splitV2Result = _a[1]; earnings = { distributed: {}, activeBalances: {}, }; if (splitV1Result.status === 'fulfilled') earnings.activeBalances = splitV1Result.value.activeBalances; else if (splitV2Result.status === 'fulfilled') earnings.activeBalances = splitV2Result.value.activeBalances; else throw new splits_sdk_1.AccountNotFoundError('split', splitAddress, chainId); _b.label = 5; case 5: if (!isActive) return [2 /*return*/]; setSplitEarnings(earnings); setStatus('success'); return [3 /*break*/, 8]; case 6: e_3 = _b.sent(); if (isActive) { setStatus('error'); setError(e_3); } return [3 /*break*/, 8]; case 7: if (isActive) setIsLoading(false); return [7 /*endfinally*/]; case 8: return [2 /*return*/]; } }); }); }; setError(undefined); if (splitAddress) { fetchEarnings(); } else { setStatus(undefined); setIsLoading(false); setSplitEarnings(undefined); } return function () { isActive = false; }; }, [ requireDataClient, dataClient, splitsV1Client, splitsV2Client, chainId, splitAddress, includeActiveBalances, stringErc20List, manualTrigger, ]); return { isLoading: isLoading, data: splitEarnings, refetch: refetch, status: status, error: error, }; }; exports.useSplitEarnings = useSplitEarnings; var useContractEarnings = function (chainId, contractAddress, options) { var _a; var context = (0, react_1.useContext)(context_1.SplitsContext); var splitsClient = (0, utils_2.getSplitsClient)(context).dataClient; var _b = (0, react_1.useState)(), contractEarnings = _b[0], setContractEarnings = _b[1]; var _c = (0, react_1.useState)(!!contractAddress), isLoading = _c[0], setIsLoading = _c[1]; var _d = (0, react_1.useState)(contractAddress ? 'loading' : undefined), status = _d[0], setStatus = _d[1]; var _e = (0, react_1.useState)(), error = _e[0], setError = _e[1]; var erc20TokenList = options === null || options === void 0 ? void 0 : options.erc20TokenList; var includeActiveBalances = (_a = options === null || options === void 0 ? void 0 : options.includeActiveBalances) !== null && _a !== void 0 ? _a : false; var stringErc20List = erc20TokenList !== undefined ? JSON.stringify(erc20TokenList) : undefined; (0, react_1.useEffect)(function () { var isActive = true; var fetchEarnings = function () { return __awaiter(void 0, void 0, void 0, function () { var earnings, e_4; return __generator(this, function (_a) { switch (_a.label) { case 0: if (!splitsClient) throw new Error('Missing api key for data client'); _a.label = 1; case 1: _a.trys.push([1, 3, 4, 5]); return [4 /*yield*/, splitsClient.getContractEarnings({ chainId: chainId, contractAddress: contractAddress, includeActiveBalances: includeActiveBalances, erc20TokenList: stringErc20List !== undefined ? JSON.parse(stringErc20List) : undefined, })]; case 2: earnings = _a.sent(); if (!isActive) return [2 /*return*/]; setContractEarnings(earnings); setStatus('success'); return [3 /*break*/, 5]; case 3: e_4 = _a.sent(); if (isActive) { setStatus('error'); setError(e_4); } return [3 /*break*/, 5]; case 4: if (isActive) setIsLoading(false); return [7 /*endfinally*/]; case 5: return [2 /*return*/]; } }); }); }; setError(undefined); if (contractAddress) { setIsLoading(true); setStatus('loading'); fetchEarnings(); } else { setStatus(undefined); setIsLoading(false); setContractEarnings(undefined); } return function () { isActive = false; }; }, [ splitsClient, chainId, contractAddress, includeActiveBalances, stringErc20List, ]); return { isLoading: isLoading, data: contractEarnings, status: status, error: error, }; }; exports.useContractEarnings = useContractEarnings; var useLiquidSplitMetadata = function (chainId, liquidSplitAddress) { var context = (0, react_1.useContext)(context_1.SplitsContext); var splitsClient = (0, utils_2.getSplitsClient)(context).dataClient; var _a = (0, react_1.useState)(), liquidSplitMetadata = _a[0], setLiquidSplitMetadata = _a[1]; var _b = (0, react_1.useState)(!!liquidSplitAddress), isLoading = _b[0], setIsLoading = _b[1]; var _c = (0, react_1.useState)(liquidSplitAddress ? 'loading' : undefined), status = _c[0], setStatus = _c[1]; var _d = (0, react_1.useState)(), error = _d[0], setError = _d[1]; (0, react_1.useEffect)(function () { var isActive = true; var fetchMetadata = function () { return __awaiter(void 0, void 0, void 0, function () { var liquidSplit, e_5; return __generator(this, function (_a) { switch (_a.label) { case 0: if (!splitsClient) throw new Error('Missing api key for data client'); _a.label = 1; case 1: _a.trys.push([1, 3, 4, 5]); return [4 /*yield*/, splitsClient.getLiquidSplitMetadata({ chainId: chainId, liquidSplitAddress: liquidSplitAddress, })]; case 2: liquidSplit = _a.sent(); if (!isActive) return [2 /*return*/]; setLiquidSplitMetadata(liquidSplit); setStatus('success'); return [3 /*break*/, 5]; case 3: e_5 = _a.sent(); if (isActive) { setStatus('error'); setError(e_5); } return [3 /*break*/, 5]; case 4: if (isActive) setIsLoading(false); return [7 /*endfinally*/]; case 5: return [2 /*return*/]; } }); }); }; setError(undefined); if (liquidSplitAddress) { setStatus('loading'); setIsLoading(true); fetchMetadata(); } else { setStatus(undefined); setIsLoading(false); setLiquidSplitMetadata(undefined); } return function () { isActive = false; }; }, [splitsClient, chainId, liquidSplitAddress]); return { isLoading: isLoading, data: liquidSplitMetadata, status: status, error: error, }; }; exports.useLiquidSplitMetadata = useLiquidSplitMetadata; var useSwapperMetadata = function (chainId, swapperAddress) { var context = (0, react_1.useContext)(context_1.SplitsContext); var splitsClient = (0, utils_2.getSplitsClient)(context).dataClient; var _a = (0, react_1.useState)(), swapperMetadata = _a[0], setSwapperMetadata = _a[1]; var _b = (0, react_1.useState)(!!swapperAddress), isLoading = _b[0], setIsLoading = _b[1]; var _c = (0, react_1.useState)(swapperAddress ? 'loading' : undefined), status = _c[0], setStatus = _c[1]; var _d = (0, react_1.useState)(), error = _d[0], setError = _d[1]; (0, react_1.useEffect)(function () { var isActive = true; var fetchMetadata = function () { return __awaiter(void 0, void 0, void 0, function () { var swapper, e_6; return __generator(this, function (_a) { switch (_a.label) { case 0: if (!splitsClient) throw new Error('Missing api key for data client'); _a.label = 1; case 1: _a.trys.push([1, 3, 4, 5]); return [4 /*yield*/, splitsClient.getSwapperMetadata({ chainId: chainId, swapperAddress: swapperAddress, })]; case 2: swapper = _a.sent(); if (!isActive) return [2 /*return*/]; setSwapperMetadata(swapper); setStatus('success'); return [3 /*break*/, 5]; case 3: e_6 = _a.sent(); if (isActive) { setStatus('error'); setError(e_6); } return [3 /*break*/, 5]; case 4: if (isActive) setIsLoading(false); return [7 /*endfinally*/]; case 5: return [2 /*return*/]; } }); }); }; setError(undefined); if (swapperAddress) { setIsLoading(true); setStatus('loading'); fetchMetadata(); } else { setStatus(undefined); setIsLoading(false); setSwapperMetadata(undefined); } return function () { isActive = false; }; }, [splitsClient, chainId, swapperAddress]); return { isLoading: isLoading, data: swapperMetadata, status: status, error: error, }; }; exports.useSwapperMetadata = useSwapperMetadata; var useUserEarnings = function (chainId, userAddress) { var context = (0, react_1.useContext)(context_1.SplitsContext); var splitsClient = (0, utils_2.getSplitsClient)(context).dataClient; var _a = (0, react_1.useState)(), userEarnings = _a[0], setUserEarnings = _a[1]; var _b = (0, react_1.useState)(!!userAddress), isLoading = _b[0], setIsLoading = _b[1]; var _c = (0, react_1.useState)(userAddress ? 'loading' : undefined), status = _c[0], setStatus = _c[1]; var _d = (0, react_1.useState)(), error = _d[0], setError = _d[1]; (0, react_1.useEffect)(function () { var isActive = true; var fetchEarnings = function () { return __awaiter(void 0, void 0, void 0, function () { var earnings, e_7; return __generator(this, function (_a) { switch (_a.label) { case 0: if (!splitsClient) throw new Error('Missing api key for data client'); _a.label = 1; case 1: _a.trys.push([1, 3, 4, 5]); return [4 /*yield*/, splitsClient.getUserEarnings({ chainId: chainId, userAddress: userAddress, })]; case 2: earnings = _a.sent(); if (!isActive) return [2 /*return*/]; setUserEarnings(earnings); setStatus('success'); return [3 /*break*/, 5]; case 3: e_7 = _a.sent(); if (isActive) { setStatus('error'); setError(e_7); } return [3 /*break*/, 5]; case 4: if (isActive) setIsLoading(false); return [7 /*endfinally*/]; case 5: return [2 /*return*/]; } }); }); }; setError(undefined); if (userAddress) { setIsLoading(true); setStatus('loading'); fetchEarnings(); } else { setStatus(undefined); setIsLoading(false); setUserEarnings(undefined); } return function () { isActive = false; }; }, [splitsClient, chainId, userAddress]); return { isLoading: isLoading, data: userEarnings, status: status, error: error, }; }; exports.useUserEarnings = useUserEarnings; var useUserEarningsByContract = function (chainId, userAddress, options) { var context = (0, react_1.useContext)(context_1.SplitsContext); var splitsClient = (0, utils_2.getSplitsClient)(context).dataClient; var contractAddresses = options === null || options === void 0 ? void 0 : options.contractAddresses; var contractAddressesString = JSON.stringify(contractAddresses); var _a = (0, react_1.useState)(), userEarningsByContract = _a[0], setUserEarningsByContract = _a[1]; var _b = (0, react_1.useState)(!!userAddress), isLoading = _b[0], setIsLoading = _b[1]; var _c = (0, react_1.useState)(userAddress ? 'loading' : undefined), status = _c[0], setStatus = _c[1]; var _d = (0, react_1.useState)(), error = _d[0], setError = _d[1]; (0, react_1.useEffect)(function () { var isActive = true; var fetchEarnings = function () { return __awaiter(void 0, void 0, void 0, function () { var earnings, e_8; return __generator(this, function (_a) { switch (_a.label) { case 0: if (!splitsClient) throw new Error('Missing api key for data client'); _a.label = 1; case 1: _a.trys.push([1, 3, 4, 5]); return [4 /*yield*/, splitsClient.getUserEarningsByContract({ chainId: chainId, userAddress: userAddress, contractAddresses: contractAddresses, })]; case 2: earnings = _a.sent(); if (!isActive) return [2 /*return*/]; setUserEarningsByContract(earnings); setStatus('success'); return [3 /*break*/, 5]; case 3: e_8 = _a.sent(); if (isActive) { setStatus('error'); setError(e_8); } return [3 /*break*/, 5]; case 4: if (isActive) setIsLoading(false); return [7 /*endfinally*/]; case 5: return [2 /*return*/]; } }); }); }; setError(undefined); if (userAddress) { setIsLoading(true); setStatus('loading'); fetchEarnings(); } else { setStatus(undefined); setIsLoading(false); setUserEarningsByContract(undefined); } return function () { isActive = false; }; }, [splitsClient, chainId, userAddress, contractAddressesString]); return { isLoading: isLoading, data: userEarningsByContract, status: status, error: error, }; }; exports.useUserEarningsByContract = useUserEarningsByContract; var useVestingMetadata = function (chainId, vestingModuleAddress) { var context = (0, react_1.useContext)(context_1.SplitsContext); var splitsClient = (0, utils_2.getSplitsClient)(context).dataClient; var _a = (0, react_1.useState)(), vestingMetadata = _a[0], setVestingMetadata = _a[1]; var _b = (0, react_1.useState)(!!vestingModuleAddress), isLoading = _b[0], setIsLoading = _b[1]; var _c = (0, react_1.useState)(vestingModuleAddress ? 'loading' : undefined), status = _c[0], setStatus = _c[1]; var _d = (0, react_1.useState)(), error = _d[0], setError = _d[1]; (0, react_1.useEffect)(function () { var isActive = true; var fetchMetadata = function () { return __awaiter(void 0, void 0, void 0, function () { var vesting, e_9; return __generator(this, function (_a) { switch (_a.label) { case 0: if (!splitsClient) throw new Error('Missing api key for data client'); _a.label = 1; case 1: _a.trys.push([1, 3, 4, 5]); return [4 /*yield*/, splitsClient.getVestingMetadata({ chainId: chainId, vestingModuleAddress: vestingModuleAddress, })]; case 2: vesting = _a.sent(); if (!isActive) return [2 /*return*/]; setVestingMetadata(vesting); setStatus('success'); return [3 /*break*/, 5]; case 3: e_9 = _a.sent(); if (isActive) { setStatus('error'); setError(e_9); } return [3 /*break*/, 5]; case 4: if (isActive) setIsLoading(false); return [7 /*endfinally*/]; case 5: return [2 /*return*/]; } }); }); }; setError(undefined); if (vestingModuleAddress) { setIsLoading(true); setStatus('loading'); fetchMetadata(); } else { setStatus(undefined); setIsLoading(false); setVestingMetadata(undefined); } return function () { isActive = false; }; }, [splitsClient, chainId, vestingModuleAddress]); return { isLoading: isLoading, data: vestingMetadata, status: status, error: error, }; }; exports.useVestingMetadata = useVestingMetadata; var useWaterfallMetadata = function (chainId, waterfallModuleAddress) { var context = (0, react_1.useContext)(context_1.SplitsContext); var splitsClient = (0, utils_2.getSplitsClient)(context).dataClient; var _a = (0, react_1.useState)(), waterfallMetadata = _a[0], setWaterfallMetadata = _a[1]; var _b = (0, react_1.useState)(!!waterfallModuleAddress), isLoading = _b[0], setIsLoading = _b[1]; var _c = (0, react_1.useState)(waterfallModuleAddress ? 'loading' : undefined), status = _c[0], setStatus = _c[1]; var _d = (0, react_1.useState)(), error = _d[0], setError = _d[1]; (0, react_1.useEffect)(function () { var isActive = true; var fetchMetadata = function () { return __awaiter(void 0, void 0, void 0, function () { var waterfall, e_10; return __generator(this, function (_a) { switch (_a.label) { case 0: if (!splitsClient) throw new Error('Missing api key for data client'); _a.label = 1; case 1: _a.trys.push([1, 3, 4, 5]); return [4 /*yield*/, splitsClient.getWaterfallMetadata({ chainId: chainId, waterfallModuleAddress: waterfallModuleAddress, })]; case 2: waterfall = _a.sent(); if (!isActive) return [2 /*return*/]; setWaterfallMetadata(waterfall); setStatus('success'); return [3 /*break*/, 5]; case 3: e_10 = _a.sent(); if (isActive) { setStatus('error'); setError(e_10); } return [3 /*break*/, 5]; case 4: if (isActive) setIsLoading(false); return [7 /*endfinally*/]; case 5: return [2 /*return*/]; } }); }); }; setError(undefined); if (waterfallModuleAddress) { setStatus('loading'); setIsLoading(true); fetchMetadata(); } else { setStatus(undefined); setIsLoading(false); setWaterfallMetadata(undefined); } return function () { isActive = false; }; }, [splitsClient, chainId, waterfallModuleAddress]); return { isLoading: isLoading, data: waterfallMetadata, status: status, error: error, }; }; exports.useWaterfallMetadata = useWaterfallMetadata; //# sourceMappingURL=data.js.map