UNPKG

@renegade-fi/core

Version:
78 lines 3.2 kB
import invariant from 'tiny-invariant'; import { parseAbiItem } from 'viem'; import { FIND_WALLET_ROUTE } from '../constants.js'; import { BaseError } from '../errors/base.js'; import { postRelayerRaw } from '../utils/http.js'; import { waitForWalletIndexing } from './waitForWalletIndexing.js'; export async function lookupWallet(config, parameters = {}) { const { getBaseUrl, utils } = config; let body; if (config.renegadeKeyType === 'internal') { const { seed } = config.state; invariant(seed, 'seed is required'); body = utils.find_wallet(seed); } else { const { blinderSeed, shareSeed, skMatch } = parameters; const { walletId, publicKey, symmetricKey } = config; invariant(blinderSeed, 'blinderSeed is required'); invariant(shareSeed, 'shareSeed is required'); invariant(skMatch, 'skMatch is required'); body = await utils.find_external_wallet(walletId, blinderSeed, shareSeed, publicKey, skMatch, symmetricKey); } const res = await postRelayerRaw(getBaseUrl(FIND_WALLET_ROUTE), body); if (res.task_id) { console.log(`task lookup-wallet(${res.task_id}): ${res.wallet_id}`, { status: 'looking up', walletId: res.wallet_id, }); if (config.renegadeKeyType === 'internal') { config.setState((x) => ({ ...x, status: 'looking up' })); } return waitForWalletIndexing(config, { timeout: 300000, isLookup: true, onComplete(wallet) { if (config.renegadeKeyType === 'internal') { config.setState((x) => ({ ...x, status: 'in relayer', })); } console.log(`task lookup-wallet(${res.task_id}) completed: ${wallet.id}`, { status: 'in relayer', walletId: wallet.id, }); }, onFailure() { console.log(`task lookup-wallet(${res.task_id}) failed: ${res.wallet_id}`); if (config.renegadeKeyType === 'internal') { config.setState({}); } }, }); } return Promise.reject(new BaseError('Failed to lookup wallet')); } // Returns true iff the query successfully returns 0 logs export async function checkForWalletUpdatesOnChain(config) { try { const { utils, state: { seed }, } = config; invariant(seed, 'Seed is required'); const blinderShare = utils.derive_blinder_share(seed); const logs = await config.viemClient.getLogs({ address: config.darkPoolAddress, event: parseAbiItem('event WalletUpdated(uint256 indexed wallet_blinder_share)'), args: { wallet_blinder_share: blinderShare, }, fromBlock: BigInt(process.env.FROM_BLOCK || process.env.NEXT_PUBLIC_FROM_BLOCK || 0), }); return logs.length === 0; } catch (error) { console.error(`Error looking up wallet on chain: ${error}`); return false; } } //# sourceMappingURL=lookupWallet.js.map