@aave/react 4.0.0-next.3 → 4.0.0-next.30
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/README.md +8 -24
- package/dist/chunk-4NA4FB6K.js +2 -0
- package/dist/chunk-4NA4FB6K.js.map +1 -0
- package/dist/chunk-LBLCOU6O.js +2 -0
- package/dist/chunk-LBLCOU6O.js.map +1 -0
- package/dist/chunk-VGAHEW5B.js +2 -0
- package/dist/chunk-VGAHEW5B.js.map +1 -0
- package/dist/ethers.cjs +1 -1
- package/dist/ethers.cjs.map +1 -1
- package/dist/ethers.d.cts +10 -66
- package/dist/ethers.d.ts +10 -66
- package/dist/ethers.js +1 -1
- package/dist/ethers.js.map +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +887 -264
- package/dist/index.d.ts +887 -264
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/{misc-BkG5G4yl.d.cts → misc-C2MMWDjq.d.ts} +39 -15
- package/dist/{misc-gmAnSdm5.d.ts → misc-DP6al_6P.d.cts} +39 -15
- package/dist/privy.cjs +1 -1
- package/dist/privy.cjs.map +1 -1
- package/dist/privy.d.cts +9 -54
- package/dist/privy.d.ts +9 -54
- package/dist/privy.js +1 -1
- package/dist/privy.js.map +1 -1
- package/dist/thirdweb.cjs +1 -2
- package/dist/thirdweb.cjs.map +1 -1
- package/dist/thirdweb.d.cts +9 -54
- package/dist/thirdweb.d.ts +9 -54
- package/dist/thirdweb.js +1 -2
- package/dist/thirdweb.js.map +1 -1
- package/dist/viem/index.cjs +1 -1
- package/dist/viem/index.cjs.map +1 -1
- package/dist/viem/index.d.cts +13 -68
- package/dist/viem/index.d.ts +13 -68
- package/dist/viem/index.js +1 -1
- package/dist/viem/index.js.map +1 -1
- package/dist/{writes-BXnwYgAQ.d.cts → writes-CqRSU8Ho.d.cts} +9 -5
- package/dist/{writes-BXnwYgAQ.d.ts → writes-CqRSU8Ho.d.ts} +9 -5
- package/package.json +6 -6
- package/dist/chunk-GTUQRT5Q.js +0 -2
- package/dist/chunk-GTUQRT5Q.js.map +0 -1
- package/dist/chunk-XIDOSID3.js +0 -2
- package/dist/chunk-XIDOSID3.js.map +0 -1
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { UnexpectedError, CurrencyQueryOptions } from '@aave/client';
|
|
2
2
|
import { UnexpectedError as UnexpectedError$1 } from '@aave/core';
|
|
3
|
-
import { ChainRequest, Chain,
|
|
3
|
+
import { ChainRequest, Chain, ChainsRequest, ExchangeRateRequest, ExchangeAmount, ActivityItem, PreviewAction, NativeAmount } from '@aave/graphql';
|
|
4
4
|
import { NullishDeep, Prettify } from '@aave/types';
|
|
5
|
-
import { a as UseAsyncTask } from './writes-
|
|
5
|
+
import { a as UseAsyncTask } from './writes-CqRSU8Ho.js';
|
|
6
6
|
|
|
7
7
|
/**
|
|
8
8
|
* A read hook result that supports pausing.
|
|
@@ -145,9 +145,33 @@ declare function useChain(args: UseChainArgs): ReadResult<Chain | null>;
|
|
|
145
145
|
* ```
|
|
146
146
|
*/
|
|
147
147
|
declare function useChain(args: Pausable<UseChainArgs>): PausableReadResult<Chain | null>;
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
148
|
+
/**
|
|
149
|
+
* Low-level hook to execute a {@link chain} action directly.
|
|
150
|
+
*
|
|
151
|
+
* @experimental This hook is experimental and may be subject to breaking changes.
|
|
152
|
+
* @remarks
|
|
153
|
+
* This hook **does not** actively watch for updated data on the chain.
|
|
154
|
+
* Use this hook to retrieve data on demand as part of a larger workflow
|
|
155
|
+
* (e.g., in an event handler in order to move to the next step).
|
|
156
|
+
*
|
|
157
|
+
* ```ts
|
|
158
|
+
* const [execute, { called, data, error, loading }] = useChainAction();
|
|
159
|
+
*
|
|
160
|
+
* // …
|
|
161
|
+
*
|
|
162
|
+
* const result = await execute({
|
|
163
|
+
* chainId: chainId(1),
|
|
164
|
+
* });
|
|
165
|
+
*
|
|
166
|
+
* if (result.isOk()) {
|
|
167
|
+
* console.log(result.value); // Chain | null
|
|
168
|
+
* } else {
|
|
169
|
+
* console.error(result.error);
|
|
170
|
+
* }
|
|
171
|
+
* ```
|
|
172
|
+
*/
|
|
173
|
+
declare function useChainAction(): UseAsyncTask<ChainRequest, Chain | null, UnexpectedError$1>;
|
|
174
|
+
type UseChainsArgs = ChainsRequest;
|
|
151
175
|
/**
|
|
152
176
|
* Fetches the list of supported chains.
|
|
153
177
|
*
|
|
@@ -155,7 +179,7 @@ type UseChainsArgs = {
|
|
|
155
179
|
*
|
|
156
180
|
* ```tsx
|
|
157
181
|
* const { data } = useChains({
|
|
158
|
-
* filter: ChainsFilter.ALL,
|
|
182
|
+
* query: { filter: ChainsFilter.ALL },
|
|
159
183
|
* suspense: true,
|
|
160
184
|
* });
|
|
161
185
|
* ```
|
|
@@ -168,7 +192,7 @@ declare function useChains(args: UseChainsArgs & Suspendable): SuspenseResult<Ch
|
|
|
168
192
|
*
|
|
169
193
|
* ```tsx
|
|
170
194
|
* const { data } = useChains({
|
|
171
|
-
* filter: ChainsFilter.ALL,
|
|
195
|
+
* query: { filter: ChainsFilter.ALL },
|
|
172
196
|
* suspense: true,
|
|
173
197
|
* pause: true,
|
|
174
198
|
* });
|
|
@@ -180,7 +204,7 @@ declare function useChains(args: Pausable<UseChainsArgs> & Suspendable): Pausabl
|
|
|
180
204
|
*
|
|
181
205
|
* ```tsx
|
|
182
206
|
* const { data, error, loading } = useChains({
|
|
183
|
-
* filter: ChainsFilter.ALL,
|
|
207
|
+
* query: { filter: ChainsFilter.ALL },
|
|
184
208
|
* });
|
|
185
209
|
* ```
|
|
186
210
|
*/
|
|
@@ -192,7 +216,7 @@ declare function useChains(args?: UseChainsArgs): ReadResult<Chain[]>;
|
|
|
192
216
|
*
|
|
193
217
|
* ```tsx
|
|
194
218
|
* const { data, error, loading, paused } = useChains({
|
|
195
|
-
* filter: ChainsFilter.ALL,
|
|
219
|
+
* query: { filter: ChainsFilter.ALL },
|
|
196
220
|
* pause: true,
|
|
197
221
|
* });
|
|
198
222
|
* ```
|
|
@@ -222,7 +246,7 @@ declare function useChains(args?: Pausable<UseChainsArgs>): PausableReadResult<C
|
|
|
222
246
|
* console.log('Exchange rate:', result.value);
|
|
223
247
|
* ```
|
|
224
248
|
*/
|
|
225
|
-
declare function useExchangeRateAction(): UseAsyncTask<ExchangeRateRequest,
|
|
249
|
+
declare function useExchangeRateAction(): UseAsyncTask<ExchangeRateRequest, ExchangeAmount, UnexpectedError$1>;
|
|
226
250
|
type UseExchangeRateArgs = ExchangeRateRequest;
|
|
227
251
|
/**
|
|
228
252
|
* Fetches exchange rates between tokens and fiat currencies with automatic polling.
|
|
@@ -242,7 +266,7 @@ type UseExchangeRateArgs = ExchangeRateRequest;
|
|
|
242
266
|
* });
|
|
243
267
|
* ```
|
|
244
268
|
*/
|
|
245
|
-
declare function useExchangeRate(args: UseExchangeRateArgs & Suspendable): SuspenseResult<
|
|
269
|
+
declare function useExchangeRate(args: UseExchangeRateArgs & Suspendable): SuspenseResult<ExchangeAmount>;
|
|
246
270
|
/**
|
|
247
271
|
* Fetches exchange rates between tokens and fiat currencies with automatic polling.
|
|
248
272
|
*
|
|
@@ -262,7 +286,7 @@ declare function useExchangeRate(args: UseExchangeRateArgs & Suspendable): Suspe
|
|
|
262
286
|
* });
|
|
263
287
|
* ```
|
|
264
288
|
*/
|
|
265
|
-
declare function useExchangeRate(args: Pausable<UseExchangeRateArgs> & Suspendable): PausableSuspenseResult<
|
|
289
|
+
declare function useExchangeRate(args: Pausable<UseExchangeRateArgs> & Suspendable): PausableSuspenseResult<ExchangeAmount>;
|
|
266
290
|
/**
|
|
267
291
|
* Fetches exchange rates between tokens and fiat currencies with automatic polling.
|
|
268
292
|
*
|
|
@@ -280,7 +304,7 @@ declare function useExchangeRate(args: Pausable<UseExchangeRateArgs> & Suspendab
|
|
|
280
304
|
* <Component value={somewhere} fxRate={data} />
|
|
281
305
|
* ```
|
|
282
306
|
*/
|
|
283
|
-
declare function useExchangeRate(args: UseExchangeRateArgs): ReadResult<
|
|
307
|
+
declare function useExchangeRate(args: UseExchangeRateArgs): ReadResult<ExchangeAmount>;
|
|
284
308
|
/**
|
|
285
309
|
* Fetches exchange rates between tokens and fiat currencies with automatic polling.
|
|
286
310
|
*
|
|
@@ -299,7 +323,7 @@ declare function useExchangeRate(args: UseExchangeRateArgs): ReadResult<FiatAmou
|
|
|
299
323
|
* });
|
|
300
324
|
* ```
|
|
301
325
|
*/
|
|
302
|
-
declare function useExchangeRate(args: Pausable<UseExchangeRateArgs>): PausableReadResult<
|
|
326
|
+
declare function useExchangeRate(args: Pausable<UseExchangeRateArgs>): PausableReadResult<ExchangeAmount>;
|
|
303
327
|
type UseNetworkFeeRequestQuery = {
|
|
304
328
|
activity: ActivityItem;
|
|
305
329
|
} | {
|
|
@@ -374,4 +398,4 @@ type UseNetworkFee<T extends NativeAmount = NativeAmount> =
|
|
|
374
398
|
*/
|
|
375
399
|
((args: Pausable<UseNetworkFeeArgs, PausableUseNetworkFeeArgs>) => PausableReadResult<T>);
|
|
376
400
|
|
|
377
|
-
export { type Pausable as P, ReadResult as R, type Suspendable as S, type UseNetworkFee as U, type SuspenseResult as a, type PausableSuspenseResult as b, type PausableReadResult as c, type Selector as d, type UseChainArgs as e, type UseChainsArgs as
|
|
401
|
+
export { type Pausable as P, ReadResult as R, type Suspendable as S, type UseNetworkFee as U, type SuspenseResult as a, type PausableSuspenseResult as b, type PausableReadResult as c, type Selector as d, type UseChainArgs as e, useChainAction as f, type UseChainsArgs as g, useChains as h, useExchangeRateAction as i, type UseExchangeRateArgs as j, useExchangeRate as k, type UseNetworkFeeRequestQuery as l, type UseNetworkFeeArgs as m, useChain as u };
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { UnexpectedError, CurrencyQueryOptions } from '@aave/client';
|
|
2
2
|
import { UnexpectedError as UnexpectedError$1 } from '@aave/core';
|
|
3
|
-
import { ChainRequest, Chain,
|
|
3
|
+
import { ChainRequest, Chain, ChainsRequest, ExchangeRateRequest, ExchangeAmount, ActivityItem, PreviewAction, NativeAmount } from '@aave/graphql';
|
|
4
4
|
import { NullishDeep, Prettify } from '@aave/types';
|
|
5
|
-
import { a as UseAsyncTask } from './writes-
|
|
5
|
+
import { a as UseAsyncTask } from './writes-CqRSU8Ho.cjs';
|
|
6
6
|
|
|
7
7
|
/**
|
|
8
8
|
* A read hook result that supports pausing.
|
|
@@ -145,9 +145,33 @@ declare function useChain(args: UseChainArgs): ReadResult<Chain | null>;
|
|
|
145
145
|
* ```
|
|
146
146
|
*/
|
|
147
147
|
declare function useChain(args: Pausable<UseChainArgs>): PausableReadResult<Chain | null>;
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
148
|
+
/**
|
|
149
|
+
* Low-level hook to execute a {@link chain} action directly.
|
|
150
|
+
*
|
|
151
|
+
* @experimental This hook is experimental and may be subject to breaking changes.
|
|
152
|
+
* @remarks
|
|
153
|
+
* This hook **does not** actively watch for updated data on the chain.
|
|
154
|
+
* Use this hook to retrieve data on demand as part of a larger workflow
|
|
155
|
+
* (e.g., in an event handler in order to move to the next step).
|
|
156
|
+
*
|
|
157
|
+
* ```ts
|
|
158
|
+
* const [execute, { called, data, error, loading }] = useChainAction();
|
|
159
|
+
*
|
|
160
|
+
* // …
|
|
161
|
+
*
|
|
162
|
+
* const result = await execute({
|
|
163
|
+
* chainId: chainId(1),
|
|
164
|
+
* });
|
|
165
|
+
*
|
|
166
|
+
* if (result.isOk()) {
|
|
167
|
+
* console.log(result.value); // Chain | null
|
|
168
|
+
* } else {
|
|
169
|
+
* console.error(result.error);
|
|
170
|
+
* }
|
|
171
|
+
* ```
|
|
172
|
+
*/
|
|
173
|
+
declare function useChainAction(): UseAsyncTask<ChainRequest, Chain | null, UnexpectedError$1>;
|
|
174
|
+
type UseChainsArgs = ChainsRequest;
|
|
151
175
|
/**
|
|
152
176
|
* Fetches the list of supported chains.
|
|
153
177
|
*
|
|
@@ -155,7 +179,7 @@ type UseChainsArgs = {
|
|
|
155
179
|
*
|
|
156
180
|
* ```tsx
|
|
157
181
|
* const { data } = useChains({
|
|
158
|
-
* filter: ChainsFilter.ALL,
|
|
182
|
+
* query: { filter: ChainsFilter.ALL },
|
|
159
183
|
* suspense: true,
|
|
160
184
|
* });
|
|
161
185
|
* ```
|
|
@@ -168,7 +192,7 @@ declare function useChains(args: UseChainsArgs & Suspendable): SuspenseResult<Ch
|
|
|
168
192
|
*
|
|
169
193
|
* ```tsx
|
|
170
194
|
* const { data } = useChains({
|
|
171
|
-
* filter: ChainsFilter.ALL,
|
|
195
|
+
* query: { filter: ChainsFilter.ALL },
|
|
172
196
|
* suspense: true,
|
|
173
197
|
* pause: true,
|
|
174
198
|
* });
|
|
@@ -180,7 +204,7 @@ declare function useChains(args: Pausable<UseChainsArgs> & Suspendable): Pausabl
|
|
|
180
204
|
*
|
|
181
205
|
* ```tsx
|
|
182
206
|
* const { data, error, loading } = useChains({
|
|
183
|
-
* filter: ChainsFilter.ALL,
|
|
207
|
+
* query: { filter: ChainsFilter.ALL },
|
|
184
208
|
* });
|
|
185
209
|
* ```
|
|
186
210
|
*/
|
|
@@ -192,7 +216,7 @@ declare function useChains(args?: UseChainsArgs): ReadResult<Chain[]>;
|
|
|
192
216
|
*
|
|
193
217
|
* ```tsx
|
|
194
218
|
* const { data, error, loading, paused } = useChains({
|
|
195
|
-
* filter: ChainsFilter.ALL,
|
|
219
|
+
* query: { filter: ChainsFilter.ALL },
|
|
196
220
|
* pause: true,
|
|
197
221
|
* });
|
|
198
222
|
* ```
|
|
@@ -222,7 +246,7 @@ declare function useChains(args?: Pausable<UseChainsArgs>): PausableReadResult<C
|
|
|
222
246
|
* console.log('Exchange rate:', result.value);
|
|
223
247
|
* ```
|
|
224
248
|
*/
|
|
225
|
-
declare function useExchangeRateAction(): UseAsyncTask<ExchangeRateRequest,
|
|
249
|
+
declare function useExchangeRateAction(): UseAsyncTask<ExchangeRateRequest, ExchangeAmount, UnexpectedError$1>;
|
|
226
250
|
type UseExchangeRateArgs = ExchangeRateRequest;
|
|
227
251
|
/**
|
|
228
252
|
* Fetches exchange rates between tokens and fiat currencies with automatic polling.
|
|
@@ -242,7 +266,7 @@ type UseExchangeRateArgs = ExchangeRateRequest;
|
|
|
242
266
|
* });
|
|
243
267
|
* ```
|
|
244
268
|
*/
|
|
245
|
-
declare function useExchangeRate(args: UseExchangeRateArgs & Suspendable): SuspenseResult<
|
|
269
|
+
declare function useExchangeRate(args: UseExchangeRateArgs & Suspendable): SuspenseResult<ExchangeAmount>;
|
|
246
270
|
/**
|
|
247
271
|
* Fetches exchange rates between tokens and fiat currencies with automatic polling.
|
|
248
272
|
*
|
|
@@ -262,7 +286,7 @@ declare function useExchangeRate(args: UseExchangeRateArgs & Suspendable): Suspe
|
|
|
262
286
|
* });
|
|
263
287
|
* ```
|
|
264
288
|
*/
|
|
265
|
-
declare function useExchangeRate(args: Pausable<UseExchangeRateArgs> & Suspendable): PausableSuspenseResult<
|
|
289
|
+
declare function useExchangeRate(args: Pausable<UseExchangeRateArgs> & Suspendable): PausableSuspenseResult<ExchangeAmount>;
|
|
266
290
|
/**
|
|
267
291
|
* Fetches exchange rates between tokens and fiat currencies with automatic polling.
|
|
268
292
|
*
|
|
@@ -280,7 +304,7 @@ declare function useExchangeRate(args: Pausable<UseExchangeRateArgs> & Suspendab
|
|
|
280
304
|
* <Component value={somewhere} fxRate={data} />
|
|
281
305
|
* ```
|
|
282
306
|
*/
|
|
283
|
-
declare function useExchangeRate(args: UseExchangeRateArgs): ReadResult<
|
|
307
|
+
declare function useExchangeRate(args: UseExchangeRateArgs): ReadResult<ExchangeAmount>;
|
|
284
308
|
/**
|
|
285
309
|
* Fetches exchange rates between tokens and fiat currencies with automatic polling.
|
|
286
310
|
*
|
|
@@ -299,7 +323,7 @@ declare function useExchangeRate(args: UseExchangeRateArgs): ReadResult<FiatAmou
|
|
|
299
323
|
* });
|
|
300
324
|
* ```
|
|
301
325
|
*/
|
|
302
|
-
declare function useExchangeRate(args: Pausable<UseExchangeRateArgs>): PausableReadResult<
|
|
326
|
+
declare function useExchangeRate(args: Pausable<UseExchangeRateArgs>): PausableReadResult<ExchangeAmount>;
|
|
303
327
|
type UseNetworkFeeRequestQuery = {
|
|
304
328
|
activity: ActivityItem;
|
|
305
329
|
} | {
|
|
@@ -374,4 +398,4 @@ type UseNetworkFee<T extends NativeAmount = NativeAmount> =
|
|
|
374
398
|
*/
|
|
375
399
|
((args: Pausable<UseNetworkFeeArgs, PausableUseNetworkFeeArgs>) => PausableReadResult<T>);
|
|
376
400
|
|
|
377
|
-
export { type Pausable as P, ReadResult as R, type Suspendable as S, type UseNetworkFee as U, type SuspenseResult as a, type PausableSuspenseResult as b, type PausableReadResult as c, type Selector as d, type UseChainArgs as e, type UseChainsArgs as
|
|
401
|
+
export { type Pausable as P, ReadResult as R, type Suspendable as S, type UseNetworkFee as U, type SuspenseResult as a, type PausableSuspenseResult as b, type PausableReadResult as c, type Selector as d, type UseChainArgs as e, useChainAction as f, type UseChainsArgs as g, useChains as h, useExchangeRateAction as i, type UseExchangeRateArgs as j, useExchangeRate as k, type UseNetworkFeeRequestQuery as l, type UseNetworkFeeArgs as m, useChain as u };
|
package/dist/privy.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
'use strict';var client=require('@aave/client'),viem
|
|
1
|
+
'use strict';var client=require('@aave/client'),viem=require('@aave/client/viem'),types=require('@aave/types'),reactAuth=require('@privy-io/react-auth'),viem$1=require('viem'),v=require('react');require('@aave/core');var actions=require('@aave/client/actions');require('@aave/graphql'),require('urql');function _interopDefault(e){return e&&e.__esModule?e:{default:e}}var v__default=/*#__PURE__*/_interopDefault(v);var l={Idle:()=>({called:false,loading:false,data:void 0,error:void 0}),Loading:e=>({called:true,loading:true,data:e,error:void 0}),Success:e=>({called:true,loading:false,data:e,error:void 0}),Failed:e=>({called:true,loading:false,data:void 0,error:e})};function u(e,a){let[t,s]=v.useState(l.Idle()),n=v.useRef(false),r=v.useCallback(e,a);return [v.useCallback(h=>{types.invariant(!n.current,"Cannot execute a task while another is in progress."),n.current=true;let d;s(o=>(d=o,{called:true,loading:true,data:o.data,error:void 0}));try{let o=r(h);return o.match(c=>{n.current=!1,s(l.Success(c));},c=>{n.current=!1,s(l.Failed(c));}),o}catch(o){throw n.current=false,s(types.nonNullable(d)),o}},[r]),t]}var i=class e{constructor(a){this.wait=a;}static isInstanceOf(a){return a instanceof e}static ensure(a){return types.invariant(e.isInstanceOf(a),"Expected PendingTransaction"),a}};var U=v__default.default.createContext(null);function T(){let e=v.useContext(U);return types.invariant(e,"Could not find Aave SDK context, ensure your code is wrapped in a <AaveProvider>"),e}function g(){let e=T();return u(a=>actions.chain(e,a,{batch:false,requestPolicy:"cache-first"}),[e])}function Te(){let{wallets:e}=reactAuth.useWallets(),[a]=g();return u(t=>{let s=e.find(n=>n.address===t.from);return types.invariant(s,`Expected a connected wallet with address ${t.from} to be found.`),a({chainId:t.chainId}).map(n=>(types.invariant(n,`Chain ${t.chainId} is not supported`),viem.toViemChain(n))).andThen(n=>types.ResultAsync.fromPromise(s.switchChain(t.chainId),r=>client.UnexpectedError.from(r)).map(()=>s.getEthereumProvider()).map(r=>viem$1.createWalletClient({account:t.from,chain:n,transport:viem$1.custom(r)})).andThen(r=>viem.sendTransaction(r,t).map(p=>new i(()=>viem.waitForTransactionResult(r,t,p)))))},[e,a])}function ge(){let{signTypedData:e}=reactAuth.useSignTypedData();return u(a=>types.ResultAsync.fromPromise(e({domain:a.domain,types:a.types,primaryType:a.primaryType,message:a.message}),t=>client.SigningError.from(t)).map(({signature:t})=>types.signatureFrom(t)),[e])}exports.useSendTransaction=Te;exports.useSignTypedData=ge;//# sourceMappingURL=privy.cjs.map
|
|
2
2
|
//# sourceMappingURL=privy.cjs.map
|
package/dist/privy.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/helpers/tasks.ts","../src/helpers/writes.ts","../src/context.tsx","../src/permits.ts","../src/privy.ts"],"names":["AsyncTaskState","data","error","useAsyncTask","handler","deps","state","setState","useState","loadingRef","useRef","handle","useCallback","input","invariant","result","value","PendingTransaction","_PendingTransaction","wait","AaveContext","React","useAaveClient","client","useContext","usePermitTypedDataAction","request","permitTypedData","useSendTransaction","wallets","useWallets","wallet","ResultAsync","UnexpectedError","provider","createWalletClient","supportedChains","custom","walletClient","sendTransaction","hash","waitForTransactionResult","useERC20Permit","signTypedData","useSignTypedData","response","SigningError","signature","signatureFrom","useSignSwapTypedDataWith","typedData","message"],"mappings":"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","file":"privy.cjs","sourcesContent":["import { invariant, 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 setState(({ data }) => {\n return {\n called: true,\n loading: true,\n data,\n error: undefined,\n };\n });\n\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 },\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 type UnexpectedError,\n} from '@aave/core';\nimport type {\n Erc20ApprovalRequired,\n PreContractActionRequired,\n TransactionRequest,\n} from '@aave/graphql';\nimport type { ResultAsync } from '@aave/types';\nimport { invariant } 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 ensure<T>(value: T): PendingTransaction & T {\n invariant(\n value instanceof PendingTransaction,\n 'Expected PendingTransaction',\n );\n return value as PendingTransaction & T;\n }\n}\n\nexport type UseSendTransactionResult = UseAsyncTask<\n TransactionRequest,\n PendingTransaction,\n SendTransactionError\n>;\n\n/**\n * The handler for sending Aave transactions.\n */\nexport type TransactionHandler = (\n result:\n | TransactionRequest\n | Erc20ApprovalRequired\n | PreContractActionRequired,\n options: TransactionHandlerOptions,\n) => ResultAsync<PendingTransaction, SendTransactionError>;\n","import type { AaveClient } from '@aave/client';\nimport { invariant } from '@aave/types';\nimport React, { type ReactNode, useContext } from 'react';\nimport { Provider as UrqlProvider } from 'urql';\n\nconst AaveContext = React.createContext<AaveClient | null>(null);\n\n/**\n * @internal\n */\nexport type AaveContextProviderProps = {\n children: ReactNode;\n client: AaveClient;\n};\n\n/**\n * @internal\n */\nexport function AaveContextProvider({\n children,\n client,\n}: AaveContextProviderProps) {\n return (\n <AaveContext.Provider value={client}>\n <UrqlProvider value={client.urql}>{children}</UrqlProvider>\n </AaveContext.Provider>\n );\n}\n\n/**\n * @internal\n */\nexport function useAaveClient(): AaveClient {\n const client = useContext(AaveContext);\n\n invariant(\n client,\n 'Could not find Aave SDK context, ensure your code is wrapped in a <AaveProvider>',\n );\n\n return client;\n}\n","import type { UnexpectedError } from '@aave/client';\nimport { permitTypedData } from '@aave/client/actions';\nimport type { PermitRequest, PermitTypedDataResponse } from '@aave/graphql';\nimport { useAaveClient } from './context';\nimport { type UseAsyncTask, useAsyncTask } from './helpers';\n\n/**\n * @internal\n */\nexport function usePermitTypedDataAction(): UseAsyncTask<\n PermitRequest,\n PermitTypedDataResponse,\n UnexpectedError\n> {\n const client = useAaveClient();\n\n return useAsyncTask(\n (request: PermitRequest) => permitTypedData(client, request),\n [client],\n );\n}\n","import { SigningError, UnexpectedError } from '@aave/client';\nimport {\n sendTransaction,\n supportedChains,\n waitForTransactionResult,\n} from '@aave/client/viem';\nimport type {\n CancelSwapTypedData,\n ERC20PermitSignature,\n PermitRequest,\n SwapByIntentTypedData,\n TransactionRequest,\n} from '@aave/graphql';\nimport { invariant, ResultAsync, signatureFrom } from '@aave/types';\nimport { useSignTypedData, useWallets } from '@privy-io/react-auth';\nimport { createWalletClient, custom } from 'viem';\nimport {\n PendingTransaction,\n type UseAsyncTask,\n type UseSendTransactionResult,\n useAsyncTask,\n} from './helpers';\nimport { usePermitTypedDataAction } from './permits';\n\n/**\n * A hook that provides a way to send Aave transactions using a Privy wallet.\n *\n * Import the `useSendTransaction` hook from `@aave/react/privy` entry point.\n *\n * ```ts\n * const [sendTransaction, { loading, error, data }] = useSendTransaction();\n * ```\n */\nexport function useSendTransaction(): UseSendTransactionResult {\n const { wallets } = useWallets();\n\n return useAsyncTask(\n (request: TransactionRequest) => {\n const wallet = wallets.find((wallet) => wallet.address === request.from);\n\n invariant(\n wallet,\n `Expected a connected wallet with address ${request.from} to be found.`,\n );\n\n return ResultAsync.fromPromise(\n wallet.switchChain(request.chainId),\n (error) => UnexpectedError.from(error),\n )\n .map(() => wallet.getEthereumProvider())\n .map((provider) =>\n createWalletClient({\n account: request.from,\n chain: supportedChains[request.chainId],\n transport: custom(provider),\n }),\n )\n .andThen((walletClient) =>\n sendTransaction(walletClient, request).map(\n (hash) =>\n new PendingTransaction(() =>\n waitForTransactionResult(walletClient, request, hash),\n ),\n ),\n );\n },\n [wallets],\n );\n}\n\nexport type SignERC20PermitError = SigningError | UnexpectedError;\n\n/**\n * A hook that provides a way to sign ERC20 permits using a Privy wallet.\n *\n * ```ts\n * const { ready, authenticated, user } = usePrivy(); // privy hook\n * const [signERC20Permit, { loading, error, data }] = useERC20Permit();\n *\n * const run = async () => {\n * const result = await signERC20Permit({\n * supply: {\n * sender: evmAddress(user!.wallet!.address), // User's address\n * reserve: {\n * reserveId: reserve.id,\n * chainId: reserve.chain.chainId,\n * spoke: reserve.spoke.address,\n * },\n * amount: {\n * value: bigDecimal(42), // 42 USDC\n * },\n * },\n * });\n *\n * if (result.isErr()) {\n * console.error(result.error);\n * return;\n * }\n *\n * console.log('ERC20 Permit signature:', result.value);\n * };\n * ```\n */\nexport function useERC20Permit(): UseAsyncTask<\n PermitRequest,\n ERC20PermitSignature,\n SignERC20PermitError\n> {\n const [permitTypedData] = usePermitTypedDataAction();\n const { signTypedData } = useSignTypedData();\n\n return useAsyncTask(\n (request: PermitRequest) => {\n return permitTypedData(request).andThen((response) =>\n ResultAsync.fromPromise(\n signTypedData({\n types: response.types,\n primaryType: response.primaryType,\n domain: response.domain,\n message: response.message,\n }),\n (error) => SigningError.from(error),\n ).map(({ signature }) => ({\n deadline: response.message.deadline,\n value: signatureFrom(signature),\n })),\n );\n },\n [permitTypedData, signTypedData],\n );\n}\n\nexport type SignSwapTypedDataError = SigningError | UnexpectedError;\n\n/**\n * @internal\n * A hook that provides a way to sign swap typed data using a Privy wallet.\n *\n * ```ts\n * const [signSwapTypedData, { loading, error, data }] = useSignSwapTypedDataWith();\n *\n * const run = async () => {\n * const result = await signSwapTypedData(swapTypedData);\n *\n * if (result.isErr()) {\n * console.error(result.error);\n * return;\n * }\n *\n * console.log('Swap typed data signed:', result.value);\n * };\n * ```\n */\nexport function useSignSwapTypedDataWith(): UseAsyncTask<\n SwapByIntentTypedData | CancelSwapTypedData,\n ERC20PermitSignature,\n SignSwapTypedDataError\n> {\n const { signTypedData } = useSignTypedData();\n\n return useAsyncTask(\n (typedData: SwapByIntentTypedData | CancelSwapTypedData) => {\n const message = JSON.parse(typedData.message);\n\n return ResultAsync.fromPromise(\n signTypedData({\n types: typedData.types,\n primaryType: typedData.primaryType,\n domain: typedData.domain,\n message,\n }),\n (error) => SigningError.from(error),\n ).map(({ signature }) => ({\n deadline: message.deadline,\n value: signatureFrom(signature),\n }));\n },\n [signTypedData],\n );\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/helpers/tasks.ts","../src/helpers/writes.ts","../src/context.tsx","../src/misc.ts","../src/privy.ts"],"names":["AsyncTaskState","data","error","useAsyncTask","handler","deps","state","setState","useState","loadingRef","useRef","handle","useCallback","input","invariant","previousState","result","value","nonNullable","PendingTransaction","_PendingTransaction","wait","AaveContext","React","useAaveClient","client","useContext","useChainAction","request","fetchChain","useSendTransaction","wallets","useWallets","wallet","chain","toViemChain","ResultAsync","UnexpectedError","provider","createWalletClient","custom","walletClient","sendTransaction","hash","waitForTransactionResult","useSignTypedData","privySignTypedData","usePrivySignTypedData","typedData","SigningError","signature","signatureFrom"],"mappings":"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","file":"privy.cjs","sourcesContent":["import { invariant, nonNullable, type ResultAsync } from '@aave/types';\nimport { type DependencyList, useCallback, useRef, useState } from 'react';\n\n/**\n * An async task is a function that can be executed multiple times and that can be in a pending state.\n *\n * @internal\n */\nexport type AsyncTask<TInput, TResult extends ResultAsync<unknown, unknown>> = (\n input: TInput,\n) => TResult;\n\n/**\n * The initial state of a async task.\n */\nexport type AsyncTaskIdle = {\n called: boolean;\n loading: false;\n data: undefined;\n error: undefined;\n};\n\n/**\n * The state of a async task during the loading.\n */\nexport type AsyncTaskLoading<TData> = {\n called: true;\n loading: true;\n data: TData | undefined;\n error: undefined;\n};\n\n/**\n * The state of a async task after a successful call.\n */\nexport type AsyncTaskSuccess<TData> = {\n called: true;\n loading: false;\n data: TData;\n error: undefined;\n};\n\n/**\n * The state of a async task after a failed call.\n */\nexport type AsyncTaskError<TError> = {\n called: true;\n loading: false;\n data: undefined;\n error: TError;\n};\n\n/**\n * The possible statuses of a async task.\n */\nexport type AsyncTaskState<TData, TError> =\n | AsyncTaskIdle\n | AsyncTaskLoading<TData>\n | AsyncTaskSuccess<TData>\n | AsyncTaskError<TError>;\n\nconst AsyncTaskState = {\n Idle: <TData, TError>(): AsyncTaskState<TData, TError> => ({\n called: false,\n loading: false,\n data: undefined,\n error: undefined,\n }),\n Loading: <TData, TError>(data?: TData): AsyncTaskState<TData, TError> => ({\n called: true,\n loading: true,\n data,\n error: undefined,\n }),\n Success: <TData, TError>(data: TData): AsyncTaskState<TData, TError> => ({\n called: true,\n loading: false,\n data,\n error: undefined,\n }),\n Failed: <TData, TError>(error: TError): AsyncTaskState<TData, TError> => ({\n called: true,\n loading: false,\n data: undefined,\n error,\n }),\n};\n\n/**\n * A async task React Hook is a lightweight wrapper for an asynchronous function.\n * It allows tracking of the task's execution status and provides access to the\n * last error that occurred during the task's execution, if any.\n *\n * ```ts\n * const [execute, { called, loading, data, error }]: UseAsyncTask<TData, TError, TInput> = useAnyAsyncTask();\n *\n * if (!called) {\n * // data === undefined\n * // error === undefined\n * return <p>Click the button to execute the task</p>;\n * }\n *\n * if (loading) {\n * // data === undefined on first call\n * // data === TData from previous successful call\n * // error === undefined\n * return <Loader />;\n * }\n *\n * if (error) {\n * // data === undefined\n * // error === TError\n * return <p>Something went wrong: {error.message}</p>;\n * }\n *\n * // called === true\n * // data === TData\n * // error === undefined\n * return <p>Task completed: {data}</p>;\n * ```\n */\nexport type UseAsyncTask<TInput, TValue, TError> = [\n AsyncTask<TInput, ResultAsync<TValue, TError>>,\n AsyncTaskState<TValue, TError>,\n];\n\n/**\n * @internal\n */\nexport function useAsyncTask<\n TInput,\n TValue,\n TError,\n TResult extends ResultAsync<TValue, TError>,\n>(\n handler: AsyncTask<TInput, TResult>,\n deps: DependencyList,\n): UseAsyncTask<TInput, TValue, TError> {\n const [state, setState] = useState(AsyncTaskState.Idle<TValue, TError>());\n const loadingRef = useRef(false);\n // biome-ignore lint/correctness/useExhaustiveDependencies: useAsyncTask is a low-level hook\n const handle = useCallback(handler, deps);\n\n const execute = useCallback(\n (input: TInput) => {\n invariant(\n !loadingRef.current,\n 'Cannot execute a task while another is in progress.',\n );\n\n loadingRef.current = true;\n\n let previousState: AsyncTaskState<TValue, TError> | undefined;\n setState((state) => {\n previousState = state;\n return {\n called: true,\n loading: true,\n data: state.data,\n error: undefined,\n };\n });\n\n try {\n const result = handle(input);\n\n result.match(\n (value) => {\n loadingRef.current = false;\n setState(AsyncTaskState.Success(value));\n },\n (error) => {\n loadingRef.current = false;\n setState(AsyncTaskState.Failed(error));\n },\n );\n\n return result;\n } catch (error) {\n loadingRef.current = false;\n setState(nonNullable(previousState));\n throw error;\n }\n },\n [handle],\n );\n\n return [execute, state];\n}\n","import type { TransactionResult } from '@aave/client';\nimport {\n CancelError,\n type SigningError,\n type TimeoutError,\n type TransactionError,\n type UnexpectedError,\n} from '@aave/core';\nimport type { ExecutionPlan, TransactionRequest } from '@aave/graphql';\nimport type { ResultAsync, Signature } from '@aave/types';\nimport { invariant } 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 * @internal\n */\n static ensure<T>(value: T): PendingTransaction & T {\n invariant(\n PendingTransaction.isInstanceOf(value),\n 'Expected PendingTransaction',\n );\n return value as PendingTransaction & T;\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 TransactionHandler<\n T extends ExecutionPlan,\n R extends Signature | PendingTransaction,\n> = (\n plan: T,\n options: TransactionHandlerOptions,\n) => ResultAsync<R, SendTransactionError>;\n","import type { AaveClient } from '@aave/client';\nimport { invariant } from '@aave/types';\nimport React, { type ReactNode, useContext } from 'react';\nimport { Provider as UrqlProvider } from 'urql';\n\nconst AaveContext = React.createContext<AaveClient | null>(null);\n\n/**\n * @internal\n */\nexport type AaveContextProviderProps = {\n children: ReactNode;\n client: AaveClient;\n};\n\n/**\n * @internal\n */\nexport function AaveContextProvider({\n children,\n client,\n}: AaveContextProviderProps) {\n return (\n <AaveContext.Provider value={client}>\n <UrqlProvider value={client.urql}>{children}</UrqlProvider>\n </AaveContext.Provider>\n );\n}\n\n/**\n * @internal\n */\nexport function useAaveClient(): AaveClient {\n const client = useContext(AaveContext);\n\n invariant(\n client,\n 'Could not find Aave SDK context, ensure your code is wrapped in a <AaveProvider>',\n );\n\n return client;\n}\n","import type { CurrencyQueryOptions } from '@aave/client';\nimport { exchangeRate, chain as fetchChain } from '@aave/client/actions';\nimport type { UnexpectedError } from '@aave/core';\nimport type { Chain, ExchangeAmount, ExchangeRateRequest } from '@aave/graphql';\nimport {\n type ActivityItem,\n ChainQuery,\n type ChainRequest,\n ChainsFilter,\n ChainsQuery,\n type ChainsRequest,\n ExchangeRateQuery,\n type NativeAmount,\n type PreviewAction,\n} from '@aave/graphql';\nimport type { NullishDeep, Prettify } from '@aave/types';\nimport { useAaveClient } from './context';\nimport {\n type Pausable,\n type PausableReadResult,\n type PausableSuspenseResult,\n type ReadResult,\n type Suspendable,\n type SuspendableResult,\n type SuspenseResult,\n useSuspendableQuery,\n} from './helpers';\nimport { type UseAsyncTask, useAsyncTask } from './helpers/tasks';\n\nexport type UseChainArgs = ChainRequest;\n\n/**\n * Fetch a specific chain by chain ID.\n *\n * This signature supports React Suspense:\n *\n * ```tsx\n * const { data } = useChain({\n * chainId: chainId(1),\n * suspense: true,\n * });\n * // data will be Chain | null\n * ```\n */\nexport function useChain(\n args: UseChainArgs & Suspendable,\n): SuspenseResult<Chain | null>;\n/**\n * Fetch a specific chain by chain ID.\n *\n * Pausable suspense mode.\n *\n * ```tsx\n * const { data } = useChain({\n * chainId: chainId(1),\n * suspense: true,\n * pause: true,\n * });\n * ```\n */\nexport function useChain(\n args: Pausable<UseChainArgs> & Suspendable,\n): PausableSuspenseResult<Chain | null>;\n/**\n * Fetch a specific chain by chain ID.\n *\n * ```tsx\n * const { data, error, loading } = useChain({\n * chainId: chainId(1),\n * });\n * // data will be Chain | null\n * ```\n */\nexport function useChain(args: UseChainArgs): ReadResult<Chain | null>;\n/**\n * Fetch a specific chain by chain ID.\n *\n * Pausable loading state mode.\n *\n * ```tsx\n * const { data, error, loading, paused } = useChain({\n * chainId: chainId(1),\n * pause: true,\n * });\n * ```\n */\nexport function useChain(\n args: Pausable<UseChainArgs>,\n): PausableReadResult<Chain | null>;\n\nexport function useChain({\n suspense = false,\n pause = false,\n ...request\n}: NullishDeep<UseChainArgs> & {\n suspense?: boolean;\n pause?: boolean;\n}): SuspendableResult<Chain | null, UnexpectedError> {\n return useSuspendableQuery({\n document: ChainQuery,\n variables: {\n request,\n },\n suspense,\n pause,\n });\n}\n\n/**\n * Low-level hook to execute a {@link chain} action directly.\n *\n * @experimental This hook is experimental and may be subject to breaking changes.\n * @remarks\n * This hook **does not** actively watch for updated data on the chain.\n * Use this hook to retrieve data on demand as part of a larger workflow\n * (e.g., in an event handler in order to move to the next step).\n *\n * ```ts\n * const [execute, { called, data, error, loading }] = useChainAction();\n *\n * // …\n *\n * const result = await execute({\n * chainId: chainId(1),\n * });\n *\n * if (result.isOk()) {\n * console.log(result.value); // Chain | null\n * } else {\n * console.error(result.error);\n * }\n * ```\n */\nexport function useChainAction(): UseAsyncTask<\n ChainRequest,\n Chain | null,\n UnexpectedError\n> {\n const client = useAaveClient();\n\n return useAsyncTask(\n (request: ChainRequest) =>\n fetchChain(client, request, {\n batch: false,\n requestPolicy: 'cache-first',\n }),\n [client],\n );\n}\n\nexport type UseChainsArgs = ChainsRequest;\n/**\n * Fetches the list of supported chains.\n *\n * This signature supports React Suspense:\n *\n * ```tsx\n * const { data } = useChains({\n * query: { filter: ChainsFilter.ALL },\n * suspense: true,\n * });\n * ```\n */\nexport function useChains(\n args: UseChainsArgs & Suspendable,\n): SuspenseResult<Chain[]>;\n/**\n * Fetches the list of supported chains.\n *\n * Pausable suspense mode.\n *\n * ```tsx\n * const { data } = useChains({\n * query: { filter: ChainsFilter.ALL },\n * suspense: true,\n * pause: true,\n * });\n * ```\n */\nexport function useChains(\n args: Pausable<UseChainsArgs> & Suspendable,\n): PausableSuspenseResult<Chain[]>;\n/**\n * Fetches the list of supported chains.\n *\n * ```tsx\n * const { data, error, loading } = useChains({\n * query: { filter: ChainsFilter.ALL },\n * });\n * ```\n */\nexport function useChains(args?: UseChainsArgs): ReadResult<Chain[]>;\n/**\n * Fetches the list of supported chains.\n *\n * Pausable loading state mode.\n *\n * ```tsx\n * const { data, error, loading, paused } = useChains({\n * query: { filter: ChainsFilter.ALL },\n * pause: true,\n * });\n * ```\n */\nexport function useChains(\n args?: Pausable<UseChainsArgs>,\n): PausableReadResult<Chain[]>;\n\nexport function useChains(\n {\n suspense = false,\n pause = false,\n ...request\n }: NullishDeep<UseChainsArgs> & {\n suspense?: boolean;\n pause?: boolean;\n } = { query: { filter: ChainsFilter.ALL } },\n): SuspendableResult<Chain[], UnexpectedError> {\n return useSuspendableQuery({\n document: ChainsQuery,\n variables: { request },\n suspense,\n pause,\n });\n}\n\n/**\n * Fetches exchange rates between tokens and fiat currencies.\n *\n * ```tsx\n * const [getExchangeRate, gettingRate] = useExchangeRateAction();\n *\n * const loading = gettingRate.loading;\n * const error = gettingRate.error;\n *\n * // …\n *\n * const result = await getExchangeRate({\n * from: { erc20: { chainId: chainId(1), address: evmAddress('0xA0b86a33E6...') } },\n * to: Currency.Usd,\n * });\n *\n * if (result.isErr()) {\n * console.error(result.error);\n * return;\n * }\n *\n * console.log('Exchange rate:', result.value);\n * ```\n */\nexport function useExchangeRateAction(): UseAsyncTask<\n ExchangeRateRequest,\n ExchangeAmount,\n UnexpectedError\n> {\n const client = useAaveClient();\n\n return useAsyncTask(\n (request: ExchangeRateRequest) =>\n exchangeRate(client, request, { requestPolicy: 'network-only' }),\n [client],\n );\n}\n\nexport type UseExchangeRateArgs = ExchangeRateRequest;\n\n/**\n * Fetches exchange rates between tokens and fiat currencies with automatic polling.\n *\n * This signature supports React Suspense:\n *\n * ```tsx\n * const { data } = useExchangeRate({\n * from: {\n * erc20: {\n * chainId: chainId(1),\n * address: evmAddress('0xA0b86a33E6...')\n * }\n * },\n * to: Currency.Usd,\n * suspense: true,\n * });\n * ```\n */\nexport function useExchangeRate(\n args: UseExchangeRateArgs & Suspendable,\n): SuspenseResult<ExchangeAmount>;\n/**\n * Fetches exchange rates between tokens and fiat currencies with automatic polling.\n *\n * Pausable suspense mode.\n *\n * ```tsx\n * const { data } = useExchangeRate({\n * from: {\n * erc20: {\n * chainId: chainId(1),\n * address: evmAddress('0xA0b86a33E6...')\n * }\n * },\n * to: Currency.Usd,\n * suspense: true,\n * pause: true,\n * });\n * ```\n */\nexport function useExchangeRate(\n args: Pausable<UseExchangeRateArgs> & Suspendable,\n): PausableSuspenseResult<ExchangeAmount>;\n/**\n * Fetches exchange rates between tokens and fiat currencies with automatic polling.\n *\n * ```tsx\n * const { data, error, loading } = useExchangeRate({\n * from: {\n * erc20: {\n * chainId: chainId(1),\n * address: evmAddress('0xA0b86a33E6...')\n * }\n * },\n * to: Currency.Usd,\n * });\n *\n * <Component value={somewhere} fxRate={data} />\n * ```\n */\nexport function useExchangeRate(\n args: UseExchangeRateArgs,\n): ReadResult<ExchangeAmount>;\n/**\n * Fetches exchange rates between tokens and fiat currencies with automatic polling.\n *\n * Pausable loading state mode.\n *\n * ```tsx\n * const { data, error, loading, paused } = useExchangeRate({\n * from: {\n * erc20: {\n * chainId: chainId(1),\n * address: evmAddress('0xA0b86a33E6...')\n * }\n * },\n * to: Currency.Usd,\n * pause: true,\n * });\n * ```\n */\nexport function useExchangeRate(\n args: Pausable<UseExchangeRateArgs>,\n): PausableReadResult<ExchangeAmount>;\n\nexport function useExchangeRate({\n suspense = false,\n pause = false,\n ...request\n}: NullishDeep<UseExchangeRateArgs> & {\n suspense?: boolean;\n pause?: boolean;\n}): SuspendableResult<ExchangeAmount, UnexpectedError> {\n const client = useAaveClient();\n\n return useSuspendableQuery({\n document: ExchangeRateQuery,\n variables: { request },\n suspense,\n pause,\n pollInterval: request.at\n ? 0\n : client.context.environment.exchangeRateInterval,\n });\n}\n\nexport type UseNetworkFeeRequestQuery =\n | {\n activity: ActivityItem;\n }\n | {\n estimate: PreviewAction;\n };\n\nexport type UseNetworkFeeArgs = Prettify<\n {\n query: UseNetworkFeeRequestQuery;\n } & CurrencyQueryOptions\n>;\n\ntype PausableUseNetworkFeeArgs = Partial<\n {\n query: Partial<UseNetworkFeeRequestQuery>;\n } & CurrencyQueryOptions\n>;\n\n/**\n * Fetch the network fee for an ActivityItem.\n *\n * @experimental This hook is experimental and may be subject to breaking changes.\n */\nexport type UseNetworkFee<T extends NativeAmount = NativeAmount> =\n /**\n * Fetches the network fee for a past ActivityItem.\n *\n * This signature supports React Suspense:\n *\n * ```tsx\n * const { data } = useNetworkFee({\n * query: { activity },\n * suspense: true,\n * });\n *\n * data: NativeAmount\n * ```\n */\n ((args: UseNetworkFeeArgs & Suspendable) => SuspenseResult<T>) &\n /**\n * Fetches the network fee for a past ActivityItem.\n *\n * Pausable suspense mode.\n *\n * ```tsx\n * const { data, paused } = useNetworkFee({\n * query: { activity },\n * suspense: true,\n * pause: true,\n * });\n *\n * data: NativeAmount | undefined\n * ```\n */\n ((\n args: Pausable<UseNetworkFeeArgs, PausableUseNetworkFeeArgs> &\n Suspendable,\n ) => PausableSuspenseResult<T>) &\n /**\n * Fetches the network fee for a past ActivityItem.\n *\n * ```tsx\n * const { data, error, loading } = useNetworkFee({\n * query: { activity },\n * });\n * ```\n */\n ((args: UseNetworkFeeArgs) => ReadResult<T>) &\n /**\n * Fetches the network fee for a past ActivityItem.\n *\n * Pausable loading state mode.\n *\n * ```tsx\n * const { data, error, loading, paused } = useNetworkFee({\n * query: { activity },\n * pause: true,\n * });\n *\n * data: NativeAmount | undefined\n * ```\n */\n ((\n args: Pausable<UseNetworkFeeArgs, PausableUseNetworkFeeArgs>,\n ) => PausableReadResult<T>);\n","import {\n SigningError,\n type SignTypedDataError,\n type TypedData,\n UnexpectedError,\n} from '@aave/client';\nimport {\n sendTransaction,\n toViemChain,\n waitForTransactionResult,\n} from '@aave/client/viem';\nimport type { TransactionRequest } from '@aave/graphql';\nimport {\n invariant,\n ResultAsync,\n type Signature,\n signatureFrom,\n} from '@aave/types';\nimport {\n type MessageTypes,\n useSignTypedData as usePrivySignTypedData,\n useWallets,\n} from '@privy-io/react-auth';\nimport { createWalletClient, custom } from 'viem';\nimport {\n PendingTransaction,\n type UseAsyncTask,\n type UseSendTransactionResult,\n useAsyncTask,\n} from './helpers';\nimport { useChainAction } from './misc';\n\n/**\n * A hook that provides a way to send Aave transactions using a Privy wallet.\n *\n * Import the `useSendTransaction` hook from `@aave/react/privy` entry point.\n *\n * ```ts\n * const [sendTransaction, { loading, error, data }] = useSendTransaction();\n * ```\n */\nexport function useSendTransaction(): UseSendTransactionResult {\n const { wallets } = useWallets();\n const [fetchChain] = useChainAction();\n\n return useAsyncTask(\n (request: TransactionRequest) => {\n const wallet = wallets.find((wallet) => wallet.address === request.from);\n\n invariant(\n wallet,\n `Expected a connected wallet with address ${request.from} to be found.`,\n );\n\n return fetchChain({ chainId: request.chainId })\n .map((chain) => {\n invariant(chain, `Chain ${request.chainId} is not supported`);\n return toViemChain(chain);\n })\n .andThen((chain) =>\n ResultAsync.fromPromise(\n wallet.switchChain(request.chainId),\n (error) => UnexpectedError.from(error),\n )\n .map(() => wallet.getEthereumProvider())\n .map((provider) =>\n createWalletClient({\n account: request.from,\n chain,\n transport: custom(provider),\n }),\n )\n .andThen((walletClient) =>\n sendTransaction(walletClient, request).map(\n (hash) =>\n new PendingTransaction(() =>\n waitForTransactionResult(walletClient, request, hash),\n ),\n ),\n ),\n );\n },\n [wallets, fetchChain],\n );\n}\n\n/**\n * A hook that provides a way to sign EIP-712 typed data (ERC-20 permits, swap intents, etc.)\n * using a Privy wallet.\n *\n * ```ts\n * const [signTypedData, { loading, error, data }] = useSignTypedData();\n * ```\n */\nexport function useSignTypedData(): UseAsyncTask<\n TypedData,\n Signature,\n SignTypedDataError\n> {\n const { signTypedData: privySignTypedData } = usePrivySignTypedData();\n\n return useAsyncTask(\n (typedData: TypedData) => {\n return ResultAsync.fromPromise(\n privySignTypedData({\n domain: typedData.domain,\n types: typedData.types as MessageTypes,\n primaryType: typedData.primaryType,\n message: typedData.message,\n }),\n (error) => SigningError.from(error),\n ).map(({ signature }) => signatureFrom(signature));\n },\n [privySignTypedData],\n );\n}\n"]}
|
package/dist/privy.d.cts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import { U as UseSendTransactionResult, a as UseAsyncTask } from './writes-
|
|
1
|
+
import { TypedData, SignTypedDataError } from '@aave/client';
|
|
2
|
+
import { Signature } from '@aave/types';
|
|
3
|
+
import { U as UseSendTransactionResult, a as UseAsyncTask } from './writes-CqRSU8Ho.cjs';
|
|
4
4
|
import '@aave/core';
|
|
5
|
-
import '@aave/
|
|
5
|
+
import '@aave/graphql';
|
|
6
6
|
|
|
7
7
|
/**
|
|
8
8
|
* A hook that provides a way to send Aave transactions using a Privy wallet.
|
|
@@ -14,59 +14,14 @@ import '@aave/types';
|
|
|
14
14
|
* ```
|
|
15
15
|
*/
|
|
16
16
|
declare function useSendTransaction(): UseSendTransactionResult;
|
|
17
|
-
type SignERC20PermitError = SigningError | UnexpectedError;
|
|
18
17
|
/**
|
|
19
|
-
* A hook that provides a way to sign
|
|
18
|
+
* A hook that provides a way to sign EIP-712 typed data (ERC-20 permits, swap intents, etc.)
|
|
19
|
+
* using a Privy wallet.
|
|
20
20
|
*
|
|
21
21
|
* ```ts
|
|
22
|
-
* const {
|
|
23
|
-
* const [signERC20Permit, { loading, error, data }] = useERC20Permit();
|
|
24
|
-
*
|
|
25
|
-
* const run = async () => {
|
|
26
|
-
* const result = await signERC20Permit({
|
|
27
|
-
* supply: {
|
|
28
|
-
* sender: evmAddress(user!.wallet!.address), // User's address
|
|
29
|
-
* reserve: {
|
|
30
|
-
* reserveId: reserve.id,
|
|
31
|
-
* chainId: reserve.chain.chainId,
|
|
32
|
-
* spoke: reserve.spoke.address,
|
|
33
|
-
* },
|
|
34
|
-
* amount: {
|
|
35
|
-
* value: bigDecimal(42), // 42 USDC
|
|
36
|
-
* },
|
|
37
|
-
* },
|
|
38
|
-
* });
|
|
39
|
-
*
|
|
40
|
-
* if (result.isErr()) {
|
|
41
|
-
* console.error(result.error);
|
|
42
|
-
* return;
|
|
43
|
-
* }
|
|
44
|
-
*
|
|
45
|
-
* console.log('ERC20 Permit signature:', result.value);
|
|
46
|
-
* };
|
|
47
|
-
* ```
|
|
48
|
-
*/
|
|
49
|
-
declare function useERC20Permit(): UseAsyncTask<PermitRequest, ERC20PermitSignature, SignERC20PermitError>;
|
|
50
|
-
type SignSwapTypedDataError = SigningError | UnexpectedError;
|
|
51
|
-
/**
|
|
52
|
-
* @internal
|
|
53
|
-
* A hook that provides a way to sign swap typed data using a Privy wallet.
|
|
54
|
-
*
|
|
55
|
-
* ```ts
|
|
56
|
-
* const [signSwapTypedData, { loading, error, data }] = useSignSwapTypedDataWith();
|
|
57
|
-
*
|
|
58
|
-
* const run = async () => {
|
|
59
|
-
* const result = await signSwapTypedData(swapTypedData);
|
|
60
|
-
*
|
|
61
|
-
* if (result.isErr()) {
|
|
62
|
-
* console.error(result.error);
|
|
63
|
-
* return;
|
|
64
|
-
* }
|
|
65
|
-
*
|
|
66
|
-
* console.log('Swap typed data signed:', result.value);
|
|
67
|
-
* };
|
|
22
|
+
* const [signTypedData, { loading, error, data }] = useSignTypedData();
|
|
68
23
|
* ```
|
|
69
24
|
*/
|
|
70
|
-
declare function
|
|
25
|
+
declare function useSignTypedData(): UseAsyncTask<TypedData, Signature, SignTypedDataError>;
|
|
71
26
|
|
|
72
|
-
export {
|
|
27
|
+
export { useSendTransaction, useSignTypedData };
|
package/dist/privy.d.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import { U as UseSendTransactionResult, a as UseAsyncTask } from './writes-
|
|
1
|
+
import { TypedData, SignTypedDataError } from '@aave/client';
|
|
2
|
+
import { Signature } from '@aave/types';
|
|
3
|
+
import { U as UseSendTransactionResult, a as UseAsyncTask } from './writes-CqRSU8Ho.js';
|
|
4
4
|
import '@aave/core';
|
|
5
|
-
import '@aave/
|
|
5
|
+
import '@aave/graphql';
|
|
6
6
|
|
|
7
7
|
/**
|
|
8
8
|
* A hook that provides a way to send Aave transactions using a Privy wallet.
|
|
@@ -14,59 +14,14 @@ import '@aave/types';
|
|
|
14
14
|
* ```
|
|
15
15
|
*/
|
|
16
16
|
declare function useSendTransaction(): UseSendTransactionResult;
|
|
17
|
-
type SignERC20PermitError = SigningError | UnexpectedError;
|
|
18
17
|
/**
|
|
19
|
-
* A hook that provides a way to sign
|
|
18
|
+
* A hook that provides a way to sign EIP-712 typed data (ERC-20 permits, swap intents, etc.)
|
|
19
|
+
* using a Privy wallet.
|
|
20
20
|
*
|
|
21
21
|
* ```ts
|
|
22
|
-
* const {
|
|
23
|
-
* const [signERC20Permit, { loading, error, data }] = useERC20Permit();
|
|
24
|
-
*
|
|
25
|
-
* const run = async () => {
|
|
26
|
-
* const result = await signERC20Permit({
|
|
27
|
-
* supply: {
|
|
28
|
-
* sender: evmAddress(user!.wallet!.address), // User's address
|
|
29
|
-
* reserve: {
|
|
30
|
-
* reserveId: reserve.id,
|
|
31
|
-
* chainId: reserve.chain.chainId,
|
|
32
|
-
* spoke: reserve.spoke.address,
|
|
33
|
-
* },
|
|
34
|
-
* amount: {
|
|
35
|
-
* value: bigDecimal(42), // 42 USDC
|
|
36
|
-
* },
|
|
37
|
-
* },
|
|
38
|
-
* });
|
|
39
|
-
*
|
|
40
|
-
* if (result.isErr()) {
|
|
41
|
-
* console.error(result.error);
|
|
42
|
-
* return;
|
|
43
|
-
* }
|
|
44
|
-
*
|
|
45
|
-
* console.log('ERC20 Permit signature:', result.value);
|
|
46
|
-
* };
|
|
47
|
-
* ```
|
|
48
|
-
*/
|
|
49
|
-
declare function useERC20Permit(): UseAsyncTask<PermitRequest, ERC20PermitSignature, SignERC20PermitError>;
|
|
50
|
-
type SignSwapTypedDataError = SigningError | UnexpectedError;
|
|
51
|
-
/**
|
|
52
|
-
* @internal
|
|
53
|
-
* A hook that provides a way to sign swap typed data using a Privy wallet.
|
|
54
|
-
*
|
|
55
|
-
* ```ts
|
|
56
|
-
* const [signSwapTypedData, { loading, error, data }] = useSignSwapTypedDataWith();
|
|
57
|
-
*
|
|
58
|
-
* const run = async () => {
|
|
59
|
-
* const result = await signSwapTypedData(swapTypedData);
|
|
60
|
-
*
|
|
61
|
-
* if (result.isErr()) {
|
|
62
|
-
* console.error(result.error);
|
|
63
|
-
* return;
|
|
64
|
-
* }
|
|
65
|
-
*
|
|
66
|
-
* console.log('Swap typed data signed:', result.value);
|
|
67
|
-
* };
|
|
22
|
+
* const [signTypedData, { loading, error, data }] = useSignTypedData();
|
|
68
23
|
* ```
|
|
69
24
|
*/
|
|
70
|
-
declare function
|
|
25
|
+
declare function useSignTypedData(): UseAsyncTask<TypedData, Signature, SignTypedDataError>;
|
|
71
26
|
|
|
72
|
-
export {
|
|
27
|
+
export { useSendTransaction, useSignTypedData };
|
package/dist/privy.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import {a,c
|
|
1
|
+
import {d}from'./chunk-LBLCOU6O.js';import'./chunk-4NA4FB6K.js';import {a,c}from'./chunk-VGAHEW5B.js';import {UnexpectedError,SigningError}from'@aave/client';import {toViemChain,sendTransaction,waitForTransactionResult}from'@aave/client/viem';import {invariant,ResultAsync,signatureFrom}from'@aave/types';import {useWallets,useSignTypedData}from'@privy-io/react-auth';import {createWalletClient,custom}from'viem';function x(){let{wallets:t}=useWallets(),[e]=d();return a(a=>{let o=t.find(n=>n.address===a.from);return invariant(o,`Expected a connected wallet with address ${a.from} to be found.`),e({chainId:a.chainId}).map(n=>(invariant(n,`Chain ${a.chainId} is not supported`),toViemChain(n))).andThen(n=>ResultAsync.fromPromise(o.switchChain(a.chainId),r=>UnexpectedError.from(r)).map(()=>o.getEthereumProvider()).map(r=>createWalletClient({account:a.from,chain:n,transport:custom(r)})).andThen(r=>sendTransaction(r,a).map(d=>new c(()=>waitForTransactionResult(r,a,d)))))},[t,e])}function I(){let{signTypedData:t}=useSignTypedData();return a(e=>ResultAsync.fromPromise(t({domain:e.domain,types:e.types,primaryType:e.primaryType,message:e.message}),a=>SigningError.from(a)).map(({signature:a})=>signatureFrom(a)),[t])}export{x as useSendTransaction,I as useSignTypedData};//# sourceMappingURL=privy.js.map
|
|
2
2
|
//# sourceMappingURL=privy.js.map
|
package/dist/privy.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/privy.ts"],"names":["useSendTransaction","wallets","useWallets","useAsyncTask","request","wallet","invariant","ResultAsync","error","UnexpectedError","provider","createWalletClient","
|
|
1
|
+
{"version":3,"sources":["../src/privy.ts"],"names":["useSendTransaction","wallets","useWallets","fetchChain","useChainAction","useAsyncTask","request","wallet","invariant","chain","toViemChain","ResultAsync","error","UnexpectedError","provider","createWalletClient","custom","walletClient","sendTransaction","hash","PendingTransaction","waitForTransactionResult","useSignTypedData","privySignTypedData","usePrivySignTypedData","typedData","SigningError","signature","signatureFrom"],"mappings":"6ZAyCO,SAASA,CAAAA,EAA+C,CAC7D,GAAM,CAAE,OAAA,CAAAC,CAAQ,EAAIC,UAAAA,EAAW,CACzB,CAACC,CAAU,CAAA,CAAIC,CAAAA,EAAe,CAEpC,OAAOC,CAAAA,CACJC,GAAgC,CAC/B,IAAMC,EAASN,CAAAA,CAAQ,IAAA,CAAMM,GAAWA,CAAAA,CAAO,OAAA,GAAYD,CAAAA,CAAQ,IAAI,CAAA,CAEvE,OAAAE,UACED,CAAAA,CACA,CAAA,yCAAA,EAA4CD,EAAQ,IAAI,CAAA,aAAA,CAC1D,EAEOH,CAAAA,CAAW,CAAE,OAAA,CAASG,CAAAA,CAAQ,OAAQ,CAAC,EAC3C,GAAA,CAAKG,CAAAA,GACJD,UAAUC,CAAAA,CAAO,CAAA,MAAA,EAASH,EAAQ,OAAO,CAAA,iBAAA,CAAmB,CAAA,CACrDI,WAAAA,CAAYD,CAAK,CAAA,CACzB,EACA,OAAA,CAASA,CAAAA,EACRE,YAAY,WAAA,CACVJ,CAAAA,CAAO,YAAYD,CAAAA,CAAQ,OAAO,CAAA,CACjCM,CAAAA,EAAUC,eAAAA,CAAgB,IAAA,CAAKD,CAAK,CACvC,CAAA,CACG,IAAI,IAAML,CAAAA,CAAO,qBAAqB,CAAA,CACtC,GAAA,CAAKO,CAAAA,EACJC,kBAAAA,CAAmB,CACjB,QAAST,CAAAA,CAAQ,IAAA,CACjB,MAAAG,CAAAA,CACA,SAAA,CAAWO,OAAOF,CAAQ,CAC5B,CAAC,CACH,CAAA,CACC,OAAA,CAASG,GACRC,eAAAA,CAAgBD,CAAAA,CAAcX,CAAO,CAAA,CAAE,GAAA,CACpCa,GACC,IAAIC,CAAAA,CAAmB,IACrBC,wBAAAA,CAAyBJ,CAAAA,CAAcX,CAAAA,CAASa,CAAI,CACtD,CACJ,CACF,CACJ,CACJ,EACA,CAAClB,CAAAA,CAASE,CAAU,CACtB,CACF,CAUO,SAASmB,CAAAA,EAId,CACA,GAAM,CAAE,aAAA,CAAeC,CAAmB,CAAA,CAAIC,gBAAAA,EAAsB,CAEpE,OAAOnB,CAAAA,CACJoB,CAAAA,EACQd,YAAY,WAAA,CACjBY,CAAAA,CAAmB,CACjB,MAAA,CAAQE,CAAAA,CAAU,OAClB,KAAA,CAAOA,CAAAA,CAAU,KAAA,CACjB,WAAA,CAAaA,CAAAA,CAAU,WAAA,CACvB,QAASA,CAAAA,CAAU,OACrB,CAAC,CAAA,CACAb,CAAAA,EAAUc,aAAa,IAAA,CAAKd,CAAK,CACpC,CAAA,CAAE,GAAA,CAAI,CAAC,CAAE,SAAA,CAAAe,CAAU,IAAMC,aAAAA,CAAcD,CAAS,CAAC,CAAA,CAEnD,CAACJ,CAAkB,CACrB,CACF","file":"privy.js","sourcesContent":["import {\n SigningError,\n type SignTypedDataError,\n type TypedData,\n UnexpectedError,\n} from '@aave/client';\nimport {\n sendTransaction,\n toViemChain,\n waitForTransactionResult,\n} from '@aave/client/viem';\nimport type { TransactionRequest } from '@aave/graphql';\nimport {\n invariant,\n ResultAsync,\n type Signature,\n signatureFrom,\n} from '@aave/types';\nimport {\n type MessageTypes,\n useSignTypedData as usePrivySignTypedData,\n useWallets,\n} from '@privy-io/react-auth';\nimport { createWalletClient, custom } from 'viem';\nimport {\n PendingTransaction,\n type UseAsyncTask,\n type UseSendTransactionResult,\n useAsyncTask,\n} from './helpers';\nimport { useChainAction } from './misc';\n\n/**\n * A hook that provides a way to send Aave transactions using a Privy wallet.\n *\n * Import the `useSendTransaction` hook from `@aave/react/privy` entry point.\n *\n * ```ts\n * const [sendTransaction, { loading, error, data }] = useSendTransaction();\n * ```\n */\nexport function useSendTransaction(): UseSendTransactionResult {\n const { wallets } = useWallets();\n const [fetchChain] = useChainAction();\n\n return useAsyncTask(\n (request: TransactionRequest) => {\n const wallet = wallets.find((wallet) => wallet.address === request.from);\n\n invariant(\n wallet,\n `Expected a connected wallet with address ${request.from} to be found.`,\n );\n\n return fetchChain({ chainId: request.chainId })\n .map((chain) => {\n invariant(chain, `Chain ${request.chainId} is not supported`);\n return toViemChain(chain);\n })\n .andThen((chain) =>\n ResultAsync.fromPromise(\n wallet.switchChain(request.chainId),\n (error) => UnexpectedError.from(error),\n )\n .map(() => wallet.getEthereumProvider())\n .map((provider) =>\n createWalletClient({\n account: request.from,\n chain,\n transport: custom(provider),\n }),\n )\n .andThen((walletClient) =>\n sendTransaction(walletClient, request).map(\n (hash) =>\n new PendingTransaction(() =>\n waitForTransactionResult(walletClient, request, hash),\n ),\n ),\n ),\n );\n },\n [wallets, fetchChain],\n );\n}\n\n/**\n * A hook that provides a way to sign EIP-712 typed data (ERC-20 permits, swap intents, etc.)\n * using a Privy wallet.\n *\n * ```ts\n * const [signTypedData, { loading, error, data }] = useSignTypedData();\n * ```\n */\nexport function useSignTypedData(): UseAsyncTask<\n TypedData,\n Signature,\n SignTypedDataError\n> {\n const { signTypedData: privySignTypedData } = usePrivySignTypedData();\n\n return useAsyncTask(\n (typedData: TypedData) => {\n return ResultAsync.fromPromise(\n privySignTypedData({\n domain: typedData.domain,\n types: typedData.types as MessageTypes,\n primaryType: typedData.primaryType,\n message: typedData.message,\n }),\n (error) => SigningError.from(error),\n ).map(({ signature }) => signatureFrom(signature));\n },\n [privySignTypedData],\n );\n}\n"]}
|