@0xsplits/splits-sdk-react
Version:
React wrapper for the 0xSplits SDK
997 lines • 48.6 kB
JavaScript
"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