@aave/react 4.0.0-next.44 → 4.0.0-next.46
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-4LHXPD6N.js +2 -0
- package/dist/chunk-4LHXPD6N.js.map +1 -0
- package/dist/{chunk-IAK4S3R4.js → chunk-WQZMMTVR.js} +2 -2
- package/dist/{chunk-IAK4S3R4.js.map → chunk-WQZMMTVR.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 +5 -5
- package/dist/chunk-4GURAVFN.js +0 -2
- package/dist/chunk-4GURAVFN.js.map +0 -1
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import {invariant,okAsync,isSignature}from'@aave/types';import {useState,useRef,useEffect,useCallback}from'react';import {CancelError,UnexpectedError}from'@aave/core';var c={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 I(e,r){let[E,a]=useState(c.Idle()),t=useRef(false),u=useRef(true);useEffect(()=>()=>{u.current=false;},[]);let T=useCallback(e,r);return [useCallback(A=>{invariant(u.current,"Cannot execute a task on an unmounted component."),invariant(!t.current,"Cannot execute a task while another is in progress."),t.current=true;let s;a(n=>(s=n,{called:true,loading:true,data:n.data,error:void 0}));try{let n=T(A);return n.match(o=>{t.current=!1,a(c.Success(o));},o=>{t.current=!1,a(c.Failed(o));}),n}catch(n){throw t.current=false,s&&a(s),n}},[T]),E]}var h=e=>CancelError.from(e).asResultAsync(),p=class e{constructor(r){this.wait=r;}static isInstanceOf(r){return r instanceof e}static tryFrom(r){return e.isInstanceOf(r)?okAsync(r):UnexpectedError.from(r).asResultAsync()}};function w(e){return isSignature(e)?okAsync(e):UnexpectedError.from(`Expected Signature, but got ${String(e)}`).asResultAsync()}export{I as a,h as b,p as c,w as d};//# sourceMappingURL=chunk-4LHXPD6N.js.map
|
|
2
|
+
//# sourceMappingURL=chunk-4LHXPD6N.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/helpers/tasks.ts","../src/helpers/writes.ts"],"names":["AsyncTaskState","data","error","useAsyncTask","handler","deps","state","setState","useState","loadingRef","useRef","mountedRef","useEffect","handle","useCallback","input","invariant","previousState","result","value","cancel","message","CancelError","PendingTransaction","_PendingTransaction","wait","okAsync","UnexpectedError","trySignatureFrom","isSignature"],"mappings":"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","file":"chunk-4LHXPD6N.js","sourcesContent":["import { invariant, 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 if (previousState) {\n setState(previousState);\n }\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"]}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import {b}from'./chunk-4NA4FB6K.js';import {a}from'./chunk-
|
|
2
|
-
//# sourceMappingURL=chunk-
|
|
1
|
+
import {b}from'./chunk-4NA4FB6K.js';import {a}from'./chunk-4LHXPD6N.js';import {chain,exchangeRate}from'@aave/client/actions';import {ChainsFilter,ChainQuery,ChainsQuery,ExchangeRateQuery}from'@aave/graphql';import {UnexpectedError}from'@aave/client';import {ok,invariant}from'@aave/types';import {useState,useMemo,useEffect}from'react';import {useQuery}from'urql';var t={Loading:()=>({data:void 0,error:void 0,loading:true,paused:false,reloading:false}),Success:(e,a=false)=>({data:e,error:void 0,loading:false,paused:false,reloading:a}),Failure:(e,a=false)=>({data:void 0,error:e,loading:false,paused:false,reloading:a}),Paused:(e,a)=>({data:e,error:a,loading:false,paused:true,reloading:false})};function d({document:e,variables:a,suspense:s,pause:r,selector:x=ok,pollInterval:c=0,batch:g=true}){let[y,P]=useState(true),[{fetching:u,data:o,error:l,stale:m},S]=useQuery({query:e,variables:a,pause:r,context:useMemo(()=>({batch:g,suspense:s}),[g,s])});if(useEffect(()=>{r||u||P(false);},[u,r]),useEffect(()=>{if(c<=0||u||r)return;let n=setTimeout(()=>{S({requestPolicy:"network-only",batch:false});},c);return ()=>clearTimeout(n)},[u,S,c,r]),r){let n=l?UnexpectedError.from(l):void 0;if(!o)return t.Paused(void 0,n);let R=x(o.value);return R.isErr()?t.Paused(void 0,R.error):t.Paused(R.value,n)}if(!s&&y)return t.Loading();let b=m||!y&&u;if(l){let n=UnexpectedError.from(l);if(s)throw n;return t.Failure(n,b)}invariant(o,"No data returned");let i=x(o.value);if(i.isErr()){if(s)throw i.error;return t.Failure(i.error,b)}return t.Success(i.value,b)}function J({suspense:e=false,pause:a=false,...s}){return d({document:ChainQuery,variables:{request:s},suspense:e,pause:a})}function K(){let e=b();return a(a=>chain(e,a,{batch:false,requestPolicy:"cache-first"}),[e])}function X({suspense:e=false,pause:a=false,...s}={query:{filter:ChainsFilter.ALL}}){return d({document:ChainsQuery,variables:{request:s},suspense:e,pause:a})}function Y(){let e=b();return a(a=>exchangeRate(e,a,{requestPolicy:"network-only"}),[e])}function Z({suspense:e=false,pause:a=false,...s}){let r=b();return d({document:ExchangeRateQuery,variables:{request:s},suspense:e,pause:a,pollInterval:s.at?0:r.context.environment.exchangeRateInterval})}export{t as a,d as b,J as c,K as d,X as e,Y as f,Z as g};//# sourceMappingURL=chunk-WQZMMTVR.js.map
|
|
2
|
+
//# sourceMappingURL=chunk-WQZMMTVR.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/helpers/results.ts","../src/helpers/reads.ts","../src/misc.ts"],"names":["ReadResult","data","reloading","error","useSuspendableQuery","document","variables","suspense","pause","selector","ok","pollInterval","batch","loading","setLoading","useState","fetching","stale","executeQuery","useQuery","useMemo","useEffect","timerId","unexpectedError","UnexpectedError","selected","unexpected","invariant","useChain","request","ChainQuery","useChainAction","client","useAaveClient","useAsyncTask","fetchChain","useChains","ChainsFilter","ChainsQuery","useExchangeRateAction","exchangeRate","useExchangeRate","ExchangeRateQuery"],"mappings":"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","file":"chunk-IAK4S3R4.js","sourcesContent":["import type { UnexpectedError } from '@aave/client';\n\n/**\n * A read hook result.\n *\n * It's a discriminated union of the possible results of a read operation:\n * - Rely on the `loading` value to determine if the `data` or `error` can be evaluated.\n * - If `error` is `undefined`, then `data` value will be available.\n */\nexport type ReadResult<T, E = UnexpectedError> =\n | {\n data: undefined;\n error: undefined;\n loading: true;\n reloading: false;\n }\n | {\n data: T;\n error: undefined;\n loading: false;\n reloading: boolean;\n }\n | {\n data: undefined;\n error: E;\n loading: false;\n reloading: boolean;\n };\n\n/**\n * A read hook result that supports pausing.\n */\nexport type PausableReadResult<T, E = UnexpectedError> =\n | {\n data: T | undefined;\n error: E | undefined;\n loading: false;\n paused: true;\n reloading: false;\n }\n | {\n data: undefined;\n error: undefined;\n loading: true;\n paused: false;\n reloading: false;\n }\n | {\n data: T;\n error: undefined;\n loading: false;\n paused: false;\n reloading: boolean;\n }\n | {\n data: undefined;\n error: E;\n loading: false;\n paused: false;\n reloading: boolean;\n };\n\n/**\n * @internal\n */\nexport const ReadResult = {\n Loading: <T, E = UnexpectedError>(): PausableReadResult<T, E> => ({\n data: undefined,\n error: undefined,\n loading: true,\n paused: false,\n reloading: false,\n }),\n Success: <T, E = UnexpectedError>(\n data: T,\n reloading = false,\n ): PausableReadResult<T, E> => ({\n data,\n error: undefined,\n loading: false,\n paused: false,\n reloading,\n }),\n Failure: <T, E = UnexpectedError>(\n error: E,\n reloading = false,\n ): PausableReadResult<T, E> => ({\n data: undefined,\n error,\n loading: false,\n paused: false,\n reloading,\n }),\n Paused: <T, E = UnexpectedError>(\n data: T | undefined,\n error: E | undefined,\n ): PausableReadResult<T, E> => ({\n data,\n error,\n loading: false,\n paused: true,\n reloading: false,\n }),\n};\n\n/**\n * A read hook result that supports React Suspense.\n */\nexport type SuspenseResult<T> = {\n data: T;\n};\n\n/**\n * A read hook result that supports React Suspense and can be paused.\n */\nexport type PausableSuspenseResult<T> =\n | {\n paused: true;\n data: undefined;\n }\n | {\n paused: false;\n data: T;\n };\n\nexport type SuspendableResult<T, E = UnexpectedError> =\n | ReadResult<T, E>\n | SuspenseResult<T>\n | PausableReadResult<T, E>\n | PausableSuspenseResult<T>;\n","import { type StandardData, UnexpectedError } from '@aave/client';\nimport {\n type AnyVariables,\n invariant,\n type NullishDeep,\n ok,\n type Prettify,\n type Result,\n} from '@aave/types';\nimport { useEffect, useMemo, useState } from 'react';\nimport { type TypedDocumentNode, useQuery } from 'urql';\nimport {\n type PausableReadResult,\n type PausableSuspenseResult,\n ReadResult,\n type SuspendableResult,\n type SuspenseResult,\n} from './results';\n\nexport type Selector<ResponseValue, SelectorData, SelectorError> = (\n data: ResponseValue,\n) => Result<SelectorData, SelectorError>;\n\nexport type Pausable<T, WhenPaused = NullishDeep<T>> = Prettify<\n WhenPaused & {\n /**\n * Prevents the hook from automatically executing GraphQL query operations.\n *\n * @experimental This is an experimental feature and may change in the future.\n *\n * @remarks\n * `pause` may be set to `true` to stop the query operation from executing\n * automatically. The hook will stop receiving updates and won't execute the query\n * operation until it's set to `false`.\n */\n pause: boolean;\n }\n>;\n\nexport type Suspendable = { suspense: true };\n\n/**\n * @internal\n */\nexport type UseSuspendableQueryArgs<\n ResponseValue,\n SelectorData,\n SelectorError,\n Variables extends AnyVariables,\n Suspense extends boolean,\n Pause extends boolean = never,\n> = {\n document: TypedDocumentNode<StandardData<ResponseValue>, Variables>;\n variables?: Pause extends boolean ? NullishDeep<Variables> : Variables;\n suspense: Suspense;\n selector?: Selector<ResponseValue, SelectorData, SelectorError>;\n pollInterval?: number;\n batch?: boolean;\n pause?: Pause;\n};\n\n/**\n * @internal\n */\nexport function useSuspendableQuery<\n ResponseValue,\n SelectorData,\n SelectorError,\n Variables extends AnyVariables,\n Pausable extends boolean = never,\n>({\n document,\n variables,\n suspense,\n pause,\n}: UseSuspendableQueryArgs<\n ResponseValue,\n SelectorData,\n SelectorError,\n Variables,\n false,\n Pausable\n>):\n | ReadResult<SelectorData, SelectorError | UnexpectedError>\n | PausableReadResult<SelectorData, SelectorError | UnexpectedError>;\n/**\n * @internal\n */\nexport function useSuspendableQuery<\n ResponseValue,\n SelectorData,\n SelectorError,\n Variables extends AnyVariables,\n Pausable extends boolean = never,\n>({\n document,\n variables,\n suspense,\n pause,\n}: UseSuspendableQueryArgs<\n ResponseValue,\n SelectorData,\n SelectorError,\n Variables,\n true,\n Pausable\n>): SuspenseResult<SelectorData> | PausableSuspenseResult<SelectorData>;\n/**\n * @internal\n */\nexport function useSuspendableQuery<\n ResponseValue,\n SelectorData,\n SelectorError,\n Variables extends AnyVariables,\n Pausable extends boolean = never,\n>({\n document,\n variables,\n suspense,\n pause,\n}: UseSuspendableQueryArgs<\n ResponseValue,\n SelectorData,\n SelectorError,\n Variables,\n boolean,\n Pausable\n>): SuspendableResult<SelectorData, SelectorError | UnexpectedError>;\n/**\n * Implementation.\n */\nexport function useSuspendableQuery<\n ResponseValue,\n SelectorData,\n SelectorError,\n Variables extends AnyVariables,\n>({\n document,\n variables,\n suspense,\n pause,\n selector = ok as Selector<ResponseValue, SelectorData, SelectorError>,\n pollInterval = 0,\n batch = true,\n}: UseSuspendableQueryArgs<\n ResponseValue,\n SelectorData,\n SelectorError,\n Variables,\n boolean,\n boolean\n>): SuspendableResult<SelectorData, SelectorError | UnexpectedError> {\n const [loading, setLoading] = useState(true);\n const [{ fetching, data, error, stale }, executeQuery] = useQuery({\n query: document,\n variables: variables as Variables,\n pause,\n context: useMemo(\n () => ({\n batch,\n suspense,\n }),\n [batch, suspense],\n ),\n });\n\n useEffect(() => {\n if (pause) return;\n\n if (!fetching) {\n setLoading(false);\n }\n }, [fetching, pause]);\n\n useEffect(() => {\n if (pollInterval <= 0 || fetching || pause) return undefined;\n\n const timerId = setTimeout(() => {\n executeQuery({\n requestPolicy: 'network-only',\n batch: false, // never batch, run now!\n });\n }, pollInterval);\n\n return () => clearTimeout(timerId);\n }, [fetching, executeQuery, pollInterval, pause]);\n\n if (pause) {\n const unexpectedError = error ? UnexpectedError.from(error) : undefined;\n\n if (!data) {\n return ReadResult.Paused<SelectorData, SelectorError | UnexpectedError>(\n undefined,\n unexpectedError,\n );\n }\n\n const selected = selector(data.value);\n\n if (selected.isErr()) {\n return ReadResult.Paused<SelectorData, SelectorError>(\n undefined,\n selected.error,\n );\n }\n\n return ReadResult.Paused<SelectorData, UnexpectedError>(\n selected.value,\n unexpectedError,\n );\n }\n\n if (!suspense && loading) {\n return ReadResult.Loading();\n }\n\n // stale indicates that the useQuery is fetching new data because the variables changed\n // !loading && fetching indicates that a re-fetch is happening as consequence of calling executeQuery (e.g., polling)\n const reloading = stale || (!loading && fetching);\n\n if (error) {\n const unexpected = UnexpectedError.from(error);\n if (suspense) {\n throw unexpected;\n }\n\n return ReadResult.Failure(unexpected, reloading);\n }\n\n invariant(data, 'No data returned');\n\n const selected = selector(data.value);\n\n if (selected.isErr()) {\n if (suspense) {\n throw selected.error;\n }\n return ReadResult.Failure(selected.error, reloading);\n }\n\n return ReadResult.Success(selected.value, reloading);\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"]}
|
|
1
|
+
{"version":3,"sources":["../src/helpers/results.ts","../src/helpers/reads.ts","../src/misc.ts"],"names":["ReadResult","data","reloading","error","useSuspendableQuery","document","variables","suspense","pause","selector","ok","pollInterval","batch","loading","setLoading","useState","fetching","stale","executeQuery","useQuery","useMemo","useEffect","timerId","unexpectedError","UnexpectedError","selected","unexpected","invariant","useChain","request","ChainQuery","useChainAction","client","useAaveClient","useAsyncTask","fetchChain","useChains","ChainsFilter","ChainsQuery","useExchangeRateAction","exchangeRate","useExchangeRate","ExchangeRateQuery"],"mappings":"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","file":"chunk-WQZMMTVR.js","sourcesContent":["import type { UnexpectedError } from '@aave/client';\n\n/**\n * A read hook result.\n *\n * It's a discriminated union of the possible results of a read operation:\n * - Rely on the `loading` value to determine if the `data` or `error` can be evaluated.\n * - If `error` is `undefined`, then `data` value will be available.\n */\nexport type ReadResult<T, E = UnexpectedError> =\n | {\n data: undefined;\n error: undefined;\n loading: true;\n reloading: false;\n }\n | {\n data: T;\n error: undefined;\n loading: false;\n reloading: boolean;\n }\n | {\n data: undefined;\n error: E;\n loading: false;\n reloading: boolean;\n };\n\n/**\n * A read hook result that supports pausing.\n */\nexport type PausableReadResult<T, E = UnexpectedError> =\n | {\n data: T | undefined;\n error: E | undefined;\n loading: false;\n paused: true;\n reloading: false;\n }\n | {\n data: undefined;\n error: undefined;\n loading: true;\n paused: false;\n reloading: false;\n }\n | {\n data: T;\n error: undefined;\n loading: false;\n paused: false;\n reloading: boolean;\n }\n | {\n data: undefined;\n error: E;\n loading: false;\n paused: false;\n reloading: boolean;\n };\n\n/**\n * @internal\n */\nexport const ReadResult = {\n Loading: <T, E = UnexpectedError>(): PausableReadResult<T, E> => ({\n data: undefined,\n error: undefined,\n loading: true,\n paused: false,\n reloading: false,\n }),\n Success: <T, E = UnexpectedError>(\n data: T,\n reloading = false,\n ): PausableReadResult<T, E> => ({\n data,\n error: undefined,\n loading: false,\n paused: false,\n reloading,\n }),\n Failure: <T, E = UnexpectedError>(\n error: E,\n reloading = false,\n ): PausableReadResult<T, E> => ({\n data: undefined,\n error,\n loading: false,\n paused: false,\n reloading,\n }),\n Paused: <T, E = UnexpectedError>(\n data: T | undefined,\n error: E | undefined,\n ): PausableReadResult<T, E> => ({\n data,\n error,\n loading: false,\n paused: true,\n reloading: false,\n }),\n};\n\n/**\n * A read hook result that supports React Suspense.\n */\nexport type SuspenseResult<T> = {\n data: T;\n};\n\n/**\n * A read hook result that supports React Suspense and can be paused.\n */\nexport type PausableSuspenseResult<T> =\n | {\n paused: true;\n data: undefined;\n }\n | {\n paused: false;\n data: T;\n };\n\nexport type SuspendableResult<T, E = UnexpectedError> =\n | ReadResult<T, E>\n | SuspenseResult<T>\n | PausableReadResult<T, E>\n | PausableSuspenseResult<T>;\n","import { type StandardData, UnexpectedError } from '@aave/client';\nimport {\n type AnyVariables,\n invariant,\n type NullishDeep,\n ok,\n type Prettify,\n type Result,\n} from '@aave/types';\nimport { useEffect, useMemo, useState } from 'react';\nimport { type TypedDocumentNode, useQuery } from 'urql';\nimport {\n type PausableReadResult,\n type PausableSuspenseResult,\n ReadResult,\n type SuspendableResult,\n type SuspenseResult,\n} from './results';\n\nexport type Selector<ResponseValue, SelectorData, SelectorError> = (\n data: ResponseValue,\n) => Result<SelectorData, SelectorError>;\n\nexport type Pausable<T, WhenPaused = NullishDeep<T>> = Prettify<\n WhenPaused & {\n /**\n * Prevents the hook from automatically executing GraphQL query operations.\n *\n * @experimental This is an experimental feature and may change in the future.\n *\n * @remarks\n * `pause` may be set to `true` to stop the query operation from executing\n * automatically. The hook will stop receiving updates and won't execute the query\n * operation until it's set to `false`.\n */\n pause: boolean;\n }\n>;\n\nexport type Suspendable = { suspense: true };\n\n/**\n * @internal\n */\nexport type UseSuspendableQueryArgs<\n ResponseValue,\n SelectorData,\n SelectorError,\n Variables extends AnyVariables,\n Suspense extends boolean,\n Pause extends boolean = never,\n> = {\n document: TypedDocumentNode<StandardData<ResponseValue>, Variables>;\n variables?: Pause extends boolean ? NullishDeep<Variables> : Variables;\n suspense: Suspense;\n selector?: Selector<ResponseValue, SelectorData, SelectorError>;\n pollInterval?: number;\n batch?: boolean;\n pause?: Pause;\n};\n\n/**\n * @internal\n */\nexport function useSuspendableQuery<\n ResponseValue,\n SelectorData,\n SelectorError,\n Variables extends AnyVariables,\n Pausable extends boolean = never,\n>({\n document,\n variables,\n suspense,\n pause,\n}: UseSuspendableQueryArgs<\n ResponseValue,\n SelectorData,\n SelectorError,\n Variables,\n false,\n Pausable\n>):\n | ReadResult<SelectorData, SelectorError | UnexpectedError>\n | PausableReadResult<SelectorData, SelectorError | UnexpectedError>;\n/**\n * @internal\n */\nexport function useSuspendableQuery<\n ResponseValue,\n SelectorData,\n SelectorError,\n Variables extends AnyVariables,\n Pausable extends boolean = never,\n>({\n document,\n variables,\n suspense,\n pause,\n}: UseSuspendableQueryArgs<\n ResponseValue,\n SelectorData,\n SelectorError,\n Variables,\n true,\n Pausable\n>): SuspenseResult<SelectorData> | PausableSuspenseResult<SelectorData>;\n/**\n * @internal\n */\nexport function useSuspendableQuery<\n ResponseValue,\n SelectorData,\n SelectorError,\n Variables extends AnyVariables,\n Pausable extends boolean = never,\n>({\n document,\n variables,\n suspense,\n pause,\n}: UseSuspendableQueryArgs<\n ResponseValue,\n SelectorData,\n SelectorError,\n Variables,\n boolean,\n Pausable\n>): SuspendableResult<SelectorData, SelectorError | UnexpectedError>;\n/**\n * Implementation.\n */\nexport function useSuspendableQuery<\n ResponseValue,\n SelectorData,\n SelectorError,\n Variables extends AnyVariables,\n>({\n document,\n variables,\n suspense,\n pause,\n selector = ok as Selector<ResponseValue, SelectorData, SelectorError>,\n pollInterval = 0,\n batch = true,\n}: UseSuspendableQueryArgs<\n ResponseValue,\n SelectorData,\n SelectorError,\n Variables,\n boolean,\n boolean\n>): SuspendableResult<SelectorData, SelectorError | UnexpectedError> {\n const [loading, setLoading] = useState(true);\n const [{ fetching, data, error, stale }, executeQuery] = useQuery({\n query: document,\n variables: variables as Variables,\n pause,\n context: useMemo(\n () => ({\n batch,\n suspense,\n }),\n [batch, suspense],\n ),\n });\n\n useEffect(() => {\n if (pause) return;\n\n if (!fetching) {\n setLoading(false);\n }\n }, [fetching, pause]);\n\n useEffect(() => {\n if (pollInterval <= 0 || fetching || pause) return undefined;\n\n const timerId = setTimeout(() => {\n executeQuery({\n requestPolicy: 'network-only',\n batch: false, // never batch, run now!\n });\n }, pollInterval);\n\n return () => clearTimeout(timerId);\n }, [fetching, executeQuery, pollInterval, pause]);\n\n if (pause) {\n const unexpectedError = error ? UnexpectedError.from(error) : undefined;\n\n if (!data) {\n return ReadResult.Paused<SelectorData, SelectorError | UnexpectedError>(\n undefined,\n unexpectedError,\n );\n }\n\n const selected = selector(data.value);\n\n if (selected.isErr()) {\n return ReadResult.Paused<SelectorData, SelectorError>(\n undefined,\n selected.error,\n );\n }\n\n return ReadResult.Paused<SelectorData, UnexpectedError>(\n selected.value,\n unexpectedError,\n );\n }\n\n if (!suspense && loading) {\n return ReadResult.Loading();\n }\n\n // stale indicates that the useQuery is fetching new data because the variables changed\n // !loading && fetching indicates that a re-fetch is happening as consequence of calling executeQuery (e.g., polling)\n const reloading = stale || (!loading && fetching);\n\n if (error) {\n const unexpected = UnexpectedError.from(error);\n if (suspense) {\n throw unexpected;\n }\n\n return ReadResult.Failure(unexpected, reloading);\n }\n\n invariant(data, 'No data returned');\n\n const selected = selector(data.value);\n\n if (selected.isErr()) {\n if (suspense) {\n throw selected.error;\n }\n return ReadResult.Failure(selected.error, reloading);\n }\n\n return ReadResult.Success(selected.value, reloading);\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"]}
|
package/dist/ethers.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
'use strict';var ethers=require('@aave/client/ethers'),types=require('@aave/types'),react=require('react'),core=require('@aave/core');var
|
|
1
|
+
'use strict';var ethers=require('@aave/client/ethers'),types=require('@aave/types'),react=require('react'),core=require('@aave/core');var u={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 T(e,r){let[o,a]=react.useState(u.Idle()),t=react.useRef(false),d=react.useRef(true);react.useEffect(()=>()=>{d.current=false;},[]);let l=react.useCallback(e,r);return [react.useCallback(E=>{types.invariant(d.current,"Cannot execute a task on an unmounted component."),types.invariant(!t.current,"Cannot execute a task while another is in progress."),t.current=true;let c;a(n=>(c=n,{called:true,loading:true,data:n.data,error:void 0}));try{let n=l(E);return n.match(i=>{t.current=!1,a(u.Success(i));},i=>{t.current=!1,a(u.Failed(i));}),n}catch(n){throw t.current=false,c&&a(c),n}},[l]),o]}var s=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 b(e){return T(r=>ethers.sendTransaction(e,r).map(o=>new s(()=>ethers.waitForTransactionResult(r,o))),[e])}function H(e){return T(r=>(types.invariant(e,"Expected a Signer to sign typed data"),ethers.signTypedDataWith(e,r)),[e])}exports.useSendTransaction=b;exports.useSignTypedData=H;//# sourceMappingURL=ethers.cjs.map
|
|
2
2
|
//# sourceMappingURL=ethers.cjs.map
|
package/dist/ethers.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/helpers/tasks.ts","../src/helpers/writes.ts","../src/ethers.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","useSendTransaction","signer","request","sendTransaction","response","waitForTransactionResult","useSignTypedData","typedData","signTypedDataWith"],"mappings":"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","file":"ethers.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 { SignTypedDataError, TypedData } from '@aave/client';\nimport {\n sendTransaction,\n signTypedDataWith,\n waitForTransactionResult,\n} from '@aave/client/ethers';\nimport type { TransactionRequest } from '@aave/graphql';\nimport { invariant, type Signature } from '@aave/types';\nimport type { Signer } from 'ethers';\nimport {\n PendingTransaction,\n type UseAsyncTask,\n type UseSendTransactionResult,\n useAsyncTask,\n} from './helpers';\n\n/**\n * A hook that provides a way to send Aave transactions using an ethers Signer instance.\n *\n * Retrieve the `Signer` instance from your ethers provider, then pass it to this hook to create a function that can be used to send transactions.\n *\n * ```ts\n * const provider = new ethers.providers.Web3Provider(window.ethereum);\n * const signer = provider.getSigner();\n *\n * // …\n *\n * const [sendTransaction, { loading, error, data }] = useSendTransaction(signer);\n * ```\n *\n * @param signer - The ethers Signer to use for sending transactions.\n */\nexport function useSendTransaction(signer: Signer): UseSendTransactionResult {\n return useAsyncTask(\n (request: TransactionRequest) => {\n return sendTransaction(signer, request).map(\n (response) =>\n new PendingTransaction(() =>\n waitForTransactionResult(request, response),\n ),\n );\n },\n [signer],\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 an ethers Signer instance.\n *\n * ```ts\n * const [signTypedData, { loading, error, data }] = useSignTypedData(signer);\n * ```\n *\n * @param signer - The ethers Signer to use for signing typed data.\n */\nexport function useSignTypedData(\n signer: Signer | undefined,\n): UseAsyncTask<TypedData, Signature, SignTypedDataError> {\n return useAsyncTask(\n (typedData: TypedData) => {\n invariant(signer, 'Expected a Signer to sign typed data');\n\n return signTypedDataWith(signer, typedData);\n },\n [signer],\n );\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/helpers/tasks.ts","../src/helpers/writes.ts","../src/ethers.ts"],"names":["AsyncTaskState","data","error","useAsyncTask","handler","deps","state","setState","useState","loadingRef","useRef","mountedRef","useEffect","handle","useCallback","input","invariant","previousState","result","value","PendingTransaction","_PendingTransaction","wait","okAsync","UnexpectedError","useSendTransaction","signer","request","sendTransaction","response","waitForTransactionResult","useSignTypedData","typedData","signTypedDataWith"],"mappings":"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","file":"ethers.cjs","sourcesContent":["import { invariant, 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 if (previousState) {\n setState(previousState);\n }\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 { SignTypedDataError, TypedData } from '@aave/client';\nimport {\n sendTransaction,\n signTypedDataWith,\n waitForTransactionResult,\n} from '@aave/client/ethers';\nimport type { TransactionRequest } from '@aave/graphql';\nimport { invariant, type Signature } from '@aave/types';\nimport type { Signer } from 'ethers';\nimport {\n PendingTransaction,\n type UseAsyncTask,\n type UseSendTransactionResult,\n useAsyncTask,\n} from './helpers';\n\n/**\n * A hook that provides a way to send Aave transactions using an ethers Signer instance.\n *\n * Retrieve the `Signer` instance from your ethers provider, then pass it to this hook to create a function that can be used to send transactions.\n *\n * ```ts\n * const provider = new ethers.providers.Web3Provider(window.ethereum);\n * const signer = provider.getSigner();\n *\n * // …\n *\n * const [sendTransaction, { loading, error, data }] = useSendTransaction(signer);\n * ```\n *\n * @param signer - The ethers Signer to use for sending transactions.\n */\nexport function useSendTransaction(signer: Signer): UseSendTransactionResult {\n return useAsyncTask(\n (request: TransactionRequest) => {\n return sendTransaction(signer, request).map(\n (response) =>\n new PendingTransaction(() =>\n waitForTransactionResult(request, response),\n ),\n );\n },\n [signer],\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 an ethers Signer instance.\n *\n * ```ts\n * const [signTypedData, { loading, error, data }] = useSignTypedData(signer);\n * ```\n *\n * @param signer - The ethers Signer to use for signing typed data.\n */\nexport function useSignTypedData(\n signer: Signer | undefined,\n): UseAsyncTask<TypedData, Signature, SignTypedDataError> {\n return useAsyncTask(\n (typedData: TypedData) => {\n invariant(signer, 'Expected a Signer to sign typed data');\n\n return signTypedDataWith(signer, typedData);\n },\n [signer],\n );\n}\n"]}
|
package/dist/ethers.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import {a,c as c$1}from'./chunk-
|
|
1
|
+
import {a,c as c$1}from'./chunk-4LHXPD6N.js';import {sendTransaction,waitForTransactionResult,signTypedDataWith}from'@aave/client/ethers';import {invariant}from'@aave/types';function u(e){return a(t=>sendTransaction(e,t).map(r=>new c$1(()=>waitForTransactionResult(t,r))),[e])}function c(e){return a(t=>(invariant(e,"Expected a Signer to sign typed data"),signTypedDataWith(e,t)),[e])}export{u as useSendTransaction,c as useSignTypedData};//# sourceMappingURL=ethers.js.map
|
|
2
2
|
//# sourceMappingURL=ethers.js.map
|
package/dist/index.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
'use strict';var client=require('@aave/client'),F=require('react'),types=require('@aave/types'),urql=require('urql'),actions=require('@aave/client/actions'),graphql=require('@aave/graphql'),core=require('@aave/core');function _interopDefault(e){return e&&e.__esModule?e:{default:e}}var F__default=/*#__PURE__*/_interopDefault(F);var ae=F__default.default.createContext(null);function oe({children:e,client:s}){return F__default.default.createElement(ae.Provider,{value:s},F__default.default.createElement(urql.Provider,{value:s.urql},e))}function u(){let e=F.useContext(ae);return types.invariant(e,"Could not find Aave SDK context, ensure your code is wrapped in a <AaveProvider>"),e}function Fr({children:e,client:s}){return F__default.default.createElement(oe,{client:s},e)}function ls(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}=graphql.decodeUserPositionId(e.userPositionId);return s}function cs(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}=graphql.decodeUserPositionId(e.userPositionId);return s}function le(e,s){return e.refreshQueryWhere(graphql.UserBalancesQuery,r=>r.request.user===s)}function L(e,s){return e.refreshQueryWhere(graphql.UserSuppliesQuery,r=>ls(r.request.query)===s)}function j(e,s){return e.refreshQueryWhere(graphql.UserBorrowsQuery,r=>cs(r.request.query)===s)}function G(e,s,r){let t=n=>n.spoke.chain.chainId===r.chainId&&n.spoke.address===r.address&&n.user===s;return types.ResultAsync.combine([e.refreshQueryWhere(graphql.UserPositionsQuery,(n,a)=>a.some(t)),e.refreshQueryWhere(graphql.UserPositionQuery,(n,a)=>a!==null&&t(a))])}function Y(e,s){let r=t=>s.includes(t.id);return types.ResultAsync.combine([e.refreshQueryWhere(graphql.ReserveQuery,(t,n)=>n!==null&&r(n)),e.refreshQueryWhere(graphql.ReservesQuery,(t,n)=>n.some(r))])}function $(e,s,r){return e.refreshQueryWhere(graphql.UserSummaryQuery,t=>t.request.user===s&&(graphql.isSpokeInputVariant(t.request.filter)?t.request.filter.spoke.chainId===r.chainId&&t.request.filter.spoke.address===r.address:graphql.isChainIdsVariant(t.request.filter)?t.request.filter.chainIds.some(n=>n===r.chainId):false))}function K(e,s){let r=t=>t.chain.chainId===s.chainId&&t.address===s.address;return types.ResultAsync.combine([e.refreshQueryWhere(graphql.SpokeQuery,(t,n)=>n!==null&&r(n)),e.refreshQueryWhere(graphql.SpokesQuery,(t,n)=>n.some(r))])}function z(e,s){let r=t=>t.chain.chainId===s;return types.ResultAsync.combine([e.refreshQueryWhere(graphql.HubQuery,(t,n)=>n!==null&&r(n)),e.refreshQueryWhere(graphql.HubsQuery,(t,n)=>n.some(r))])}function J(e,s){return e.refreshQueryWhere(graphql.SpokePositionManagersQuery,r=>r.request.spoke===s)}function ce(e,s){return types.ResultAsync.combine([e.refreshQueryWhere(graphql.UserPositionsQuery,(r,t)=>t.some(n=>n.id===s)),e.refreshQueryWhere(graphql.UserPositionQuery,(r,t)=>t?.id===s)])}var w={Loading:()=>({data:void 0,error:void 0,loading:true,paused:false,reloading:false}),Success:(e,s=false)=>({data:e,error:void 0,loading:false,paused:false,reloading:s}),Failure:(e,s=false)=>({data:void 0,error:e,loading:false,paused:false,reloading:s}),Paused:(e,s)=>({data:e,error:s,loading:false,paused:true,reloading:false})};function o({document:e,variables:s,suspense:r,pause:t,selector:n=types.ok,pollInterval:a=0,batch:i=true}){let[c,d]=F.useState(true),[{fetching:f,data:A,error:H,stale:Ge},ne]=urql.useQuery({query:e,variables:s,pause:t,context:F.useMemo(()=>({batch:i,suspense:r}),[i,r])});if(F.useEffect(()=>{t||f||d(false);},[f,t]),F.useEffect(()=>{if(a<=0||f||t)return;let T=setTimeout(()=>{ne({requestPolicy:"network-only",batch:false});},a);return ()=>clearTimeout(T)},[f,ne,a,t]),t){let T=H?client.UnexpectedError.from(H):void 0;if(!A)return w.Paused(void 0,T);let M=n(A.value);return M.isErr()?w.Paused(void 0,M.error):w.Paused(M.value,T)}if(!r&&c)return w.Loading();let _=Ge||!c&&f;if(H){let T=client.UnexpectedError.from(H);if(r)throw T;return w.Failure(T,_)}types.invariant(A,"No data returned");let C=n(A.value);if(C.isErr()){if(r)throw C.error;return w.Failure(C.error,_)}return w.Success(C.value,_)}var X={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 l(e,s){let[r,t]=F.useState(X.Idle()),n=F.useRef(false),a=F.useCallback(e,s);return [F.useCallback(c=>{types.invariant(!n.current,"Cannot execute a task while another is in progress."),n.current=true;let d;t(f=>(d=f,{called:true,loading:true,data:f.data,error:void 0}));try{let f=a(c);return f.match(A=>{n.current=!1,t(X.Success(A));},A=>{n.current=!1,t(X.Failed(A));}),f}catch(f){throw n.current=false,t(types.nonNullable(d)),f}},[a]),r]}var p=e=>core.CancelError.from(e).asResultAsync(),R=class e{constructor(s){this.wait=s;}static isInstanceOf(s){return s instanceof e}static tryFrom(s){return e.isInstanceOf(s)?types.okAsync(s):core.UnexpectedError.from(s).asResultAsync()}};function g(e){return types.isSignature(e)?types.okAsync(e):core.UnexpectedError.from(`Expected Signature, but got ${String(e)}`).asResultAsync()}function yt({suspense:e=false,pause:s=false,currency:r=client.DEFAULT_QUERY_OPTIONS.currency,timeWindow:t=client.DEFAULT_QUERY_OPTIONS.timeWindow,...n}){return o({document:graphql.HubQuery,variables:{request:n,currency:r,timeWindow:t},suspense:e,pause:s})}function dt({suspense:e=false,pause:s=false,currency:r=client.DEFAULT_QUERY_OPTIONS.currency,timeWindow:t=client.DEFAULT_QUERY_OPTIONS.timeWindow,...n}){return o({document:graphql.HubsQuery,variables:{request:n,currency:r,timeWindow:t},suspense:e,pause:s})}function St({suspense:e=false,pause:s=false,currency:r=client.DEFAULT_QUERY_OPTIONS.currency,timeWindow:t=client.DEFAULT_QUERY_OPTIONS.timeWindow,...n}){return o({document:graphql.HubAssetsQuery,variables:{request:n,currency:r,timeWindow:t},suspense:e,pause:s})}function Rt({suspense:e=false,pause:s=false,...r}){return o({document:graphql.HubSummaryHistoryQuery,variables:{request:r},suspense:e,pause:s,batch:false})}function ft(e=client.DEFAULT_QUERY_OPTIONS){let s=u();return l(r=>actions.hubs(s,r,{currency:e.currency,requestPolicy:"cache-first"}),[s,e.currency])}function Pt({suspense:e=false,pause:s=false,...r}){return o({document:graphql.ChainQuery,variables:{request:r},suspense:e,pause:s})}function Tt(){let e=u();return l(s=>actions.chain(e,s,{batch:false,requestPolicy:"cache-first"}),[e])}function xt({suspense:e=false,pause:s=false,...r}={query:{filter:graphql.ChainsFilter.ALL}}){return o({document:graphql.ChainsQuery,variables:{request:r},suspense:e,pause:s})}function ht(){let e=u();return l(s=>actions.exchangeRate(e,s,{requestPolicy:"network-only"}),[e])}function Et({suspense:e=false,pause:s=false,...r}){let t=u();return o({document:graphql.ExchangeRateQuery,variables:{request:r},suspense:e,pause:s,pollInterval:r.at?0:t.context.environment.exchangeRateInterval})}function Ht({suspense:e=false,pause:s=false,currency:r=client.DEFAULT_QUERY_OPTIONS.currency,timeWindow:t=client.DEFAULT_QUERY_OPTIONS.timeWindow,...n}){return o({document:graphql.AssetQuery,variables:{request:n,currency:r,timeWindow:t},suspense:e,pause:s})}function Ct({suspense:e=false,pause:s=false,...r}){return o({document:graphql.AssetPriceHistoryQuery,variables:{request:r},suspense:e,pause:s,batch:false})}function It({suspense:e=false,pause:s=false,currency:r=client.DEFAULT_QUERY_OPTIONS.currency,timeWindow:t=client.DEFAULT_QUERY_OPTIONS.timeWindow,...n}){return o({document:graphql.AssetSupplyHistoryQuery,variables:{request:n,currency:r,timeWindow:t},suspense:e,pause:s,batch:false})}function Bt({suspense:e=false,pause:s=false,currency:r=client.DEFAULT_QUERY_OPTIONS.currency,timeWindow:t=client.DEFAULT_QUERY_OPTIONS.timeWindow,...n}){return o({document:graphql.AssetBorrowHistoryQuery,variables:{request:n,currency:r,timeWindow:t},suspense:e,pause:s,batch:false})}function Wt({suspense:e=false,pause:s=false,...r}){return o({document:graphql.ProtocolHistoryQuery,variables:{request:r},suspense:e,pause:s,batch:false})}function Ft({suspense:e=false,pause:s=false,currency:r=client.DEFAULT_QUERY_OPTIONS.currency,timeWindow:t=client.DEFAULT_QUERY_OPTIONS.timeWindow,...n}){return o({document:graphql.ReserveQuery,variables:{request:n,currency:r,timeWindow:t},suspense:e,pause:s})}function Lt(e=client.DEFAULT_QUERY_OPTIONS){let s=u();return l(r=>actions.reserve(s,r,{currency:e.currency??client.DEFAULT_QUERY_OPTIONS.currency,timeWindow:e.timeWindow??client.DEFAULT_QUERY_OPTIONS.timeWindow,requestPolicy:"cache-first"}),[s,e.currency,e.timeWindow])}function jt({suspense:e=false,pause:s=false,currency:r=client.DEFAULT_QUERY_OPTIONS.currency,timeWindow:t=client.DEFAULT_QUERY_OPTIONS.timeWindow,...n}){return o({document:graphql.ReservesQuery,variables:{request:n,currency:r,timeWindow:t},suspense:e,pause:s})}function Gt(e=client.DEFAULT_QUERY_OPTIONS){let s=u();return l(r=>actions.reserves(s,r,{currency:e.currency??client.DEFAULT_QUERY_OPTIONS.currency,timeWindow:e.timeWindow??client.DEFAULT_QUERY_OPTIONS.timeWindow,requestPolicy:"cache-first"}),[s,e.currency,e.timeWindow])}function Yt({suspense:e=false,pause:s=false,...r}){return o({document:graphql.BorrowApyHistoryQuery,variables:{request:r},suspense:e,pause:s,batch:false})}function $t({suspense:e=false,pause:s=false,...r}){return o({document:graphql.SupplyApyHistoryQuery,variables:{request:r},suspense:e,pause:s,batch:false})}function en({suspense:e=false,pause:s=false,...r}){return o({document:graphql.UserClaimableRewardsQuery,variables:{request:r},suspense:e,pause:s})}function sn(){let e=u();return l(s=>actions.userClaimableRewards(e,s,{requestPolicy:"cache-first"}),[e])}function an({suspense:e=false,pause:s=false,...r}){return o({document:graphql.SpokeQuery,variables:{request:r},suspense:e,pause:s})}function on({suspense:e=false,pause:s=false,...r}){return o({document:graphql.SpokesQuery,variables:{request:r},suspense:e,pause:s})}function un({suspense:e=false,pause:s=false,...r}){return o({document:graphql.SpokePositionManagersQuery,variables:{request:r},suspense:e,pause:s})}function pn({suspense:e=false,pause:s=false,...r}){return o({document:graphql.SpokeUserPositionManagersQuery,variables:{request:r},suspense:e,pause:s})}function ee(e){switch(e.__typename){case "SwapByIntent":case "SwapByIntentWithApprovalRequired":case "SwapByTransaction":return types.ok(e.quote);case "InsufficientLiquidityError":return types.err(core.ValidationError.fromGqlNode(e));default:return types.err(core.UnexpectedError.upgradeRequired(`Unsupported swap quote result: ${e.__typename}`))}}function Pe(e){return {__typename:"SwapCancelledResult",swapId:e.swapId,createdAt:e.createdAt,cancelledAt:e.cancelledAt,explorerUrl:e.explorerUrl}}function m(e){switch(e.__typename){case "PositionSwapByIntentApprovalsRequired":return types.ok(e.quote);case "InsufficientLiquidityError":return types.err(core.ValidationError.fromGqlNode(e));default:return types.err(core.UnexpectedError.upgradeRequired(`Unsupported position swap quote result: ${e.__typename}`))}}function Te(e,s){return "market"in e&&e.market?{market:{...e.market,accuracy:s}}:e}function xe(e,s){return "market"in e&&e.market?{market:{...e.market,accuracy:s}}:e}function he(e,s){return "market"in e&&e.market?{market:{...e.market,accuracy:s}}:e}function Ee(e,s){return "market"in e&&e.market?{market:{...e.market,accuracy:s}}:e}function Qe(e,s){return "market"in e&&e.market?{market:{...e.market,accuracy:s}}:e}function gn({suspense:e=false,pause:s=false,currency:r=client.DEFAULT_QUERY_OPTIONS.currency,...t}){let n=u(),a=o({document:graphql.TokenSwapQuoteQuery,variables:{request:Te(t,graphql.QuoteAccuracy.Fast),currency:r},selector:ee,suspense:e,pause:s,batch:false}),i=o({document:graphql.TokenSwapQuoteQuery,variables:{request:Te(t,graphql.QuoteAccuracy.Accurate),currency:r},selector:ee,suspense:false,pause:s||e&&!a.data,pollInterval:n.context.environment.swapQuoteInterval,batch:false});return i.data?i:a}function An(e=client.DEFAULT_QUERY_OPTIONS){let s=u();return l(r=>actions.tokenSwapQuote(s,r,{currency:e.currency,requestPolicy:"network-only"}).andThen(ee),[s,e.currency])}function wn({suspense:e=false,pause:s=false,...r}){return o({document:graphql.SwappableTokensQuery,variables:{request:r},suspense:e,pause:s})}function Pn({suspense:e=false,pause:s=false,currency:r=client.DEFAULT_QUERY_OPTIONS.currency,timeWindow:t=client.DEFAULT_QUERY_OPTIONS.timeWindow,...n}){let a=u(),[i,c]=F.useState(false),d=o({document:graphql.UserSwapsQuery,variables:{request:n,currency:r,timeWindow:t},suspense:e,pause:s||i,pollInterval:a.context.environment.swapStatusInterval});return F.useEffect(()=>{d.data&&d.data.items.length>0&&d.data.items.every(Ne)&&c(true);},[d.data]),d}function Ne(e){return e.__typename==="SwapFulfilled"||e.__typename==="SwapCancelled"||e.__typename==="SwapExpired"}function Tn({suspense:e=false,pause:s=false,currency:r=client.DEFAULT_QUERY_OPTIONS.currency,timeWindow:t=client.DEFAULT_QUERY_OPTIONS.timeWindow,...n}){let a=u(),[i,c]=F.useState(false),d=o({document:graphql.SwapStatusQuery,variables:{request:n,currency:r,timeWindow:t},suspense:e,pause:s||i,pollInterval:a.context.environment.swapStatusInterval});return F.useEffect(()=>{d.data&&Ne(d.data)&&c(true);},[d.data]),d}function xn({suspense:e=false,pause:s=false,currency:r=client.DEFAULT_QUERY_OPTIONS.currency,...t}){let n=u(),a=o({document:graphql.SupplySwapQuoteQuery,variables:{request:xe(t,graphql.QuoteAccuracy.Fast),currency:r},selector:m,suspense:e,pause:s,batch:false}),i=o({document:graphql.SupplySwapQuoteQuery,variables:{request:xe(t,graphql.QuoteAccuracy.Accurate),currency:r},selector:m,suspense:false,pause:s||e&&!a.data,pollInterval:n.context.environment.swapQuoteInterval,batch:false});return i.data?i:a}function hn(e=client.DEFAULT_QUERY_OPTIONS){let s=u();return l(r=>actions.supplySwapQuote(s,r,{currency:e.currency,requestPolicy:"network-only"}).andThen(m),[s,e.currency])}function En({suspense:e=false,pause:s=false,currency:r=client.DEFAULT_QUERY_OPTIONS.currency,...t}){let n=u(),a=o({document:graphql.BorrowSwapQuoteQuery,variables:{request:he(t,graphql.QuoteAccuracy.Fast),currency:r},selector:m,suspense:e,pause:s,batch:false}),i=o({document:graphql.BorrowSwapQuoteQuery,variables:{request:he(t,graphql.QuoteAccuracy.Accurate),currency:r},selector:m,suspense:false,pause:s||e&&!a.data,pollInterval:n.context.environment.swapQuoteInterval,batch:false});return i.data?i:a}function Qn(e=client.DEFAULT_QUERY_OPTIONS){let s=u();return l(r=>actions.borrowSwapQuote(s,r,{currency:e.currency,requestPolicy:"network-only"}).andThen(m),[s,e.currency])}function O(e){return {with:s=>e.approvals.reduce((r,t)=>r.andThen(n=>s(t,{cancel:p}).map(a=>{switch(t.__typename){case "PositionSwapAdapterContractApproval":n.adapterContractSignature=types.isSignature(a)?a:null;break;case "PositionSwapPositionManagerApproval":n.positionManagerSignature=types.isSignature(a)?a:null;break}return n})),types.okAsync({quoteId:e.quote.quoteId,adapterContractSignature:null,positionManagerSignature:null}))}}function N(e,s){return actions.swap(e,{intent:s}).andThen(r=>{switch(r.__typename){case "SwapReceipt":return types.okAsync(r);default:return core.UnexpectedError.from(r).asResultAsync()}})}function kn(e){let s=u();return l(({currency:r=client.DEFAULT_QUERY_OPTIONS.currency,...t})=>actions.supplySwapQuote(s,t,{currency:r}).andThen(n=>O(n).with(e).andThen(a=>actions.preparePositionSwap(s,a)).andThen(a=>e(a.data,{cancel:p}).andThen(g).andThen(i=>N(s,{quoteId:a.newQuoteId,signature:i})))),[s,e])}function vn(e){let s=u();return l(({currency:r=client.DEFAULT_QUERY_OPTIONS.currency,...t})=>actions.borrowSwapQuote(s,t,{currency:r}).andThen(n=>O(n).with(e).andThen(a=>actions.preparePositionSwap(s,a)).andThen(a=>e(a.data,{cancel:p}).andThen(g).andThen(i=>N(s,{quoteId:a.newQuoteId,signature:i})))),[s,e])}function qn({suspense:e=false,pause:s=false,currency:r=client.DEFAULT_QUERY_OPTIONS.currency,...t}){let n=u(),a=o({document:graphql.RepayWithSupplyQuoteQuery,variables:{request:Ee(t,graphql.QuoteAccuracy.Fast),currency:r},selector:m,suspense:e,pause:s,batch:false}),i=o({document:graphql.RepayWithSupplyQuoteQuery,variables:{request:Ee(t,graphql.QuoteAccuracy.Accurate),currency:r},selector:m,suspense:false,pause:s||e&&!a.data,pollInterval:n.context.environment.swapQuoteInterval,batch:false});return i.data?i:a}function Hn(e=client.DEFAULT_QUERY_OPTIONS){let s=u();return l(r=>actions.repayWithSupplyQuote(s,r,{currency:e.currency,requestPolicy:"network-only"}).andThen(m),[s,e.currency])}function Cn(e){let s=u();return l(({currency:r=client.DEFAULT_QUERY_OPTIONS.currency,...t})=>actions.repayWithSupplyQuote(s,t,{currency:r}).andThen(n=>O(n).with(e).andThen(a=>actions.preparePositionSwap(s,a)).andThen(a=>e(a.data,{cancel:p}).andThen(g).andThen(i=>N(s,{quoteId:a.newQuoteId,signature:i})))),[s,e])}function In({suspense:e=false,pause:s=false,currency:r=client.DEFAULT_QUERY_OPTIONS.currency,...t}){let n=u(),a=o({document:graphql.WithdrawSwapQuoteQuery,variables:{request:Qe(t,graphql.QuoteAccuracy.Fast),currency:r},selector:m,suspense:e,pause:s,batch:false}),i=o({document:graphql.WithdrawSwapQuoteQuery,variables:{request:Qe(t,graphql.QuoteAccuracy.Accurate),currency:r},selector:m,suspense:false,pause:s||e&&!a.data,pollInterval:n.context.environment.swapQuoteInterval,batch:false});return i.data?i:a}function Bn(e=client.DEFAULT_QUERY_OPTIONS){let s=u();return l(r=>actions.withdrawSwapQuote(s,r,{currency:e.currency,requestPolicy:"network-only"}).andThen(m),[s,e.currency])}function Wn(e){let s=u();return l(({currency:r=client.DEFAULT_QUERY_OPTIONS.currency,...t})=>actions.withdrawSwapQuote(s,t,{currency:r}).andThen(n=>O(n).with(e).andThen(a=>actions.preparePositionSwap(s,a)).andThen(a=>e(a.data,{cancel:p}).andThen(g).andThen(i=>N(s,{quoteId:a.newQuoteId,signature:i})))),[s,e])}function Dn(e){let s=u(),r=F.useCallback(t=>actions.swap(s,t).andThen(n=>{switch(n.__typename){case "SwapTransactionRequest":return e(n,{cancel:p}).andThen(R.tryFrom).andThen(a=>a.wait()).andThen(()=>types.okAsync(n.orderReceipt));case "SwapReceipt":return types.okAsync(n)}}),[s,e]);return l(({currency:t=client.DEFAULT_QUERY_OPTIONS.currency,...n})=>actions.tokenSwapQuote(s,n,{currency:t}).andThen(a=>{switch(a.__typename){case "SwapByTransaction":return r({transaction:{quoteId:a.quote.quoteId}});case "SwapByIntent":return actions.prepareTokenSwap(s,{quoteId:a.quote.quoteId}).andThen(i=>e(i.data,{cancel:p}).andThen(g).andThen(c=>r({intent:{quoteId:i.newQuoteId,signature:c}})));case "SwapByIntentWithApprovalRequired":if(client.supportsPermit(a)){let i=a.approvals[0];return e(i,{cancel:p}).andThen(c=>types.isSignature(c)?actions.prepareTokenSwap(s,{quoteId:a.quote.quoteId,permitSig:{deadline:i.bySignature.message.deadline,value:c}}):R.isInstanceOf(c)?c.wait().andThen(()=>actions.prepareTokenSwap(s,{quoteId:a.quote.quoteId})):core.UnexpectedError.from(c).asResultAsync()).andThen(c=>e(c.data,{cancel:p}).andThen(g).andThen(d=>r({intent:{quoteId:c.newQuoteId,signature:d}})))}return a.approvals.reduce((i,c)=>i.andThen(()=>e({...c,bySignature:null},{cancel:p}).andThen(R.tryFrom).andThen(d=>d.wait())),types.okAsync(void 0)).andThen(()=>actions.prepareTokenSwap(s,{quoteId:a.quote.quoteId})).andThen(i=>e(i.data,{cancel:p})).andThen(g).andThen(i=>r({intent:{quoteId:a.quote.quoteId,signature:i}}));default:types.never(`Unsupported swap quote result: ${a.__typename}. To be removed from API soon.`);}}),[s,e,r])}var W=class extends types.ResultAwareError{name="CannotCancelSwapError"};function On(e){let s=u();return l(r=>actions.swapStatus(s,{id:r.id}).andThen(t=>{if(t===null)return core.UnexpectedError.from("Swap not found").asResultAsync();switch(t.__typename){case "SwapOpen":case "SwapPendingSignature":return actions.prepareSwapCancel(s,r).andThen(n=>e(n.data,{cancel:p})).andThen(g).andThen(n=>actions.cancelSwap(s,{intent:{id:r.id,signature:n}})).andThen(n=>n.__typename==="SwapCancelledResult"?types.okAsync(n):e(n,{cancel:p}).andThen(R.tryFrom).andThen(a=>a.wait()).andThen(()=>actions.swapStatus(s,{id:r.id})).andThen(a=>a?.__typename==="SwapCancelled"?types.okAsync(Pe(a)):new W("Failed to cancel swap").asResultAsync()));case "SwapCancelled":return types.okAsync(Pe(t));case "SwapExpired":return new W("Swap cannot longer be cancelled").asResultAsync();default:return core.UnexpectedError.upgradeRequired(`Unsupported swap status: ${t.__typename}`).asResultAsync()}}),[s,e])}function V(e,s){let{chainId:r,spoke:t}=graphql.decodeReserveId(s.reserve),n={chainId:r,address:t};return types.ResultAsync.combine([G(e,s.sender,n),$(e,s.sender,n),Y(e,[s.reserve]),K(e,n),le(e,s.sender),L(e,s.sender),j(e,s.sender),z(e,r)])}function Ar(e,s){return {deadline:s.message.deadline,value:e}}function re(e,s){return e.approvals.reduce((r,t)=>r.andThen(()=>s({...t,bySignature:null},{cancel:p}).andThen(R.tryFrom).andThen(n=>n.wait())),types.okAsync(void 0)).map(()=>e.originalTransaction)}function te(e,s,r){let t=e.approvals[0];return s(t,{cancel:p}).andThen(n=>types.isSignature(n)?r(Ar(n,t.bySignature)).map(types.expectTypename("TransactionRequest")):n.wait().map(()=>e.originalTransaction))}function Yn(e){let s=u();return l(r=>actions.supply(s,r).andThen(t=>{switch(t.__typename){case "TransactionRequest":return e(t,{cancel:p});case "Erc20ApprovalRequired":return client.supportsPermit(t)?te(t,e,n=>actions.supply(s,wr(r,n))).andThen(n=>e(n,{cancel:p})):re(t,e).andThen(n=>e(n,{cancel:p}));case "PreContractActionRequired":return e(t,{cancel:p}).andThen(R.tryFrom).andThen(n=>n.wait()).andThen(()=>e(t.originalTransaction,{cancel:p}));case "InsufficientBalanceError":return types.errAsync(core.ValidationError.fromGqlNode(t))}}).andThen(R.tryFrom).andThen(t=>t.wait()).andThen(s.waitForTransaction).andThrough(()=>V(s,r)),[s,e])}function wr(e,s){return "erc20"in e.amount?{...e,amount:{erc20:{...e.amount.erc20,permitSig:s}}}:e}function $n(e){let s=u();return l(r=>actions.borrow(s,r).andThen(t=>{switch(t.__typename){case "TransactionRequest":return e(t,{cancel:p});case "PreContractActionRequired":return e(t,{cancel:p}).andThen(n=>n.wait()).andThen(()=>e(t.originalTransaction,{cancel:p}));case "InsufficientBalanceError":return types.errAsync(core.ValidationError.fromGqlNode(t));case "Erc20ApprovalRequired":return client.UnexpectedError.from(t).asResultAsync()}}).andThen(t=>t.wait()).andThen(s.waitForTransaction).andThrough(()=>V(s,r)),[s,e])}function Kn(e){let s=u();return l(r=>actions.repay(s,r).andThen(t=>{switch(t.__typename){case "TransactionRequest":return e(t,{cancel:p});case "Erc20ApprovalRequired":return client.supportsPermit(t)?te(t,e,n=>actions.repay(s,Pr(r,n))).andThen(n=>e(n,{cancel:p})):re(t,e).andThen(n=>e(n,{cancel:p}));case "PreContractActionRequired":return e(t,{cancel:p}).andThen(R.tryFrom).andThen(n=>n.wait()).andThen(()=>e(t.originalTransaction,{cancel:p}));case "InsufficientBalanceError":return types.errAsync(core.ValidationError.fromGqlNode(t))}}).andThen(R.tryFrom).andThen(t=>t.wait()).andThen(s.waitForTransaction).andThrough(()=>V(s,r)),[s,e])}function Pr(e,s){return "erc20"in e.amount?{...e,amount:{erc20:{...e.amount.erc20,permitSig:s}}}:e}function zn(e){let s=u();return l(r=>actions.withdraw(s,r).andThen(t=>{switch(t.__typename){case "TransactionRequest":return e(t,{cancel:p});case "PreContractActionRequired":return e(t,{cancel:p}).andThen(n=>n.wait()).andThen(()=>e(t.originalTransaction,{cancel:p}));case "InsufficientBalanceError":return types.errAsync(core.ValidationError.fromGqlNode(t));case "Erc20ApprovalRequired":return client.UnexpectedError.from(t).asResultAsync()}}).andThen(t=>t.wait()).andThen(s.waitForTransaction).andThrough(()=>V(s,r)),[s,e])}function Jn(e){let s=u();return l(r=>actions.renounceSpokeUserPositionManager(s,r).andThen(t=>e(t,{cancel:p})).andThen(t=>t.wait()).andThen(s.waitForTransaction).andThrough(()=>J(s,r.spoke)),[s,e])}function Xn(e){let s=u();return l(r=>actions.updateUserPositionConditions(s,r).andThen(t=>e(t,{cancel:p})).andThen(t=>t.wait()).andThen(s.waitForTransaction).andThrough(()=>ce(s,r.userPositionId)),[s,e])}function Zn(e){let s=u();return l(r=>{let t=r.changes.map(a=>a.reserve),n=t.map(a=>graphql.decodeReserveId(a));return actions.setUserSuppliesAsCollateral(s,r).andThen(a=>e(a,{cancel:p})).andThen(a=>a.wait()).andThen(s.waitForTransaction).andThrough(()=>types.ResultAsync.combine([L(s,r.sender),j(s,r.sender),...n.flatMap(({chainId:a,spoke:i})=>[G(s,r.sender,{chainId:a,address:i}),$(s,r.sender,{chainId:a,address:i}),K(s,{chainId:a,address:i})]),Y(s,t),...n.map(({chainId:a})=>z(s,a))]))},[s,e])}function ea(e){let s=u();return l(r=>actions.liquidatePosition(s,r).andThen(t=>{switch(t.__typename){case "TransactionRequest":return e(t,{cancel:p});case "Erc20ApprovalRequired":return client.supportsPermit(t)?te(t,e,n=>actions.liquidatePosition(s,Tr(r))).andThen(n=>e(n,{cancel:p})):re(t,e).andThen(n=>e(n,{cancel:p}));case "PreContractActionRequired":return e(t,{cancel:p}).andThen(R.tryFrom).andThen(n=>n.wait()).andThen(()=>e(t.originalTransaction,{cancel:p}));case "InsufficientBalanceError":return types.errAsync(core.ValidationError.fromGqlNode(t))}}).andThen(R.tryFrom).andThen(t=>t.wait()).andThen(s.waitForTransaction),[s,e])}function Tr(e,s){return e}function sa(e){let s=u();return l(r=>actions.setSpokeUserPositionManager(s,r).andThen(t=>e(t,{cancel:p})).andThen(t=>t.wait()).andThen(s.waitForTransaction).andThrough(()=>J(s,r.spoke)),[s,e])}function ra(e=client.DEFAULT_QUERY_OPTIONS){let s=u();return l(r=>actions.preview(s,r,{currency:e.currency,requestPolicy:"network-only"}),[s,e.currency])}function ta({suspense:e=false,pause:s=false,currency:r=client.DEFAULT_QUERY_OPTIONS.currency,...t}){return o({document:graphql.PreviewQuery,variables:{request:t,currency:r},suspense:e,pause:s})}function na({suspense:e=false,pause:s=false,currency:r=client.DEFAULT_QUERY_OPTIONS.currency,timeWindow:t=client.DEFAULT_QUERY_OPTIONS.timeWindow,...n}){return o({document:graphql.ActivitiesQuery,variables:{request:n,currency:r,timeWindow:t},suspense:e,pause:s})}function aa(e=client.DEFAULT_QUERY_OPTIONS){let s=u();return l(r=>actions.activities(s,r,{currency:e.currency??client.DEFAULT_QUERY_OPTIONS.currency,timeWindow:e.timeWindow??client.DEFAULT_QUERY_OPTIONS.timeWindow,requestPolicy:"cache-first"}),[s,e.currency,e.timeWindow])}function oa(e){let s=u();return l(r=>actions.claimRewards(s,r).andThen(t=>e(t,{cancel:p})).andThen(R.tryFrom).andThen(t=>t.wait()).map(t=>client.transactionReceipt(t.txHash)),[s,e])}function da({suspense:e=false,pause:s=false,currency:r=client.DEFAULT_QUERY_OPTIONS.currency,timeWindow:t=client.DEFAULT_QUERY_OPTIONS.timeWindow,...n}){return o({document:graphql.UserSuppliesQuery,variables:{request:n,currency:r,timeWindow:t},suspense:e,pause:s})}function Sa(e=client.DEFAULT_QUERY_OPTIONS){let s=u();return l(r=>actions.userSupplies(s,r,{currency:e.currency??client.DEFAULT_QUERY_OPTIONS.currency,timeWindow:e.timeWindow??client.DEFAULT_QUERY_OPTIONS.timeWindow,requestPolicy:"cache-first"}),[s,e.currency,e.timeWindow])}function Ra({suspense:e=false,pause:s=false,currency:r=client.DEFAULT_QUERY_OPTIONS.currency,timeWindow:t=client.DEFAULT_QUERY_OPTIONS.timeWindow,...n}){return o({document:graphql.UserBorrowsQuery,variables:{request:n,currency:r,timeWindow:t},suspense:e,pause:s})}function fa(e=client.DEFAULT_QUERY_OPTIONS){let s=u();return l(r=>actions.userBorrows(s,r,{currency:e.currency??client.DEFAULT_QUERY_OPTIONS.currency,timeWindow:e.timeWindow??client.DEFAULT_QUERY_OPTIONS.timeWindow,requestPolicy:"cache-first"}),[s,e.currency,e.timeWindow])}function ma({suspense:e=false,pause:s=false,currency:r=client.DEFAULT_QUERY_OPTIONS.currency,timeWindow:t=client.DEFAULT_QUERY_OPTIONS.timeWindow,...n}){return o({document:graphql.UserSummaryQuery,variables:{request:n,currency:r,timeWindow:t},suspense:e,pause:s})}function Ua({suspense:e=false,pause:s=false,currency:r=client.DEFAULT_QUERY_OPTIONS.currency,timeWindow:t=client.DEFAULT_QUERY_OPTIONS.timeWindow,...n}){return o({document:graphql.UserPositionsQuery,variables:{request:n,currency:r,timeWindow:t},suspense:e,pause:s})}function ba(e=client.DEFAULT_QUERY_OPTIONS){let s=u();return l(r=>actions.userPositions(s,r,{currency:e.currency,timeWindow:e.timeWindow,requestPolicy:"cache-first"}),[s,e.currency,e.timeWindow])}function ga({suspense:e=false,pause:s=false,currency:r=client.DEFAULT_QUERY_OPTIONS.currency,timeWindow:t=client.DEFAULT_QUERY_OPTIONS.timeWindow,...n}){return o({document:graphql.UserPositionQuery,variables:{request:n,currency:r,timeWindow:t},suspense:e,pause:s})}function Aa({suspense:e=false,pause:s=false,currency:r=client.DEFAULT_QUERY_OPTIONS.currency,...t}){return o({document:graphql.UserBalancesQuery,variables:{request:t,currency:r},suspense:e,pause:s})}function wa({suspense:e=false,pause:s=false,...r}){return o({document:graphql.UserRiskPremiumBreakdownQuery,variables:{request:r},suspense:e,pause:s,batch:false})}function Pa(e=client.DEFAULT_QUERY_OPTIONS){let s=u();return l(r=>actions.userBalances(s,r,{currency:e.currency,requestPolicy:"cache-first"}),[s,e.currency])}function Ta({suspense:e=false,pause:s=false,currency:r=client.DEFAULT_QUERY_OPTIONS.currency,...t}){return o({document:graphql.UserSummaryHistoryQuery,variables:{request:t,currency:r},suspense:e,pause:s,batch:false})}exports.AaveProvider=Fr;exports.CannotCancelSwapError=W;exports.useAaveClient=u;exports.useActivities=na;exports.useActivitiesAction=aa;exports.useAsset=Ht;exports.useAssetBorrowHistory=Bt;exports.useAssetPriceHistory=Ct;exports.useAssetSupplyHistory=It;exports.useBorrow=$n;exports.useBorrowApyHistory=Yt;exports.useBorrowSwap=vn;exports.useBorrowSwapQuote=En;exports.useBorrowSwapQuoteAction=Qn;exports.useCancelSwap=On;exports.useChain=Pt;exports.useChainAction=Tt;exports.useChains=xt;exports.useClaimRewards=oa;exports.useExchangeRate=Et;exports.useExchangeRateAction=ht;exports.useHub=yt;exports.useHubAssets=St;exports.useHubSummaryHistory=Rt;exports.useHubs=dt;exports.useHubsAction=ft;exports.useLiquidatePosition=ea;exports.usePreview=ta;exports.usePreviewAction=ra;exports.useProtocolHistory=Wt;exports.useRenounceSpokeUserPositionManager=Jn;exports.useRepay=Kn;exports.useRepayWithSupply=Cn;exports.useRepayWithSupplyQuote=qn;exports.useRepayWithSupplyQuoteAction=Hn;exports.useReserve=Ft;exports.useReserveAction=Lt;exports.useReserves=jt;exports.useReservesAction=Gt;exports.useSetSpokeUserPositionManager=sa;exports.useSetUserSuppliesAsCollateral=Zn;exports.useSpoke=an;exports.useSpokePositionManagers=un;exports.useSpokeUserPositionManagers=pn;exports.useSpokes=on;exports.useSupply=Yn;exports.useSupplyApyHistory=$t;exports.useSupplySwap=kn;exports.useSupplySwapQuote=xn;exports.useSupplySwapQuoteAction=hn;exports.useSwapStatus=Tn;exports.useSwappableTokens=wn;exports.useTokenSwap=Dn;exports.useTokenSwapQuote=gn;exports.useTokenSwapQuoteAction=An;exports.useUpdateUserPositionConditions=Xn;exports.useUserBalances=Aa;exports.useUserBalancesAction=Pa;exports.useUserBorrows=Ra;exports.useUserBorrowsAction=fa;exports.useUserClaimableRewards=en;exports.useUserClaimableRewardsAction=sn;exports.useUserPosition=ga;exports.useUserPositions=Ua;exports.useUserPositionsAction=ba;exports.useUserRiskPremiumBreakdown=wa;exports.useUserSummary=ma;exports.useUserSummaryHistory=Ta;exports.useUserSupplies=da;exports.useUserSuppliesAction=Sa;exports.useUserSwaps=Pn;exports.useWithdraw=zn;exports.useWithdrawSwap=Wn;exports.useWithdrawSwapQuote=In;exports.useWithdrawSwapQuoteAction=Bn;Object.keys(client).forEach(function(k){if(k!=='default'&&!Object.prototype.hasOwnProperty.call(exports,k))Object.defineProperty(exports,k,{enumerable:true,get:function(){return client[k]}})});//# sourceMappingURL=index.cjs.map
|
|
1
|
+
'use strict';var client=require('@aave/client'),F=require('react'),types=require('@aave/types'),urql=require('urql'),actions=require('@aave/client/actions'),graphql=require('@aave/graphql'),core=require('@aave/core');function _interopDefault(e){return e&&e.__esModule?e:{default:e}}var F__default=/*#__PURE__*/_interopDefault(F);var ae=F__default.default.createContext(null);function oe({children:e,client:s}){return F__default.default.createElement(ae.Provider,{value:s},F__default.default.createElement(urql.Provider,{value:s.urql},e))}function u(){let e=F.useContext(ae);return types.invariant(e,"Could not find Aave SDK context, ensure your code is wrapped in a <AaveProvider>"),e}function Fr({children:e,client:s}){return F__default.default.createElement(oe,{client:s},e)}function ds(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}=graphql.decodeUserPositionId(e.userPositionId);return s}function ys(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}=graphql.decodeUserPositionId(e.userPositionId);return s}function le(e,s){return e.refreshQueryWhere(graphql.UserBalancesQuery,r=>r.request.user===s)}function L(e,s){return e.refreshQueryWhere(graphql.UserSuppliesQuery,r=>ds(r.request.query)===s)}function j(e,s){return e.refreshQueryWhere(graphql.UserBorrowsQuery,r=>ys(r.request.query)===s)}function G(e,s,r){let t=n=>n.spoke.chain.chainId===r.chainId&&n.spoke.address===r.address&&n.user===s;return types.ResultAsync.combine([e.refreshQueryWhere(graphql.UserPositionsQuery,(n,a)=>a.some(t)),e.refreshQueryWhere(graphql.UserPositionQuery,(n,a)=>a!==null&&t(a))])}function Y(e,s){let r=t=>s.includes(t.id);return types.ResultAsync.combine([e.refreshQueryWhere(graphql.ReserveQuery,(t,n)=>n!==null&&r(n)),e.refreshQueryWhere(graphql.ReservesQuery,(t,n)=>n.some(r))])}function $(e,s,r){return e.refreshQueryWhere(graphql.UserSummaryQuery,t=>t.request.user===s&&(graphql.isSpokeInputVariant(t.request.filter)?t.request.filter.spoke.chainId===r.chainId&&t.request.filter.spoke.address===r.address:graphql.isChainIdsVariant(t.request.filter)?t.request.filter.chainIds.some(n=>n===r.chainId):false))}function K(e,s){let r=t=>t.chain.chainId===s.chainId&&t.address===s.address;return types.ResultAsync.combine([e.refreshQueryWhere(graphql.SpokeQuery,(t,n)=>n!==null&&r(n)),e.refreshQueryWhere(graphql.SpokesQuery,(t,n)=>n.some(r))])}function z(e,s){let r=t=>t.chain.chainId===s;return types.ResultAsync.combine([e.refreshQueryWhere(graphql.HubQuery,(t,n)=>n!==null&&r(n)),e.refreshQueryWhere(graphql.HubsQuery,(t,n)=>n.some(r))])}function J(e,s){return e.refreshQueryWhere(graphql.SpokePositionManagersQuery,r=>r.request.spoke===s)}function ce(e,s){return types.ResultAsync.combine([e.refreshQueryWhere(graphql.UserPositionsQuery,(r,t)=>t.some(n=>n.id===s)),e.refreshQueryWhere(graphql.UserPositionQuery,(r,t)=>t?.id===s)])}var P={Loading:()=>({data:void 0,error:void 0,loading:true,paused:false,reloading:false}),Success:(e,s=false)=>({data:e,error:void 0,loading:false,paused:false,reloading:s}),Failure:(e,s=false)=>({data:void 0,error:e,loading:false,paused:false,reloading:s}),Paused:(e,s)=>({data:e,error:s,loading:false,paused:true,reloading:false})};function o({document:e,variables:s,suspense:r,pause:t,selector:n=types.ok,pollInterval:a=0,batch:i=true}){let[c,S]=F.useState(true),[{fetching:U,data:f,error:w,stale:$e},ne]=urql.useQuery({query:e,variables:s,pause:t,context:F.useMemo(()=>({batch:i,suspense:r}),[i,r])});if(F.useEffect(()=>{t||U||S(false);},[U,t]),F.useEffect(()=>{if(a<=0||U||t)return;let x=setTimeout(()=>{ne({requestPolicy:"network-only",batch:false});},a);return ()=>clearTimeout(x)},[U,ne,a,t]),t){let x=w?client.UnexpectedError.from(w):void 0;if(!f)return P.Paused(void 0,x);let M=n(f.value);return M.isErr()?P.Paused(void 0,M.error):P.Paused(M.value,x)}if(!r&&c)return P.Loading();let _=$e||!c&&U;if(w){let x=client.UnexpectedError.from(w);if(r)throw x;return P.Failure(x,_)}types.invariant(f,"No data returned");let C=n(f.value);if(C.isErr()){if(r)throw C.error;return P.Failure(C.error,_)}return P.Success(C.value,_)}var X={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 l(e,s){let[r,t]=F.useState(X.Idle()),n=F.useRef(false),a=F.useRef(true);F.useEffect(()=>()=>{a.current=false;},[]);let i=F.useCallback(e,s);return [F.useCallback(S=>{types.invariant(a.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 U;t(f=>(U=f,{called:true,loading:true,data:f.data,error:void 0}));try{let f=i(S);return f.match(w=>{n.current=!1,t(X.Success(w));},w=>{n.current=!1,t(X.Failed(w));}),f}catch(f){throw n.current=false,U&&t(U),f}},[i]),r]}var p=e=>core.CancelError.from(e).asResultAsync(),R=class e{constructor(s){this.wait=s;}static isInstanceOf(s){return s instanceof e}static tryFrom(s){return e.isInstanceOf(s)?types.okAsync(s):core.UnexpectedError.from(s).asResultAsync()}};function A(e){return types.isSignature(e)?types.okAsync(e):core.UnexpectedError.from(`Expected Signature, but got ${String(e)}`).asResultAsync()}function dt({suspense:e=false,pause:s=false,currency:r=client.DEFAULT_QUERY_OPTIONS.currency,timeWindow:t=client.DEFAULT_QUERY_OPTIONS.timeWindow,...n}){return o({document:graphql.HubQuery,variables:{request:n,currency:r,timeWindow:t},suspense:e,pause:s})}function yt({suspense:e=false,pause:s=false,currency:r=client.DEFAULT_QUERY_OPTIONS.currency,timeWindow:t=client.DEFAULT_QUERY_OPTIONS.timeWindow,...n}){return o({document:graphql.HubsQuery,variables:{request:n,currency:r,timeWindow:t},suspense:e,pause:s})}function St({suspense:e=false,pause:s=false,currency:r=client.DEFAULT_QUERY_OPTIONS.currency,timeWindow:t=client.DEFAULT_QUERY_OPTIONS.timeWindow,...n}){return o({document:graphql.HubAssetsQuery,variables:{request:n,currency:r,timeWindow:t},suspense:e,pause:s})}function Rt({suspense:e=false,pause:s=false,...r}){return o({document:graphql.HubSummaryHistoryQuery,variables:{request:r},suspense:e,pause:s,batch:false})}function ft(e=client.DEFAULT_QUERY_OPTIONS){let s=u();return l(r=>actions.hubs(s,r,{currency:e.currency,requestPolicy:"cache-first"}),[s,e.currency])}function Pt({suspense:e=false,pause:s=false,...r}){return o({document:graphql.ChainQuery,variables:{request:r},suspense:e,pause:s})}function Tt(){let e=u();return l(s=>actions.chain(e,s,{batch:false,requestPolicy:"cache-first"}),[e])}function xt({suspense:e=false,pause:s=false,...r}={query:{filter:graphql.ChainsFilter.ALL}}){return o({document:graphql.ChainsQuery,variables:{request:r},suspense:e,pause:s})}function ht(){let e=u();return l(s=>actions.exchangeRate(e,s,{requestPolicy:"network-only"}),[e])}function Et({suspense:e=false,pause:s=false,...r}){let t=u();return o({document:graphql.ExchangeRateQuery,variables:{request:r},suspense:e,pause:s,pollInterval:r.at?0:t.context.environment.exchangeRateInterval})}function Ht({suspense:e=false,pause:s=false,currency:r=client.DEFAULT_QUERY_OPTIONS.currency,timeWindow:t=client.DEFAULT_QUERY_OPTIONS.timeWindow,...n}){return o({document:graphql.AssetQuery,variables:{request:n,currency:r,timeWindow:t},suspense:e,pause:s})}function Ct({suspense:e=false,pause:s=false,...r}){return o({document:graphql.AssetPriceHistoryQuery,variables:{request:r},suspense:e,pause:s,batch:false})}function It({suspense:e=false,pause:s=false,currency:r=client.DEFAULT_QUERY_OPTIONS.currency,timeWindow:t=client.DEFAULT_QUERY_OPTIONS.timeWindow,...n}){return o({document:graphql.AssetSupplyHistoryQuery,variables:{request:n,currency:r,timeWindow:t},suspense:e,pause:s,batch:false})}function Bt({suspense:e=false,pause:s=false,currency:r=client.DEFAULT_QUERY_OPTIONS.currency,timeWindow:t=client.DEFAULT_QUERY_OPTIONS.timeWindow,...n}){return o({document:graphql.AssetBorrowHistoryQuery,variables:{request:n,currency:r,timeWindow:t},suspense:e,pause:s,batch:false})}function Wt({suspense:e=false,pause:s=false,...r}){return o({document:graphql.ProtocolHistoryQuery,variables:{request:r},suspense:e,pause:s,batch:false})}function Ft({suspense:e=false,pause:s=false,currency:r=client.DEFAULT_QUERY_OPTIONS.currency,timeWindow:t=client.DEFAULT_QUERY_OPTIONS.timeWindow,...n}){return o({document:graphql.ReserveQuery,variables:{request:n,currency:r,timeWindow:t},suspense:e,pause:s})}function Lt(e=client.DEFAULT_QUERY_OPTIONS){let s=u();return l(r=>actions.reserve(s,r,{currency:e.currency??client.DEFAULT_QUERY_OPTIONS.currency,timeWindow:e.timeWindow??client.DEFAULT_QUERY_OPTIONS.timeWindow,requestPolicy:"cache-first"}),[s,e.currency,e.timeWindow])}function jt({suspense:e=false,pause:s=false,currency:r=client.DEFAULT_QUERY_OPTIONS.currency,timeWindow:t=client.DEFAULT_QUERY_OPTIONS.timeWindow,...n}){return o({document:graphql.ReservesQuery,variables:{request:n,currency:r,timeWindow:t},suspense:e,pause:s})}function Gt(e=client.DEFAULT_QUERY_OPTIONS){let s=u();return l(r=>actions.reserves(s,r,{currency:e.currency??client.DEFAULT_QUERY_OPTIONS.currency,timeWindow:e.timeWindow??client.DEFAULT_QUERY_OPTIONS.timeWindow,requestPolicy:"cache-first"}),[s,e.currency,e.timeWindow])}function Yt({suspense:e=false,pause:s=false,...r}){return o({document:graphql.BorrowApyHistoryQuery,variables:{request:r},suspense:e,pause:s,batch:false})}function $t({suspense:e=false,pause:s=false,...r}){return o({document:graphql.SupplyApyHistoryQuery,variables:{request:r},suspense:e,pause:s,batch:false})}function en({suspense:e=false,pause:s=false,...r}){return o({document:graphql.UserClaimableRewardsQuery,variables:{request:r},suspense:e,pause:s})}function sn(){let e=u();return l(s=>actions.userClaimableRewards(e,s,{requestPolicy:"cache-first"}),[e])}function an({suspense:e=false,pause:s=false,...r}){return o({document:graphql.SpokeQuery,variables:{request:r},suspense:e,pause:s})}function on({suspense:e=false,pause:s=false,...r}){return o({document:graphql.SpokesQuery,variables:{request:r},suspense:e,pause:s})}function un({suspense:e=false,pause:s=false,...r}){return o({document:graphql.SpokePositionManagersQuery,variables:{request:r},suspense:e,pause:s})}function pn({suspense:e=false,pause:s=false,...r}){return o({document:graphql.SpokeUserPositionManagersQuery,variables:{request:r},suspense:e,pause:s})}function ee(e){switch(e.__typename){case "SwapByIntent":case "SwapByIntentWithApprovalRequired":case "SwapByTransaction":return types.ok(e.quote);case "InsufficientLiquidityError":return types.err(core.ValidationError.fromGqlNode(e));default:return types.err(core.UnexpectedError.upgradeRequired(`Unsupported swap quote result: ${e.__typename}`))}}function xe(e){return {__typename:"SwapCancelledResult",swapId:e.swapId,createdAt:e.createdAt,cancelledAt:e.cancelledAt,explorerUrl:e.explorerUrl}}function m(e){switch(e.__typename){case "PositionSwapByIntentApprovalsRequired":return types.ok(e.quote);case "InsufficientLiquidityError":return types.err(core.ValidationError.fromGqlNode(e));default:return types.err(core.UnexpectedError.upgradeRequired(`Unsupported position swap quote result: ${e.__typename}`))}}function he(e,s){return "market"in e&&e.market?{market:{...e.market,accuracy:s}}:e}function Ee(e,s){return "market"in e&&e.market?{market:{...e.market,accuracy:s}}:e}function Qe(e,s){return "market"in e&&e.market?{market:{...e.market,accuracy:s}}:e}function ke(e,s){return "market"in e&&e.market?{market:{...e.market,accuracy:s}}:e}function ve(e,s){return "market"in e&&e.market?{market:{...e.market,accuracy:s}}:e}function gn({suspense:e=false,pause:s=false,currency:r=client.DEFAULT_QUERY_OPTIONS.currency,...t}){let n=u(),a=o({document:graphql.TokenSwapQuoteQuery,variables:{request:he(t,graphql.QuoteAccuracy.Fast),currency:r},selector:ee,suspense:e,pause:s,batch:false}),i=o({document:graphql.TokenSwapQuoteQuery,variables:{request:he(t,graphql.QuoteAccuracy.Accurate),currency:r},selector:ee,suspense:false,pause:s||e&&!a.data,pollInterval:n.context.environment.swapQuoteInterval,batch:false});return i.data?i:a}function An(e=client.DEFAULT_QUERY_OPTIONS){let s=u();return l(r=>actions.tokenSwapQuote(s,r,{currency:e.currency,requestPolicy:"network-only"}).andThen(ee),[s,e.currency])}function wn({suspense:e=false,pause:s=false,...r}){return o({document:graphql.SwappableTokensQuery,variables:{request:r},suspense:e,pause:s})}function Pn({suspense:e=false,pause:s=false,currency:r=client.DEFAULT_QUERY_OPTIONS.currency,timeWindow:t=client.DEFAULT_QUERY_OPTIONS.timeWindow,...n}){let a=u(),[i,c]=F.useState(false),S=o({document:graphql.UserSwapsQuery,variables:{request:n,currency:r,timeWindow:t},suspense:e,pause:s||i,pollInterval:a.context.environment.swapStatusInterval});return F.useEffect(()=>{S.data&&S.data.items.length>0&&S.data.items.every(_e)&&c(true);},[S.data]),S}function _e(e){return e.__typename==="SwapFulfilled"||e.__typename==="SwapCancelled"||e.__typename==="SwapExpired"}function Tn({suspense:e=false,pause:s=false,currency:r=client.DEFAULT_QUERY_OPTIONS.currency,timeWindow:t=client.DEFAULT_QUERY_OPTIONS.timeWindow,...n}){let a=u(),[i,c]=F.useState(false),S=o({document:graphql.SwapStatusQuery,variables:{request:n,currency:r,timeWindow:t},suspense:e,pause:s||i,pollInterval:a.context.environment.swapStatusInterval});return F.useEffect(()=>{S.data&&_e(S.data)&&c(true);},[S.data]),S}function xn({suspense:e=false,pause:s=false,currency:r=client.DEFAULT_QUERY_OPTIONS.currency,...t}){let n=u(),a=o({document:graphql.SupplySwapQuoteQuery,variables:{request:Ee(t,graphql.QuoteAccuracy.Fast),currency:r},selector:m,suspense:e,pause:s,batch:false}),i=o({document:graphql.SupplySwapQuoteQuery,variables:{request:Ee(t,graphql.QuoteAccuracy.Accurate),currency:r},selector:m,suspense:false,pause:s||e&&!a.data,pollInterval:n.context.environment.swapQuoteInterval,batch:false});return i.data?i:a}function hn(e=client.DEFAULT_QUERY_OPTIONS){let s=u();return l(r=>actions.supplySwapQuote(s,r,{currency:e.currency,requestPolicy:"network-only"}).andThen(m),[s,e.currency])}function En({suspense:e=false,pause:s=false,currency:r=client.DEFAULT_QUERY_OPTIONS.currency,...t}){let n=u(),a=o({document:graphql.BorrowSwapQuoteQuery,variables:{request:Qe(t,graphql.QuoteAccuracy.Fast),currency:r},selector:m,suspense:e,pause:s,batch:false}),i=o({document:graphql.BorrowSwapQuoteQuery,variables:{request:Qe(t,graphql.QuoteAccuracy.Accurate),currency:r},selector:m,suspense:false,pause:s||e&&!a.data,pollInterval:n.context.environment.swapQuoteInterval,batch:false});return i.data?i:a}function Qn(e=client.DEFAULT_QUERY_OPTIONS){let s=u();return l(r=>actions.borrowSwapQuote(s,r,{currency:e.currency,requestPolicy:"network-only"}).andThen(m),[s,e.currency])}function O(e){return {with:s=>e.approvals.reduce((r,t)=>r.andThen(n=>s(t,{cancel:p}).map(a=>{switch(t.__typename){case "PositionSwapAdapterContractApproval":n.adapterContractSignature=types.isSignature(a)?a:null;break;case "PositionSwapPositionManagerApproval":n.positionManagerSignature=types.isSignature(a)?a:null;break}return n})),types.okAsync({quoteId:e.quote.quoteId,adapterContractSignature:null,positionManagerSignature:null}))}}function N(e,s){return actions.swap(e,{intent:s}).andThen(r=>{switch(r.__typename){case "SwapReceipt":return types.okAsync(r);default:return core.UnexpectedError.from(r).asResultAsync()}})}function kn(e){let s=u();return l(({currency:r=client.DEFAULT_QUERY_OPTIONS.currency,...t})=>actions.supplySwapQuote(s,t,{currency:r}).andThen(n=>O(n).with(e).andThen(a=>actions.preparePositionSwap(s,a)).andThen(a=>e(a.data,{cancel:p}).andThen(A).andThen(i=>N(s,{quoteId:a.newQuoteId,signature:i})))),[s,e])}function vn(e){let s=u();return l(({currency:r=client.DEFAULT_QUERY_OPTIONS.currency,...t})=>actions.borrowSwapQuote(s,t,{currency:r}).andThen(n=>O(n).with(e).andThen(a=>actions.preparePositionSwap(s,a)).andThen(a=>e(a.data,{cancel:p}).andThen(A).andThen(i=>N(s,{quoteId:a.newQuoteId,signature:i})))),[s,e])}function qn({suspense:e=false,pause:s=false,currency:r=client.DEFAULT_QUERY_OPTIONS.currency,...t}){let n=u(),a=o({document:graphql.RepayWithSupplyQuoteQuery,variables:{request:ke(t,graphql.QuoteAccuracy.Fast),currency:r},selector:m,suspense:e,pause:s,batch:false}),i=o({document:graphql.RepayWithSupplyQuoteQuery,variables:{request:ke(t,graphql.QuoteAccuracy.Accurate),currency:r},selector:m,suspense:false,pause:s||e&&!a.data,pollInterval:n.context.environment.swapQuoteInterval,batch:false});return i.data?i:a}function Hn(e=client.DEFAULT_QUERY_OPTIONS){let s=u();return l(r=>actions.repayWithSupplyQuote(s,r,{currency:e.currency,requestPolicy:"network-only"}).andThen(m),[s,e.currency])}function Cn(e){let s=u();return l(({currency:r=client.DEFAULT_QUERY_OPTIONS.currency,...t})=>actions.repayWithSupplyQuote(s,t,{currency:r}).andThen(n=>O(n).with(e).andThen(a=>actions.preparePositionSwap(s,a)).andThen(a=>e(a.data,{cancel:p}).andThen(A).andThen(i=>N(s,{quoteId:a.newQuoteId,signature:i})))),[s,e])}function In({suspense:e=false,pause:s=false,currency:r=client.DEFAULT_QUERY_OPTIONS.currency,...t}){let n=u(),a=o({document:graphql.WithdrawSwapQuoteQuery,variables:{request:ve(t,graphql.QuoteAccuracy.Fast),currency:r},selector:m,suspense:e,pause:s,batch:false}),i=o({document:graphql.WithdrawSwapQuoteQuery,variables:{request:ve(t,graphql.QuoteAccuracy.Accurate),currency:r},selector:m,suspense:false,pause:s||e&&!a.data,pollInterval:n.context.environment.swapQuoteInterval,batch:false});return i.data?i:a}function Bn(e=client.DEFAULT_QUERY_OPTIONS){let s=u();return l(r=>actions.withdrawSwapQuote(s,r,{currency:e.currency,requestPolicy:"network-only"}).andThen(m),[s,e.currency])}function Wn(e){let s=u();return l(({currency:r=client.DEFAULT_QUERY_OPTIONS.currency,...t})=>actions.withdrawSwapQuote(s,t,{currency:r}).andThen(n=>O(n).with(e).andThen(a=>actions.preparePositionSwap(s,a)).andThen(a=>e(a.data,{cancel:p}).andThen(A).andThen(i=>N(s,{quoteId:a.newQuoteId,signature:i})))),[s,e])}function Dn(e){let s=u(),r=F.useCallback(t=>actions.swap(s,t).andThen(n=>{switch(n.__typename){case "SwapTransactionRequest":return e(n,{cancel:p}).andThen(R.tryFrom).andThen(a=>a.wait()).andThen(()=>types.okAsync(n.orderReceipt));case "SwapReceipt":return types.okAsync(n)}}),[s,e]);return l(({currency:t=client.DEFAULT_QUERY_OPTIONS.currency,...n})=>actions.tokenSwapQuote(s,n,{currency:t}).andThen(a=>{switch(a.__typename){case "SwapByTransaction":return r({transaction:{quoteId:a.quote.quoteId}});case "SwapByIntent":return actions.prepareTokenSwap(s,{quoteId:a.quote.quoteId}).andThen(i=>e(i.data,{cancel:p}).andThen(A).andThen(c=>r({intent:{quoteId:i.newQuoteId,signature:c}})));case "SwapByIntentWithApprovalRequired":if(client.supportsPermit(a)){let i=a.approvals[0];return e(i,{cancel:p}).andThen(c=>types.isSignature(c)?actions.prepareTokenSwap(s,{quoteId:a.quote.quoteId,permitSig:{deadline:i.bySignature.message.deadline,value:c}}):R.isInstanceOf(c)?c.wait().andThen(()=>actions.prepareTokenSwap(s,{quoteId:a.quote.quoteId})):core.UnexpectedError.from(c).asResultAsync()).andThen(c=>e(c.data,{cancel:p}).andThen(A).andThen(S=>r({intent:{quoteId:c.newQuoteId,signature:S}})))}return a.approvals.reduce((i,c)=>i.andThen(()=>e({...c,bySignature:null},{cancel:p}).andThen(R.tryFrom).andThen(S=>S.wait())),types.okAsync(void 0)).andThen(()=>actions.prepareTokenSwap(s,{quoteId:a.quote.quoteId})).andThen(i=>e(i.data,{cancel:p})).andThen(A).andThen(i=>r({intent:{quoteId:a.quote.quoteId,signature:i}}));default:types.never(`Unsupported swap quote result: ${a.__typename}. To be removed from API soon.`);}}),[s,e,r])}var W=class extends types.ResultAwareError{name="CannotCancelSwapError"};function On(e){let s=u();return l(r=>actions.swapStatus(s,{id:r.id}).andThen(t=>{if(t===null)return core.UnexpectedError.from("Swap not found").asResultAsync();switch(t.__typename){case "SwapOpen":case "SwapPendingSignature":return actions.prepareSwapCancel(s,r).andThen(n=>e(n.data,{cancel:p})).andThen(A).andThen(n=>actions.cancelSwap(s,{intent:{id:r.id,signature:n}})).andThen(n=>n.__typename==="SwapCancelledResult"?types.okAsync(n):e(n,{cancel:p}).andThen(R.tryFrom).andThen(a=>a.wait()).andThen(()=>actions.swapStatus(s,{id:r.id})).andThen(a=>a?.__typename==="SwapCancelled"?types.okAsync(xe(a)):new W("Failed to cancel swap").asResultAsync()));case "SwapCancelled":return types.okAsync(xe(t));case "SwapExpired":return new W("Swap cannot longer be cancelled").asResultAsync();default:return core.UnexpectedError.upgradeRequired(`Unsupported swap status: ${t.__typename}`).asResultAsync()}}),[s,e])}function V(e,s){let{chainId:r,spoke:t}=graphql.decodeReserveId(s.reserve),n={chainId:r,address:t};return types.ResultAsync.combine([G(e,s.sender,n),$(e,s.sender,n),Y(e,[s.reserve]),K(e,n),le(e,s.sender),L(e,s.sender),j(e,s.sender),z(e,r)])}function Ar(e,s){return {deadline:s.message.deadline,value:e}}function re(e,s){return e.approvals.reduce((r,t)=>r.andThen(()=>s({...t,bySignature:null},{cancel:p}).andThen(R.tryFrom).andThen(n=>n.wait())),types.okAsync(void 0)).map(()=>e.originalTransaction)}function te(e,s,r){let t=e.approvals[0];return s(t,{cancel:p}).andThen(n=>types.isSignature(n)?r(Ar(n,t.bySignature)).map(types.expectTypename("TransactionRequest")):n.wait().map(()=>e.originalTransaction))}function Yn(e){let s=u();return l(r=>actions.supply(s,r).andThen(t=>{switch(t.__typename){case "TransactionRequest":return e(t,{cancel:p});case "Erc20ApprovalRequired":return client.supportsPermit(t)?te(t,e,n=>actions.supply(s,wr(r,n))).andThen(n=>e(n,{cancel:p})):re(t,e).andThen(n=>e(n,{cancel:p}));case "PreContractActionRequired":return e(t,{cancel:p}).andThen(R.tryFrom).andThen(n=>n.wait()).andThen(()=>e(t.originalTransaction,{cancel:p}));case "InsufficientBalanceError":return types.errAsync(core.ValidationError.fromGqlNode(t))}}).andThen(R.tryFrom).andThen(t=>t.wait()).andThen(s.waitForTransaction).andThrough(()=>V(s,r)),[s,e])}function wr(e,s){return "erc20"in e.amount?{...e,amount:{erc20:{...e.amount.erc20,permitSig:s}}}:e}function $n(e){let s=u();return l(r=>actions.borrow(s,r).andThen(t=>{switch(t.__typename){case "TransactionRequest":return e(t,{cancel:p});case "PreContractActionRequired":return e(t,{cancel:p}).andThen(n=>n.wait()).andThen(()=>e(t.originalTransaction,{cancel:p}));case "InsufficientBalanceError":return types.errAsync(core.ValidationError.fromGqlNode(t));case "Erc20ApprovalRequired":return client.UnexpectedError.from(t).asResultAsync()}}).andThen(t=>t.wait()).andThen(s.waitForTransaction).andThrough(()=>V(s,r)),[s,e])}function Kn(e){let s=u();return l(r=>actions.repay(s,r).andThen(t=>{switch(t.__typename){case "TransactionRequest":return e(t,{cancel:p});case "Erc20ApprovalRequired":return client.supportsPermit(t)?te(t,e,n=>actions.repay(s,Pr(r,n))).andThen(n=>e(n,{cancel:p})):re(t,e).andThen(n=>e(n,{cancel:p}));case "PreContractActionRequired":return e(t,{cancel:p}).andThen(R.tryFrom).andThen(n=>n.wait()).andThen(()=>e(t.originalTransaction,{cancel:p}));case "InsufficientBalanceError":return types.errAsync(core.ValidationError.fromGqlNode(t))}}).andThen(R.tryFrom).andThen(t=>t.wait()).andThen(s.waitForTransaction).andThrough(()=>V(s,r)),[s,e])}function Pr(e,s){return "erc20"in e.amount?{...e,amount:{erc20:{...e.amount.erc20,permitSig:s}}}:e}function zn(e){let s=u();return l(r=>actions.withdraw(s,r).andThen(t=>{switch(t.__typename){case "TransactionRequest":return e(t,{cancel:p});case "PreContractActionRequired":return e(t,{cancel:p}).andThen(n=>n.wait()).andThen(()=>e(t.originalTransaction,{cancel:p}));case "InsufficientBalanceError":return types.errAsync(core.ValidationError.fromGqlNode(t));case "Erc20ApprovalRequired":return client.UnexpectedError.from(t).asResultAsync()}}).andThen(t=>t.wait()).andThen(s.waitForTransaction).andThrough(()=>V(s,r)),[s,e])}function Jn(e){let s=u();return l(r=>actions.renounceSpokeUserPositionManager(s,r).andThen(t=>e(t,{cancel:p})).andThen(t=>t.wait()).andThen(s.waitForTransaction).andThrough(()=>J(s,r.spoke)),[s,e])}function Xn(e){let s=u();return l(r=>actions.updateUserPositionConditions(s,r).andThen(t=>e(t,{cancel:p})).andThen(t=>t.wait()).andThen(s.waitForTransaction).andThrough(()=>ce(s,r.userPositionId)),[s,e])}function Zn(e){let s=u();return l(r=>{let t=r.changes.map(a=>a.reserve),n=t.map(a=>graphql.decodeReserveId(a));return actions.setUserSuppliesAsCollateral(s,r).andThen(a=>e(a,{cancel:p})).andThen(a=>a.wait()).andThen(s.waitForTransaction).andThrough(()=>types.ResultAsync.combine([L(s,r.sender),j(s,r.sender),...n.flatMap(({chainId:a,spoke:i})=>[G(s,r.sender,{chainId:a,address:i}),$(s,r.sender,{chainId:a,address:i}),K(s,{chainId:a,address:i})]),Y(s,t),...n.map(({chainId:a})=>z(s,a))]))},[s,e])}function ea(e){let s=u();return l(r=>actions.liquidatePosition(s,r).andThen(t=>{switch(t.__typename){case "TransactionRequest":return e(t,{cancel:p});case "Erc20ApprovalRequired":return client.supportsPermit(t)?te(t,e,n=>actions.liquidatePosition(s,Tr(r))).andThen(n=>e(n,{cancel:p})):re(t,e).andThen(n=>e(n,{cancel:p}));case "PreContractActionRequired":return e(t,{cancel:p}).andThen(R.tryFrom).andThen(n=>n.wait()).andThen(()=>e(t.originalTransaction,{cancel:p}));case "InsufficientBalanceError":return types.errAsync(core.ValidationError.fromGqlNode(t))}}).andThen(R.tryFrom).andThen(t=>t.wait()).andThen(s.waitForTransaction),[s,e])}function Tr(e,s){return e}function sa(e){let s=u();return l(r=>actions.setSpokeUserPositionManager(s,r).andThen(t=>e(t,{cancel:p})).andThen(t=>t.wait()).andThen(s.waitForTransaction).andThrough(()=>J(s,r.spoke)),[s,e])}function ra(e=client.DEFAULT_QUERY_OPTIONS){let s=u();return l(r=>actions.preview(s,r,{currency:e.currency,requestPolicy:"network-only"}),[s,e.currency])}function ta({suspense:e=false,pause:s=false,currency:r=client.DEFAULT_QUERY_OPTIONS.currency,...t}){return o({document:graphql.PreviewQuery,variables:{request:t,currency:r},suspense:e,pause:s})}function na({suspense:e=false,pause:s=false,currency:r=client.DEFAULT_QUERY_OPTIONS.currency,timeWindow:t=client.DEFAULT_QUERY_OPTIONS.timeWindow,...n}){return o({document:graphql.ActivitiesQuery,variables:{request:n,currency:r,timeWindow:t},suspense:e,pause:s})}function aa(e=client.DEFAULT_QUERY_OPTIONS){let s=u();return l(r=>actions.activities(s,r,{currency:e.currency??client.DEFAULT_QUERY_OPTIONS.currency,timeWindow:e.timeWindow??client.DEFAULT_QUERY_OPTIONS.timeWindow,requestPolicy:"cache-first"}),[s,e.currency,e.timeWindow])}function oa(e){let s=u();return l(r=>actions.claimRewards(s,r).andThen(t=>e(t,{cancel:p})).andThen(R.tryFrom).andThen(t=>t.wait()).map(t=>client.transactionReceipt(t.txHash)),[s,e])}function ya({suspense:e=false,pause:s=false,currency:r=client.DEFAULT_QUERY_OPTIONS.currency,timeWindow:t=client.DEFAULT_QUERY_OPTIONS.timeWindow,...n}){return o({document:graphql.UserSuppliesQuery,variables:{request:n,currency:r,timeWindow:t},suspense:e,pause:s})}function Sa(e=client.DEFAULT_QUERY_OPTIONS){let s=u();return l(r=>actions.userSupplies(s,r,{currency:e.currency??client.DEFAULT_QUERY_OPTIONS.currency,timeWindow:e.timeWindow??client.DEFAULT_QUERY_OPTIONS.timeWindow,requestPolicy:"cache-first"}),[s,e.currency,e.timeWindow])}function Ra({suspense:e=false,pause:s=false,currency:r=client.DEFAULT_QUERY_OPTIONS.currency,timeWindow:t=client.DEFAULT_QUERY_OPTIONS.timeWindow,...n}){return o({document:graphql.UserBorrowsQuery,variables:{request:n,currency:r,timeWindow:t},suspense:e,pause:s})}function fa(e=client.DEFAULT_QUERY_OPTIONS){let s=u();return l(r=>actions.userBorrows(s,r,{currency:e.currency??client.DEFAULT_QUERY_OPTIONS.currency,timeWindow:e.timeWindow??client.DEFAULT_QUERY_OPTIONS.timeWindow,requestPolicy:"cache-first"}),[s,e.currency,e.timeWindow])}function ma({suspense:e=false,pause:s=false,currency:r=client.DEFAULT_QUERY_OPTIONS.currency,timeWindow:t=client.DEFAULT_QUERY_OPTIONS.timeWindow,...n}){return o({document:graphql.UserSummaryQuery,variables:{request:n,currency:r,timeWindow:t},suspense:e,pause:s})}function Ua({suspense:e=false,pause:s=false,currency:r=client.DEFAULT_QUERY_OPTIONS.currency,timeWindow:t=client.DEFAULT_QUERY_OPTIONS.timeWindow,...n}){return o({document:graphql.UserPositionsQuery,variables:{request:n,currency:r,timeWindow:t},suspense:e,pause:s})}function ba(e=client.DEFAULT_QUERY_OPTIONS){let s=u();return l(r=>actions.userPositions(s,r,{currency:e.currency,timeWindow:e.timeWindow,requestPolicy:"cache-first"}),[s,e.currency,e.timeWindow])}function ga({suspense:e=false,pause:s=false,currency:r=client.DEFAULT_QUERY_OPTIONS.currency,timeWindow:t=client.DEFAULT_QUERY_OPTIONS.timeWindow,...n}){return o({document:graphql.UserPositionQuery,variables:{request:n,currency:r,timeWindow:t},suspense:e,pause:s})}function Aa({suspense:e=false,pause:s=false,currency:r=client.DEFAULT_QUERY_OPTIONS.currency,...t}){return o({document:graphql.UserBalancesQuery,variables:{request:t,currency:r},suspense:e,pause:s})}function wa({suspense:e=false,pause:s=false,...r}){return o({document:graphql.UserRiskPremiumBreakdownQuery,variables:{request:r},suspense:e,pause:s,batch:false})}function Pa(e=client.DEFAULT_QUERY_OPTIONS){let s=u();return l(r=>actions.userBalances(s,r,{currency:e.currency,requestPolicy:"cache-first"}),[s,e.currency])}function Ta({suspense:e=false,pause:s=false,currency:r=client.DEFAULT_QUERY_OPTIONS.currency,...t}){return o({document:graphql.UserSummaryHistoryQuery,variables:{request:t,currency:r},suspense:e,pause:s,batch:false})}exports.AaveProvider=Fr;exports.CannotCancelSwapError=W;exports.useAaveClient=u;exports.useActivities=na;exports.useActivitiesAction=aa;exports.useAsset=Ht;exports.useAssetBorrowHistory=Bt;exports.useAssetPriceHistory=Ct;exports.useAssetSupplyHistory=It;exports.useBorrow=$n;exports.useBorrowApyHistory=Yt;exports.useBorrowSwap=vn;exports.useBorrowSwapQuote=En;exports.useBorrowSwapQuoteAction=Qn;exports.useCancelSwap=On;exports.useChain=Pt;exports.useChainAction=Tt;exports.useChains=xt;exports.useClaimRewards=oa;exports.useExchangeRate=Et;exports.useExchangeRateAction=ht;exports.useHub=dt;exports.useHubAssets=St;exports.useHubSummaryHistory=Rt;exports.useHubs=yt;exports.useHubsAction=ft;exports.useLiquidatePosition=ea;exports.usePreview=ta;exports.usePreviewAction=ra;exports.useProtocolHistory=Wt;exports.useRenounceSpokeUserPositionManager=Jn;exports.useRepay=Kn;exports.useRepayWithSupply=Cn;exports.useRepayWithSupplyQuote=qn;exports.useRepayWithSupplyQuoteAction=Hn;exports.useReserve=Ft;exports.useReserveAction=Lt;exports.useReserves=jt;exports.useReservesAction=Gt;exports.useSetSpokeUserPositionManager=sa;exports.useSetUserSuppliesAsCollateral=Zn;exports.useSpoke=an;exports.useSpokePositionManagers=un;exports.useSpokeUserPositionManagers=pn;exports.useSpokes=on;exports.useSupply=Yn;exports.useSupplyApyHistory=$t;exports.useSupplySwap=kn;exports.useSupplySwapQuote=xn;exports.useSupplySwapQuoteAction=hn;exports.useSwapStatus=Tn;exports.useSwappableTokens=wn;exports.useTokenSwap=Dn;exports.useTokenSwapQuote=gn;exports.useTokenSwapQuoteAction=An;exports.useUpdateUserPositionConditions=Xn;exports.useUserBalances=Aa;exports.useUserBalancesAction=Pa;exports.useUserBorrows=Ra;exports.useUserBorrowsAction=fa;exports.useUserClaimableRewards=en;exports.useUserClaimableRewardsAction=sn;exports.useUserPosition=ga;exports.useUserPositions=Ua;exports.useUserPositionsAction=ba;exports.useUserRiskPremiumBreakdown=wa;exports.useUserSummary=ma;exports.useUserSummaryHistory=Ta;exports.useUserSupplies=ya;exports.useUserSuppliesAction=Sa;exports.useUserSwaps=Pn;exports.useWithdraw=zn;exports.useWithdrawSwap=Wn;exports.useWithdrawSwapQuote=In;exports.useWithdrawSwapQuoteAction=Bn;Object.keys(client).forEach(function(k){if(k!=='default'&&!Object.prototype.hasOwnProperty.call(exports,k))Object.defineProperty(exports,k,{enumerable:true,get:function(){return client[k]}})});//# sourceMappingURL=index.cjs.map
|
|
2
2
|
//# sourceMappingURL=index.cjs.map
|