@aave/react 4.0.0-next.44 → 4.0.0-next.45
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/chunk-M23T3ICP.js +2 -0
- package/dist/chunk-M23T3ICP.js.map +1 -0
- package/dist/{chunk-IAK4S3R4.js → chunk-QETO2FYE.js} +2 -2
- package/dist/{chunk-IAK4S3R4.js.map → chunk-QETO2FYE.js.map} +1 -1
- package/dist/ethers.cjs +1 -1
- package/dist/ethers.cjs.map +1 -1
- package/dist/ethers.js +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +1 -1
- package/dist/privy.cjs +1 -1
- package/dist/privy.cjs.map +1 -1
- package/dist/privy.js +1 -1
- package/dist/thirdweb.cjs +1 -1
- package/dist/thirdweb.cjs.map +1 -1
- package/dist/thirdweb.js +1 -1
- package/dist/viem/index.cjs +1 -1
- package/dist/viem/index.cjs.map +1 -1
- package/dist/viem/index.js +1 -1
- package/package.json +4 -4
- package/dist/chunk-4GURAVFN.js +0 -2
- package/dist/chunk-4GURAVFN.js.map +0 -1
package/dist/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import {b}from'./chunk-IAK4S3R4.js';export{c as useChain,d as useChainAction,e as useChains,g as useExchangeRate,f as useExchangeRateAction}from'./chunk-IAK4S3R4.js';import {a,b as b$1}from'./chunk-4NA4FB6K.js';export{b as useAaveClient}from'./chunk-4NA4FB6K.js';import {a as a$1,b as b$2,d,c}from'./chunk-4GURAVFN.js';import {DEFAULT_QUERY_OPTIONS,supportsPermit,UnexpectedError as UnexpectedError$1,transactionReceipt}from'@aave/client';export*from'@aave/client';import qe,{useState,useEffect,useCallback}from'react';import {hubs,reserve,reserves,userClaimableRewards,tokenSwapQuote,supplySwapQuote,borrowSwapQuote,preparePositionSwap,repayWithSupplyQuote,withdrawSwapQuote,swap,prepareTokenSwap,swapStatus,prepareSwapCancel,cancelSwap,supply,borrow,repay,withdraw,renounceSpokeUserPositionManager,updateUserPositionConditions,setUserSuppliesAsCollateral,liquidatePosition,setSpokeUserPositionManager,preview,activities,claimRewards,userSupplies,userBorrows,userPositions,userBalances}from'@aave/client/actions';import {HubQuery,HubsQuery,HubAssetsQuery,HubSummaryHistoryQuery,AssetQuery,AssetPriceHistoryQuery,AssetSupplyHistoryQuery,AssetBorrowHistoryQuery,ProtocolHistoryQuery,ReserveQuery,ReservesQuery,BorrowApyHistoryQuery,SupplyApyHistoryQuery,UserClaimableRewardsQuery,SpokeQuery,SpokesQuery,SpokePositionManagersQuery,SpokeUserPositionManagersQuery,TokenSwapQuoteQuery,QuoteAccuracy,SwappableTokensQuery,UserSwapsQuery,SwapStatusQuery,SupplySwapQuoteQuery,BorrowSwapQuoteQuery,RepayWithSupplyQuoteQuery,WithdrawSwapQuoteQuery,decodeReserveId,PreviewQuery,ActivitiesQuery,UserSuppliesQuery,UserBorrowsQuery,UserSummaryQuery,UserPositionsQuery,UserPositionQuery,UserBalancesQuery,UserRiskPremiumBreakdownQuery,UserSummaryHistoryQuery,isSpokeInputVariant,isChainIdsVariant,decodeUserPositionId}from'@aave/graphql';import {okAsync,never,isSignature,ResultAwareError,errAsync,ResultAsync,err,ok,expectTypename}from'@aave/types';import {UnexpectedError,ValidationError}from'@aave/core';function or({children:e,client:s}){return qe.createElement(a,{client:s},e)}function Le(e){if("userSpoke"in e)return e.userSpoke.user;if("userToken"in e)return e.userToken.user;if("userChains"in e)return e.userChains.user;if("userHub"in e)return e.userHub.user;let{user:s}=decodeUserPositionId(e.userPositionId);return s}function Ve(e){if("userSpoke"in e)return e.userSpoke.user;if("userToken"in e)return e.userToken.user;if("userChains"in e)return e.userChains.user;if("userHub"in e)return e.userHub.user;let{user:s}=decodeUserPositionId(e.userPositionId);return s}function X(e,s){return e.refreshQueryWhere(UserBalancesQuery,r=>r.request.user===s)}function I(e,s){return e.refreshQueryWhere(UserSuppliesQuery,r=>Le(r.request.query)===s)}function W(e,s){return e.refreshQueryWhere(UserBorrowsQuery,r=>Ve(r.request.query)===s)}function O(e,s,r){let t=n=>n.spoke.chain.chainId===r.chainId&&n.spoke.address===r.address&&n.user===s;return ResultAsync.combine([e.refreshQueryWhere(UserPositionsQuery,(n,a)=>a.some(t)),e.refreshQueryWhere(UserPositionQuery,(n,a)=>a!==null&&t(a))])}function N(e,s){let r=t=>s.includes(t.id);return ResultAsync.combine([e.refreshQueryWhere(ReserveQuery,(t,n)=>n!==null&&r(n)),e.refreshQueryWhere(ReservesQuery,(t,n)=>n.some(r))])}function _(e,s,r){return e.refreshQueryWhere(UserSummaryQuery,t=>t.request.user===s&&(isSpokeInputVariant(t.request.filter)?t.request.filter.spoke.chainId===r.chainId&&t.request.filter.spoke.address===r.address:isChainIdsVariant(t.request.filter)?t.request.filter.chainIds.some(n=>n===r.chainId):false))}function D(e,s){let r=t=>t.chain.chainId===s.chainId&&t.address===s.address;return ResultAsync.combine([e.refreshQueryWhere(SpokeQuery,(t,n)=>n!==null&&r(n)),e.refreshQueryWhere(SpokesQuery,(t,n)=>n.some(r))])}function M(e,s){let r=t=>t.chain.chainId===s;return ResultAsync.combine([e.refreshQueryWhere(HubQuery,(t,n)=>n!==null&&r(n)),e.refreshQueryWhere(HubsQuery,(t,n)=>n.some(r))])}function F(e,s){return e.refreshQueryWhere(SpokePositionManagersQuery,r=>r.request.spoke===s)}function Z(e,s){return ResultAsync.combine([e.refreshQueryWhere(UserPositionsQuery,(r,t)=>t.some(n=>n.id===s)),e.refreshQueryWhere(UserPositionQuery,(r,t)=>t?.id===s)])}function wr({suspense:e=false,pause:s=false,currency:r=DEFAULT_QUERY_OPTIONS.currency,timeWindow:t=DEFAULT_QUERY_OPTIONS.timeWindow,...n}){return b({document:HubQuery,variables:{request:n,currency:r,timeWindow:t},suspense:e,pause:s})}function fr({suspense:e=false,pause:s=false,currency:r=DEFAULT_QUERY_OPTIONS.currency,timeWindow:t=DEFAULT_QUERY_OPTIONS.timeWindow,...n}){return b({document:HubsQuery,variables:{request:n,currency:r,timeWindow:t},suspense:e,pause:s})}function mr({suspense:e=false,pause:s=false,currency:r=DEFAULT_QUERY_OPTIONS.currency,timeWindow:t=DEFAULT_QUERY_OPTIONS.timeWindow,...n}){return b({document:HubAssetsQuery,variables:{request:n,currency:r,timeWindow:t},suspense:e,pause:s})}function Pr({suspense:e=false,pause:s=false,...r}){return b({document:HubSummaryHistoryQuery,variables:{request:r},suspense:e,pause:s,batch:false})}function Ar(e=DEFAULT_QUERY_OPTIONS){let s=b$1();return a$1(r=>hubs(s,r,{currency:e.currency,requestPolicy:"cache-first"}),[s,e.currency])}function Qr({suspense:e=false,pause:s=false,currency:r=DEFAULT_QUERY_OPTIONS.currency,timeWindow:t=DEFAULT_QUERY_OPTIONS.timeWindow,...n}){return b({document:AssetQuery,variables:{request:n,currency:r,timeWindow:t},suspense:e,pause:s})}function hr({suspense:e=false,pause:s=false,...r}){return b({document:AssetPriceHistoryQuery,variables:{request:r},suspense:e,pause:s,batch:false})}function kr({suspense:e=false,pause:s=false,currency:r=DEFAULT_QUERY_OPTIONS.currency,timeWindow:t=DEFAULT_QUERY_OPTIONS.timeWindow,...n}){return b({document:AssetSupplyHistoryQuery,variables:{request:n,currency:r,timeWindow:t},suspense:e,pause:s,batch:false})}function qr({suspense:e=false,pause:s=false,currency:r=DEFAULT_QUERY_OPTIONS.currency,timeWindow:t=DEFAULT_QUERY_OPTIONS.timeWindow,...n}){return b({document:AssetBorrowHistoryQuery,variables:{request:n,currency:r,timeWindow:t},suspense:e,pause:s,batch:false})}function vr({suspense:e=false,pause:s=false,...r}){return b({document:ProtocolHistoryQuery,variables:{request:r},suspense:e,pause:s,batch:false})}function Or({suspense:e=false,pause:s=false,currency:r=DEFAULT_QUERY_OPTIONS.currency,timeWindow:t=DEFAULT_QUERY_OPTIONS.timeWindow,...n}){return b({document:ReserveQuery,variables:{request:n,currency:r,timeWindow:t},suspense:e,pause:s})}function Nr(e=DEFAULT_QUERY_OPTIONS){let s=b$1();return a$1(r=>reserve(s,r,{currency:e.currency??DEFAULT_QUERY_OPTIONS.currency,timeWindow:e.timeWindow??DEFAULT_QUERY_OPTIONS.timeWindow,requestPolicy:"cache-first"}),[s,e.currency,e.timeWindow])}function _r({suspense:e=false,pause:s=false,currency:r=DEFAULT_QUERY_OPTIONS.currency,timeWindow:t=DEFAULT_QUERY_OPTIONS.timeWindow,...n}){return b({document:ReservesQuery,variables:{request:n,currency:r,timeWindow:t},suspense:e,pause:s})}function Dr(e=DEFAULT_QUERY_OPTIONS){let s=b$1();return a$1(r=>reserves(s,r,{currency:e.currency??DEFAULT_QUERY_OPTIONS.currency,timeWindow:e.timeWindow??DEFAULT_QUERY_OPTIONS.timeWindow,requestPolicy:"cache-first"}),[s,e.currency,e.timeWindow])}function Mr({suspense:e=false,pause:s=false,...r}){return b({document:BorrowApyHistoryQuery,variables:{request:r},suspense:e,pause:s,batch:false})}function Fr({suspense:e=false,pause:s=false,...r}){return b({document:SupplyApyHistoryQuery,variables:{request:r},suspense:e,pause:s,batch:false})}function $r({suspense:e=false,pause:s=false,...r}){return b({document:UserClaimableRewardsQuery,variables:{request:r},suspense:e,pause:s})}function zr(){let e=b$1();return a$1(s=>userClaimableRewards(e,s,{requestPolicy:"cache-first"}),[e])}function Zr({suspense:e=false,pause:s=false,...r}){return b({document:SpokeQuery,variables:{request:r},suspense:e,pause:s})}function et({suspense:e=false,pause:s=false,...r}){return b({document:SpokesQuery,variables:{request:r},suspense:e,pause:s})}function st({suspense:e=false,pause:s=false,...r}){return b({document:SpokePositionManagersQuery,variables:{request:r},suspense:e,pause:s})}function rt({suspense:e=false,pause:s=false,...r}){return b({document:SpokeUserPositionManagersQuery,variables:{request:r},suspense:e,pause:s})}function V(e){switch(e.__typename){case "SwapByIntent":case "SwapByIntentWithApprovalRequired":case "SwapByTransaction":return ok(e.quote);case "InsufficientLiquidityError":return err(ValidationError.fromGqlNode(e));default:return err(UnexpectedError.upgradeRequired(`Unsupported swap quote result: ${e.__typename}`))}}function ue(e){return {__typename:"SwapCancelledResult",swapId:e.swapId,createdAt:e.createdAt,cancelledAt:e.cancelledAt,explorerUrl:e.explorerUrl}}function U(e){switch(e.__typename){case "PositionSwapByIntentApprovalsRequired":return ok(e.quote);case "InsufficientLiquidityError":return err(ValidationError.fromGqlNode(e));default:return err(UnexpectedError.upgradeRequired(`Unsupported position swap quote result: ${e.__typename}`))}}function oe(e,s){return "market"in e&&e.market?{market:{...e.market,accuracy:s}}:e}function ie(e,s){return "market"in e&&e.market?{market:{...e.market,accuracy:s}}:e}function pe(e,s){return "market"in e&&e.market?{market:{...e.market,accuracy:s}}:e}function le(e,s){return "market"in e&&e.market?{market:{...e.market,accuracy:s}}:e}function ce(e,s){return "market"in e&&e.market?{market:{...e.market,accuracy:s}}:e}function St({suspense:e=false,pause:s=false,currency:r=DEFAULT_QUERY_OPTIONS.currency,...t}){let n=b$1(),a=b({document:TokenSwapQuoteQuery,variables:{request:oe(t,QuoteAccuracy.Fast),currency:r},selector:V,suspense:e,pause:s,batch:false}),p=b({document:TokenSwapQuoteQuery,variables:{request:oe(t,QuoteAccuracy.Accurate),currency:r},selector:V,suspense:false,pause:s||e&&!a.data,pollInterval:n.context.environment.swapQuoteInterval,batch:false});return p.data?p:a}function dt(e=DEFAULT_QUERY_OPTIONS){let s=b$1();return a$1(r=>tokenSwapQuote(s,r,{currency:e.currency,requestPolicy:"network-only"}).andThen(V),[s,e.currency])}function Rt({suspense:e=false,pause:s=false,...r}){return b({document:SwappableTokensQuery,variables:{request:r},suspense:e,pause:s})}function Ut({suspense:e=false,pause:s=false,currency:r=DEFAULT_QUERY_OPTIONS.currency,timeWindow:t=DEFAULT_QUERY_OPTIONS.timeWindow,...n}){let a=b$1(),[p,S]=useState(false),d=b({document:UserSwapsQuery,variables:{request:n,currency:r,timeWindow:t},suspense:e,pause:s||p,pollInterval:a.context.environment.swapStatusInterval});return useEffect(()=>{d.data&&d.data.items.length>0&&d.data.items.every(be)&&S(true);},[d.data]),d}function be(e){return e.__typename==="SwapFulfilled"||e.__typename==="SwapCancelled"||e.__typename==="SwapExpired"}function wt({suspense:e=false,pause:s=false,currency:r=DEFAULT_QUERY_OPTIONS.currency,timeWindow:t=DEFAULT_QUERY_OPTIONS.timeWindow,...n}){let a=b$1(),[p,S]=useState(false),d=b({document:SwapStatusQuery,variables:{request:n,currency:r,timeWindow:t},suspense:e,pause:s||p,pollInterval:a.context.environment.swapStatusInterval});return useEffect(()=>{d.data&&be(d.data)&&S(true);},[d.data]),d}function ft({suspense:e=false,pause:s=false,currency:r=DEFAULT_QUERY_OPTIONS.currency,...t}){let n=b$1(),a=b({document:SupplySwapQuoteQuery,variables:{request:ie(t,QuoteAccuracy.Fast),currency:r},selector:U,suspense:e,pause:s,batch:false}),p=b({document:SupplySwapQuoteQuery,variables:{request:ie(t,QuoteAccuracy.Accurate),currency:r},selector:U,suspense:false,pause:s||e&&!a.data,pollInterval:n.context.environment.swapQuoteInterval,batch:false});return p.data?p:a}function mt(e=DEFAULT_QUERY_OPTIONS){let s=b$1();return a$1(r=>supplySwapQuote(s,r,{currency:e.currency,requestPolicy:"network-only"}).andThen(U),[s,e.currency])}function Pt({suspense:e=false,pause:s=false,currency:r=DEFAULT_QUERY_OPTIONS.currency,...t}){let n=b$1(),a=b({document:BorrowSwapQuoteQuery,variables:{request:pe(t,QuoteAccuracy.Fast),currency:r},selector:U,suspense:e,pause:s,batch:false}),p=b({document:BorrowSwapQuoteQuery,variables:{request:pe(t,QuoteAccuracy.Accurate),currency:r},selector:U,suspense:false,pause:s||e&&!a.data,pollInterval:n.context.environment.swapQuoteInterval,batch:false});return p.data?p:a}function At(e=DEFAULT_QUERY_OPTIONS){let s=b$1();return a$1(r=>borrowSwapQuote(s,r,{currency:e.currency,requestPolicy:"network-only"}).andThen(U),[s,e.currency])}function H(e){return {with:s=>e.approvals.reduce((r,t)=>r.andThen(n=>s(t,{cancel:b$2}).map(a=>{switch(t.__typename){case "PositionSwapAdapterContractApproval":n.adapterContractSignature=isSignature(a)?a:null;break;case "PositionSwapPositionManagerApproval":n.positionManagerSignature=isSignature(a)?a:null;break}return n})),okAsync({quoteId:e.quote.quoteId,adapterContractSignature:null,positionManagerSignature:null}))}}function B(e,s){return swap(e,{intent:s}).andThen(r=>{switch(r.__typename){case "SwapReceipt":return okAsync(r);default:return UnexpectedError.from(r).asResultAsync()}})}function bt(e){let s=b$1();return a$1(({currency:r=DEFAULT_QUERY_OPTIONS.currency,...t})=>supplySwapQuote(s,t,{currency:r}).andThen(n=>H(n).with(e).andThen(a=>preparePositionSwap(s,a)).andThen(a=>e(a.data,{cancel:b$2}).andThen(d).andThen(p=>B(s,{quoteId:a.newQuoteId,signature:p})))),[s,e])}function gt(e){let s=b$1();return a$1(({currency:r=DEFAULT_QUERY_OPTIONS.currency,...t})=>borrowSwapQuote(s,t,{currency:r}).andThen(n=>H(n).with(e).andThen(a=>preparePositionSwap(s,a)).andThen(a=>e(a.data,{cancel:b$2}).andThen(d).andThen(p=>B(s,{quoteId:a.newQuoteId,signature:p})))),[s,e])}function Tt({suspense:e=false,pause:s=false,currency:r=DEFAULT_QUERY_OPTIONS.currency,...t}){let n=b$1(),a=b({document:RepayWithSupplyQuoteQuery,variables:{request:le(t,QuoteAccuracy.Fast),currency:r},selector:U,suspense:e,pause:s,batch:false}),p=b({document:RepayWithSupplyQuoteQuery,variables:{request:le(t,QuoteAccuracy.Accurate),currency:r},selector:U,suspense:false,pause:s||e&&!a.data,pollInterval:n.context.environment.swapQuoteInterval,batch:false});return p.data?p:a}function xt(e=DEFAULT_QUERY_OPTIONS){let s=b$1();return a$1(r=>repayWithSupplyQuote(s,r,{currency:e.currency,requestPolicy:"network-only"}).andThen(U),[s,e.currency])}function Qt(e){let s=b$1();return a$1(({currency:r=DEFAULT_QUERY_OPTIONS.currency,...t})=>repayWithSupplyQuote(s,t,{currency:r}).andThen(n=>H(n).with(e).andThen(a=>preparePositionSwap(s,a)).andThen(a=>e(a.data,{cancel:b$2}).andThen(d).andThen(p=>B(s,{quoteId:a.newQuoteId,signature:p})))),[s,e])}function ht({suspense:e=false,pause:s=false,currency:r=DEFAULT_QUERY_OPTIONS.currency,...t}){let n=b$1(),a=b({document:WithdrawSwapQuoteQuery,variables:{request:ce(t,QuoteAccuracy.Fast),currency:r},selector:U,suspense:e,pause:s,batch:false}),p=b({document:WithdrawSwapQuoteQuery,variables:{request:ce(t,QuoteAccuracy.Accurate),currency:r},selector:U,suspense:false,pause:s||e&&!a.data,pollInterval:n.context.environment.swapQuoteInterval,batch:false});return p.data?p:a}function kt(e=DEFAULT_QUERY_OPTIONS){let s=b$1();return a$1(r=>withdrawSwapQuote(s,r,{currency:e.currency,requestPolicy:"network-only"}).andThen(U),[s,e.currency])}function qt(e){let s=b$1();return a$1(({currency:r=DEFAULT_QUERY_OPTIONS.currency,...t})=>withdrawSwapQuote(s,t,{currency:r}).andThen(n=>H(n).with(e).andThen(a=>preparePositionSwap(s,a)).andThen(a=>e(a.data,{cancel:b$2}).andThen(d).andThen(p=>B(s,{quoteId:a.newQuoteId,signature:p})))),[s,e])}function vt(e){let s=b$1(),r=useCallback(t=>swap(s,t).andThen(n=>{switch(n.__typename){case "SwapTransactionRequest":return e(n,{cancel:b$2}).andThen(c.tryFrom).andThen(a=>a.wait()).andThen(()=>okAsync(n.orderReceipt));case "SwapReceipt":return okAsync(n)}}),[s,e]);return a$1(({currency:t=DEFAULT_QUERY_OPTIONS.currency,...n})=>tokenSwapQuote(s,n,{currency:t}).andThen(a=>{switch(a.__typename){case "SwapByTransaction":return r({transaction:{quoteId:a.quote.quoteId}});case "SwapByIntent":return prepareTokenSwap(s,{quoteId:a.quote.quoteId}).andThen(p=>e(p.data,{cancel:b$2}).andThen(d).andThen(S=>r({intent:{quoteId:p.newQuoteId,signature:S}})));case "SwapByIntentWithApprovalRequired":if(supportsPermit(a)){let p=a.approvals[0];return e(p,{cancel:b$2}).andThen(S=>isSignature(S)?prepareTokenSwap(s,{quoteId:a.quote.quoteId,permitSig:{deadline:p.bySignature.message.deadline,value:S}}):c.isInstanceOf(S)?S.wait().andThen(()=>prepareTokenSwap(s,{quoteId:a.quote.quoteId})):UnexpectedError.from(S).asResultAsync()).andThen(S=>e(S.data,{cancel:b$2}).andThen(d).andThen(d=>r({intent:{quoteId:S.newQuoteId,signature:d}})))}return a.approvals.reduce((p,S)=>p.andThen(()=>e({...S,bySignature:null},{cancel:b$2}).andThen(c.tryFrom).andThen(d=>d.wait())),okAsync(void 0)).andThen(()=>prepareTokenSwap(s,{quoteId:a.quote.quoteId})).andThen(p=>e(p.data,{cancel:b$2})).andThen(d).andThen(p=>r({intent:{quoteId:a.quote.quoteId,signature:p}}));default:never(`Unsupported swap quote result: ${a.__typename}. To be removed from API soon.`);}}),[s,e,r])}var v=class extends ResultAwareError{name="CannotCancelSwapError"};function Et(e){let s=b$1();return a$1(r=>swapStatus(s,{id:r.id}).andThen(t=>{if(t===null)return UnexpectedError.from("Swap not found").asResultAsync();switch(t.__typename){case "SwapOpen":case "SwapPendingSignature":return prepareSwapCancel(s,r).andThen(n=>e(n.data,{cancel:b$2})).andThen(d).andThen(n=>cancelSwap(s,{intent:{id:r.id,signature:n}})).andThen(n=>n.__typename==="SwapCancelledResult"?okAsync(n):e(n,{cancel:b$2}).andThen(c.tryFrom).andThen(a=>a.wait()).andThen(()=>swapStatus(s,{id:r.id})).andThen(a=>a?.__typename==="SwapCancelled"?okAsync(ue(a)):new v("Failed to cancel swap").asResultAsync()));case "SwapCancelled":return okAsync(ue(t));case "SwapExpired":return new v("Swap cannot longer be cancelled").asResultAsync();default:return UnexpectedError.upgradeRequired(`Unsupported swap status: ${t.__typename}`).asResultAsync()}}),[s,e])}function C(e,s){let{chainId:r,spoke:t}=decodeReserveId(s.reserve),n={chainId:r,address:t};return ResultAsync.combine([O(e,s.sender,n),_(e,s.sender,n),N(e,[s.reserve]),D(e,n),X(e,s.sender),I(e,s.sender),W(e,s.sender),M(e,r)])}function Os(e,s){return {deadline:s.message.deadline,value:e}}function G(e,s){return e.approvals.reduce((r,t)=>r.andThen(()=>s({...t,bySignature:null},{cancel:b$2}).andThen(c.tryFrom).andThen(n=>n.wait())),okAsync(void 0)).map(()=>e.originalTransaction)}function Y(e,s,r){let t=e.approvals[0];return s(t,{cancel:b$2}).andThen(n=>isSignature(n)?r(Os(n,t.bySignature)).map(expectTypename("TransactionRequest")):n.wait().map(()=>e.originalTransaction))}function Dt(e){let s=b$1();return a$1(r=>supply(s,r).andThen(t=>{switch(t.__typename){case "TransactionRequest":return e(t,{cancel:b$2});case "Erc20ApprovalRequired":return supportsPermit(t)?Y(t,e,n=>supply(s,Ns(r,n))).andThen(n=>e(n,{cancel:b$2})):G(t,e).andThen(n=>e(n,{cancel:b$2}));case "PreContractActionRequired":return e(t,{cancel:b$2}).andThen(c.tryFrom).andThen(n=>n.wait()).andThen(()=>e(t.originalTransaction,{cancel:b$2}));case "InsufficientBalanceError":return errAsync(ValidationError.fromGqlNode(t))}}).andThen(c.tryFrom).andThen(t=>t.wait()).andThen(s.waitForTransaction).andThrough(()=>C(s,r)),[s,e])}function Ns(e,s){return "erc20"in e.amount?{...e,amount:{erc20:{...e.amount.erc20,permitSig:s}}}:e}function Mt(e){let s=b$1();return a$1(r=>borrow(s,r).andThen(t=>{switch(t.__typename){case "TransactionRequest":return e(t,{cancel:b$2});case "PreContractActionRequired":return e(t,{cancel:b$2}).andThen(n=>n.wait()).andThen(()=>e(t.originalTransaction,{cancel:b$2}));case "InsufficientBalanceError":return errAsync(ValidationError.fromGqlNode(t));case "Erc20ApprovalRequired":return UnexpectedError$1.from(t).asResultAsync()}}).andThen(t=>t.wait()).andThen(s.waitForTransaction).andThrough(()=>C(s,r)),[s,e])}function Ft(e){let s=b$1();return a$1(r=>repay(s,r).andThen(t=>{switch(t.__typename){case "TransactionRequest":return e(t,{cancel:b$2});case "Erc20ApprovalRequired":return supportsPermit(t)?Y(t,e,n=>repay(s,_s(r,n))).andThen(n=>e(n,{cancel:b$2})):G(t,e).andThen(n=>e(n,{cancel:b$2}));case "PreContractActionRequired":return e(t,{cancel:b$2}).andThen(c.tryFrom).andThen(n=>n.wait()).andThen(()=>e(t.originalTransaction,{cancel:b$2}));case "InsufficientBalanceError":return errAsync(ValidationError.fromGqlNode(t))}}).andThen(c.tryFrom).andThen(t=>t.wait()).andThen(s.waitForTransaction).andThrough(()=>C(s,r)),[s,e])}function _s(e,s){return "erc20"in e.amount?{...e,amount:{erc20:{...e.amount.erc20,permitSig:s}}}:e}function Lt(e){let s=b$1();return a$1(r=>withdraw(s,r).andThen(t=>{switch(t.__typename){case "TransactionRequest":return e(t,{cancel:b$2});case "PreContractActionRequired":return e(t,{cancel:b$2}).andThen(n=>n.wait()).andThen(()=>e(t.originalTransaction,{cancel:b$2}));case "InsufficientBalanceError":return errAsync(ValidationError.fromGqlNode(t));case "Erc20ApprovalRequired":return UnexpectedError$1.from(t).asResultAsync()}}).andThen(t=>t.wait()).andThen(s.waitForTransaction).andThrough(()=>C(s,r)),[s,e])}function Vt(e){let s=b$1();return a$1(r=>renounceSpokeUserPositionManager(s,r).andThen(t=>e(t,{cancel:b$2})).andThen(t=>t.wait()).andThen(s.waitForTransaction).andThrough(()=>F(s,r.spoke)),[s,e])}function jt(e){let s=b$1();return a$1(r=>updateUserPositionConditions(s,r).andThen(t=>e(t,{cancel:b$2})).andThen(t=>t.wait()).andThen(s.waitForTransaction).andThrough(()=>Z(s,r.userPositionId)),[s,e])}function Gt(e){let s=b$1();return a$1(r=>{let t=r.changes.map(a=>a.reserve),n=t.map(a=>decodeReserveId(a));return setUserSuppliesAsCollateral(s,r).andThen(a=>e(a,{cancel:b$2})).andThen(a=>a.wait()).andThen(s.waitForTransaction).andThrough(()=>ResultAsync.combine([I(s,r.sender),W(s,r.sender),...n.flatMap(({chainId:a,spoke:p})=>[O(s,r.sender,{chainId:a,address:p}),_(s,r.sender,{chainId:a,address:p}),D(s,{chainId:a,address:p})]),N(s,t),...n.map(({chainId:a})=>M(s,a))]))},[s,e])}function Yt(e){let s=b$1();return a$1(r=>liquidatePosition(s,r).andThen(t=>{switch(t.__typename){case "TransactionRequest":return e(t,{cancel:b$2});case "Erc20ApprovalRequired":return supportsPermit(t)?Y(t,e,n=>liquidatePosition(s,Ds(r))).andThen(n=>e(n,{cancel:b$2})):G(t,e).andThen(n=>e(n,{cancel:b$2}));case "PreContractActionRequired":return e(t,{cancel:b$2}).andThen(c.tryFrom).andThen(n=>n.wait()).andThen(()=>e(t.originalTransaction,{cancel:b$2}));case "InsufficientBalanceError":return errAsync(ValidationError.fromGqlNode(t))}}).andThen(c.tryFrom).andThen(t=>t.wait()).andThen(s.waitForTransaction),[s,e])}function Ds(e,s){return e}function $t(e){let s=b$1();return a$1(r=>setSpokeUserPositionManager(s,r).andThen(t=>e(t,{cancel:b$2})).andThen(t=>t.wait()).andThen(s.waitForTransaction).andThrough(()=>F(s,r.spoke)),[s,e])}function zt(e=DEFAULT_QUERY_OPTIONS){let s=b$1();return a$1(r=>preview(s,r,{currency:e.currency,requestPolicy:"network-only"}),[s,e.currency])}function Jt({suspense:e=false,pause:s=false,currency:r=DEFAULT_QUERY_OPTIONS.currency,...t}){return b({document:PreviewQuery,variables:{request:t,currency:r},suspense:e,pause:s})}function Kt({suspense:e=false,pause:s=false,currency:r=DEFAULT_QUERY_OPTIONS.currency,timeWindow:t=DEFAULT_QUERY_OPTIONS.timeWindow,...n}){return b({document:ActivitiesQuery,variables:{request:n,currency:r,timeWindow:t},suspense:e,pause:s})}function Xt(e=DEFAULT_QUERY_OPTIONS){let s=b$1();return a$1(r=>activities(s,r,{currency:e.currency??DEFAULT_QUERY_OPTIONS.currency,timeWindow:e.timeWindow??DEFAULT_QUERY_OPTIONS.timeWindow,requestPolicy:"cache-first"}),[s,e.currency,e.timeWindow])}function Zt(e){let s=b$1();return a$1(r=>claimRewards(s,r).andThen(t=>e(t,{cancel:b$2})).andThen(c.tryFrom).andThen(t=>t.wait()).map(t=>transactionReceipt(t.txHash)),[s,e])}function un({suspense:e=false,pause:s=false,currency:r=DEFAULT_QUERY_OPTIONS.currency,timeWindow:t=DEFAULT_QUERY_OPTIONS.timeWindow,...n}){return b({document:UserSuppliesQuery,variables:{request:n,currency:r,timeWindow:t},suspense:e,pause:s})}function on(e=DEFAULT_QUERY_OPTIONS){let s=b$1();return a$1(r=>userSupplies(s,r,{currency:e.currency??DEFAULT_QUERY_OPTIONS.currency,timeWindow:e.timeWindow??DEFAULT_QUERY_OPTIONS.timeWindow,requestPolicy:"cache-first"}),[s,e.currency,e.timeWindow])}function pn({suspense:e=false,pause:s=false,currency:r=DEFAULT_QUERY_OPTIONS.currency,timeWindow:t=DEFAULT_QUERY_OPTIONS.timeWindow,...n}){return b({document:UserBorrowsQuery,variables:{request:n,currency:r,timeWindow:t},suspense:e,pause:s})}function ln(e=DEFAULT_QUERY_OPTIONS){let s=b$1();return a$1(r=>userBorrows(s,r,{currency:e.currency??DEFAULT_QUERY_OPTIONS.currency,timeWindow:e.timeWindow??DEFAULT_QUERY_OPTIONS.timeWindow,requestPolicy:"cache-first"}),[s,e.currency,e.timeWindow])}function cn({suspense:e=false,pause:s=false,currency:r=DEFAULT_QUERY_OPTIONS.currency,timeWindow:t=DEFAULT_QUERY_OPTIONS.timeWindow,...n}){return b({document:UserSummaryQuery,variables:{request:n,currency:r,timeWindow:t},suspense:e,pause:s})}function yn({suspense:e=false,pause:s=false,currency:r=DEFAULT_QUERY_OPTIONS.currency,timeWindow:t=DEFAULT_QUERY_OPTIONS.timeWindow,...n}){return b({document:UserPositionsQuery,variables:{request:n,currency:r,timeWindow:t},suspense:e,pause:s})}function Sn(e=DEFAULT_QUERY_OPTIONS){let s=b$1();return a$1(r=>userPositions(s,r,{currency:e.currency,timeWindow:e.timeWindow,requestPolicy:"cache-first"}),[s,e.currency,e.timeWindow])}function dn({suspense:e=false,pause:s=false,currency:r=DEFAULT_QUERY_OPTIONS.currency,timeWindow:t=DEFAULT_QUERY_OPTIONS.timeWindow,...n}){return b({document:UserPositionQuery,variables:{request:n,currency:r,timeWindow:t},suspense:e,pause:s})}function Rn({suspense:e=false,pause:s=false,currency:r=DEFAULT_QUERY_OPTIONS.currency,...t}){return b({document:UserBalancesQuery,variables:{request:t,currency:r},suspense:e,pause:s})}function Un({suspense:e=false,pause:s=false,...r}){return b({document:UserRiskPremiumBreakdownQuery,variables:{request:r},suspense:e,pause:s,batch:false})}function wn(e=DEFAULT_QUERY_OPTIONS){let s=b$1();return a$1(r=>userBalances(s,r,{currency:e.currency,requestPolicy:"cache-first"}),[s,e.currency])}function fn({suspense:e=false,pause:s=false,currency:r=DEFAULT_QUERY_OPTIONS.currency,...t}){return b({document:UserSummaryHistoryQuery,variables:{request:t,currency:r},suspense:e,pause:s,batch:false})}export{or as AaveProvider,v as CannotCancelSwapError,Kt as useActivities,Xt as useActivitiesAction,Qr as useAsset,qr as useAssetBorrowHistory,hr as useAssetPriceHistory,kr as useAssetSupplyHistory,Mt as useBorrow,Mr as useBorrowApyHistory,gt as useBorrowSwap,Pt as useBorrowSwapQuote,At as useBorrowSwapQuoteAction,Et as useCancelSwap,Zt as useClaimRewards,wr as useHub,mr as useHubAssets,Pr as useHubSummaryHistory,fr as useHubs,Ar as useHubsAction,Yt as useLiquidatePosition,Jt as usePreview,zt as usePreviewAction,vr as useProtocolHistory,Vt as useRenounceSpokeUserPositionManager,Ft as useRepay,Qt as useRepayWithSupply,Tt as useRepayWithSupplyQuote,xt as useRepayWithSupplyQuoteAction,Or as useReserve,Nr as useReserveAction,_r as useReserves,Dr as useReservesAction,$t as useSetSpokeUserPositionManager,Gt as useSetUserSuppliesAsCollateral,Zr as useSpoke,st as useSpokePositionManagers,rt as useSpokeUserPositionManagers,et as useSpokes,Dt as useSupply,Fr as useSupplyApyHistory,bt as useSupplySwap,ft as useSupplySwapQuote,mt as useSupplySwapQuoteAction,wt as useSwapStatus,Rt as useSwappableTokens,vt as useTokenSwap,St as useTokenSwapQuote,dt as useTokenSwapQuoteAction,jt as useUpdateUserPositionConditions,Rn as useUserBalances,wn as useUserBalancesAction,pn as useUserBorrows,ln as useUserBorrowsAction,$r as useUserClaimableRewards,zr as useUserClaimableRewardsAction,dn as useUserPosition,yn as useUserPositions,Sn as useUserPositionsAction,Un as useUserRiskPremiumBreakdown,cn as useUserSummary,fn as useUserSummaryHistory,un as useUserSupplies,on as useUserSuppliesAction,Ut as useUserSwaps,Lt as useWithdraw,qt as useWithdrawSwap,ht as useWithdrawSwapQuote,kt as useWithdrawSwapQuoteAction};//# sourceMappingURL=index.js.map
|
|
1
|
+
import {b}from'./chunk-QETO2FYE.js';export{c as useChain,d as useChainAction,e as useChains,g as useExchangeRate,f as useExchangeRateAction}from'./chunk-QETO2FYE.js';import {a,b as b$1}from'./chunk-4NA4FB6K.js';export{b as useAaveClient}from'./chunk-4NA4FB6K.js';import {a as a$1,b as b$2,d,c}from'./chunk-M23T3ICP.js';import {DEFAULT_QUERY_OPTIONS,supportsPermit,UnexpectedError as UnexpectedError$1,transactionReceipt}from'@aave/client';export*from'@aave/client';import qe,{useState,useEffect,useCallback}from'react';import {hubs,reserve,reserves,userClaimableRewards,tokenSwapQuote,supplySwapQuote,borrowSwapQuote,preparePositionSwap,repayWithSupplyQuote,withdrawSwapQuote,swap,prepareTokenSwap,swapStatus,prepareSwapCancel,cancelSwap,supply,borrow,repay,withdraw,renounceSpokeUserPositionManager,updateUserPositionConditions,setUserSuppliesAsCollateral,liquidatePosition,setSpokeUserPositionManager,preview,activities,claimRewards,userSupplies,userBorrows,userPositions,userBalances}from'@aave/client/actions';import {HubQuery,HubsQuery,HubAssetsQuery,HubSummaryHistoryQuery,AssetQuery,AssetPriceHistoryQuery,AssetSupplyHistoryQuery,AssetBorrowHistoryQuery,ProtocolHistoryQuery,ReserveQuery,ReservesQuery,BorrowApyHistoryQuery,SupplyApyHistoryQuery,UserClaimableRewardsQuery,SpokeQuery,SpokesQuery,SpokePositionManagersQuery,SpokeUserPositionManagersQuery,TokenSwapQuoteQuery,QuoteAccuracy,SwappableTokensQuery,UserSwapsQuery,SwapStatusQuery,SupplySwapQuoteQuery,BorrowSwapQuoteQuery,RepayWithSupplyQuoteQuery,WithdrawSwapQuoteQuery,decodeReserveId,PreviewQuery,ActivitiesQuery,UserSuppliesQuery,UserBorrowsQuery,UserSummaryQuery,UserPositionsQuery,UserPositionQuery,UserBalancesQuery,UserRiskPremiumBreakdownQuery,UserSummaryHistoryQuery,isSpokeInputVariant,isChainIdsVariant,decodeUserPositionId}from'@aave/graphql';import {okAsync,never,isSignature,ResultAwareError,errAsync,ResultAsync,err,ok,expectTypename}from'@aave/types';import {UnexpectedError,ValidationError}from'@aave/core';function or({children:e,client:s}){return qe.createElement(a,{client:s},e)}function Le(e){if("userSpoke"in e)return e.userSpoke.user;if("userToken"in e)return e.userToken.user;if("userChains"in e)return e.userChains.user;if("userHub"in e)return e.userHub.user;let{user:s}=decodeUserPositionId(e.userPositionId);return s}function Ve(e){if("userSpoke"in e)return e.userSpoke.user;if("userToken"in e)return e.userToken.user;if("userChains"in e)return e.userChains.user;if("userHub"in e)return e.userHub.user;let{user:s}=decodeUserPositionId(e.userPositionId);return s}function X(e,s){return e.refreshQueryWhere(UserBalancesQuery,r=>r.request.user===s)}function I(e,s){return e.refreshQueryWhere(UserSuppliesQuery,r=>Le(r.request.query)===s)}function W(e,s){return e.refreshQueryWhere(UserBorrowsQuery,r=>Ve(r.request.query)===s)}function O(e,s,r){let t=n=>n.spoke.chain.chainId===r.chainId&&n.spoke.address===r.address&&n.user===s;return ResultAsync.combine([e.refreshQueryWhere(UserPositionsQuery,(n,a)=>a.some(t)),e.refreshQueryWhere(UserPositionQuery,(n,a)=>a!==null&&t(a))])}function N(e,s){let r=t=>s.includes(t.id);return ResultAsync.combine([e.refreshQueryWhere(ReserveQuery,(t,n)=>n!==null&&r(n)),e.refreshQueryWhere(ReservesQuery,(t,n)=>n.some(r))])}function _(e,s,r){return e.refreshQueryWhere(UserSummaryQuery,t=>t.request.user===s&&(isSpokeInputVariant(t.request.filter)?t.request.filter.spoke.chainId===r.chainId&&t.request.filter.spoke.address===r.address:isChainIdsVariant(t.request.filter)?t.request.filter.chainIds.some(n=>n===r.chainId):false))}function D(e,s){let r=t=>t.chain.chainId===s.chainId&&t.address===s.address;return ResultAsync.combine([e.refreshQueryWhere(SpokeQuery,(t,n)=>n!==null&&r(n)),e.refreshQueryWhere(SpokesQuery,(t,n)=>n.some(r))])}function M(e,s){let r=t=>t.chain.chainId===s;return ResultAsync.combine([e.refreshQueryWhere(HubQuery,(t,n)=>n!==null&&r(n)),e.refreshQueryWhere(HubsQuery,(t,n)=>n.some(r))])}function F(e,s){return e.refreshQueryWhere(SpokePositionManagersQuery,r=>r.request.spoke===s)}function Z(e,s){return ResultAsync.combine([e.refreshQueryWhere(UserPositionsQuery,(r,t)=>t.some(n=>n.id===s)),e.refreshQueryWhere(UserPositionQuery,(r,t)=>t?.id===s)])}function wr({suspense:e=false,pause:s=false,currency:r=DEFAULT_QUERY_OPTIONS.currency,timeWindow:t=DEFAULT_QUERY_OPTIONS.timeWindow,...n}){return b({document:HubQuery,variables:{request:n,currency:r,timeWindow:t},suspense:e,pause:s})}function fr({suspense:e=false,pause:s=false,currency:r=DEFAULT_QUERY_OPTIONS.currency,timeWindow:t=DEFAULT_QUERY_OPTIONS.timeWindow,...n}){return b({document:HubsQuery,variables:{request:n,currency:r,timeWindow:t},suspense:e,pause:s})}function mr({suspense:e=false,pause:s=false,currency:r=DEFAULT_QUERY_OPTIONS.currency,timeWindow:t=DEFAULT_QUERY_OPTIONS.timeWindow,...n}){return b({document:HubAssetsQuery,variables:{request:n,currency:r,timeWindow:t},suspense:e,pause:s})}function Pr({suspense:e=false,pause:s=false,...r}){return b({document:HubSummaryHistoryQuery,variables:{request:r},suspense:e,pause:s,batch:false})}function Ar(e=DEFAULT_QUERY_OPTIONS){let s=b$1();return a$1(r=>hubs(s,r,{currency:e.currency,requestPolicy:"cache-first"}),[s,e.currency])}function Qr({suspense:e=false,pause:s=false,currency:r=DEFAULT_QUERY_OPTIONS.currency,timeWindow:t=DEFAULT_QUERY_OPTIONS.timeWindow,...n}){return b({document:AssetQuery,variables:{request:n,currency:r,timeWindow:t},suspense:e,pause:s})}function hr({suspense:e=false,pause:s=false,...r}){return b({document:AssetPriceHistoryQuery,variables:{request:r},suspense:e,pause:s,batch:false})}function kr({suspense:e=false,pause:s=false,currency:r=DEFAULT_QUERY_OPTIONS.currency,timeWindow:t=DEFAULT_QUERY_OPTIONS.timeWindow,...n}){return b({document:AssetSupplyHistoryQuery,variables:{request:n,currency:r,timeWindow:t},suspense:e,pause:s,batch:false})}function qr({suspense:e=false,pause:s=false,currency:r=DEFAULT_QUERY_OPTIONS.currency,timeWindow:t=DEFAULT_QUERY_OPTIONS.timeWindow,...n}){return b({document:AssetBorrowHistoryQuery,variables:{request:n,currency:r,timeWindow:t},suspense:e,pause:s,batch:false})}function vr({suspense:e=false,pause:s=false,...r}){return b({document:ProtocolHistoryQuery,variables:{request:r},suspense:e,pause:s,batch:false})}function Or({suspense:e=false,pause:s=false,currency:r=DEFAULT_QUERY_OPTIONS.currency,timeWindow:t=DEFAULT_QUERY_OPTIONS.timeWindow,...n}){return b({document:ReserveQuery,variables:{request:n,currency:r,timeWindow:t},suspense:e,pause:s})}function Nr(e=DEFAULT_QUERY_OPTIONS){let s=b$1();return a$1(r=>reserve(s,r,{currency:e.currency??DEFAULT_QUERY_OPTIONS.currency,timeWindow:e.timeWindow??DEFAULT_QUERY_OPTIONS.timeWindow,requestPolicy:"cache-first"}),[s,e.currency,e.timeWindow])}function _r({suspense:e=false,pause:s=false,currency:r=DEFAULT_QUERY_OPTIONS.currency,timeWindow:t=DEFAULT_QUERY_OPTIONS.timeWindow,...n}){return b({document:ReservesQuery,variables:{request:n,currency:r,timeWindow:t},suspense:e,pause:s})}function Dr(e=DEFAULT_QUERY_OPTIONS){let s=b$1();return a$1(r=>reserves(s,r,{currency:e.currency??DEFAULT_QUERY_OPTIONS.currency,timeWindow:e.timeWindow??DEFAULT_QUERY_OPTIONS.timeWindow,requestPolicy:"cache-first"}),[s,e.currency,e.timeWindow])}function Mr({suspense:e=false,pause:s=false,...r}){return b({document:BorrowApyHistoryQuery,variables:{request:r},suspense:e,pause:s,batch:false})}function Fr({suspense:e=false,pause:s=false,...r}){return b({document:SupplyApyHistoryQuery,variables:{request:r},suspense:e,pause:s,batch:false})}function $r({suspense:e=false,pause:s=false,...r}){return b({document:UserClaimableRewardsQuery,variables:{request:r},suspense:e,pause:s})}function zr(){let e=b$1();return a$1(s=>userClaimableRewards(e,s,{requestPolicy:"cache-first"}),[e])}function Zr({suspense:e=false,pause:s=false,...r}){return b({document:SpokeQuery,variables:{request:r},suspense:e,pause:s})}function et({suspense:e=false,pause:s=false,...r}){return b({document:SpokesQuery,variables:{request:r},suspense:e,pause:s})}function st({suspense:e=false,pause:s=false,...r}){return b({document:SpokePositionManagersQuery,variables:{request:r},suspense:e,pause:s})}function rt({suspense:e=false,pause:s=false,...r}){return b({document:SpokeUserPositionManagersQuery,variables:{request:r},suspense:e,pause:s})}function V(e){switch(e.__typename){case "SwapByIntent":case "SwapByIntentWithApprovalRequired":case "SwapByTransaction":return ok(e.quote);case "InsufficientLiquidityError":return err(ValidationError.fromGqlNode(e));default:return err(UnexpectedError.upgradeRequired(`Unsupported swap quote result: ${e.__typename}`))}}function ue(e){return {__typename:"SwapCancelledResult",swapId:e.swapId,createdAt:e.createdAt,cancelledAt:e.cancelledAt,explorerUrl:e.explorerUrl}}function U(e){switch(e.__typename){case "PositionSwapByIntentApprovalsRequired":return ok(e.quote);case "InsufficientLiquidityError":return err(ValidationError.fromGqlNode(e));default:return err(UnexpectedError.upgradeRequired(`Unsupported position swap quote result: ${e.__typename}`))}}function oe(e,s){return "market"in e&&e.market?{market:{...e.market,accuracy:s}}:e}function ie(e,s){return "market"in e&&e.market?{market:{...e.market,accuracy:s}}:e}function pe(e,s){return "market"in e&&e.market?{market:{...e.market,accuracy:s}}:e}function le(e,s){return "market"in e&&e.market?{market:{...e.market,accuracy:s}}:e}function ce(e,s){return "market"in e&&e.market?{market:{...e.market,accuracy:s}}:e}function St({suspense:e=false,pause:s=false,currency:r=DEFAULT_QUERY_OPTIONS.currency,...t}){let n=b$1(),a=b({document:TokenSwapQuoteQuery,variables:{request:oe(t,QuoteAccuracy.Fast),currency:r},selector:V,suspense:e,pause:s,batch:false}),p=b({document:TokenSwapQuoteQuery,variables:{request:oe(t,QuoteAccuracy.Accurate),currency:r},selector:V,suspense:false,pause:s||e&&!a.data,pollInterval:n.context.environment.swapQuoteInterval,batch:false});return p.data?p:a}function dt(e=DEFAULT_QUERY_OPTIONS){let s=b$1();return a$1(r=>tokenSwapQuote(s,r,{currency:e.currency,requestPolicy:"network-only"}).andThen(V),[s,e.currency])}function Rt({suspense:e=false,pause:s=false,...r}){return b({document:SwappableTokensQuery,variables:{request:r},suspense:e,pause:s})}function Ut({suspense:e=false,pause:s=false,currency:r=DEFAULT_QUERY_OPTIONS.currency,timeWindow:t=DEFAULT_QUERY_OPTIONS.timeWindow,...n}){let a=b$1(),[p,S]=useState(false),d=b({document:UserSwapsQuery,variables:{request:n,currency:r,timeWindow:t},suspense:e,pause:s||p,pollInterval:a.context.environment.swapStatusInterval});return useEffect(()=>{d.data&&d.data.items.length>0&&d.data.items.every(be)&&S(true);},[d.data]),d}function be(e){return e.__typename==="SwapFulfilled"||e.__typename==="SwapCancelled"||e.__typename==="SwapExpired"}function wt({suspense:e=false,pause:s=false,currency:r=DEFAULT_QUERY_OPTIONS.currency,timeWindow:t=DEFAULT_QUERY_OPTIONS.timeWindow,...n}){let a=b$1(),[p,S]=useState(false),d=b({document:SwapStatusQuery,variables:{request:n,currency:r,timeWindow:t},suspense:e,pause:s||p,pollInterval:a.context.environment.swapStatusInterval});return useEffect(()=>{d.data&&be(d.data)&&S(true);},[d.data]),d}function ft({suspense:e=false,pause:s=false,currency:r=DEFAULT_QUERY_OPTIONS.currency,...t}){let n=b$1(),a=b({document:SupplySwapQuoteQuery,variables:{request:ie(t,QuoteAccuracy.Fast),currency:r},selector:U,suspense:e,pause:s,batch:false}),p=b({document:SupplySwapQuoteQuery,variables:{request:ie(t,QuoteAccuracy.Accurate),currency:r},selector:U,suspense:false,pause:s||e&&!a.data,pollInterval:n.context.environment.swapQuoteInterval,batch:false});return p.data?p:a}function mt(e=DEFAULT_QUERY_OPTIONS){let s=b$1();return a$1(r=>supplySwapQuote(s,r,{currency:e.currency,requestPolicy:"network-only"}).andThen(U),[s,e.currency])}function Pt({suspense:e=false,pause:s=false,currency:r=DEFAULT_QUERY_OPTIONS.currency,...t}){let n=b$1(),a=b({document:BorrowSwapQuoteQuery,variables:{request:pe(t,QuoteAccuracy.Fast),currency:r},selector:U,suspense:e,pause:s,batch:false}),p=b({document:BorrowSwapQuoteQuery,variables:{request:pe(t,QuoteAccuracy.Accurate),currency:r},selector:U,suspense:false,pause:s||e&&!a.data,pollInterval:n.context.environment.swapQuoteInterval,batch:false});return p.data?p:a}function At(e=DEFAULT_QUERY_OPTIONS){let s=b$1();return a$1(r=>borrowSwapQuote(s,r,{currency:e.currency,requestPolicy:"network-only"}).andThen(U),[s,e.currency])}function H(e){return {with:s=>e.approvals.reduce((r,t)=>r.andThen(n=>s(t,{cancel:b$2}).map(a=>{switch(t.__typename){case "PositionSwapAdapterContractApproval":n.adapterContractSignature=isSignature(a)?a:null;break;case "PositionSwapPositionManagerApproval":n.positionManagerSignature=isSignature(a)?a:null;break}return n})),okAsync({quoteId:e.quote.quoteId,adapterContractSignature:null,positionManagerSignature:null}))}}function B(e,s){return swap(e,{intent:s}).andThen(r=>{switch(r.__typename){case "SwapReceipt":return okAsync(r);default:return UnexpectedError.from(r).asResultAsync()}})}function bt(e){let s=b$1();return a$1(({currency:r=DEFAULT_QUERY_OPTIONS.currency,...t})=>supplySwapQuote(s,t,{currency:r}).andThen(n=>H(n).with(e).andThen(a=>preparePositionSwap(s,a)).andThen(a=>e(a.data,{cancel:b$2}).andThen(d).andThen(p=>B(s,{quoteId:a.newQuoteId,signature:p})))),[s,e])}function gt(e){let s=b$1();return a$1(({currency:r=DEFAULT_QUERY_OPTIONS.currency,...t})=>borrowSwapQuote(s,t,{currency:r}).andThen(n=>H(n).with(e).andThen(a=>preparePositionSwap(s,a)).andThen(a=>e(a.data,{cancel:b$2}).andThen(d).andThen(p=>B(s,{quoteId:a.newQuoteId,signature:p})))),[s,e])}function Tt({suspense:e=false,pause:s=false,currency:r=DEFAULT_QUERY_OPTIONS.currency,...t}){let n=b$1(),a=b({document:RepayWithSupplyQuoteQuery,variables:{request:le(t,QuoteAccuracy.Fast),currency:r},selector:U,suspense:e,pause:s,batch:false}),p=b({document:RepayWithSupplyQuoteQuery,variables:{request:le(t,QuoteAccuracy.Accurate),currency:r},selector:U,suspense:false,pause:s||e&&!a.data,pollInterval:n.context.environment.swapQuoteInterval,batch:false});return p.data?p:a}function xt(e=DEFAULT_QUERY_OPTIONS){let s=b$1();return a$1(r=>repayWithSupplyQuote(s,r,{currency:e.currency,requestPolicy:"network-only"}).andThen(U),[s,e.currency])}function Qt(e){let s=b$1();return a$1(({currency:r=DEFAULT_QUERY_OPTIONS.currency,...t})=>repayWithSupplyQuote(s,t,{currency:r}).andThen(n=>H(n).with(e).andThen(a=>preparePositionSwap(s,a)).andThen(a=>e(a.data,{cancel:b$2}).andThen(d).andThen(p=>B(s,{quoteId:a.newQuoteId,signature:p})))),[s,e])}function ht({suspense:e=false,pause:s=false,currency:r=DEFAULT_QUERY_OPTIONS.currency,...t}){let n=b$1(),a=b({document:WithdrawSwapQuoteQuery,variables:{request:ce(t,QuoteAccuracy.Fast),currency:r},selector:U,suspense:e,pause:s,batch:false}),p=b({document:WithdrawSwapQuoteQuery,variables:{request:ce(t,QuoteAccuracy.Accurate),currency:r},selector:U,suspense:false,pause:s||e&&!a.data,pollInterval:n.context.environment.swapQuoteInterval,batch:false});return p.data?p:a}function kt(e=DEFAULT_QUERY_OPTIONS){let s=b$1();return a$1(r=>withdrawSwapQuote(s,r,{currency:e.currency,requestPolicy:"network-only"}).andThen(U),[s,e.currency])}function qt(e){let s=b$1();return a$1(({currency:r=DEFAULT_QUERY_OPTIONS.currency,...t})=>withdrawSwapQuote(s,t,{currency:r}).andThen(n=>H(n).with(e).andThen(a=>preparePositionSwap(s,a)).andThen(a=>e(a.data,{cancel:b$2}).andThen(d).andThen(p=>B(s,{quoteId:a.newQuoteId,signature:p})))),[s,e])}function vt(e){let s=b$1(),r=useCallback(t=>swap(s,t).andThen(n=>{switch(n.__typename){case "SwapTransactionRequest":return e(n,{cancel:b$2}).andThen(c.tryFrom).andThen(a=>a.wait()).andThen(()=>okAsync(n.orderReceipt));case "SwapReceipt":return okAsync(n)}}),[s,e]);return a$1(({currency:t=DEFAULT_QUERY_OPTIONS.currency,...n})=>tokenSwapQuote(s,n,{currency:t}).andThen(a=>{switch(a.__typename){case "SwapByTransaction":return r({transaction:{quoteId:a.quote.quoteId}});case "SwapByIntent":return prepareTokenSwap(s,{quoteId:a.quote.quoteId}).andThen(p=>e(p.data,{cancel:b$2}).andThen(d).andThen(S=>r({intent:{quoteId:p.newQuoteId,signature:S}})));case "SwapByIntentWithApprovalRequired":if(supportsPermit(a)){let p=a.approvals[0];return e(p,{cancel:b$2}).andThen(S=>isSignature(S)?prepareTokenSwap(s,{quoteId:a.quote.quoteId,permitSig:{deadline:p.bySignature.message.deadline,value:S}}):c.isInstanceOf(S)?S.wait().andThen(()=>prepareTokenSwap(s,{quoteId:a.quote.quoteId})):UnexpectedError.from(S).asResultAsync()).andThen(S=>e(S.data,{cancel:b$2}).andThen(d).andThen(d=>r({intent:{quoteId:S.newQuoteId,signature:d}})))}return a.approvals.reduce((p,S)=>p.andThen(()=>e({...S,bySignature:null},{cancel:b$2}).andThen(c.tryFrom).andThen(d=>d.wait())),okAsync(void 0)).andThen(()=>prepareTokenSwap(s,{quoteId:a.quote.quoteId})).andThen(p=>e(p.data,{cancel:b$2})).andThen(d).andThen(p=>r({intent:{quoteId:a.quote.quoteId,signature:p}}));default:never(`Unsupported swap quote result: ${a.__typename}. To be removed from API soon.`);}}),[s,e,r])}var v=class extends ResultAwareError{name="CannotCancelSwapError"};function Et(e){let s=b$1();return a$1(r=>swapStatus(s,{id:r.id}).andThen(t=>{if(t===null)return UnexpectedError.from("Swap not found").asResultAsync();switch(t.__typename){case "SwapOpen":case "SwapPendingSignature":return prepareSwapCancel(s,r).andThen(n=>e(n.data,{cancel:b$2})).andThen(d).andThen(n=>cancelSwap(s,{intent:{id:r.id,signature:n}})).andThen(n=>n.__typename==="SwapCancelledResult"?okAsync(n):e(n,{cancel:b$2}).andThen(c.tryFrom).andThen(a=>a.wait()).andThen(()=>swapStatus(s,{id:r.id})).andThen(a=>a?.__typename==="SwapCancelled"?okAsync(ue(a)):new v("Failed to cancel swap").asResultAsync()));case "SwapCancelled":return okAsync(ue(t));case "SwapExpired":return new v("Swap cannot longer be cancelled").asResultAsync();default:return UnexpectedError.upgradeRequired(`Unsupported swap status: ${t.__typename}`).asResultAsync()}}),[s,e])}function C(e,s){let{chainId:r,spoke:t}=decodeReserveId(s.reserve),n={chainId:r,address:t};return ResultAsync.combine([O(e,s.sender,n),_(e,s.sender,n),N(e,[s.reserve]),D(e,n),X(e,s.sender),I(e,s.sender),W(e,s.sender),M(e,r)])}function Os(e,s){return {deadline:s.message.deadline,value:e}}function G(e,s){return e.approvals.reduce((r,t)=>r.andThen(()=>s({...t,bySignature:null},{cancel:b$2}).andThen(c.tryFrom).andThen(n=>n.wait())),okAsync(void 0)).map(()=>e.originalTransaction)}function Y(e,s,r){let t=e.approvals[0];return s(t,{cancel:b$2}).andThen(n=>isSignature(n)?r(Os(n,t.bySignature)).map(expectTypename("TransactionRequest")):n.wait().map(()=>e.originalTransaction))}function Dt(e){let s=b$1();return a$1(r=>supply(s,r).andThen(t=>{switch(t.__typename){case "TransactionRequest":return e(t,{cancel:b$2});case "Erc20ApprovalRequired":return supportsPermit(t)?Y(t,e,n=>supply(s,Ns(r,n))).andThen(n=>e(n,{cancel:b$2})):G(t,e).andThen(n=>e(n,{cancel:b$2}));case "PreContractActionRequired":return e(t,{cancel:b$2}).andThen(c.tryFrom).andThen(n=>n.wait()).andThen(()=>e(t.originalTransaction,{cancel:b$2}));case "InsufficientBalanceError":return errAsync(ValidationError.fromGqlNode(t))}}).andThen(c.tryFrom).andThen(t=>t.wait()).andThen(s.waitForTransaction).andThrough(()=>C(s,r)),[s,e])}function Ns(e,s){return "erc20"in e.amount?{...e,amount:{erc20:{...e.amount.erc20,permitSig:s}}}:e}function Mt(e){let s=b$1();return a$1(r=>borrow(s,r).andThen(t=>{switch(t.__typename){case "TransactionRequest":return e(t,{cancel:b$2});case "PreContractActionRequired":return e(t,{cancel:b$2}).andThen(n=>n.wait()).andThen(()=>e(t.originalTransaction,{cancel:b$2}));case "InsufficientBalanceError":return errAsync(ValidationError.fromGqlNode(t));case "Erc20ApprovalRequired":return UnexpectedError$1.from(t).asResultAsync()}}).andThen(t=>t.wait()).andThen(s.waitForTransaction).andThrough(()=>C(s,r)),[s,e])}function Ft(e){let s=b$1();return a$1(r=>repay(s,r).andThen(t=>{switch(t.__typename){case "TransactionRequest":return e(t,{cancel:b$2});case "Erc20ApprovalRequired":return supportsPermit(t)?Y(t,e,n=>repay(s,_s(r,n))).andThen(n=>e(n,{cancel:b$2})):G(t,e).andThen(n=>e(n,{cancel:b$2}));case "PreContractActionRequired":return e(t,{cancel:b$2}).andThen(c.tryFrom).andThen(n=>n.wait()).andThen(()=>e(t.originalTransaction,{cancel:b$2}));case "InsufficientBalanceError":return errAsync(ValidationError.fromGqlNode(t))}}).andThen(c.tryFrom).andThen(t=>t.wait()).andThen(s.waitForTransaction).andThrough(()=>C(s,r)),[s,e])}function _s(e,s){return "erc20"in e.amount?{...e,amount:{erc20:{...e.amount.erc20,permitSig:s}}}:e}function Lt(e){let s=b$1();return a$1(r=>withdraw(s,r).andThen(t=>{switch(t.__typename){case "TransactionRequest":return e(t,{cancel:b$2});case "PreContractActionRequired":return e(t,{cancel:b$2}).andThen(n=>n.wait()).andThen(()=>e(t.originalTransaction,{cancel:b$2}));case "InsufficientBalanceError":return errAsync(ValidationError.fromGqlNode(t));case "Erc20ApprovalRequired":return UnexpectedError$1.from(t).asResultAsync()}}).andThen(t=>t.wait()).andThen(s.waitForTransaction).andThrough(()=>C(s,r)),[s,e])}function Vt(e){let s=b$1();return a$1(r=>renounceSpokeUserPositionManager(s,r).andThen(t=>e(t,{cancel:b$2})).andThen(t=>t.wait()).andThen(s.waitForTransaction).andThrough(()=>F(s,r.spoke)),[s,e])}function jt(e){let s=b$1();return a$1(r=>updateUserPositionConditions(s,r).andThen(t=>e(t,{cancel:b$2})).andThen(t=>t.wait()).andThen(s.waitForTransaction).andThrough(()=>Z(s,r.userPositionId)),[s,e])}function Gt(e){let s=b$1();return a$1(r=>{let t=r.changes.map(a=>a.reserve),n=t.map(a=>decodeReserveId(a));return setUserSuppliesAsCollateral(s,r).andThen(a=>e(a,{cancel:b$2})).andThen(a=>a.wait()).andThen(s.waitForTransaction).andThrough(()=>ResultAsync.combine([I(s,r.sender),W(s,r.sender),...n.flatMap(({chainId:a,spoke:p})=>[O(s,r.sender,{chainId:a,address:p}),_(s,r.sender,{chainId:a,address:p}),D(s,{chainId:a,address:p})]),N(s,t),...n.map(({chainId:a})=>M(s,a))]))},[s,e])}function Yt(e){let s=b$1();return a$1(r=>liquidatePosition(s,r).andThen(t=>{switch(t.__typename){case "TransactionRequest":return e(t,{cancel:b$2});case "Erc20ApprovalRequired":return supportsPermit(t)?Y(t,e,n=>liquidatePosition(s,Ds(r))).andThen(n=>e(n,{cancel:b$2})):G(t,e).andThen(n=>e(n,{cancel:b$2}));case "PreContractActionRequired":return e(t,{cancel:b$2}).andThen(c.tryFrom).andThen(n=>n.wait()).andThen(()=>e(t.originalTransaction,{cancel:b$2}));case "InsufficientBalanceError":return errAsync(ValidationError.fromGqlNode(t))}}).andThen(c.tryFrom).andThen(t=>t.wait()).andThen(s.waitForTransaction),[s,e])}function Ds(e,s){return e}function $t(e){let s=b$1();return a$1(r=>setSpokeUserPositionManager(s,r).andThen(t=>e(t,{cancel:b$2})).andThen(t=>t.wait()).andThen(s.waitForTransaction).andThrough(()=>F(s,r.spoke)),[s,e])}function zt(e=DEFAULT_QUERY_OPTIONS){let s=b$1();return a$1(r=>preview(s,r,{currency:e.currency,requestPolicy:"network-only"}),[s,e.currency])}function Jt({suspense:e=false,pause:s=false,currency:r=DEFAULT_QUERY_OPTIONS.currency,...t}){return b({document:PreviewQuery,variables:{request:t,currency:r},suspense:e,pause:s})}function Kt({suspense:e=false,pause:s=false,currency:r=DEFAULT_QUERY_OPTIONS.currency,timeWindow:t=DEFAULT_QUERY_OPTIONS.timeWindow,...n}){return b({document:ActivitiesQuery,variables:{request:n,currency:r,timeWindow:t},suspense:e,pause:s})}function Xt(e=DEFAULT_QUERY_OPTIONS){let s=b$1();return a$1(r=>activities(s,r,{currency:e.currency??DEFAULT_QUERY_OPTIONS.currency,timeWindow:e.timeWindow??DEFAULT_QUERY_OPTIONS.timeWindow,requestPolicy:"cache-first"}),[s,e.currency,e.timeWindow])}function Zt(e){let s=b$1();return a$1(r=>claimRewards(s,r).andThen(t=>e(t,{cancel:b$2})).andThen(c.tryFrom).andThen(t=>t.wait()).map(t=>transactionReceipt(t.txHash)),[s,e])}function un({suspense:e=false,pause:s=false,currency:r=DEFAULT_QUERY_OPTIONS.currency,timeWindow:t=DEFAULT_QUERY_OPTIONS.timeWindow,...n}){return b({document:UserSuppliesQuery,variables:{request:n,currency:r,timeWindow:t},suspense:e,pause:s})}function on(e=DEFAULT_QUERY_OPTIONS){let s=b$1();return a$1(r=>userSupplies(s,r,{currency:e.currency??DEFAULT_QUERY_OPTIONS.currency,timeWindow:e.timeWindow??DEFAULT_QUERY_OPTIONS.timeWindow,requestPolicy:"cache-first"}),[s,e.currency,e.timeWindow])}function pn({suspense:e=false,pause:s=false,currency:r=DEFAULT_QUERY_OPTIONS.currency,timeWindow:t=DEFAULT_QUERY_OPTIONS.timeWindow,...n}){return b({document:UserBorrowsQuery,variables:{request:n,currency:r,timeWindow:t},suspense:e,pause:s})}function ln(e=DEFAULT_QUERY_OPTIONS){let s=b$1();return a$1(r=>userBorrows(s,r,{currency:e.currency??DEFAULT_QUERY_OPTIONS.currency,timeWindow:e.timeWindow??DEFAULT_QUERY_OPTIONS.timeWindow,requestPolicy:"cache-first"}),[s,e.currency,e.timeWindow])}function cn({suspense:e=false,pause:s=false,currency:r=DEFAULT_QUERY_OPTIONS.currency,timeWindow:t=DEFAULT_QUERY_OPTIONS.timeWindow,...n}){return b({document:UserSummaryQuery,variables:{request:n,currency:r,timeWindow:t},suspense:e,pause:s})}function yn({suspense:e=false,pause:s=false,currency:r=DEFAULT_QUERY_OPTIONS.currency,timeWindow:t=DEFAULT_QUERY_OPTIONS.timeWindow,...n}){return b({document:UserPositionsQuery,variables:{request:n,currency:r,timeWindow:t},suspense:e,pause:s})}function Sn(e=DEFAULT_QUERY_OPTIONS){let s=b$1();return a$1(r=>userPositions(s,r,{currency:e.currency,timeWindow:e.timeWindow,requestPolicy:"cache-first"}),[s,e.currency,e.timeWindow])}function dn({suspense:e=false,pause:s=false,currency:r=DEFAULT_QUERY_OPTIONS.currency,timeWindow:t=DEFAULT_QUERY_OPTIONS.timeWindow,...n}){return b({document:UserPositionQuery,variables:{request:n,currency:r,timeWindow:t},suspense:e,pause:s})}function Rn({suspense:e=false,pause:s=false,currency:r=DEFAULT_QUERY_OPTIONS.currency,...t}){return b({document:UserBalancesQuery,variables:{request:t,currency:r},suspense:e,pause:s})}function Un({suspense:e=false,pause:s=false,...r}){return b({document:UserRiskPremiumBreakdownQuery,variables:{request:r},suspense:e,pause:s,batch:false})}function wn(e=DEFAULT_QUERY_OPTIONS){let s=b$1();return a$1(r=>userBalances(s,r,{currency:e.currency,requestPolicy:"cache-first"}),[s,e.currency])}function fn({suspense:e=false,pause:s=false,currency:r=DEFAULT_QUERY_OPTIONS.currency,...t}){return b({document:UserSummaryHistoryQuery,variables:{request:t,currency:r},suspense:e,pause:s,batch:false})}export{or as AaveProvider,v as CannotCancelSwapError,Kt as useActivities,Xt as useActivitiesAction,Qr as useAsset,qr as useAssetBorrowHistory,hr as useAssetPriceHistory,kr as useAssetSupplyHistory,Mt as useBorrow,Mr as useBorrowApyHistory,gt as useBorrowSwap,Pt as useBorrowSwapQuote,At as useBorrowSwapQuoteAction,Et as useCancelSwap,Zt as useClaimRewards,wr as useHub,mr as useHubAssets,Pr as useHubSummaryHistory,fr as useHubs,Ar as useHubsAction,Yt as useLiquidatePosition,Jt as usePreview,zt as usePreviewAction,vr as useProtocolHistory,Vt as useRenounceSpokeUserPositionManager,Ft as useRepay,Qt as useRepayWithSupply,Tt as useRepayWithSupplyQuote,xt as useRepayWithSupplyQuoteAction,Or as useReserve,Nr as useReserveAction,_r as useReserves,Dr as useReservesAction,$t as useSetSpokeUserPositionManager,Gt as useSetUserSuppliesAsCollateral,Zr as useSpoke,st as useSpokePositionManagers,rt as useSpokeUserPositionManagers,et as useSpokes,Dt as useSupply,Fr as useSupplyApyHistory,bt as useSupplySwap,ft as useSupplySwapQuote,mt as useSupplySwapQuoteAction,wt as useSwapStatus,Rt as useSwappableTokens,vt as useTokenSwap,St as useTokenSwapQuote,dt as useTokenSwapQuoteAction,jt as useUpdateUserPositionConditions,Rn as useUserBalances,wn as useUserBalancesAction,pn as useUserBorrows,ln as useUserBorrowsAction,$r as useUserClaimableRewards,zr as useUserClaimableRewardsAction,dn as useUserPosition,yn as useUserPositions,Sn as useUserPositionsAction,Un as useUserRiskPremiumBreakdown,cn as useUserSummary,fn as useUserSummaryHistory,un as useUserSupplies,on as useUserSuppliesAction,Ut as useUserSwaps,Lt as useWithdraw,qt as useWithdrawSwap,ht as useWithdrawSwapQuote,kt as useWithdrawSwapQuoteAction};//# sourceMappingURL=index.js.map
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
package/dist/privy.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
'use strict';var client=require('@aave/client'),viem=require('@aave/client/viem'),types=require('@aave/types'),reactAuth=require('@privy-io/react-auth'),viem$1=require('viem'),
|
|
1
|
+
'use strict';var client=require('@aave/client'),viem=require('@aave/client/viem'),types=require('@aave/types'),reactAuth=require('@privy-io/react-auth'),viem$1=require('viem'),k=require('react'),core=require('@aave/core'),actions=require('@aave/client/actions');require('@aave/graphql'),require('urql');function _interopDefault(e){return e&&e.__esModule?e:{default:e}}var k__default=/*#__PURE__*/_interopDefault(k);var p={Idle:()=>({called:false,loading:false,data:void 0,error:void 0}),Loading:e=>({called:true,loading:true,data:e,error:void 0}),Success:e=>({called:true,loading:false,data:e,error:void 0}),Failed:e=>({called:true,loading:false,data:void 0,error:e})};function u(e,t){let[n,s]=k.useState(p.Idle()),r=k.useRef(false),a=k.useRef(true);k.useEffect(()=>()=>{a.current=false;},[]);let i=k.useCallback(e,t);return [k.useCallback(A=>{types.invariant(a.current,"Cannot execute a task on an unmounted component."),types.invariant(!r.current,"Cannot execute a task while another is in progress."),r.current=true;let d;s(o=>(d=o,{called:true,loading:true,data:o.data,error:void 0}));try{let o=i(A);return o.match(l=>{r.current=!1,s(p.Success(l));},l=>{r.current=!1,s(p.Failed(l));}),o}catch(o){throw r.current=false,s(types.nonNullable(d)),o}},[i]),n]}var c=class e{constructor(t){this.wait=t;}static isInstanceOf(t){return t instanceof e}static tryFrom(t){return e.isInstanceOf(t)?types.okAsync(t):core.UnexpectedError.from(t).asResultAsync()}};var P=k__default.default.createContext(null);function f(){let e=k.useContext(P);return types.invariant(e,"Could not find Aave SDK context, ensure your code is wrapped in a <AaveProvider>"),e}function m(){let e=f();return u(t=>actions.chain(e,t,{batch:false,requestPolicy:"cache-first"}),[e])}function $(e){if(e&&typeof e=="object"){if("code"in e&&e.code===4001)return true;if("message"in e&&typeof e.message=="string"){let t=e.message.toLowerCase();return t.includes("user rejected")||t.includes("user denied")||t.includes("rejected the request")}}return false}function Ae(){let{wallets:e}=reactAuth.useWallets(),[t]=m();return u(n=>{let s=e.find(r=>r.address===n.from);return types.invariant(s,`Expected a connected wallet with address ${n.from} to be found.`),t({chainId:n.chainId}).map(r=>(types.invariant(r,`Chain ${n.chainId} is not supported`),viem.toViemChain(r))).andThen(r=>types.ResultAsync.fromPromise(s.switchChain(n.chainId),a=>client.UnexpectedError.from(a)).map(()=>s.getEthereumProvider()).map(a=>viem$1.createWalletClient({account:n.from,chain:r,transport:viem$1.custom(a)})).andThen(a=>viem.sendTransaction(a,n).map(i=>new c(()=>viem.waitForTransactionResult(a,n,i)))))},[e,t])}function Re(){let{signTypedData:e}=reactAuth.useSignTypedData();return u(t=>types.ResultAsync.fromPromise(e({domain:t.domain,types:t.types,primaryType:t.primaryType,message:t.message}),n=>$(n)?client.CancelError.from(n):client.SigningError.from(n)).map(({signature:n})=>types.signatureFrom(n)),[e])}exports.useSendTransaction=Ae;exports.useSignTypedData=Re;//# sourceMappingURL=privy.cjs.map
|
|
2
2
|
//# sourceMappingURL=privy.cjs.map
|
package/dist/privy.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/helpers/tasks.ts","../src/helpers/writes.ts","../src/context.tsx","../src/misc.ts","../src/privy.ts"],"names":["AsyncTaskState","data","error","useAsyncTask","handler","deps","state","setState","useState","loadingRef","useRef","handle","useCallback","input","invariant","previousState","result","value","nonNullable","PendingTransaction","_PendingTransaction","wait","okAsync","UnexpectedError","AaveContext","React","useAaveClient","client","useContext","useChainAction","request","fetchChain","isUserRejection","err","msg","useSendTransaction","wallets","useWallets","wallet","chain","toViemChain","ResultAsync","provider","createWalletClient","custom","walletClient","sendTransaction","hash","waitForTransactionResult","useSignTypedData","privySignTypedData","usePrivySignTypedData","typedData","CancelError","SigningError","signature","signatureFrom"],"mappings":"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","file":"privy.cjs","sourcesContent":["import { invariant, nonNullable, type ResultAsync } from '@aave/types';\nimport { type DependencyList, useCallback, useRef, useState } from 'react';\n\n/**\n * An async task is a function that can be executed multiple times and that can be in a pending state.\n *\n * @internal\n */\nexport type AsyncTask<TInput, TResult extends ResultAsync<unknown, unknown>> = (\n input: TInput,\n) => TResult;\n\n/**\n * The initial state of a async task.\n */\nexport type AsyncTaskIdle = {\n called: boolean;\n loading: false;\n data: undefined;\n error: undefined;\n};\n\n/**\n * The state of a async task during the loading.\n */\nexport type AsyncTaskLoading<TData> = {\n called: true;\n loading: true;\n data: TData | undefined;\n error: undefined;\n};\n\n/**\n * The state of a async task after a successful call.\n */\nexport type AsyncTaskSuccess<TData> = {\n called: true;\n loading: false;\n data: TData;\n error: undefined;\n};\n\n/**\n * The state of a async task after a failed call.\n */\nexport type AsyncTaskError<TError> = {\n called: true;\n loading: false;\n data: undefined;\n error: TError;\n};\n\n/**\n * The possible statuses of a async task.\n */\nexport type AsyncTaskState<TData, TError> =\n | AsyncTaskIdle\n | AsyncTaskLoading<TData>\n | AsyncTaskSuccess<TData>\n | AsyncTaskError<TError>;\n\nconst AsyncTaskState = {\n Idle: <TData, TError>(): AsyncTaskState<TData, TError> => ({\n called: false,\n loading: false,\n data: undefined,\n error: undefined,\n }),\n Loading: <TData, TError>(data?: TData): AsyncTaskState<TData, TError> => ({\n called: true,\n loading: true,\n data,\n error: undefined,\n }),\n Success: <TData, TError>(data: TData): AsyncTaskState<TData, TError> => ({\n called: true,\n loading: false,\n data,\n error: undefined,\n }),\n Failed: <TData, TError>(error: TError): AsyncTaskState<TData, TError> => ({\n called: true,\n loading: false,\n data: undefined,\n error,\n }),\n};\n\n/**\n * A async task React Hook is a lightweight wrapper for an asynchronous function.\n * It allows tracking of the task's execution status and provides access to the\n * last error that occurred during the task's execution, if any.\n *\n * ```ts\n * const [execute, { called, loading, data, error }]: UseAsyncTask<TData, TError, TInput> = useAnyAsyncTask();\n *\n * if (!called) {\n * // data === undefined\n * // error === undefined\n * return <p>Click the button to execute the task</p>;\n * }\n *\n * if (loading) {\n * // data === undefined on first call\n * // data === TData from previous successful call\n * // error === undefined\n * return <Loader />;\n * }\n *\n * if (error) {\n * // data === undefined\n * // error === TError\n * return <p>Something went wrong: {error.message}</p>;\n * }\n *\n * // called === true\n * // data === TData\n * // error === undefined\n * return <p>Task completed: {data}</p>;\n * ```\n */\nexport type UseAsyncTask<TInput, TValue, TError> = [\n AsyncTask<TInput, ResultAsync<TValue, TError>>,\n AsyncTaskState<TValue, TError>,\n];\n\n/**\n * @internal\n */\nexport function useAsyncTask<\n TInput,\n TValue,\n TError,\n TResult extends ResultAsync<TValue, TError>,\n>(\n handler: AsyncTask<TInput, TResult>,\n deps: DependencyList,\n): UseAsyncTask<TInput, TValue, TError> {\n const [state, setState] = useState(AsyncTaskState.Idle<TValue, TError>());\n const loadingRef = useRef(false);\n // biome-ignore lint/correctness/useExhaustiveDependencies: useAsyncTask is a low-level hook\n const handle = useCallback(handler, deps);\n\n const execute = useCallback(\n (input: TInput) => {\n invariant(\n !loadingRef.current,\n 'Cannot execute a task while another is in progress.',\n );\n\n loadingRef.current = true;\n\n let previousState: AsyncTaskState<TValue, TError> | undefined;\n setState((state) => {\n previousState = state;\n return {\n called: true,\n loading: true,\n data: state.data,\n error: undefined,\n };\n });\n\n try {\n const result = handle(input);\n\n result.match(\n (value) => {\n loadingRef.current = false;\n setState(AsyncTaskState.Success(value));\n },\n (error) => {\n loadingRef.current = false;\n setState(AsyncTaskState.Failed(error));\n },\n );\n\n return result;\n } catch (error) {\n loadingRef.current = false;\n setState(nonNullable(previousState));\n throw error;\n }\n },\n [handle],\n );\n\n return [execute, state];\n}\n","import type { TransactionResult } from '@aave/client';\nimport {\n CancelError,\n type SigningError,\n type TimeoutError,\n type TransactionError,\n UnexpectedError,\n} from '@aave/core';\nimport type { TransactionRequest } from '@aave/graphql';\nimport type { ResultAsync, Signature } from '@aave/types';\nimport { isSignature, okAsync } from '@aave/types';\nimport type { UseAsyncTask } from './tasks';\n\n/**\n * The errors that could occur in the early stage of sending a transaction.\n */\nexport type SendTransactionError = CancelError | SigningError | UnexpectedError;\n\nexport type CancelOperation = (\n message: string,\n) => ResultAsync<never, CancelError>;\n\n/**\n * @internal\n */\nexport const cancel: CancelOperation = (message: string) =>\n CancelError.from(message).asResultAsync();\n\nexport type TransactionHandlerOptions = {\n cancel: CancelOperation;\n};\n\n/**\n * The errors that could occur in the late stages of a transaction.\n */\nexport type PendingTransactionError =\n | CancelError\n | TimeoutError\n | TransactionError\n | UnexpectedError;\n\nexport class PendingTransaction {\n constructor(\n /**\n * @internal Do NOT rely on this method. It's used internally by the SDK and may be subject to breaking changes.\n */\n public readonly wait: () => ResultAsync<\n TransactionResult,\n PendingTransactionError\n >,\n ) {}\n\n /**\n * @internal\n */\n static isInstanceOf(value: unknown): value is PendingTransaction {\n return value instanceof PendingTransaction;\n }\n\n /**\n * Narrows a value to PendingTransaction.\n * Only accepts types that include PendingTransaction in the union.\n *\n * @internal\n */\n static tryFrom<T>(\n value: PendingTransaction extends T ? T : never,\n ): ResultAsync<PendingTransaction, UnexpectedError> {\n if (PendingTransaction.isInstanceOf(value)) {\n return okAsync(value);\n }\n return UnexpectedError.from(value).asResultAsync();\n }\n}\n\nexport type UseSendTransactionResult = UseAsyncTask<\n TransactionRequest,\n PendingTransaction,\n SendTransactionError\n>;\n\n/**\n * The Aave execution plan handler\n */\nexport type ExecutionPlanHandler<\n T,\n R extends Signature | PendingTransaction,\n> = (\n plan: T,\n options: TransactionHandlerOptions,\n) => ResultAsync<R, SendTransactionError>;\n\n/**\n * Tries to create a Signature from an unknown value.\n *\n * @internal\n */\nexport function trySignatureFrom(\n value: unknown,\n): ResultAsync<Signature, UnexpectedError> {\n if (isSignature(value)) {\n return okAsync(value);\n }\n return UnexpectedError.from(\n `Expected Signature, but got ${String(value)}`,\n ).asResultAsync();\n}\n","import type { AaveClient } from '@aave/client';\nimport { invariant } from '@aave/types';\nimport React, { type ReactNode, useContext } from 'react';\nimport { Provider as UrqlProvider } from 'urql';\n\nconst AaveContext = React.createContext<AaveClient | null>(null);\n\n/**\n * @internal\n */\nexport type AaveContextProviderProps = {\n children: ReactNode;\n client: AaveClient;\n};\n\n/**\n * @internal\n */\nexport function AaveContextProvider({\n children,\n client,\n}: AaveContextProviderProps) {\n return (\n <AaveContext.Provider value={client}>\n <UrqlProvider value={client.urql}>{children}</UrqlProvider>\n </AaveContext.Provider>\n );\n}\n\n/**\n * @internal\n */\nexport function useAaveClient(): AaveClient {\n const client = useContext(AaveContext);\n\n invariant(\n client,\n 'Could not find Aave SDK context, ensure your code is wrapped in a <AaveProvider>',\n );\n\n return client;\n}\n","import type { CurrencyQueryOptions } from '@aave/client';\nimport { exchangeRate, chain as fetchChain } from '@aave/client/actions';\nimport type { UnexpectedError } from '@aave/core';\nimport type { Chain, ExchangeAmount, ExchangeRateRequest } from '@aave/graphql';\nimport {\n type ActivityItem,\n ChainQuery,\n type ChainRequest,\n ChainsFilter,\n ChainsQuery,\n type ChainsRequest,\n ExchangeRateQuery,\n type NativeAmount,\n type PreviewAction,\n} from '@aave/graphql';\nimport type { NullishDeep, Prettify } from '@aave/types';\nimport { useAaveClient } from './context';\nimport {\n type Pausable,\n type PausableReadResult,\n type PausableSuspenseResult,\n type ReadResult,\n type Suspendable,\n type SuspendableResult,\n type SuspenseResult,\n useSuspendableQuery,\n} from './helpers';\nimport { type UseAsyncTask, useAsyncTask } from './helpers/tasks';\n\nexport type UseChainArgs = ChainRequest;\n\n/**\n * Fetch a specific chain by chain ID.\n *\n * This signature supports React Suspense:\n *\n * ```tsx\n * const { data } = useChain({\n * chainId: chainId(1),\n * suspense: true,\n * });\n * // data will be Chain | null\n * ```\n */\nexport function useChain(\n args: UseChainArgs & Suspendable,\n): SuspenseResult<Chain | null>;\n/**\n * Fetch a specific chain by chain ID.\n *\n * Pausable suspense mode.\n *\n * ```tsx\n * const { data } = useChain({\n * chainId: chainId(1),\n * suspense: true,\n * pause: true,\n * });\n * ```\n */\nexport function useChain(\n args: Pausable<UseChainArgs> & Suspendable,\n): PausableSuspenseResult<Chain | null>;\n/**\n * Fetch a specific chain by chain ID.\n *\n * ```tsx\n * const { data, error, loading } = useChain({\n * chainId: chainId(1),\n * });\n * // data will be Chain | null\n * ```\n */\nexport function useChain(args: UseChainArgs): ReadResult<Chain | null>;\n/**\n * Fetch a specific chain by chain ID.\n *\n * Pausable loading state mode.\n *\n * ```tsx\n * const { data, error, loading, paused } = useChain({\n * chainId: chainId(1),\n * pause: true,\n * });\n * ```\n */\nexport function useChain(\n args: Pausable<UseChainArgs>,\n): PausableReadResult<Chain | null>;\n\nexport function useChain({\n suspense = false,\n pause = false,\n ...request\n}: NullishDeep<UseChainArgs> & {\n suspense?: boolean;\n pause?: boolean;\n}): SuspendableResult<Chain | null, UnexpectedError> {\n return useSuspendableQuery({\n document: ChainQuery,\n variables: {\n request,\n },\n suspense,\n pause,\n });\n}\n\n/**\n * Low-level hook to execute a {@link chain} action directly.\n *\n * @experimental This hook is experimental and may be subject to breaking changes.\n * @remarks\n * This hook **does not** actively watch for updated data on the chain.\n * Use this hook to retrieve data on demand as part of a larger workflow\n * (e.g., in an event handler in order to move to the next step).\n *\n * ```ts\n * const [execute, { called, data, error, loading }] = useChainAction();\n *\n * // …\n *\n * const result = await execute({\n * chainId: chainId(1),\n * });\n *\n * if (result.isOk()) {\n * console.log(result.value); // Chain | null\n * } else {\n * console.error(result.error);\n * }\n * ```\n */\nexport function useChainAction(): UseAsyncTask<\n ChainRequest,\n Chain | null,\n UnexpectedError\n> {\n const client = useAaveClient();\n\n return useAsyncTask(\n (request: ChainRequest) =>\n fetchChain(client, request, {\n batch: false,\n requestPolicy: 'cache-first',\n }),\n [client],\n );\n}\n\nexport type UseChainsArgs = ChainsRequest;\n/**\n * Fetches the list of supported chains.\n *\n * This signature supports React Suspense:\n *\n * ```tsx\n * const { data } = useChains({\n * query: { filter: ChainsFilter.ALL },\n * suspense: true,\n * });\n * ```\n */\nexport function useChains(\n args: UseChainsArgs & Suspendable,\n): SuspenseResult<Chain[]>;\n/**\n * Fetches the list of supported chains.\n *\n * Pausable suspense mode.\n *\n * ```tsx\n * const { data } = useChains({\n * query: { filter: ChainsFilter.ALL },\n * suspense: true,\n * pause: true,\n * });\n * ```\n */\nexport function useChains(\n args: Pausable<UseChainsArgs> & Suspendable,\n): PausableSuspenseResult<Chain[]>;\n/**\n * Fetches the list of supported chains.\n *\n * ```tsx\n * const { data, error, loading } = useChains({\n * query: { filter: ChainsFilter.ALL },\n * });\n * ```\n */\nexport function useChains(args?: UseChainsArgs): ReadResult<Chain[]>;\n/**\n * Fetches the list of supported chains.\n *\n * Pausable loading state mode.\n *\n * ```tsx\n * const { data, error, loading, paused } = useChains({\n * query: { filter: ChainsFilter.ALL },\n * pause: true,\n * });\n * ```\n */\nexport function useChains(\n args?: Pausable<UseChainsArgs>,\n): PausableReadResult<Chain[]>;\n\nexport function useChains(\n {\n suspense = false,\n pause = false,\n ...request\n }: NullishDeep<UseChainsArgs> & {\n suspense?: boolean;\n pause?: boolean;\n } = { query: { filter: ChainsFilter.ALL } },\n): SuspendableResult<Chain[], UnexpectedError> {\n return useSuspendableQuery({\n document: ChainsQuery,\n variables: { request },\n suspense,\n pause,\n });\n}\n\n/**\n * Fetches exchange rates between tokens and fiat currencies.\n *\n * ```tsx\n * const [getExchangeRate, gettingRate] = useExchangeRateAction();\n *\n * const loading = gettingRate.loading;\n * const error = gettingRate.error;\n *\n * // …\n *\n * const result = await getExchangeRate({\n * from: { erc20: { chainId: chainId(1), address: evmAddress('0xA0b86a33E6...') } },\n * to: Currency.Usd,\n * });\n *\n * if (result.isErr()) {\n * console.error(result.error);\n * return;\n * }\n *\n * console.log('Exchange rate:', result.value);\n * ```\n */\nexport function useExchangeRateAction(): UseAsyncTask<\n ExchangeRateRequest,\n ExchangeAmount,\n UnexpectedError\n> {\n const client = useAaveClient();\n\n return useAsyncTask(\n (request: ExchangeRateRequest) =>\n exchangeRate(client, request, { requestPolicy: 'network-only' }),\n [client],\n );\n}\n\nexport type UseExchangeRateArgs = ExchangeRateRequest;\n\n/**\n * Fetches exchange rates between tokens and fiat currencies with automatic polling.\n *\n * This signature supports React Suspense:\n *\n * ```tsx\n * const { data } = useExchangeRate({\n * from: {\n * erc20: {\n * chainId: chainId(1),\n * address: evmAddress('0xA0b86a33E6...')\n * }\n * },\n * to: Currency.Usd,\n * suspense: true,\n * });\n * ```\n */\nexport function useExchangeRate(\n args: UseExchangeRateArgs & Suspendable,\n): SuspenseResult<ExchangeAmount>;\n/**\n * Fetches exchange rates between tokens and fiat currencies with automatic polling.\n *\n * Pausable suspense mode.\n *\n * ```tsx\n * const { data } = useExchangeRate({\n * from: {\n * erc20: {\n * chainId: chainId(1),\n * address: evmAddress('0xA0b86a33E6...')\n * }\n * },\n * to: Currency.Usd,\n * suspense: true,\n * pause: true,\n * });\n * ```\n */\nexport function useExchangeRate(\n args: Pausable<UseExchangeRateArgs> & Suspendable,\n): PausableSuspenseResult<ExchangeAmount>;\n/**\n * Fetches exchange rates between tokens and fiat currencies with automatic polling.\n *\n * ```tsx\n * const { data, error, loading } = useExchangeRate({\n * from: {\n * erc20: {\n * chainId: chainId(1),\n * address: evmAddress('0xA0b86a33E6...')\n * }\n * },\n * to: Currency.Usd,\n * });\n *\n * <Component value={somewhere} fxRate={data} />\n * ```\n */\nexport function useExchangeRate(\n args: UseExchangeRateArgs,\n): ReadResult<ExchangeAmount>;\n/**\n * Fetches exchange rates between tokens and fiat currencies with automatic polling.\n *\n * Pausable loading state mode.\n *\n * ```tsx\n * const { data, error, loading, paused } = useExchangeRate({\n * from: {\n * erc20: {\n * chainId: chainId(1),\n * address: evmAddress('0xA0b86a33E6...')\n * }\n * },\n * to: Currency.Usd,\n * pause: true,\n * });\n * ```\n */\nexport function useExchangeRate(\n args: Pausable<UseExchangeRateArgs>,\n): PausableReadResult<ExchangeAmount>;\n\nexport function useExchangeRate({\n suspense = false,\n pause = false,\n ...request\n}: NullishDeep<UseExchangeRateArgs> & {\n suspense?: boolean;\n pause?: boolean;\n}): SuspendableResult<ExchangeAmount, UnexpectedError> {\n const client = useAaveClient();\n\n return useSuspendableQuery({\n document: ExchangeRateQuery,\n variables: { request },\n suspense,\n pause,\n pollInterval: request.at\n ? 0\n : client.context.environment.exchangeRateInterval,\n });\n}\n\nexport type UseNetworkFeeRequestQuery =\n | {\n activity: ActivityItem;\n }\n | {\n estimate: PreviewAction;\n };\n\nexport type UseNetworkFeeArgs = Prettify<\n {\n query: UseNetworkFeeRequestQuery;\n } & CurrencyQueryOptions\n>;\n\ntype PausableUseNetworkFeeArgs = Partial<\n {\n query: Partial<UseNetworkFeeRequestQuery>;\n } & CurrencyQueryOptions\n>;\n\n/**\n * Fetch the network fee for an ActivityItem.\n *\n * @experimental This hook is experimental and may be subject to breaking changes.\n */\nexport type UseNetworkFee<T extends NativeAmount = NativeAmount> =\n /**\n * Fetches the network fee for a past ActivityItem.\n *\n * This signature supports React Suspense:\n *\n * ```tsx\n * const { data } = useNetworkFee({\n * query: { activity },\n * suspense: true,\n * });\n *\n * data: NativeAmount\n * ```\n */\n ((args: UseNetworkFeeArgs & Suspendable) => SuspenseResult<T>) &\n /**\n * Fetches the network fee for a past ActivityItem.\n *\n * Pausable suspense mode.\n *\n * ```tsx\n * const { data, paused } = useNetworkFee({\n * query: { activity },\n * suspense: true,\n * pause: true,\n * });\n *\n * data: NativeAmount | undefined\n * ```\n */\n ((\n args: Pausable<UseNetworkFeeArgs, PausableUseNetworkFeeArgs> &\n Suspendable,\n ) => PausableSuspenseResult<T>) &\n /**\n * Fetches the network fee for a past ActivityItem.\n *\n * ```tsx\n * const { data, error, loading } = useNetworkFee({\n * query: { activity },\n * });\n * ```\n */\n ((args: UseNetworkFeeArgs) => ReadResult<T>) &\n /**\n * Fetches the network fee for a past ActivityItem.\n *\n * Pausable loading state mode.\n *\n * ```tsx\n * const { data, error, loading, paused } = useNetworkFee({\n * query: { activity },\n * pause: true,\n * });\n *\n * data: NativeAmount | undefined\n * ```\n */\n ((\n args: Pausable<UseNetworkFeeArgs, PausableUseNetworkFeeArgs>,\n ) => PausableReadResult<T>);\n","import {\n CancelError,\n SigningError,\n type SignTypedDataError,\n type TypedData,\n UnexpectedError,\n} from '@aave/client';\nimport {\n sendTransaction,\n toViemChain,\n waitForTransactionResult,\n} from '@aave/client/viem';\nimport type { TransactionRequest } from '@aave/graphql';\nimport {\n invariant,\n ResultAsync,\n type Signature,\n signatureFrom,\n} from '@aave/types';\nimport {\n type MessageTypes,\n useSignTypedData as usePrivySignTypedData,\n useWallets,\n} from '@privy-io/react-auth';\nimport { createWalletClient, custom } from 'viem';\nimport {\n PendingTransaction,\n type UseAsyncTask,\n type UseSendTransactionResult,\n useAsyncTask,\n} from './helpers';\nimport { useChainAction } from './misc';\n\nfunction isUserRejection(err: unknown): boolean {\n if (err && typeof err === 'object') {\n if ('code' in err && err.code === 4001) return true;\n if ('message' in err && typeof err.message === 'string') {\n const msg = err.message.toLowerCase();\n return (\n msg.includes('user rejected') ||\n msg.includes('user denied') ||\n msg.includes('rejected the request')\n );\n }\n }\n return false;\n}\n\n/**\n * A hook that provides a way to send Aave transactions using a Privy wallet.\n *\n * Import the `useSendTransaction` hook from `@aave/react/privy` entry point.\n *\n * ```ts\n * const [sendTransaction, { loading, error, data }] = useSendTransaction();\n * ```\n */\nexport function useSendTransaction(): UseSendTransactionResult {\n const { wallets } = useWallets();\n const [fetchChain] = useChainAction();\n\n return useAsyncTask(\n (request: TransactionRequest) => {\n const wallet = wallets.find((wallet) => wallet.address === request.from);\n\n invariant(\n wallet,\n `Expected a connected wallet with address ${request.from} to be found.`,\n );\n\n return fetchChain({ chainId: request.chainId })\n .map((chain) => {\n invariant(chain, `Chain ${request.chainId} is not supported`);\n return toViemChain(chain);\n })\n .andThen((chain) =>\n ResultAsync.fromPromise(\n wallet.switchChain(request.chainId),\n (error) => UnexpectedError.from(error),\n )\n .map(() => wallet.getEthereumProvider())\n .map((provider) =>\n createWalletClient({\n account: request.from,\n chain,\n transport: custom(provider),\n }),\n )\n .andThen((walletClient) =>\n sendTransaction(walletClient, request).map(\n (hash) =>\n new PendingTransaction(() =>\n waitForTransactionResult(walletClient, request, hash),\n ),\n ),\n ),\n );\n },\n [wallets, fetchChain],\n );\n}\n\n/**\n * A hook that provides a way to sign EIP-712 typed data (ERC-20 permits, swap intents, etc.)\n * using a Privy wallet.\n *\n * ```ts\n * const [signTypedData, { loading, error, data }] = useSignTypedData();\n * ```\n */\nexport function useSignTypedData(): UseAsyncTask<\n TypedData,\n Signature,\n SignTypedDataError\n> {\n const { signTypedData: privySignTypedData } = usePrivySignTypedData();\n\n return useAsyncTask(\n (typedData: TypedData) => {\n return ResultAsync.fromPromise(\n privySignTypedData({\n domain: typedData.domain,\n types: typedData.types as MessageTypes,\n primaryType: typedData.primaryType,\n message: typedData.message,\n }),\n (error) => {\n if (isUserRejection(error)) {\n return CancelError.from(error);\n }\n return SigningError.from(error);\n },\n ).map(({ signature }) => signatureFrom(signature));\n },\n [privySignTypedData],\n );\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/helpers/tasks.ts","../src/helpers/writes.ts","../src/context.tsx","../src/misc.ts","../src/privy.ts"],"names":["AsyncTaskState","data","error","useAsyncTask","handler","deps","state","setState","useState","loadingRef","useRef","mountedRef","useEffect","handle","useCallback","input","invariant","previousState","result","value","nonNullable","PendingTransaction","_PendingTransaction","wait","okAsync","UnexpectedError","AaveContext","React","useAaveClient","client","useContext","useChainAction","request","fetchChain","isUserRejection","err","msg","useSendTransaction","wallets","useWallets","wallet","chain","toViemChain","ResultAsync","provider","createWalletClient","custom","walletClient","sendTransaction","hash","waitForTransactionResult","useSignTypedData","privySignTypedData","usePrivySignTypedData","typedData","CancelError","SigningError","signature","signatureFrom"],"mappings":"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","file":"privy.cjs","sourcesContent":["import { invariant, nonNullable, type ResultAsync } from '@aave/types';\nimport {\n type DependencyList,\n useCallback,\n useEffect,\n useRef,\n useState,\n} from 'react';\n\n/**\n * An async task is a function that can be executed multiple times and that can be in a pending state.\n *\n * @internal\n */\nexport type AsyncTask<TInput, TResult extends ResultAsync<unknown, unknown>> = (\n input: TInput,\n) => TResult;\n\n/**\n * The initial state of a async task.\n */\nexport type AsyncTaskIdle = {\n called: boolean;\n loading: false;\n data: undefined;\n error: undefined;\n};\n\n/**\n * The state of a async task during the loading.\n */\nexport type AsyncTaskLoading<TData> = {\n called: true;\n loading: true;\n data: TData | undefined;\n error: undefined;\n};\n\n/**\n * The state of a async task after a successful call.\n */\nexport type AsyncTaskSuccess<TData> = {\n called: true;\n loading: false;\n data: TData;\n error: undefined;\n};\n\n/**\n * The state of a async task after a failed call.\n */\nexport type AsyncTaskError<TError> = {\n called: true;\n loading: false;\n data: undefined;\n error: TError;\n};\n\n/**\n * The possible statuses of a async task.\n */\nexport type AsyncTaskState<TData, TError> =\n | AsyncTaskIdle\n | AsyncTaskLoading<TData>\n | AsyncTaskSuccess<TData>\n | AsyncTaskError<TError>;\n\nconst AsyncTaskState = {\n Idle: <TData, TError>(): AsyncTaskState<TData, TError> => ({\n called: false,\n loading: false,\n data: undefined,\n error: undefined,\n }),\n Loading: <TData, TError>(data?: TData): AsyncTaskState<TData, TError> => ({\n called: true,\n loading: true,\n data,\n error: undefined,\n }),\n Success: <TData, TError>(data: TData): AsyncTaskState<TData, TError> => ({\n called: true,\n loading: false,\n data,\n error: undefined,\n }),\n Failed: <TData, TError>(error: TError): AsyncTaskState<TData, TError> => ({\n called: true,\n loading: false,\n data: undefined,\n error,\n }),\n};\n\n/**\n * A async task React Hook is a lightweight wrapper for an asynchronous function.\n * It allows tracking of the task's execution status and provides access to the\n * last error that occurred during the task's execution, if any.\n *\n * ```ts\n * const [execute, { called, loading, data, error }]: UseAsyncTask<TData, TError, TInput> = useAnyAsyncTask();\n *\n * if (!called) {\n * // data === undefined\n * // error === undefined\n * return <p>Click the button to execute the task</p>;\n * }\n *\n * if (loading) {\n * // data === undefined on first call\n * // data === TData from previous successful call\n * // error === undefined\n * return <Loader />;\n * }\n *\n * if (error) {\n * // data === undefined\n * // error === TError\n * return <p>Something went wrong: {error.message}</p>;\n * }\n *\n * // called === true\n * // data === TData\n * // error === undefined\n * return <p>Task completed: {data}</p>;\n * ```\n */\nexport type UseAsyncTask<TInput, TValue, TError> = [\n AsyncTask<TInput, ResultAsync<TValue, TError>>,\n AsyncTaskState<TValue, TError>,\n];\n\n/**\n * @internal\n */\nexport function useAsyncTask<\n TInput,\n TValue,\n TError,\n TResult extends ResultAsync<TValue, TError>,\n>(\n handler: AsyncTask<TInput, TResult>,\n deps: DependencyList,\n): UseAsyncTask<TInput, TValue, TError> {\n const [state, setState] = useState(AsyncTaskState.Idle<TValue, TError>());\n const loadingRef = useRef(false);\n const mountedRef = useRef(true);\n\n useEffect(() => {\n return () => {\n mountedRef.current = false;\n };\n }, []);\n\n // biome-ignore lint/correctness/useExhaustiveDependencies: useAsyncTask is a low-level hook\n const handle = useCallback(handler, deps);\n\n const execute = useCallback(\n (input: TInput) => {\n invariant(\n mountedRef.current,\n 'Cannot execute a task on an unmounted component.',\n );\n\n invariant(\n !loadingRef.current,\n 'Cannot execute a task while another is in progress.',\n );\n\n loadingRef.current = true;\n\n let previousState: AsyncTaskState<TValue, TError> | undefined;\n setState((state) => {\n previousState = state;\n return {\n called: true,\n loading: true,\n data: state.data,\n error: undefined,\n };\n });\n\n try {\n const result = handle(input);\n\n result.match(\n (value) => {\n loadingRef.current = false;\n setState(AsyncTaskState.Success(value));\n },\n (error) => {\n loadingRef.current = false;\n setState(AsyncTaskState.Failed(error));\n },\n );\n\n return result;\n } catch (error) {\n loadingRef.current = false;\n setState(nonNullable(previousState));\n throw error;\n }\n },\n [handle],\n );\n\n return [execute, state];\n}\n","import type { TransactionResult } from '@aave/client';\nimport {\n CancelError,\n type SigningError,\n type TimeoutError,\n type TransactionError,\n UnexpectedError,\n} from '@aave/core';\nimport type { TransactionRequest } from '@aave/graphql';\nimport type { ResultAsync, Signature } from '@aave/types';\nimport { isSignature, okAsync } from '@aave/types';\nimport type { UseAsyncTask } from './tasks';\n\n/**\n * The errors that could occur in the early stage of sending a transaction.\n */\nexport type SendTransactionError = CancelError | SigningError | UnexpectedError;\n\nexport type CancelOperation = (\n message: string,\n) => ResultAsync<never, CancelError>;\n\n/**\n * @internal\n */\nexport const cancel: CancelOperation = (message: string) =>\n CancelError.from(message).asResultAsync();\n\nexport type TransactionHandlerOptions = {\n cancel: CancelOperation;\n};\n\n/**\n * The errors that could occur in the late stages of a transaction.\n */\nexport type PendingTransactionError =\n | CancelError\n | TimeoutError\n | TransactionError\n | UnexpectedError;\n\nexport class PendingTransaction {\n constructor(\n /**\n * @internal Do NOT rely on this method. It's used internally by the SDK and may be subject to breaking changes.\n */\n public readonly wait: () => ResultAsync<\n TransactionResult,\n PendingTransactionError\n >,\n ) {}\n\n /**\n * @internal\n */\n static isInstanceOf(value: unknown): value is PendingTransaction {\n return value instanceof PendingTransaction;\n }\n\n /**\n * Narrows a value to PendingTransaction.\n * Only accepts types that include PendingTransaction in the union.\n *\n * @internal\n */\n static tryFrom<T>(\n value: PendingTransaction extends T ? T : never,\n ): ResultAsync<PendingTransaction, UnexpectedError> {\n if (PendingTransaction.isInstanceOf(value)) {\n return okAsync(value);\n }\n return UnexpectedError.from(value).asResultAsync();\n }\n}\n\nexport type UseSendTransactionResult = UseAsyncTask<\n TransactionRequest,\n PendingTransaction,\n SendTransactionError\n>;\n\n/**\n * The Aave execution plan handler\n */\nexport type ExecutionPlanHandler<\n T,\n R extends Signature | PendingTransaction,\n> = (\n plan: T,\n options: TransactionHandlerOptions,\n) => ResultAsync<R, SendTransactionError>;\n\n/**\n * Tries to create a Signature from an unknown value.\n *\n * @internal\n */\nexport function trySignatureFrom(\n value: unknown,\n): ResultAsync<Signature, UnexpectedError> {\n if (isSignature(value)) {\n return okAsync(value);\n }\n return UnexpectedError.from(\n `Expected Signature, but got ${String(value)}`,\n ).asResultAsync();\n}\n","import type { AaveClient } from '@aave/client';\nimport { invariant } from '@aave/types';\nimport React, { type ReactNode, useContext } from 'react';\nimport { Provider as UrqlProvider } from 'urql';\n\nconst AaveContext = React.createContext<AaveClient | null>(null);\n\n/**\n * @internal\n */\nexport type AaveContextProviderProps = {\n children: ReactNode;\n client: AaveClient;\n};\n\n/**\n * @internal\n */\nexport function AaveContextProvider({\n children,\n client,\n}: AaveContextProviderProps) {\n return (\n <AaveContext.Provider value={client}>\n <UrqlProvider value={client.urql}>{children}</UrqlProvider>\n </AaveContext.Provider>\n );\n}\n\n/**\n * @internal\n */\nexport function useAaveClient(): AaveClient {\n const client = useContext(AaveContext);\n\n invariant(\n client,\n 'Could not find Aave SDK context, ensure your code is wrapped in a <AaveProvider>',\n );\n\n return client;\n}\n","import type { CurrencyQueryOptions } from '@aave/client';\nimport { exchangeRate, chain as fetchChain } from '@aave/client/actions';\nimport type { UnexpectedError } from '@aave/core';\nimport type { Chain, ExchangeAmount, ExchangeRateRequest } from '@aave/graphql';\nimport {\n type ActivityItem,\n ChainQuery,\n type ChainRequest,\n ChainsFilter,\n ChainsQuery,\n type ChainsRequest,\n ExchangeRateQuery,\n type NativeAmount,\n type PreviewAction,\n} from '@aave/graphql';\nimport type { NullishDeep, Prettify } from '@aave/types';\nimport { useAaveClient } from './context';\nimport {\n type Pausable,\n type PausableReadResult,\n type PausableSuspenseResult,\n type ReadResult,\n type Suspendable,\n type SuspendableResult,\n type SuspenseResult,\n useSuspendableQuery,\n} from './helpers';\nimport { type UseAsyncTask, useAsyncTask } from './helpers/tasks';\n\nexport type UseChainArgs = ChainRequest;\n\n/**\n * Fetch a specific chain by chain ID.\n *\n * This signature supports React Suspense:\n *\n * ```tsx\n * const { data } = useChain({\n * chainId: chainId(1),\n * suspense: true,\n * });\n * // data will be Chain | null\n * ```\n */\nexport function useChain(\n args: UseChainArgs & Suspendable,\n): SuspenseResult<Chain | null>;\n/**\n * Fetch a specific chain by chain ID.\n *\n * Pausable suspense mode.\n *\n * ```tsx\n * const { data } = useChain({\n * chainId: chainId(1),\n * suspense: true,\n * pause: true,\n * });\n * ```\n */\nexport function useChain(\n args: Pausable<UseChainArgs> & Suspendable,\n): PausableSuspenseResult<Chain | null>;\n/**\n * Fetch a specific chain by chain ID.\n *\n * ```tsx\n * const { data, error, loading } = useChain({\n * chainId: chainId(1),\n * });\n * // data will be Chain | null\n * ```\n */\nexport function useChain(args: UseChainArgs): ReadResult<Chain | null>;\n/**\n * Fetch a specific chain by chain ID.\n *\n * Pausable loading state mode.\n *\n * ```tsx\n * const { data, error, loading, paused } = useChain({\n * chainId: chainId(1),\n * pause: true,\n * });\n * ```\n */\nexport function useChain(\n args: Pausable<UseChainArgs>,\n): PausableReadResult<Chain | null>;\n\nexport function useChain({\n suspense = false,\n pause = false,\n ...request\n}: NullishDeep<UseChainArgs> & {\n suspense?: boolean;\n pause?: boolean;\n}): SuspendableResult<Chain | null, UnexpectedError> {\n return useSuspendableQuery({\n document: ChainQuery,\n variables: {\n request,\n },\n suspense,\n pause,\n });\n}\n\n/**\n * Low-level hook to execute a {@link chain} action directly.\n *\n * @experimental This hook is experimental and may be subject to breaking changes.\n * @remarks\n * This hook **does not** actively watch for updated data on the chain.\n * Use this hook to retrieve data on demand as part of a larger workflow\n * (e.g., in an event handler in order to move to the next step).\n *\n * ```ts\n * const [execute, { called, data, error, loading }] = useChainAction();\n *\n * // …\n *\n * const result = await execute({\n * chainId: chainId(1),\n * });\n *\n * if (result.isOk()) {\n * console.log(result.value); // Chain | null\n * } else {\n * console.error(result.error);\n * }\n * ```\n */\nexport function useChainAction(): UseAsyncTask<\n ChainRequest,\n Chain | null,\n UnexpectedError\n> {\n const client = useAaveClient();\n\n return useAsyncTask(\n (request: ChainRequest) =>\n fetchChain(client, request, {\n batch: false,\n requestPolicy: 'cache-first',\n }),\n [client],\n );\n}\n\nexport type UseChainsArgs = ChainsRequest;\n/**\n * Fetches the list of supported chains.\n *\n * This signature supports React Suspense:\n *\n * ```tsx\n * const { data } = useChains({\n * query: { filter: ChainsFilter.ALL },\n * suspense: true,\n * });\n * ```\n */\nexport function useChains(\n args: UseChainsArgs & Suspendable,\n): SuspenseResult<Chain[]>;\n/**\n * Fetches the list of supported chains.\n *\n * Pausable suspense mode.\n *\n * ```tsx\n * const { data } = useChains({\n * query: { filter: ChainsFilter.ALL },\n * suspense: true,\n * pause: true,\n * });\n * ```\n */\nexport function useChains(\n args: Pausable<UseChainsArgs> & Suspendable,\n): PausableSuspenseResult<Chain[]>;\n/**\n * Fetches the list of supported chains.\n *\n * ```tsx\n * const { data, error, loading } = useChains({\n * query: { filter: ChainsFilter.ALL },\n * });\n * ```\n */\nexport function useChains(args?: UseChainsArgs): ReadResult<Chain[]>;\n/**\n * Fetches the list of supported chains.\n *\n * Pausable loading state mode.\n *\n * ```tsx\n * const { data, error, loading, paused } = useChains({\n * query: { filter: ChainsFilter.ALL },\n * pause: true,\n * });\n * ```\n */\nexport function useChains(\n args?: Pausable<UseChainsArgs>,\n): PausableReadResult<Chain[]>;\n\nexport function useChains(\n {\n suspense = false,\n pause = false,\n ...request\n }: NullishDeep<UseChainsArgs> & {\n suspense?: boolean;\n pause?: boolean;\n } = { query: { filter: ChainsFilter.ALL } },\n): SuspendableResult<Chain[], UnexpectedError> {\n return useSuspendableQuery({\n document: ChainsQuery,\n variables: { request },\n suspense,\n pause,\n });\n}\n\n/**\n * Fetches exchange rates between tokens and fiat currencies.\n *\n * ```tsx\n * const [getExchangeRate, gettingRate] = useExchangeRateAction();\n *\n * const loading = gettingRate.loading;\n * const error = gettingRate.error;\n *\n * // …\n *\n * const result = await getExchangeRate({\n * from: { erc20: { chainId: chainId(1), address: evmAddress('0xA0b86a33E6...') } },\n * to: Currency.Usd,\n * });\n *\n * if (result.isErr()) {\n * console.error(result.error);\n * return;\n * }\n *\n * console.log('Exchange rate:', result.value);\n * ```\n */\nexport function useExchangeRateAction(): UseAsyncTask<\n ExchangeRateRequest,\n ExchangeAmount,\n UnexpectedError\n> {\n const client = useAaveClient();\n\n return useAsyncTask(\n (request: ExchangeRateRequest) =>\n exchangeRate(client, request, { requestPolicy: 'network-only' }),\n [client],\n );\n}\n\nexport type UseExchangeRateArgs = ExchangeRateRequest;\n\n/**\n * Fetches exchange rates between tokens and fiat currencies with automatic polling.\n *\n * This signature supports React Suspense:\n *\n * ```tsx\n * const { data } = useExchangeRate({\n * from: {\n * erc20: {\n * chainId: chainId(1),\n * address: evmAddress('0xA0b86a33E6...')\n * }\n * },\n * to: Currency.Usd,\n * suspense: true,\n * });\n * ```\n */\nexport function useExchangeRate(\n args: UseExchangeRateArgs & Suspendable,\n): SuspenseResult<ExchangeAmount>;\n/**\n * Fetches exchange rates between tokens and fiat currencies with automatic polling.\n *\n * Pausable suspense mode.\n *\n * ```tsx\n * const { data } = useExchangeRate({\n * from: {\n * erc20: {\n * chainId: chainId(1),\n * address: evmAddress('0xA0b86a33E6...')\n * }\n * },\n * to: Currency.Usd,\n * suspense: true,\n * pause: true,\n * });\n * ```\n */\nexport function useExchangeRate(\n args: Pausable<UseExchangeRateArgs> & Suspendable,\n): PausableSuspenseResult<ExchangeAmount>;\n/**\n * Fetches exchange rates between tokens and fiat currencies with automatic polling.\n *\n * ```tsx\n * const { data, error, loading } = useExchangeRate({\n * from: {\n * erc20: {\n * chainId: chainId(1),\n * address: evmAddress('0xA0b86a33E6...')\n * }\n * },\n * to: Currency.Usd,\n * });\n *\n * <Component value={somewhere} fxRate={data} />\n * ```\n */\nexport function useExchangeRate(\n args: UseExchangeRateArgs,\n): ReadResult<ExchangeAmount>;\n/**\n * Fetches exchange rates between tokens and fiat currencies with automatic polling.\n *\n * Pausable loading state mode.\n *\n * ```tsx\n * const { data, error, loading, paused } = useExchangeRate({\n * from: {\n * erc20: {\n * chainId: chainId(1),\n * address: evmAddress('0xA0b86a33E6...')\n * }\n * },\n * to: Currency.Usd,\n * pause: true,\n * });\n * ```\n */\nexport function useExchangeRate(\n args: Pausable<UseExchangeRateArgs>,\n): PausableReadResult<ExchangeAmount>;\n\nexport function useExchangeRate({\n suspense = false,\n pause = false,\n ...request\n}: NullishDeep<UseExchangeRateArgs> & {\n suspense?: boolean;\n pause?: boolean;\n}): SuspendableResult<ExchangeAmount, UnexpectedError> {\n const client = useAaveClient();\n\n return useSuspendableQuery({\n document: ExchangeRateQuery,\n variables: { request },\n suspense,\n pause,\n pollInterval: request.at\n ? 0\n : client.context.environment.exchangeRateInterval,\n });\n}\n\nexport type UseNetworkFeeRequestQuery =\n | {\n activity: ActivityItem;\n }\n | {\n estimate: PreviewAction;\n };\n\nexport type UseNetworkFeeArgs = Prettify<\n {\n query: UseNetworkFeeRequestQuery;\n } & CurrencyQueryOptions\n>;\n\ntype PausableUseNetworkFeeArgs = Partial<\n {\n query: Partial<UseNetworkFeeRequestQuery>;\n } & CurrencyQueryOptions\n>;\n\n/**\n * Fetch the network fee for an ActivityItem.\n *\n * @experimental This hook is experimental and may be subject to breaking changes.\n */\nexport type UseNetworkFee<T extends NativeAmount = NativeAmount> =\n /**\n * Fetches the network fee for a past ActivityItem.\n *\n * This signature supports React Suspense:\n *\n * ```tsx\n * const { data } = useNetworkFee({\n * query: { activity },\n * suspense: true,\n * });\n *\n * data: NativeAmount\n * ```\n */\n ((args: UseNetworkFeeArgs & Suspendable) => SuspenseResult<T>) &\n /**\n * Fetches the network fee for a past ActivityItem.\n *\n * Pausable suspense mode.\n *\n * ```tsx\n * const { data, paused } = useNetworkFee({\n * query: { activity },\n * suspense: true,\n * pause: true,\n * });\n *\n * data: NativeAmount | undefined\n * ```\n */\n ((\n args: Pausable<UseNetworkFeeArgs, PausableUseNetworkFeeArgs> &\n Suspendable,\n ) => PausableSuspenseResult<T>) &\n /**\n * Fetches the network fee for a past ActivityItem.\n *\n * ```tsx\n * const { data, error, loading } = useNetworkFee({\n * query: { activity },\n * });\n * ```\n */\n ((args: UseNetworkFeeArgs) => ReadResult<T>) &\n /**\n * Fetches the network fee for a past ActivityItem.\n *\n * Pausable loading state mode.\n *\n * ```tsx\n * const { data, error, loading, paused } = useNetworkFee({\n * query: { activity },\n * pause: true,\n * });\n *\n * data: NativeAmount | undefined\n * ```\n */\n ((\n args: Pausable<UseNetworkFeeArgs, PausableUseNetworkFeeArgs>,\n ) => PausableReadResult<T>);\n","import {\n CancelError,\n SigningError,\n type SignTypedDataError,\n type TypedData,\n UnexpectedError,\n} from '@aave/client';\nimport {\n sendTransaction,\n toViemChain,\n waitForTransactionResult,\n} from '@aave/client/viem';\nimport type { TransactionRequest } from '@aave/graphql';\nimport {\n invariant,\n ResultAsync,\n type Signature,\n signatureFrom,\n} from '@aave/types';\nimport {\n type MessageTypes,\n useSignTypedData as usePrivySignTypedData,\n useWallets,\n} from '@privy-io/react-auth';\nimport { createWalletClient, custom } from 'viem';\nimport {\n PendingTransaction,\n type UseAsyncTask,\n type UseSendTransactionResult,\n useAsyncTask,\n} from './helpers';\nimport { useChainAction } from './misc';\n\nfunction isUserRejection(err: unknown): boolean {\n if (err && typeof err === 'object') {\n if ('code' in err && err.code === 4001) return true;\n if ('message' in err && typeof err.message === 'string') {\n const msg = err.message.toLowerCase();\n return (\n msg.includes('user rejected') ||\n msg.includes('user denied') ||\n msg.includes('rejected the request')\n );\n }\n }\n return false;\n}\n\n/**\n * A hook that provides a way to send Aave transactions using a Privy wallet.\n *\n * Import the `useSendTransaction` hook from `@aave/react/privy` entry point.\n *\n * ```ts\n * const [sendTransaction, { loading, error, data }] = useSendTransaction();\n * ```\n */\nexport function useSendTransaction(): UseSendTransactionResult {\n const { wallets } = useWallets();\n const [fetchChain] = useChainAction();\n\n return useAsyncTask(\n (request: TransactionRequest) => {\n const wallet = wallets.find((wallet) => wallet.address === request.from);\n\n invariant(\n wallet,\n `Expected a connected wallet with address ${request.from} to be found.`,\n );\n\n return fetchChain({ chainId: request.chainId })\n .map((chain) => {\n invariant(chain, `Chain ${request.chainId} is not supported`);\n return toViemChain(chain);\n })\n .andThen((chain) =>\n ResultAsync.fromPromise(\n wallet.switchChain(request.chainId),\n (error) => UnexpectedError.from(error),\n )\n .map(() => wallet.getEthereumProvider())\n .map((provider) =>\n createWalletClient({\n account: request.from,\n chain,\n transport: custom(provider),\n }),\n )\n .andThen((walletClient) =>\n sendTransaction(walletClient, request).map(\n (hash) =>\n new PendingTransaction(() =>\n waitForTransactionResult(walletClient, request, hash),\n ),\n ),\n ),\n );\n },\n [wallets, fetchChain],\n );\n}\n\n/**\n * A hook that provides a way to sign EIP-712 typed data (ERC-20 permits, swap intents, etc.)\n * using a Privy wallet.\n *\n * ```ts\n * const [signTypedData, { loading, error, data }] = useSignTypedData();\n * ```\n */\nexport function useSignTypedData(): UseAsyncTask<\n TypedData,\n Signature,\n SignTypedDataError\n> {\n const { signTypedData: privySignTypedData } = usePrivySignTypedData();\n\n return useAsyncTask(\n (typedData: TypedData) => {\n return ResultAsync.fromPromise(\n privySignTypedData({\n domain: typedData.domain,\n types: typedData.types as MessageTypes,\n primaryType: typedData.primaryType,\n message: typedData.message,\n }),\n (error) => {\n if (isUserRejection(error)) {\n return CancelError.from(error);\n }\n return SigningError.from(error);\n },\n ).map(({ signature }) => signatureFrom(signature));\n },\n [privySignTypedData],\n );\n}\n"]}
|
package/dist/privy.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import {d}from'./chunk-
|
|
1
|
+
import {d}from'./chunk-QETO2FYE.js';import'./chunk-4NA4FB6K.js';import {a,c}from'./chunk-M23T3ICP.js';import {UnexpectedError,CancelError,SigningError}from'@aave/client';import {toViemChain,sendTransaction,waitForTransactionResult}from'@aave/client/viem';import {invariant,ResultAsync,signatureFrom}from'@aave/types';import {useWallets,useSignTypedData}from'@privy-io/react-auth';import {createWalletClient,custom}from'viem';function E(n){if(n&&typeof n=="object"){if("code"in n&&n.code===4001)return true;if("message"in n&&typeof n.message=="string"){let t=n.message.toLowerCase();return t.includes("user rejected")||t.includes("user denied")||t.includes("rejected the request")}}return false}function x(){let{wallets:n}=useWallets(),[t]=d();return a(e=>{let r=n.find(a=>a.address===e.from);return invariant(r,`Expected a connected wallet with address ${e.from} to be found.`),t({chainId:e.chainId}).map(a=>(invariant(a,`Chain ${e.chainId} is not supported`),toViemChain(a))).andThen(a=>ResultAsync.fromPromise(r.switchChain(e.chainId),s=>UnexpectedError.from(s)).map(()=>r.getEthereumProvider()).map(s=>createWalletClient({account:e.from,chain:a,transport:custom(s)})).andThen(s=>sendTransaction(s,e).map(d=>new c(()=>waitForTransactionResult(s,e,d)))))},[n,t])}function I(){let{signTypedData:n}=useSignTypedData();return a(t=>ResultAsync.fromPromise(n({domain:t.domain,types:t.types,primaryType:t.primaryType,message:t.message}),e=>E(e)?CancelError.from(e):SigningError.from(e)).map(({signature:e})=>signatureFrom(e)),[n])}export{x as useSendTransaction,I as useSignTypedData};//# sourceMappingURL=privy.js.map
|
|
2
2
|
//# sourceMappingURL=privy.js.map
|
package/dist/thirdweb.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
'use strict';var client=require('@aave/client'),actions=require('@aave/client/actions'),thirdweb=require('@aave/client/thirdweb'),types=require('@aave/types'),thirdweb$1=require('thirdweb'),react=require('thirdweb/react'),
|
|
1
|
+
'use strict';var client=require('@aave/client'),actions=require('@aave/client/actions'),thirdweb=require('@aave/client/thirdweb'),types=require('@aave/types'),thirdweb$1=require('thirdweb'),react=require('thirdweb/react'),P=require('react');require('urql');var core=require('@aave/core');function _interopDefault(e){return e&&e.__esModule?e:{default:e}}var P__default=/*#__PURE__*/_interopDefault(P);var I=P__default.default.createContext(null);function A(){let e=P.useContext(I);return types.invariant(e,"Could not find Aave SDK context, ensure your code is wrapped in a <AaveProvider>"),e}var T={Idle:()=>({called:false,loading:false,data:void 0,error:void 0}),Loading:e=>({called:true,loading:true,data:e,error:void 0}),Success:e=>({called:true,loading:false,data:e,error:void 0}),Failed:e=>({called:true,loading:false,data:void 0,error:e})};function y(e,r){let[a,s]=P.useState(T.Idle()),n=P.useRef(false),o=P.useRef(true);P.useEffect(()=>()=>{o.current=false;},[]);let t=P.useCallback(e,r);return [P.useCallback(u=>{types.invariant(o.current,"Cannot execute a task on an unmounted component."),types.invariant(!n.current,"Cannot execute a task while another is in progress."),n.current=true;let m;s(i=>(m=i,{called:true,loading:true,data:i.data,error:void 0}));try{let i=t(u);return i.match(p=>{n.current=!1,s(T.Success(p));},p=>{n.current=!1,s(T.Failed(p));}),i}catch(i){throw n.current=false,s(types.nonNullable(m)),i}},[t]),a]}var d=class e{constructor(r){this.wait=r;}static isInstanceOf(r){return r instanceof e}static tryFrom(r){return e.isInstanceOf(r)?types.okAsync(r):core.UnexpectedError.from(r).asResultAsync()}};function h(e){if(e&&typeof e=="object"){if("code"in e&&e.code===4001)return true;if("message"in e&&typeof e.message=="string"){let r=e.message.toLowerCase();return r.includes("user rejected")||r.includes("user denied")||r.includes("rejected the request")}}return false}function pe(e){let r=A(),a=react.useActiveAccount(),s=react.useSwitchActiveWalletChain();return y(n=>(types.invariant(a,"No Account found. Ensure you have connected your wallet."),actions.chain(r,{chainId:n.chainId},{batch:false}).map(o=>(types.invariant(o,`Chain ${n.chainId} is not supported`),thirdweb.toThirdwebChain(o))).andThen(o=>types.ResultAsync.fromPromise(s(o),t=>client.UnexpectedError.from(t)).andThen(()=>types.ResultAsync.fromPromise(thirdweb$1.sendTransaction({account:a,transaction:thirdweb$1.prepareTransaction({to:n.to,data:n.data,value:BigInt(n.value),chain:o,client:e})}),t=>h(t)?client.CancelError.from(t):client.SigningError.from(t))).map(({transactionHash:t})=>new d(()=>types.ResultAsync.fromPromise(thirdweb$1.waitForReceipt({client:e,chain:o,transactionHash:t}),c=>client.UnexpectedError.from(c)).andThen(({status:c,transactionHash:u})=>c==="reverted"?client.TransactionError.new({txHash:types.txHash(u),request:n}).asResultAsync():types.okAsync({operations:n.operations,txHash:types.txHash(u)})))))),[a,r,s,e])}function Te(){let e=react.useActiveAccount();return y(r=>(types.invariant(e,"Expected an active account to sign typed data"),types.ResultAsync.fromPromise(e.signTypedData({types:r.types,domain:r.domain,primaryType:r.primaryType,message:r.message}),a=>h(a)?client.CancelError.from(a):client.SigningError.from(a)).map(types.signatureFrom)),[e])}exports.useSendTransaction=pe;exports.useSignTypedData=Te;//# sourceMappingURL=thirdweb.cjs.map
|
|
2
2
|
//# sourceMappingURL=thirdweb.cjs.map
|
package/dist/thirdweb.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/context.tsx","../src/helpers/tasks.ts","../src/helpers/writes.ts","../src/thirdweb.ts"],"names":["AaveContext","React","useAaveClient","client","useContext","invariant","AsyncTaskState","data","error","useAsyncTask","handler","deps","state","setState","useState","loadingRef","useRef","handle","useCallback","input","previousState","result","value","nonNullable","PendingTransaction","_PendingTransaction","wait","okAsync","UnexpectedError","isUserRejection","err","msg","useSendTransaction","thirdwebClient","account","useActiveAccount","switchChain","useSwitchActiveWalletChain","request","fetchChain","chain","toThirdwebChain","ResultAsync","sendTransaction","prepareTransaction","CancelError","SigningError","transactionHash","waitForReceipt","status","TransactionError","txHash","useSignTypedData","typedData","signatureFrom"],"mappings":"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","file":"thirdweb.cjs","sourcesContent":["import type { AaveClient } from '@aave/client';\nimport { invariant } from '@aave/types';\nimport React, { type ReactNode, useContext } from 'react';\nimport { Provider as UrqlProvider } from 'urql';\n\nconst AaveContext = React.createContext<AaveClient | null>(null);\n\n/**\n * @internal\n */\nexport type AaveContextProviderProps = {\n children: ReactNode;\n client: AaveClient;\n};\n\n/**\n * @internal\n */\nexport function AaveContextProvider({\n children,\n client,\n}: AaveContextProviderProps) {\n return (\n <AaveContext.Provider value={client}>\n <UrqlProvider value={client.urql}>{children}</UrqlProvider>\n </AaveContext.Provider>\n );\n}\n\n/**\n * @internal\n */\nexport function useAaveClient(): AaveClient {\n const client = useContext(AaveContext);\n\n invariant(\n client,\n 'Could not find Aave SDK context, ensure your code is wrapped in a <AaveProvider>',\n );\n\n return client;\n}\n","import { invariant, nonNullable, type ResultAsync } from '@aave/types';\nimport { type DependencyList, useCallback, useRef, useState } from 'react';\n\n/**\n * An async task is a function that can be executed multiple times and that can be in a pending state.\n *\n * @internal\n */\nexport type AsyncTask<TInput, TResult extends ResultAsync<unknown, unknown>> = (\n input: TInput,\n) => TResult;\n\n/**\n * The initial state of a async task.\n */\nexport type AsyncTaskIdle = {\n called: boolean;\n loading: false;\n data: undefined;\n error: undefined;\n};\n\n/**\n * The state of a async task during the loading.\n */\nexport type AsyncTaskLoading<TData> = {\n called: true;\n loading: true;\n data: TData | undefined;\n error: undefined;\n};\n\n/**\n * The state of a async task after a successful call.\n */\nexport type AsyncTaskSuccess<TData> = {\n called: true;\n loading: false;\n data: TData;\n error: undefined;\n};\n\n/**\n * The state of a async task after a failed call.\n */\nexport type AsyncTaskError<TError> = {\n called: true;\n loading: false;\n data: undefined;\n error: TError;\n};\n\n/**\n * The possible statuses of a async task.\n */\nexport type AsyncTaskState<TData, TError> =\n | AsyncTaskIdle\n | AsyncTaskLoading<TData>\n | AsyncTaskSuccess<TData>\n | AsyncTaskError<TError>;\n\nconst AsyncTaskState = {\n Idle: <TData, TError>(): AsyncTaskState<TData, TError> => ({\n called: false,\n loading: false,\n data: undefined,\n error: undefined,\n }),\n Loading: <TData, TError>(data?: TData): AsyncTaskState<TData, TError> => ({\n called: true,\n loading: true,\n data,\n error: undefined,\n }),\n Success: <TData, TError>(data: TData): AsyncTaskState<TData, TError> => ({\n called: true,\n loading: false,\n data,\n error: undefined,\n }),\n Failed: <TData, TError>(error: TError): AsyncTaskState<TData, TError> => ({\n called: true,\n loading: false,\n data: undefined,\n error,\n }),\n};\n\n/**\n * A async task React Hook is a lightweight wrapper for an asynchronous function.\n * It allows tracking of the task's execution status and provides access to the\n * last error that occurred during the task's execution, if any.\n *\n * ```ts\n * const [execute, { called, loading, data, error }]: UseAsyncTask<TData, TError, TInput> = useAnyAsyncTask();\n *\n * if (!called) {\n * // data === undefined\n * // error === undefined\n * return <p>Click the button to execute the task</p>;\n * }\n *\n * if (loading) {\n * // data === undefined on first call\n * // data === TData from previous successful call\n * // error === undefined\n * return <Loader />;\n * }\n *\n * if (error) {\n * // data === undefined\n * // error === TError\n * return <p>Something went wrong: {error.message}</p>;\n * }\n *\n * // called === true\n * // data === TData\n * // error === undefined\n * return <p>Task completed: {data}</p>;\n * ```\n */\nexport type UseAsyncTask<TInput, TValue, TError> = [\n AsyncTask<TInput, ResultAsync<TValue, TError>>,\n AsyncTaskState<TValue, TError>,\n];\n\n/**\n * @internal\n */\nexport function useAsyncTask<\n TInput,\n TValue,\n TError,\n TResult extends ResultAsync<TValue, TError>,\n>(\n handler: AsyncTask<TInput, TResult>,\n deps: DependencyList,\n): UseAsyncTask<TInput, TValue, TError> {\n const [state, setState] = useState(AsyncTaskState.Idle<TValue, TError>());\n const loadingRef = useRef(false);\n // biome-ignore lint/correctness/useExhaustiveDependencies: useAsyncTask is a low-level hook\n const handle = useCallback(handler, deps);\n\n const execute = useCallback(\n (input: TInput) => {\n invariant(\n !loadingRef.current,\n 'Cannot execute a task while another is in progress.',\n );\n\n loadingRef.current = true;\n\n let previousState: AsyncTaskState<TValue, TError> | undefined;\n setState((state) => {\n previousState = state;\n return {\n called: true,\n loading: true,\n data: state.data,\n error: undefined,\n };\n });\n\n try {\n const result = handle(input);\n\n result.match(\n (value) => {\n loadingRef.current = false;\n setState(AsyncTaskState.Success(value));\n },\n (error) => {\n loadingRef.current = false;\n setState(AsyncTaskState.Failed(error));\n },\n );\n\n return result;\n } catch (error) {\n loadingRef.current = false;\n setState(nonNullable(previousState));\n throw error;\n }\n },\n [handle],\n );\n\n return [execute, state];\n}\n","import type { TransactionResult } from '@aave/client';\nimport {\n CancelError,\n type SigningError,\n type TimeoutError,\n type TransactionError,\n UnexpectedError,\n} from '@aave/core';\nimport type { TransactionRequest } from '@aave/graphql';\nimport type { ResultAsync, Signature } from '@aave/types';\nimport { isSignature, okAsync } from '@aave/types';\nimport type { UseAsyncTask } from './tasks';\n\n/**\n * The errors that could occur in the early stage of sending a transaction.\n */\nexport type SendTransactionError = CancelError | SigningError | UnexpectedError;\n\nexport type CancelOperation = (\n message: string,\n) => ResultAsync<never, CancelError>;\n\n/**\n * @internal\n */\nexport const cancel: CancelOperation = (message: string) =>\n CancelError.from(message).asResultAsync();\n\nexport type TransactionHandlerOptions = {\n cancel: CancelOperation;\n};\n\n/**\n * The errors that could occur in the late stages of a transaction.\n */\nexport type PendingTransactionError =\n | CancelError\n | TimeoutError\n | TransactionError\n | UnexpectedError;\n\nexport class PendingTransaction {\n constructor(\n /**\n * @internal Do NOT rely on this method. It's used internally by the SDK and may be subject to breaking changes.\n */\n public readonly wait: () => ResultAsync<\n TransactionResult,\n PendingTransactionError\n >,\n ) {}\n\n /**\n * @internal\n */\n static isInstanceOf(value: unknown): value is PendingTransaction {\n return value instanceof PendingTransaction;\n }\n\n /**\n * Narrows a value to PendingTransaction.\n * Only accepts types that include PendingTransaction in the union.\n *\n * @internal\n */\n static tryFrom<T>(\n value: PendingTransaction extends T ? T : never,\n ): ResultAsync<PendingTransaction, UnexpectedError> {\n if (PendingTransaction.isInstanceOf(value)) {\n return okAsync(value);\n }\n return UnexpectedError.from(value).asResultAsync();\n }\n}\n\nexport type UseSendTransactionResult = UseAsyncTask<\n TransactionRequest,\n PendingTransaction,\n SendTransactionError\n>;\n\n/**\n * The Aave execution plan handler\n */\nexport type ExecutionPlanHandler<\n T,\n R extends Signature | PendingTransaction,\n> = (\n plan: T,\n options: TransactionHandlerOptions,\n) => ResultAsync<R, SendTransactionError>;\n\n/**\n * Tries to create a Signature from an unknown value.\n *\n * @internal\n */\nexport function trySignatureFrom(\n value: unknown,\n): ResultAsync<Signature, UnexpectedError> {\n if (isSignature(value)) {\n return okAsync(value);\n }\n return UnexpectedError.from(\n `Expected Signature, but got ${String(value)}`,\n ).asResultAsync();\n}\n","import {\n CancelError,\n SigningError,\n type SignTypedDataError,\n TransactionError,\n type TypedData,\n UnexpectedError,\n} from '@aave/client';\nimport { chain as fetchChain } from '@aave/client/actions';\nimport { toThirdwebChain } from '@aave/client/thirdweb';\nimport type { TransactionRequest } from '@aave/graphql';\nimport {\n invariant,\n okAsync,\n ResultAsync,\n type Signature,\n signatureFrom,\n txHash,\n} from '@aave/types';\nimport {\n prepareTransaction,\n sendTransaction,\n type ThirdwebClient,\n waitForReceipt,\n} from 'thirdweb';\nimport { useActiveAccount, useSwitchActiveWalletChain } from 'thirdweb/react';\nimport { useAaveClient } from './context';\nimport {\n PendingTransaction,\n type UseAsyncTask,\n type UseSendTransactionResult,\n useAsyncTask,\n} from './helpers';\n\nfunction isUserRejection(err: unknown): boolean {\n if (err && typeof err === 'object') {\n if ('code' in err && err.code === 4001) return true;\n if ('message' in err && typeof err.message === 'string') {\n const msg = err.message.toLowerCase();\n return (\n msg.includes('user rejected') ||\n msg.includes('user denied') ||\n msg.includes('rejected the request')\n );\n }\n }\n return false;\n}\n\n/**\n * A hook that provides a way to send Aave transactions using a Thirdweb wallet.\n *\n * Import the `useSendTransaction` hook from `@aave/react/thirdweb` entry point.\n */\nexport function useSendTransaction(\n thirdwebClient: ThirdwebClient,\n): UseSendTransactionResult {\n const client = useAaveClient();\n const account = useActiveAccount();\n const switchChain = useSwitchActiveWalletChain();\n\n return useAsyncTask(\n (request: TransactionRequest) => {\n invariant(\n account,\n 'No Account found. Ensure you have connected your wallet.',\n );\n\n return fetchChain(\n client,\n { chainId: request.chainId },\n {\n batch: false,\n },\n )\n .map((chain) => {\n invariant(chain, `Chain ${request.chainId} is not supported`);\n\n return toThirdwebChain(chain);\n })\n .andThen((chain) => {\n return ResultAsync.fromPromise(switchChain(chain), (err) =>\n UnexpectedError.from(err),\n )\n .andThen(() =>\n ResultAsync.fromPromise(\n sendTransaction({\n account,\n transaction: prepareTransaction({\n to: request.to,\n data: request.data,\n value: BigInt(request.value),\n chain,\n client: thirdwebClient,\n }),\n }),\n (err) => {\n if (isUserRejection(err)) {\n return CancelError.from(err);\n }\n return SigningError.from(err);\n },\n ),\n )\n .map(\n ({ transactionHash }) =>\n new PendingTransaction(() =>\n ResultAsync.fromPromise(\n waitForReceipt({\n client: thirdwebClient,\n chain,\n transactionHash,\n }),\n (err) => UnexpectedError.from(err),\n ).andThen(({ status, transactionHash }) => {\n if (status === 'reverted') {\n return TransactionError.new({\n txHash: txHash(transactionHash),\n request,\n }).asResultAsync();\n }\n return okAsync({\n operations: request.operations,\n txHash: txHash(transactionHash),\n });\n }),\n ),\n );\n });\n },\n [account, client, switchChain, thirdwebClient],\n );\n}\n\n/**\n * A hook that provides a way to sign EIP-712 typed data (ERC-20 permits, swap intents, etc.)\n * using a Thirdweb wallet.\n *\n * ```ts\n * const [signTypedData, { loading, error, data }] = useSignTypedData();\n * ```\n */\nexport function useSignTypedData(): UseAsyncTask<\n TypedData,\n Signature,\n SignTypedDataError\n> {\n const account = useActiveAccount();\n\n return useAsyncTask(\n (typedData: TypedData) => {\n invariant(account, 'Expected an active account to sign typed data');\n\n return ResultAsync.fromPromise(\n account.signTypedData({\n // silence the rest of the type inference\n types: typedData.types as Record<string, unknown>,\n domain: typedData.domain,\n primaryType: typedData.primaryType,\n message: typedData.message,\n }),\n (err) => {\n if (isUserRejection(err)) {\n return CancelError.from(err);\n }\n return SigningError.from(err);\n },\n ).map(signatureFrom);\n },\n [account],\n );\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/context.tsx","../src/helpers/tasks.ts","../src/helpers/writes.ts","../src/thirdweb.ts"],"names":["AaveContext","React","useAaveClient","client","useContext","invariant","AsyncTaskState","data","error","useAsyncTask","handler","deps","state","setState","useState","loadingRef","useRef","mountedRef","useEffect","handle","useCallback","input","previousState","result","value","nonNullable","PendingTransaction","_PendingTransaction","wait","okAsync","UnexpectedError","isUserRejection","err","msg","useSendTransaction","thirdwebClient","account","useActiveAccount","switchChain","useSwitchActiveWalletChain","request","fetchChain","chain","toThirdwebChain","ResultAsync","sendTransaction","prepareTransaction","CancelError","SigningError","transactionHash","waitForReceipt","status","TransactionError","txHash","useSignTypedData","typedData","signatureFrom"],"mappings":"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","file":"thirdweb.cjs","sourcesContent":["import type { AaveClient } from '@aave/client';\nimport { invariant } from '@aave/types';\nimport React, { type ReactNode, useContext } from 'react';\nimport { Provider as UrqlProvider } from 'urql';\n\nconst AaveContext = React.createContext<AaveClient | null>(null);\n\n/**\n * @internal\n */\nexport type AaveContextProviderProps = {\n children: ReactNode;\n client: AaveClient;\n};\n\n/**\n * @internal\n */\nexport function AaveContextProvider({\n children,\n client,\n}: AaveContextProviderProps) {\n return (\n <AaveContext.Provider value={client}>\n <UrqlProvider value={client.urql}>{children}</UrqlProvider>\n </AaveContext.Provider>\n );\n}\n\n/**\n * @internal\n */\nexport function useAaveClient(): AaveClient {\n const client = useContext(AaveContext);\n\n invariant(\n client,\n 'Could not find Aave SDK context, ensure your code is wrapped in a <AaveProvider>',\n );\n\n return client;\n}\n","import { invariant, nonNullable, type ResultAsync } from '@aave/types';\nimport {\n type DependencyList,\n useCallback,\n useEffect,\n useRef,\n useState,\n} from 'react';\n\n/**\n * An async task is a function that can be executed multiple times and that can be in a pending state.\n *\n * @internal\n */\nexport type AsyncTask<TInput, TResult extends ResultAsync<unknown, unknown>> = (\n input: TInput,\n) => TResult;\n\n/**\n * The initial state of a async task.\n */\nexport type AsyncTaskIdle = {\n called: boolean;\n loading: false;\n data: undefined;\n error: undefined;\n};\n\n/**\n * The state of a async task during the loading.\n */\nexport type AsyncTaskLoading<TData> = {\n called: true;\n loading: true;\n data: TData | undefined;\n error: undefined;\n};\n\n/**\n * The state of a async task after a successful call.\n */\nexport type AsyncTaskSuccess<TData> = {\n called: true;\n loading: false;\n data: TData;\n error: undefined;\n};\n\n/**\n * The state of a async task after a failed call.\n */\nexport type AsyncTaskError<TError> = {\n called: true;\n loading: false;\n data: undefined;\n error: TError;\n};\n\n/**\n * The possible statuses of a async task.\n */\nexport type AsyncTaskState<TData, TError> =\n | AsyncTaskIdle\n | AsyncTaskLoading<TData>\n | AsyncTaskSuccess<TData>\n | AsyncTaskError<TError>;\n\nconst AsyncTaskState = {\n Idle: <TData, TError>(): AsyncTaskState<TData, TError> => ({\n called: false,\n loading: false,\n data: undefined,\n error: undefined,\n }),\n Loading: <TData, TError>(data?: TData): AsyncTaskState<TData, TError> => ({\n called: true,\n loading: true,\n data,\n error: undefined,\n }),\n Success: <TData, TError>(data: TData): AsyncTaskState<TData, TError> => ({\n called: true,\n loading: false,\n data,\n error: undefined,\n }),\n Failed: <TData, TError>(error: TError): AsyncTaskState<TData, TError> => ({\n called: true,\n loading: false,\n data: undefined,\n error,\n }),\n};\n\n/**\n * A async task React Hook is a lightweight wrapper for an asynchronous function.\n * It allows tracking of the task's execution status and provides access to the\n * last error that occurred during the task's execution, if any.\n *\n * ```ts\n * const [execute, { called, loading, data, error }]: UseAsyncTask<TData, TError, TInput> = useAnyAsyncTask();\n *\n * if (!called) {\n * // data === undefined\n * // error === undefined\n * return <p>Click the button to execute the task</p>;\n * }\n *\n * if (loading) {\n * // data === undefined on first call\n * // data === TData from previous successful call\n * // error === undefined\n * return <Loader />;\n * }\n *\n * if (error) {\n * // data === undefined\n * // error === TError\n * return <p>Something went wrong: {error.message}</p>;\n * }\n *\n * // called === true\n * // data === TData\n * // error === undefined\n * return <p>Task completed: {data}</p>;\n * ```\n */\nexport type UseAsyncTask<TInput, TValue, TError> = [\n AsyncTask<TInput, ResultAsync<TValue, TError>>,\n AsyncTaskState<TValue, TError>,\n];\n\n/**\n * @internal\n */\nexport function useAsyncTask<\n TInput,\n TValue,\n TError,\n TResult extends ResultAsync<TValue, TError>,\n>(\n handler: AsyncTask<TInput, TResult>,\n deps: DependencyList,\n): UseAsyncTask<TInput, TValue, TError> {\n const [state, setState] = useState(AsyncTaskState.Idle<TValue, TError>());\n const loadingRef = useRef(false);\n const mountedRef = useRef(true);\n\n useEffect(() => {\n return () => {\n mountedRef.current = false;\n };\n }, []);\n\n // biome-ignore lint/correctness/useExhaustiveDependencies: useAsyncTask is a low-level hook\n const handle = useCallback(handler, deps);\n\n const execute = useCallback(\n (input: TInput) => {\n invariant(\n mountedRef.current,\n 'Cannot execute a task on an unmounted component.',\n );\n\n invariant(\n !loadingRef.current,\n 'Cannot execute a task while another is in progress.',\n );\n\n loadingRef.current = true;\n\n let previousState: AsyncTaskState<TValue, TError> | undefined;\n setState((state) => {\n previousState = state;\n return {\n called: true,\n loading: true,\n data: state.data,\n error: undefined,\n };\n });\n\n try {\n const result = handle(input);\n\n result.match(\n (value) => {\n loadingRef.current = false;\n setState(AsyncTaskState.Success(value));\n },\n (error) => {\n loadingRef.current = false;\n setState(AsyncTaskState.Failed(error));\n },\n );\n\n return result;\n } catch (error) {\n loadingRef.current = false;\n setState(nonNullable(previousState));\n throw error;\n }\n },\n [handle],\n );\n\n return [execute, state];\n}\n","import type { TransactionResult } from '@aave/client';\nimport {\n CancelError,\n type SigningError,\n type TimeoutError,\n type TransactionError,\n UnexpectedError,\n} from '@aave/core';\nimport type { TransactionRequest } from '@aave/graphql';\nimport type { ResultAsync, Signature } from '@aave/types';\nimport { isSignature, okAsync } from '@aave/types';\nimport type { UseAsyncTask } from './tasks';\n\n/**\n * The errors that could occur in the early stage of sending a transaction.\n */\nexport type SendTransactionError = CancelError | SigningError | UnexpectedError;\n\nexport type CancelOperation = (\n message: string,\n) => ResultAsync<never, CancelError>;\n\n/**\n * @internal\n */\nexport const cancel: CancelOperation = (message: string) =>\n CancelError.from(message).asResultAsync();\n\nexport type TransactionHandlerOptions = {\n cancel: CancelOperation;\n};\n\n/**\n * The errors that could occur in the late stages of a transaction.\n */\nexport type PendingTransactionError =\n | CancelError\n | TimeoutError\n | TransactionError\n | UnexpectedError;\n\nexport class PendingTransaction {\n constructor(\n /**\n * @internal Do NOT rely on this method. It's used internally by the SDK and may be subject to breaking changes.\n */\n public readonly wait: () => ResultAsync<\n TransactionResult,\n PendingTransactionError\n >,\n ) {}\n\n /**\n * @internal\n */\n static isInstanceOf(value: unknown): value is PendingTransaction {\n return value instanceof PendingTransaction;\n }\n\n /**\n * Narrows a value to PendingTransaction.\n * Only accepts types that include PendingTransaction in the union.\n *\n * @internal\n */\n static tryFrom<T>(\n value: PendingTransaction extends T ? T : never,\n ): ResultAsync<PendingTransaction, UnexpectedError> {\n if (PendingTransaction.isInstanceOf(value)) {\n return okAsync(value);\n }\n return UnexpectedError.from(value).asResultAsync();\n }\n}\n\nexport type UseSendTransactionResult = UseAsyncTask<\n TransactionRequest,\n PendingTransaction,\n SendTransactionError\n>;\n\n/**\n * The Aave execution plan handler\n */\nexport type ExecutionPlanHandler<\n T,\n R extends Signature | PendingTransaction,\n> = (\n plan: T,\n options: TransactionHandlerOptions,\n) => ResultAsync<R, SendTransactionError>;\n\n/**\n * Tries to create a Signature from an unknown value.\n *\n * @internal\n */\nexport function trySignatureFrom(\n value: unknown,\n): ResultAsync<Signature, UnexpectedError> {\n if (isSignature(value)) {\n return okAsync(value);\n }\n return UnexpectedError.from(\n `Expected Signature, but got ${String(value)}`,\n ).asResultAsync();\n}\n","import {\n CancelError,\n SigningError,\n type SignTypedDataError,\n TransactionError,\n type TypedData,\n UnexpectedError,\n} from '@aave/client';\nimport { chain as fetchChain } from '@aave/client/actions';\nimport { toThirdwebChain } from '@aave/client/thirdweb';\nimport type { TransactionRequest } from '@aave/graphql';\nimport {\n invariant,\n okAsync,\n ResultAsync,\n type Signature,\n signatureFrom,\n txHash,\n} from '@aave/types';\nimport {\n prepareTransaction,\n sendTransaction,\n type ThirdwebClient,\n waitForReceipt,\n} from 'thirdweb';\nimport { useActiveAccount, useSwitchActiveWalletChain } from 'thirdweb/react';\nimport { useAaveClient } from './context';\nimport {\n PendingTransaction,\n type UseAsyncTask,\n type UseSendTransactionResult,\n useAsyncTask,\n} from './helpers';\n\nfunction isUserRejection(err: unknown): boolean {\n if (err && typeof err === 'object') {\n if ('code' in err && err.code === 4001) return true;\n if ('message' in err && typeof err.message === 'string') {\n const msg = err.message.toLowerCase();\n return (\n msg.includes('user rejected') ||\n msg.includes('user denied') ||\n msg.includes('rejected the request')\n );\n }\n }\n return false;\n}\n\n/**\n * A hook that provides a way to send Aave transactions using a Thirdweb wallet.\n *\n * Import the `useSendTransaction` hook from `@aave/react/thirdweb` entry point.\n */\nexport function useSendTransaction(\n thirdwebClient: ThirdwebClient,\n): UseSendTransactionResult {\n const client = useAaveClient();\n const account = useActiveAccount();\n const switchChain = useSwitchActiveWalletChain();\n\n return useAsyncTask(\n (request: TransactionRequest) => {\n invariant(\n account,\n 'No Account found. Ensure you have connected your wallet.',\n );\n\n return fetchChain(\n client,\n { chainId: request.chainId },\n {\n batch: false,\n },\n )\n .map((chain) => {\n invariant(chain, `Chain ${request.chainId} is not supported`);\n\n return toThirdwebChain(chain);\n })\n .andThen((chain) => {\n return ResultAsync.fromPromise(switchChain(chain), (err) =>\n UnexpectedError.from(err),\n )\n .andThen(() =>\n ResultAsync.fromPromise(\n sendTransaction({\n account,\n transaction: prepareTransaction({\n to: request.to,\n data: request.data,\n value: BigInt(request.value),\n chain,\n client: thirdwebClient,\n }),\n }),\n (err) => {\n if (isUserRejection(err)) {\n return CancelError.from(err);\n }\n return SigningError.from(err);\n },\n ),\n )\n .map(\n ({ transactionHash }) =>\n new PendingTransaction(() =>\n ResultAsync.fromPromise(\n waitForReceipt({\n client: thirdwebClient,\n chain,\n transactionHash,\n }),\n (err) => UnexpectedError.from(err),\n ).andThen(({ status, transactionHash }) => {\n if (status === 'reverted') {\n return TransactionError.new({\n txHash: txHash(transactionHash),\n request,\n }).asResultAsync();\n }\n return okAsync({\n operations: request.operations,\n txHash: txHash(transactionHash),\n });\n }),\n ),\n );\n });\n },\n [account, client, switchChain, thirdwebClient],\n );\n}\n\n/**\n * A hook that provides a way to sign EIP-712 typed data (ERC-20 permits, swap intents, etc.)\n * using a Thirdweb wallet.\n *\n * ```ts\n * const [signTypedData, { loading, error, data }] = useSignTypedData();\n * ```\n */\nexport function useSignTypedData(): UseAsyncTask<\n TypedData,\n Signature,\n SignTypedDataError\n> {\n const account = useActiveAccount();\n\n return useAsyncTask(\n (typedData: TypedData) => {\n invariant(account, 'Expected an active account to sign typed data');\n\n return ResultAsync.fromPromise(\n account.signTypedData({\n // silence the rest of the type inference\n types: typedData.types as Record<string, unknown>,\n domain: typedData.domain,\n primaryType: typedData.primaryType,\n message: typedData.message,\n }),\n (err) => {\n if (isUserRejection(err)) {\n return CancelError.from(err);\n }\n return SigningError.from(err);\n },\n ).map(signatureFrom);\n },\n [account],\n );\n}\n"]}
|
package/dist/thirdweb.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import {b}from'./chunk-4NA4FB6K.js';import {a,c}from'./chunk-
|
|
1
|
+
import {b}from'./chunk-4NA4FB6K.js';import {a,c}from'./chunk-M23T3ICP.js';import {UnexpectedError,CancelError,SigningError,TransactionError}from'@aave/client';import {chain}from'@aave/client/actions';import {toThirdwebChain}from'@aave/client/thirdweb';import {invariant,ResultAsync,okAsync,txHash,signatureFrom}from'@aave/types';import {sendTransaction,prepareTransaction,waitForReceipt}from'thirdweb';import {useActiveAccount,useSwitchActiveWalletChain}from'thirdweb/react';function A(e){if(e&&typeof e=="object"){if("code"in e&&e.code===4001)return true;if("message"in e&&typeof e.message=="string"){let n=e.message.toLowerCase();return n.includes("user rejected")||n.includes("user denied")||n.includes("rejected the request")}}return false}function L(e){let n=b(),t=useActiveAccount(),m=useSwitchActiveWalletChain();return a(r=>(invariant(t,"No Account found. Ensure you have connected your wallet."),chain(n,{chainId:r.chainId},{batch:false}).map(a=>(invariant(a,`Chain ${r.chainId} is not supported`),toThirdwebChain(a))).andThen(a=>ResultAsync.fromPromise(m(a),o=>UnexpectedError.from(o)).andThen(()=>ResultAsync.fromPromise(sendTransaction({account:t,transaction:prepareTransaction({to:r.to,data:r.data,value:BigInt(r.value),chain:a,client:e})}),o=>A(o)?CancelError.from(o):SigningError.from(o))).map(({transactionHash:o})=>new c(()=>ResultAsync.fromPromise(waitForReceipt({client:e,chain:a,transactionHash:o}),s=>UnexpectedError.from(s)).andThen(({status:s,transactionHash:p})=>s==="reverted"?TransactionError.new({txHash:txHash(p),request:r}).asResultAsync():okAsync({operations:r.operations,txHash:txHash(p)})))))),[t,n,m,e])}function N(){let e=useActiveAccount();return a(n=>(invariant(e,"Expected an active account to sign typed data"),ResultAsync.fromPromise(e.signTypedData({types:n.types,domain:n.domain,primaryType:n.primaryType,message:n.message}),t=>A(t)?CancelError.from(t):SigningError.from(t)).map(signatureFrom)),[e])}export{L as useSendTransaction,N as useSignTypedData};//# sourceMappingURL=thirdweb.js.map
|
|
2
2
|
//# sourceMappingURL=thirdweb.js.map
|
package/dist/viem/index.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
'use strict';var viem=require('@aave/client/viem'),types=require('@aave/types'),
|
|
1
|
+
'use strict';var viem=require('@aave/client/viem'),types=require('@aave/types'),W=require('react'),urql=require('urql'),client=require('@aave/client'),core=require('@aave/core'),actions=require('@aave/client/actions'),graphql=require('@aave/graphql'),viem$1=require('viem');function _interopDefault(e){return e&&e.__esModule?e:{default:e}}var W__default=/*#__PURE__*/_interopDefault(W);var G=W__default.default.createContext(null);function p(){let e=W.useContext(G);return types.invariant(e,"Could not find Aave SDK context, ensure your code is wrapped in a <AaveProvider>"),e}var i={Loading:()=>({data:void 0,error:void 0,loading:true,paused:false,reloading:false}),Success:(e,t=false)=>({data:e,error:void 0,loading:false,paused:false,reloading:t}),Failure:(e,t=false)=>({data:void 0,error:e,loading:false,paused:false,reloading:t}),Paused:(e,t)=>({data:e,error:t,loading:false,paused:true,reloading:false})};function U({document:e,variables:t,suspense:r,pause:a,selector:n=types.ok,pollInterval:s=0,batch:o=true}){let[T,R]=W.useState(true),[{fetching:l,data:u,error:c,stale:L},S]=urql.useQuery({query:e,variables:t,pause:a,context:W.useMemo(()=>({batch:o,suspense:r}),[o,r])});if(W.useEffect(()=>{a||l||R(false);},[l,a]),W.useEffect(()=>{if(s<=0||l||a)return;let d=setTimeout(()=>{S({requestPolicy:"network-only",batch:false});},s);return ()=>clearTimeout(d)},[l,S,s,a]),a){let d=c?client.UnexpectedError.from(c):void 0;if(!u)return i.Paused(void 0,d);let E=n(u.value);return E.isErr()?i.Paused(void 0,E.error):i.Paused(E.value,d)}if(!r&&T)return i.Loading();let h=L||!T&&l;if(c){let d=client.UnexpectedError.from(c);if(r)throw d;return i.Failure(d,h)}types.invariant(u,"No data returned");let g=n(u.value);if(g.isErr()){if(r)throw g.error;return i.Failure(g.error,h)}return i.Success(g.value,h)}var b={Idle:()=>({called:false,loading:false,data:void 0,error:void 0}),Loading:e=>({called:true,loading:true,data:e,error:void 0}),Success:e=>({called:true,loading:false,data:e,error:void 0}),Failed:e=>({called:true,loading:false,data:void 0,error:e})};function f(e,t){let[r,a]=W.useState(b.Idle()),n=W.useRef(false),s=W.useRef(true);W.useEffect(()=>()=>{s.current=false;},[]);let o=W.useCallback(e,t);return [W.useCallback(R=>{types.invariant(s.current,"Cannot execute a task on an unmounted component."),types.invariant(!n.current,"Cannot execute a task while another is in progress."),n.current=true;let l;a(u=>(l=u,{called:true,loading:true,data:u.data,error:void 0}));try{let u=o(R);return u.match(c=>{n.current=!1,a(b.Success(c));},c=>{n.current=!1,a(b.Failed(c));}),u}catch(u){throw n.current=false,a(types.nonNullable(l)),u}},[o]),r]}var x=class e{constructor(t){this.wait=t;}static isInstanceOf(t){return t instanceof e}static tryFrom(t){return e.isInstanceOf(t)?types.okAsync(t):core.UnexpectedError.from(t).asResultAsync()}};function $e(e){let t=p();return f(r=>(types.invariant(e,"Expected a WalletClient to handle the operation result."),viem.ensureChain(t,e,r).andThen(()=>viem.sendTransaction(e,r)).map(a=>new x(()=>viem.waitForTransactionResult(e,r,a)))),[t,e])}function je(e){return f(t=>(types.invariant(e,"Expected a WalletClient to sign typed data"),viem.signTypedDataWith(e,t)),[e])}function w({suspense:e=false,pause:t=false,...r}){let a=p();return U({document:graphql.ExchangeRateQuery,variables:{request:r},suspense:e,pause:t,pollInterval:r.at?0:a.context.environment.exchangeRateInterval})}var I=55558n,me={supply:132136n+I,borrow:250551n,withdraw:195049n,repay:217889n+I,setUserSuppliesAsCollateral:240284n,updateUserPositionConditions:280000n};function ge(e){let t=Object.keys(e)[0];return me[t]??types.never(`Expected gas estimate for action ${t}`)}function q(e){if("supply"in e)return graphql.decodeReserveId(e.supply.reserve).chainId;if("borrow"in e)return graphql.decodeReserveId(e.borrow.reserve).chainId;if("withdraw"in e)return graphql.decodeReserveId(e.withdraw.reserve).chainId;if("repay"in e)return graphql.decodeReserveId(e.repay.reserve).chainId;if("setUserSuppliesAsCollateral"in e)return e.setUserSuppliesAsCollateral.changes.map(({reserve:t})=>graphql.decodeReserveId(t)).reduce((t,r)=>(types.invariant(t.chainId===r.chainId&&t.spoke===r.spoke,"All reserves MUST on the same spoke"),t)).chainId;if("updateUserPositionConditions"in e)return graphql.decodeUserPositionId(e.updateUserPositionConditions.userPositionId).chainId;types.never("Expected reserve id");}function xe(e){if("activity"in e&&e.activity)return e.activity.chain.chainId;if("estimate"in e&&e.estimate)return q(e.estimate)}function Te(e){if("activity"in e&&e.activity)return e.activity.timestamp}function Re(e,t){return "activity"in t&&t.activity?types.okAsync(t.activity.chain):"estimate"in t&&t.estimate?actions.chain(e,{chainId:q(t.estimate)}).map(types.nonNullable):types.never("Expected chain")}function he(){let e=p();return f(t=>Re(e,t).andThen(r=>{let a=viem$1.createPublicClient({chain:viem.toViemChain(r),transport:viem$1.http()});return "activity"in t&&t.activity.txHash?types.ResultAsync.fromPromise(a.getTransactionReceipt({hash:t.activity.txHash}),n=>client.UnexpectedError.from(n)).map(n=>({chain:t.activity.chain,gasPrice:n.effectiveGasPrice,gasUnits:n.gasUsed})):"estimate"in t&&t.estimate?types.ResultAsync.fromPromise(a.estimateFeesPerGas(),n=>client.UnexpectedError.from(n)).map(({maxFeePerGas:n})=>({chain:r,gasPrice:n,gasUnits:ge(t.estimate)})):types.okAsync({chain:types.never("Expected chain"),gasPrice:0n,gasUnits:0n})}),[e])}function F(e,t){let r=e.gasPrice*e.gasUnits,a=types.bigDecimal(r).rescale(-e.chain.nativeInfo.decimals),n={__typename:"DecimalNumber",decimals:e.chain.nativeInfo.decimals,onChainValue:r,value:a};return {__typename:"NativeAmount",token:{__typename:"NativeToken",info:e.chain.nativeInfo,chain:e.chain},amount:n,exchange:{__typename:"ExchangeAmount",value:a.mul(t.value),name:t.name,symbol:t.symbol,icon:t.icon,decimals:t.decimals},exchangeRate:{__typename:"DecimalNumber",decimals:2,onChainValue:BigInt(t.value.rescale(2).toFixed(0,types.RoundingMode.Down)),value:t.value}}}var yt=(({query:e,currency:t=graphql.Currency.Usd,pause:r=false,suspense:a=false})=>{let[n,s]=he(),o=w({from:{native:xe(e)},to:t,at:Te(e),pause:r,...a?{suspense:a}:{}});return W.useEffect(()=>{r||s.called||!e||n(e);},[n,r,s.called]),o.paused?i.Paused(s.data&&o.data?F(s.data,o.data):void 0,o.error?o.error:void 0):!s.called||s.loading||o.loading?i.Loading():s.error||o.error?i.Failure(s.error??o.error??types.never("Unknown error")):(types.invariant(s.data&&o.data,"Expected receipt, chain, and rate data"),i.Success(F(s.data,o.data)))});Object.defineProperty(exports,"viemChainsFrom",{enumerable:true,get:function(){return viem.viemChainsFrom}});exports.useNetworkFee=yt;exports.useSendTransaction=$e;exports.useSignTypedData=je;//# sourceMappingURL=index.cjs.map
|
|
2
2
|
//# sourceMappingURL=index.cjs.map
|