@johnqh/indexer_client 0.0.2 → 0.0.3
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/hooks/index.d.ts +9 -0
- package/dist/hooks/index.d.ts.map +1 -1
- package/dist/hooks/index.js +9 -0
- package/dist/hooks/index.js.map +1 -1
- package/dist/hooks/useCreateNonce.d.ts +10 -0
- package/dist/hooks/useCreateNonce.d.ts.map +1 -0
- package/dist/hooks/useCreateNonce.js +38 -0
- package/dist/hooks/useCreateNonce.js.map +1 -0
- package/dist/hooks/useGetDelegatedFrom.d.ts +10 -0
- package/dist/hooks/useGetDelegatedFrom.d.ts.map +1 -0
- package/dist/hooks/useGetDelegatedFrom.js +38 -0
- package/dist/hooks/useGetDelegatedFrom.js.map +1 -0
- package/dist/hooks/useGetDelegatedTo.d.ts +10 -0
- package/dist/hooks/useGetDelegatedTo.d.ts.map +1 -0
- package/dist/hooks/useGetDelegatedTo.js +38 -0
- package/dist/hooks/useGetDelegatedTo.js.map +1 -0
- package/dist/hooks/useGetEntitlement.d.ts +10 -0
- package/dist/hooks/useGetEntitlement.d.ts.map +1 -0
- package/dist/hooks/useGetEntitlement.js +38 -0
- package/dist/hooks/useGetEntitlement.js.map +1 -0
- package/dist/hooks/useGetNonce.d.ts +10 -0
- package/dist/hooks/useGetNonce.d.ts.map +1 -0
- package/dist/hooks/useGetNonce.js +38 -0
- package/dist/hooks/useGetNonce.js.map +1 -0
- package/dist/hooks/useGetPointsBalance.d.ts +10 -0
- package/dist/hooks/useGetPointsBalance.d.ts.map +1 -0
- package/dist/hooks/useGetPointsBalance.js +38 -0
- package/dist/hooks/useGetPointsBalance.js.map +1 -0
- package/dist/hooks/useGetSigningMessage.d.ts +10 -0
- package/dist/hooks/useGetSigningMessage.d.ts.map +1 -0
- package/dist/hooks/useGetSigningMessage.js +43 -0
- package/dist/hooks/useGetSigningMessage.js.map +1 -0
- package/dist/hooks/useGetWalletAccounts.d.ts +10 -0
- package/dist/hooks/useGetWalletAccounts.d.ts.map +1 -0
- package/dist/hooks/useGetWalletAccounts.js +42 -0
- package/dist/hooks/useGetWalletAccounts.js.map +1 -0
- package/dist/hooks/useIndexerMail.d.ts.map +1 -1
- package/dist/hooks/useIndexerMail.js +258 -125
- package/dist/hooks/useIndexerMail.js.map +1 -1
- package/dist/hooks/useIndexerPoints.d.ts.map +1 -1
- package/dist/hooks/useIndexerPoints.js +59 -66
- package/dist/hooks/useIndexerPoints.js.map +1 -1
- package/dist/hooks/useValidateUsername.d.ts +10 -0
- package/dist/hooks/useValidateUsername.d.ts.map +1 -0
- package/dist/hooks/useValidateUsername.js +38 -0
- package/dist/hooks/useValidateUsername.js.map +1 -0
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/hooks/index.d.ts
CHANGED
@@ -1,5 +1,14 @@
|
|
1
1
|
export * from './useIndexerPoints';
|
2
2
|
export * from './useIndexerMail';
|
3
|
+
export * from './useGetWalletAccounts';
|
4
|
+
export * from './useValidateUsername';
|
5
|
+
export * from './useGetSigningMessage';
|
6
|
+
export * from './useGetDelegatedTo';
|
7
|
+
export * from './useGetDelegatedFrom';
|
8
|
+
export * from './useCreateNonce';
|
9
|
+
export * from './useGetNonce';
|
10
|
+
export * from './useGetEntitlement';
|
11
|
+
export * from './useGetPointsBalance';
|
3
12
|
export { useWalletNames, useResolveNameToAddress, } from './useIndexerNameService';
|
4
13
|
export * from './useReferralCode';
|
5
14
|
export * from './useReferralShare';
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/hooks/index.ts"],"names":[],"mappings":"
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/hooks/index.ts"],"names":[],"mappings":"AAKA,cAAc,oBAAoB,CAAC;AAGnC,cAAc,kBAAkB,CAAC;AAGjC,cAAc,wBAAwB,CAAC;AACvC,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,qBAAqB,CAAC;AACpC,cAAc,uBAAuB,CAAC;AACtC,cAAc,kBAAkB,CAAC;AACjC,cAAc,eAAe,CAAC;AAC9B,cAAc,qBAAqB,CAAC;AACpC,cAAc,uBAAuB,CAAC;AAGtC,OAAO,EACL,cAAc,EACd,uBAAuB,GACxB,MAAM,yBAAyB,CAAC;AAGjC,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,0BAA0B,CAAC;AACzC,cAAc,oBAAoB,CAAC;AAGnC,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC"}
|
package/dist/hooks/index.js
CHANGED
@@ -1,5 +1,14 @@
|
|
1
1
|
export * from './useIndexerPoints';
|
2
2
|
export * from './useIndexerMail';
|
3
|
+
export * from './useGetWalletAccounts';
|
4
|
+
export * from './useValidateUsername';
|
5
|
+
export * from './useGetSigningMessage';
|
6
|
+
export * from './useGetDelegatedTo';
|
7
|
+
export * from './useGetDelegatedFrom';
|
8
|
+
export * from './useCreateNonce';
|
9
|
+
export * from './useGetNonce';
|
10
|
+
export * from './useGetEntitlement';
|
11
|
+
export * from './useGetPointsBalance';
|
3
12
|
export { useWalletNames, useResolveNameToAddress, } from './useIndexerNameService';
|
4
13
|
export * from './useReferralCode';
|
5
14
|
export * from './useReferralShare';
|
package/dist/hooks/index.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/hooks/index.ts"],"names":[],"mappings":"
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/hooks/index.ts"],"names":[],"mappings":"AAKA,cAAc,oBAAoB,CAAC;AAGnC,cAAc,kBAAkB,CAAC;AAGjC,cAAc,wBAAwB,CAAC;AACvC,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,qBAAqB,CAAC;AACpC,cAAc,uBAAuB,CAAC;AACtC,cAAc,kBAAkB,CAAC;AACjC,cAAc,eAAe,CAAC;AAC9B,cAAc,qBAAqB,CAAC;AACpC,cAAc,uBAAuB,CAAC;AAGtC,OAAO,EACL,cAAc,EACd,uBAAuB,GACxB,MAAM,yBAAyB,CAAC;AAGjC,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,0BAA0B,CAAC;AACzC,cAAc,oBAAoB,CAAC;AAGnC,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC"}
|
@@ -0,0 +1,10 @@
|
|
1
|
+
import { type NonceResponse, type Optional } from '@johnqh/types';
|
2
|
+
interface UseCreateNonceReturn {
|
3
|
+
createNonce: (username: string, signature: string, message: string) => Promise<Optional<NonceResponse>>;
|
4
|
+
isLoading: boolean;
|
5
|
+
error: Optional<string>;
|
6
|
+
clearError: () => void;
|
7
|
+
}
|
8
|
+
export declare const useCreateNonce: (endpointUrl: string, dev?: boolean, devMode?: boolean) => UseCreateNonceReturn;
|
9
|
+
export {};
|
10
|
+
//# sourceMappingURL=useCreateNonce.d.ts.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"useCreateNonce.d.ts","sourceRoot":"","sources":["../../src/hooks/useCreateNonce.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,aAAa,EAAE,KAAK,QAAQ,EAAE,MAAM,eAAe,CAAC;AAGlE,UAAU,oBAAoB;IAC5B,WAAW,EAAE,CACX,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,KACZ,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC;IACtC,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;IACxB,UAAU,EAAE,MAAM,IAAI,CAAC;CACxB;AAYD,eAAO,MAAM,cAAc,GACzB,aAAa,MAAM,EACnB,MAAK,OAAe,EACpB,UAAS,OAAe,KACvB,oBA0DF,CAAC"}
|
@@ -0,0 +1,38 @@
|
|
1
|
+
import { useCallback, useMemo, useState } from 'react';
|
2
|
+
import { useMutation } from '@tanstack/react-query';
|
3
|
+
import { IndexerClient } from '../network/IndexerClient';
|
4
|
+
import { IndexerMockData } from './mocks';
|
5
|
+
export const useCreateNonce = (endpointUrl, dev = false, devMode = false) => {
|
6
|
+
const [error, setError] = useState(null);
|
7
|
+
const indexerClient = useMemo(() => new IndexerClient(endpointUrl, dev), [endpointUrl, dev]);
|
8
|
+
const clearError = useCallback(() => {
|
9
|
+
setError(null);
|
10
|
+
}, []);
|
11
|
+
const mutation = useMutation({
|
12
|
+
mutationFn: async ({ username, signature, message, }) => {
|
13
|
+
setError(null);
|
14
|
+
try {
|
15
|
+
return await indexerClient.createNonce(username, signature, message);
|
16
|
+
}
|
17
|
+
catch (err) {
|
18
|
+
if (devMode) {
|
19
|
+
console.warn('[DevMode] createNonce failed, returning mock data:', err);
|
20
|
+
return IndexerMockData.createNonce(username);
|
21
|
+
}
|
22
|
+
const errorMessage = err instanceof Error ? err.message : 'Failed to create nonce';
|
23
|
+
setError(errorMessage);
|
24
|
+
throw err;
|
25
|
+
}
|
26
|
+
},
|
27
|
+
});
|
28
|
+
const createNonce = useCallback(async (username, signature, message) => {
|
29
|
+
return await mutation.mutateAsync({ username, signature, message });
|
30
|
+
}, [mutation]);
|
31
|
+
return {
|
32
|
+
createNonce,
|
33
|
+
isLoading: mutation.isPending,
|
34
|
+
error,
|
35
|
+
clearError,
|
36
|
+
};
|
37
|
+
};
|
38
|
+
//# sourceMappingURL=useCreateNonce.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"useCreateNonce.js","sourceRoot":"","sources":["../../src/hooks/useCreateNonce.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAEzD,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAuB1C,MAAM,CAAC,MAAM,cAAc,GAAG,CAC5B,WAAmB,EACnB,MAAe,KAAK,EACpB,UAAmB,KAAK,EACF,EAAE;IACxB,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAmB,IAAI,CAAC,CAAC;IAE3D,MAAM,aAAa,GAAG,OAAO,CAC3B,GAAG,EAAE,CAAC,IAAI,aAAa,CAAC,WAAW,EAAE,GAAG,CAAC,EACzC,CAAC,WAAW,EAAE,GAAG,CAAC,CACnB,CAAC;IAEF,MAAM,UAAU,GAAG,WAAW,CAAC,GAAG,EAAE;QAClC,QAAQ,CAAC,IAAI,CAAC,CAAC;IACjB,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,QAAQ,GAAG,WAAW,CAAC;QAC3B,UAAU,EAAE,KAAK,EAAE,EACjB,QAAQ,EACR,SAAS,EACT,OAAO,GAKR,EAAoC,EAAE;YACrC,QAAQ,CAAC,IAAI,CAAC,CAAC;YACf,IAAI,CAAC;gBACH,OAAO,MAAM,aAAa,CAAC,WAAW,CAAC,QAAQ,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;YACvE,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,IAAI,OAAO,EAAE,CAAC;oBACZ,OAAO,CAAC,IAAI,CACV,oDAAoD,EACpD,GAAG,CACJ,CAAC;oBACF,OAAO,eAAe,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;gBAC/C,CAAC;gBACD,MAAM,YAAY,GAChB,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,wBAAwB,CAAC;gBAChE,QAAQ,CAAC,YAAY,CAAC,CAAC;gBACvB,MAAM,GAAG,CAAC;YACZ,CAAC;QACH,CAAC;KACF,CAAC,CAAC;IAEH,MAAM,WAAW,GAAG,WAAW,CAC7B,KAAK,EACH,QAAgB,EAChB,SAAiB,EACjB,OAAe,EACmB,EAAE;QACpC,OAAO,MAAM,QAAQ,CAAC,WAAW,CAAC,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,CAAC;IACtE,CAAC,EACD,CAAC,QAAQ,CAAC,CACX,CAAC;IAEF,OAAO;QACL,WAAW;QACX,SAAS,EAAE,QAAQ,CAAC,SAAS;QAC7B,KAAK;QACL,UAAU;KACX,CAAC;AACJ,CAAC,CAAC"}
|
@@ -0,0 +1,10 @@
|
|
1
|
+
import { type DelegatedFromResponse, type Optional } from '@johnqh/types';
|
2
|
+
interface UseGetDelegatedFromReturn {
|
3
|
+
getDelegatedFrom: (walletAddress: string, signature: string, message: string) => Promise<Optional<DelegatedFromResponse>>;
|
4
|
+
isLoading: boolean;
|
5
|
+
error: Optional<string>;
|
6
|
+
clearError: () => void;
|
7
|
+
}
|
8
|
+
export declare const useGetDelegatedFrom: (endpointUrl: string, dev?: boolean, devMode?: boolean) => UseGetDelegatedFromReturn;
|
9
|
+
export {};
|
10
|
+
//# sourceMappingURL=useGetDelegatedFrom.d.ts.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"useGetDelegatedFrom.d.ts","sourceRoot":"","sources":["../../src/hooks/useGetDelegatedFrom.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,qBAAqB,EAAE,KAAK,QAAQ,EAAE,MAAM,eAAe,CAAC;AAG1E,UAAU,yBAAyB;IACjC,gBAAgB,EAAE,CAChB,aAAa,EAAE,MAAM,EACrB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,KACZ,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAAC,CAAC,CAAC;IAC9C,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;IACxB,UAAU,EAAE,MAAM,IAAI,CAAC;CACxB;AAYD,eAAO,MAAM,mBAAmB,GAC9B,aAAa,MAAM,EACnB,MAAK,OAAe,EACpB,UAAS,OAAe,KACvB,yBA8DF,CAAC"}
|
@@ -0,0 +1,38 @@
|
|
1
|
+
import { useCallback, useMemo, useState } from 'react';
|
2
|
+
import { useMutation } from '@tanstack/react-query';
|
3
|
+
import { IndexerClient } from '../network/IndexerClient';
|
4
|
+
import { IndexerMockData } from './mocks';
|
5
|
+
export const useGetDelegatedFrom = (endpointUrl, dev = false, devMode = false) => {
|
6
|
+
const [error, setError] = useState(null);
|
7
|
+
const indexerClient = useMemo(() => new IndexerClient(endpointUrl, dev), [endpointUrl, dev]);
|
8
|
+
const clearError = useCallback(() => {
|
9
|
+
setError(null);
|
10
|
+
}, []);
|
11
|
+
const mutation = useMutation({
|
12
|
+
mutationFn: async ({ walletAddress, signature, message, }) => {
|
13
|
+
setError(null);
|
14
|
+
try {
|
15
|
+
return await indexerClient.getDelegatedFrom(walletAddress, signature, message);
|
16
|
+
}
|
17
|
+
catch (err) {
|
18
|
+
if (devMode) {
|
19
|
+
console.warn('[DevMode] getDelegatedFrom failed, returning mock data:', err);
|
20
|
+
return IndexerMockData.getDelegatedFrom(walletAddress);
|
21
|
+
}
|
22
|
+
const errorMessage = err instanceof Error ? err.message : 'Failed to get delegated from';
|
23
|
+
setError(errorMessage);
|
24
|
+
throw err;
|
25
|
+
}
|
26
|
+
},
|
27
|
+
});
|
28
|
+
const getDelegatedFrom = useCallback(async (walletAddress, signature, message) => {
|
29
|
+
return await mutation.mutateAsync({ walletAddress, signature, message });
|
30
|
+
}, [mutation]);
|
31
|
+
return {
|
32
|
+
getDelegatedFrom,
|
33
|
+
isLoading: mutation.isPending,
|
34
|
+
error,
|
35
|
+
clearError,
|
36
|
+
};
|
37
|
+
};
|
38
|
+
//# sourceMappingURL=useGetDelegatedFrom.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"useGetDelegatedFrom.js","sourceRoot":"","sources":["../../src/hooks/useGetDelegatedFrom.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAEzD,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAuB1C,MAAM,CAAC,MAAM,mBAAmB,GAAG,CACjC,WAAmB,EACnB,MAAe,KAAK,EACpB,UAAmB,KAAK,EACG,EAAE;IAC7B,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAmB,IAAI,CAAC,CAAC;IAE3D,MAAM,aAAa,GAAG,OAAO,CAC3B,GAAG,EAAE,CAAC,IAAI,aAAa,CAAC,WAAW,EAAE,GAAG,CAAC,EACzC,CAAC,WAAW,EAAE,GAAG,CAAC,CACnB,CAAC;IAEF,MAAM,UAAU,GAAG,WAAW,CAAC,GAAG,EAAE;QAClC,QAAQ,CAAC,IAAI,CAAC,CAAC;IACjB,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,QAAQ,GAAG,WAAW,CAAC;QAC3B,UAAU,EAAE,KAAK,EAAE,EACjB,aAAa,EACb,SAAS,EACT,OAAO,GAKR,EAA4C,EAAE;YAC7C,QAAQ,CAAC,IAAI,CAAC,CAAC;YACf,IAAI,CAAC;gBACH,OAAO,MAAM,aAAa,CAAC,gBAAgB,CACzC,aAAa,EACb,SAAS,EACT,OAAO,CACR,CAAC;YACJ,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,IAAI,OAAO,EAAE,CAAC;oBACZ,OAAO,CAAC,IAAI,CACV,yDAAyD,EACzD,GAAG,CACJ,CAAC;oBACF,OAAO,eAAe,CAAC,gBAAgB,CAAC,aAAa,CAAC,CAAC;gBACzD,CAAC;gBACD,MAAM,YAAY,GAChB,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,8BAA8B,CAAC;gBACtE,QAAQ,CAAC,YAAY,CAAC,CAAC;gBACvB,MAAM,GAAG,CAAC;YACZ,CAAC;QACH,CAAC;KACF,CAAC,CAAC;IAEH,MAAM,gBAAgB,GAAG,WAAW,CAClC,KAAK,EACH,aAAqB,EACrB,SAAiB,EACjB,OAAe,EAC2B,EAAE;QAC5C,OAAO,MAAM,QAAQ,CAAC,WAAW,CAAC,EAAE,aAAa,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,CAAC;IAC3E,CAAC,EACD,CAAC,QAAQ,CAAC,CACX,CAAC;IAEF,OAAO;QACL,gBAAgB;QAChB,SAAS,EAAE,QAAQ,CAAC,SAAS;QAC7B,KAAK;QACL,UAAU;KACX,CAAC;AACJ,CAAC,CAAC"}
|
@@ -0,0 +1,10 @@
|
|
1
|
+
import { type DelegatedToResponse, type Optional } from '@johnqh/types';
|
2
|
+
interface UseGetDelegatedToReturn {
|
3
|
+
getDelegatedTo: (walletAddress: string, signature: string, message: string) => Promise<Optional<DelegatedToResponse>>;
|
4
|
+
isLoading: boolean;
|
5
|
+
error: Optional<string>;
|
6
|
+
clearError: () => void;
|
7
|
+
}
|
8
|
+
export declare const useGetDelegatedTo: (endpointUrl: string, dev?: boolean, devMode?: boolean) => UseGetDelegatedToReturn;
|
9
|
+
export {};
|
10
|
+
//# sourceMappingURL=useGetDelegatedTo.d.ts.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"useGetDelegatedTo.d.ts","sourceRoot":"","sources":["../../src/hooks/useGetDelegatedTo.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,mBAAmB,EAAE,KAAK,QAAQ,EAAE,MAAM,eAAe,CAAC;AAGxE,UAAU,uBAAuB;IAC/B,cAAc,EAAE,CACd,aAAa,EAAE,MAAM,EACrB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,KACZ,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAC,CAAC,CAAC;IAC5C,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;IACxB,UAAU,EAAE,MAAM,IAAI,CAAC;CACxB;AAYD,eAAO,MAAM,iBAAiB,GAC5B,aAAa,MAAM,EACnB,MAAK,OAAe,EACpB,UAAS,OAAe,KACvB,uBA8DF,CAAC"}
|
@@ -0,0 +1,38 @@
|
|
1
|
+
import { useCallback, useMemo, useState } from 'react';
|
2
|
+
import { useMutation } from '@tanstack/react-query';
|
3
|
+
import { IndexerClient } from '../network/IndexerClient';
|
4
|
+
import { IndexerMockData } from './mocks';
|
5
|
+
export const useGetDelegatedTo = (endpointUrl, dev = false, devMode = false) => {
|
6
|
+
const [error, setError] = useState(null);
|
7
|
+
const indexerClient = useMemo(() => new IndexerClient(endpointUrl, dev), [endpointUrl, dev]);
|
8
|
+
const clearError = useCallback(() => {
|
9
|
+
setError(null);
|
10
|
+
}, []);
|
11
|
+
const mutation = useMutation({
|
12
|
+
mutationFn: async ({ walletAddress, signature, message, }) => {
|
13
|
+
setError(null);
|
14
|
+
try {
|
15
|
+
return await indexerClient.getDelegatedTo(walletAddress, signature, message);
|
16
|
+
}
|
17
|
+
catch (err) {
|
18
|
+
if (devMode) {
|
19
|
+
console.warn('[DevMode] getDelegatedTo failed, returning mock data:', err);
|
20
|
+
return IndexerMockData.getDelegatedTo(walletAddress);
|
21
|
+
}
|
22
|
+
const errorMessage = err instanceof Error ? err.message : 'Failed to get delegated to';
|
23
|
+
setError(errorMessage);
|
24
|
+
throw err;
|
25
|
+
}
|
26
|
+
},
|
27
|
+
});
|
28
|
+
const getDelegatedTo = useCallback(async (walletAddress, signature, message) => {
|
29
|
+
return await mutation.mutateAsync({ walletAddress, signature, message });
|
30
|
+
}, [mutation]);
|
31
|
+
return {
|
32
|
+
getDelegatedTo,
|
33
|
+
isLoading: mutation.isPending,
|
34
|
+
error,
|
35
|
+
clearError,
|
36
|
+
};
|
37
|
+
};
|
38
|
+
//# sourceMappingURL=useGetDelegatedTo.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"useGetDelegatedTo.js","sourceRoot":"","sources":["../../src/hooks/useGetDelegatedTo.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAEzD,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAuB1C,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAC/B,WAAmB,EACnB,MAAe,KAAK,EACpB,UAAmB,KAAK,EACC,EAAE;IAC3B,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAmB,IAAI,CAAC,CAAC;IAE3D,MAAM,aAAa,GAAG,OAAO,CAC3B,GAAG,EAAE,CAAC,IAAI,aAAa,CAAC,WAAW,EAAE,GAAG,CAAC,EACzC,CAAC,WAAW,EAAE,GAAG,CAAC,CACnB,CAAC;IAEF,MAAM,UAAU,GAAG,WAAW,CAAC,GAAG,EAAE;QAClC,QAAQ,CAAC,IAAI,CAAC,CAAC;IACjB,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,QAAQ,GAAG,WAAW,CAAC;QAC3B,UAAU,EAAE,KAAK,EAAE,EACjB,aAAa,EACb,SAAS,EACT,OAAO,GAKR,EAA0C,EAAE;YAC3C,QAAQ,CAAC,IAAI,CAAC,CAAC;YACf,IAAI,CAAC;gBACH,OAAO,MAAM,aAAa,CAAC,cAAc,CACvC,aAAa,EACb,SAAS,EACT,OAAO,CACR,CAAC;YACJ,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,IAAI,OAAO,EAAE,CAAC;oBACZ,OAAO,CAAC,IAAI,CACV,uDAAuD,EACvD,GAAG,CACJ,CAAC;oBACF,OAAO,eAAe,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC;gBACvD,CAAC;gBACD,MAAM,YAAY,GAChB,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,4BAA4B,CAAC;gBACpE,QAAQ,CAAC,YAAY,CAAC,CAAC;gBACvB,MAAM,GAAG,CAAC;YACZ,CAAC;QACH,CAAC;KACF,CAAC,CAAC;IAEH,MAAM,cAAc,GAAG,WAAW,CAChC,KAAK,EACH,aAAqB,EACrB,SAAiB,EACjB,OAAe,EACyB,EAAE;QAC1C,OAAO,MAAM,QAAQ,CAAC,WAAW,CAAC,EAAE,aAAa,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,CAAC;IAC3E,CAAC,EACD,CAAC,QAAQ,CAAC,CACX,CAAC;IAEF,OAAO;QACL,cAAc;QACd,SAAS,EAAE,QAAQ,CAAC,SAAS;QAC7B,KAAK;QACL,UAAU;KACX,CAAC;AACJ,CAAC,CAAC"}
|
@@ -0,0 +1,10 @@
|
|
1
|
+
import { type EntitlementResponse, type Optional } from '@johnqh/types';
|
2
|
+
interface UseGetEntitlementReturn {
|
3
|
+
getEntitlement: (walletAddress: string, signature: string, message: string) => Promise<Optional<EntitlementResponse>>;
|
4
|
+
isLoading: boolean;
|
5
|
+
error: Optional<string>;
|
6
|
+
clearError: () => void;
|
7
|
+
}
|
8
|
+
export declare const useGetEntitlement: (endpointUrl: string, dev?: boolean, devMode?: boolean) => UseGetEntitlementReturn;
|
9
|
+
export {};
|
10
|
+
//# sourceMappingURL=useGetEntitlement.d.ts.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"useGetEntitlement.d.ts","sourceRoot":"","sources":["../../src/hooks/useGetEntitlement.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,mBAAmB,EAAE,KAAK,QAAQ,EAAE,MAAM,eAAe,CAAC;AAGxE,UAAU,uBAAuB;IAC/B,cAAc,EAAE,CACd,aAAa,EAAE,MAAM,EACrB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,KACZ,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAC,CAAC,CAAC;IAC5C,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;IACxB,UAAU,EAAE,MAAM,IAAI,CAAC;CACxB;AAYD,eAAO,MAAM,iBAAiB,GAC5B,aAAa,MAAM,EACnB,MAAK,OAAe,EACpB,UAAS,OAAe,KACvB,uBA8DF,CAAC"}
|
@@ -0,0 +1,38 @@
|
|
1
|
+
import { useCallback, useMemo, useState } from 'react';
|
2
|
+
import { useMutation } from '@tanstack/react-query';
|
3
|
+
import { IndexerClient } from '../network/IndexerClient';
|
4
|
+
import { IndexerMockData } from './mocks';
|
5
|
+
export const useGetEntitlement = (endpointUrl, dev = false, devMode = false) => {
|
6
|
+
const [error, setError] = useState(null);
|
7
|
+
const indexerClient = useMemo(() => new IndexerClient(endpointUrl, dev), [endpointUrl, dev]);
|
8
|
+
const clearError = useCallback(() => {
|
9
|
+
setError(null);
|
10
|
+
}, []);
|
11
|
+
const mutation = useMutation({
|
12
|
+
mutationFn: async ({ walletAddress, signature, message, }) => {
|
13
|
+
setError(null);
|
14
|
+
try {
|
15
|
+
return await indexerClient.getEntitlement(walletAddress, signature, message);
|
16
|
+
}
|
17
|
+
catch (err) {
|
18
|
+
if (devMode) {
|
19
|
+
console.warn('[DevMode] getEntitlement failed, returning mock data:', err);
|
20
|
+
return IndexerMockData.getEntitlement(walletAddress);
|
21
|
+
}
|
22
|
+
const errorMessage = err instanceof Error ? err.message : 'Failed to get entitlement';
|
23
|
+
setError(errorMessage);
|
24
|
+
throw err;
|
25
|
+
}
|
26
|
+
},
|
27
|
+
});
|
28
|
+
const getEntitlement = useCallback(async (walletAddress, signature, message) => {
|
29
|
+
return await mutation.mutateAsync({ walletAddress, signature, message });
|
30
|
+
}, [mutation]);
|
31
|
+
return {
|
32
|
+
getEntitlement,
|
33
|
+
isLoading: mutation.isPending,
|
34
|
+
error,
|
35
|
+
clearError,
|
36
|
+
};
|
37
|
+
};
|
38
|
+
//# sourceMappingURL=useGetEntitlement.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"useGetEntitlement.js","sourceRoot":"","sources":["../../src/hooks/useGetEntitlement.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAEzD,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAuB1C,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAC/B,WAAmB,EACnB,MAAe,KAAK,EACpB,UAAmB,KAAK,EACC,EAAE;IAC3B,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAmB,IAAI,CAAC,CAAC;IAE3D,MAAM,aAAa,GAAG,OAAO,CAC3B,GAAG,EAAE,CAAC,IAAI,aAAa,CAAC,WAAW,EAAE,GAAG,CAAC,EACzC,CAAC,WAAW,EAAE,GAAG,CAAC,CACnB,CAAC;IAEF,MAAM,UAAU,GAAG,WAAW,CAAC,GAAG,EAAE;QAClC,QAAQ,CAAC,IAAI,CAAC,CAAC;IACjB,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,QAAQ,GAAG,WAAW,CAAC;QAC3B,UAAU,EAAE,KAAK,EAAE,EACjB,aAAa,EACb,SAAS,EACT,OAAO,GAKR,EAA0C,EAAE;YAC3C,QAAQ,CAAC,IAAI,CAAC,CAAC;YACf,IAAI,CAAC;gBACH,OAAO,MAAM,aAAa,CAAC,cAAc,CACvC,aAAa,EACb,SAAS,EACT,OAAO,CACR,CAAC;YACJ,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,IAAI,OAAO,EAAE,CAAC;oBACZ,OAAO,CAAC,IAAI,CACV,uDAAuD,EACvD,GAAG,CACJ,CAAC;oBACF,OAAO,eAAe,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC;gBACvD,CAAC;gBACD,MAAM,YAAY,GAChB,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,2BAA2B,CAAC;gBACnE,QAAQ,CAAC,YAAY,CAAC,CAAC;gBACvB,MAAM,GAAG,CAAC;YACZ,CAAC;QACH,CAAC;KACF,CAAC,CAAC;IAEH,MAAM,cAAc,GAAG,WAAW,CAChC,KAAK,EACH,aAAqB,EACrB,SAAiB,EACjB,OAAe,EACyB,EAAE;QAC1C,OAAO,MAAM,QAAQ,CAAC,WAAW,CAAC,EAAE,aAAa,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,CAAC;IAC3E,CAAC,EACD,CAAC,QAAQ,CAAC,CACX,CAAC;IAEF,OAAO;QACL,cAAc;QACd,SAAS,EAAE,QAAQ,CAAC,SAAS;QAC7B,KAAK;QACL,UAAU;KACX,CAAC;AACJ,CAAC,CAAC"}
|
@@ -0,0 +1,10 @@
|
|
1
|
+
import { type NonceResponse, type Optional } from '@johnqh/types';
|
2
|
+
interface UseGetNonceReturn {
|
3
|
+
getNonce: (username: string, signature: string, message: string) => Promise<Optional<NonceResponse>>;
|
4
|
+
isLoading: boolean;
|
5
|
+
error: Optional<string>;
|
6
|
+
clearError: () => void;
|
7
|
+
}
|
8
|
+
export declare const useGetNonce: (endpointUrl: string, dev?: boolean, devMode?: boolean) => UseGetNonceReturn;
|
9
|
+
export {};
|
10
|
+
//# sourceMappingURL=useGetNonce.d.ts.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"useGetNonce.d.ts","sourceRoot":"","sources":["../../src/hooks/useGetNonce.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,aAAa,EAAE,KAAK,QAAQ,EAAE,MAAM,eAAe,CAAC;AAGlE,UAAU,iBAAiB;IACzB,QAAQ,EAAE,CACR,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,KACZ,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC;IACtC,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;IACxB,UAAU,EAAE,MAAM,IAAI,CAAC;CACxB;AAYD,eAAO,MAAM,WAAW,GACtB,aAAa,MAAM,EACnB,MAAK,OAAe,EACpB,UAAS,OAAe,KACvB,iBAuDF,CAAC"}
|
@@ -0,0 +1,38 @@
|
|
1
|
+
import { useCallback, useMemo, useState } from 'react';
|
2
|
+
import { useMutation } from '@tanstack/react-query';
|
3
|
+
import { IndexerClient } from '../network/IndexerClient';
|
4
|
+
import { IndexerMockData } from './mocks';
|
5
|
+
export const useGetNonce = (endpointUrl, dev = false, devMode = false) => {
|
6
|
+
const [error, setError] = useState(null);
|
7
|
+
const indexerClient = useMemo(() => new IndexerClient(endpointUrl, dev), [endpointUrl, dev]);
|
8
|
+
const clearError = useCallback(() => {
|
9
|
+
setError(null);
|
10
|
+
}, []);
|
11
|
+
const mutation = useMutation({
|
12
|
+
mutationFn: async ({ username, signature, message, }) => {
|
13
|
+
setError(null);
|
14
|
+
try {
|
15
|
+
return await indexerClient.getNonce(username, signature, message);
|
16
|
+
}
|
17
|
+
catch (err) {
|
18
|
+
if (devMode) {
|
19
|
+
console.warn('[DevMode] getNonce failed, returning mock data:', err);
|
20
|
+
return IndexerMockData.getNonce(username);
|
21
|
+
}
|
22
|
+
const errorMessage = err instanceof Error ? err.message : 'Failed to get nonce';
|
23
|
+
setError(errorMessage);
|
24
|
+
throw err;
|
25
|
+
}
|
26
|
+
},
|
27
|
+
});
|
28
|
+
const getNonce = useCallback(async (username, signature, message) => {
|
29
|
+
return await mutation.mutateAsync({ username, signature, message });
|
30
|
+
}, [mutation]);
|
31
|
+
return {
|
32
|
+
getNonce,
|
33
|
+
isLoading: mutation.isPending,
|
34
|
+
error,
|
35
|
+
clearError,
|
36
|
+
};
|
37
|
+
};
|
38
|
+
//# sourceMappingURL=useGetNonce.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"useGetNonce.js","sourceRoot":"","sources":["../../src/hooks/useGetNonce.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAEzD,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAuB1C,MAAM,CAAC,MAAM,WAAW,GAAG,CACzB,WAAmB,EACnB,MAAe,KAAK,EACpB,UAAmB,KAAK,EACL,EAAE;IACrB,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAmB,IAAI,CAAC,CAAC;IAE3D,MAAM,aAAa,GAAG,OAAO,CAC3B,GAAG,EAAE,CAAC,IAAI,aAAa,CAAC,WAAW,EAAE,GAAG,CAAC,EACzC,CAAC,WAAW,EAAE,GAAG,CAAC,CACnB,CAAC;IAEF,MAAM,UAAU,GAAG,WAAW,CAAC,GAAG,EAAE;QAClC,QAAQ,CAAC,IAAI,CAAC,CAAC;IACjB,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,QAAQ,GAAG,WAAW,CAAC;QAC3B,UAAU,EAAE,KAAK,EAAE,EACjB,QAAQ,EACR,SAAS,EACT,OAAO,GAKR,EAAoC,EAAE;YACrC,QAAQ,CAAC,IAAI,CAAC,CAAC;YACf,IAAI,CAAC;gBACH,OAAO,MAAM,aAAa,CAAC,QAAQ,CAAC,QAAQ,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;YACpE,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,IAAI,OAAO,EAAE,CAAC;oBACZ,OAAO,CAAC,IAAI,CAAC,iDAAiD,EAAE,GAAG,CAAC,CAAC;oBACrE,OAAO,eAAe,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;gBAC5C,CAAC;gBACD,MAAM,YAAY,GAChB,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,qBAAqB,CAAC;gBAC7D,QAAQ,CAAC,YAAY,CAAC,CAAC;gBACvB,MAAM,GAAG,CAAC;YACZ,CAAC;QACH,CAAC;KACF,CAAC,CAAC;IAEH,MAAM,QAAQ,GAAG,WAAW,CAC1B,KAAK,EACH,QAAgB,EAChB,SAAiB,EACjB,OAAe,EACmB,EAAE;QACpC,OAAO,MAAM,QAAQ,CAAC,WAAW,CAAC,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,CAAC;IACtE,CAAC,EACD,CAAC,QAAQ,CAAC,CACX,CAAC;IAEF,OAAO;QACL,QAAQ;QACR,SAAS,EAAE,QAAQ,CAAC,SAAS;QAC7B,KAAK;QACL,UAAU;KACX,CAAC;AACJ,CAAC,CAAC"}
|
@@ -0,0 +1,10 @@
|
|
1
|
+
import { type Optional, type PointsResponse } from '@johnqh/types';
|
2
|
+
interface UseGetPointsBalanceReturn {
|
3
|
+
getPointsBalance: (walletAddress: string, signature: string, message: string) => Promise<Optional<PointsResponse>>;
|
4
|
+
isLoading: boolean;
|
5
|
+
error: Optional<string>;
|
6
|
+
clearError: () => void;
|
7
|
+
}
|
8
|
+
export declare const useGetPointsBalance: (endpointUrl: string, dev?: boolean, devMode?: boolean) => UseGetPointsBalanceReturn;
|
9
|
+
export {};
|
10
|
+
//# sourceMappingURL=useGetPointsBalance.d.ts.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"useGetPointsBalance.d.ts","sourceRoot":"","sources":["../../src/hooks/useGetPointsBalance.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,QAAQ,EAAE,KAAK,cAAc,EAAE,MAAM,eAAe,CAAC;AAGnE,UAAU,yBAAyB;IACjC,gBAAgB,EAAE,CAChB,aAAa,EAAE,MAAM,EACrB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,KACZ,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC,CAAC;IACvC,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;IACxB,UAAU,EAAE,MAAM,IAAI,CAAC;CACxB;AAYD,eAAO,MAAM,mBAAmB,GAC9B,aAAa,MAAM,EACnB,MAAK,OAAe,EACpB,UAAS,OAAe,KACvB,yBA8DF,CAAC"}
|
@@ -0,0 +1,38 @@
|
|
1
|
+
import { useCallback, useMemo, useState } from 'react';
|
2
|
+
import { useMutation } from '@tanstack/react-query';
|
3
|
+
import { IndexerClient } from '../network/IndexerClient';
|
4
|
+
import { IndexerMockData } from './mocks';
|
5
|
+
export const useGetPointsBalance = (endpointUrl, dev = false, devMode = false) => {
|
6
|
+
const [error, setError] = useState(null);
|
7
|
+
const indexerClient = useMemo(() => new IndexerClient(endpointUrl, dev), [endpointUrl, dev]);
|
8
|
+
const clearError = useCallback(() => {
|
9
|
+
setError(null);
|
10
|
+
}, []);
|
11
|
+
const mutation = useMutation({
|
12
|
+
mutationFn: async ({ walletAddress, signature, message, }) => {
|
13
|
+
setError(null);
|
14
|
+
try {
|
15
|
+
return await indexerClient.getPointsBalance(walletAddress, signature, message);
|
16
|
+
}
|
17
|
+
catch (err) {
|
18
|
+
if (devMode) {
|
19
|
+
console.warn('[DevMode] getPointsBalance failed, returning mock data:', err);
|
20
|
+
return IndexerMockData.getPointsBalance(walletAddress);
|
21
|
+
}
|
22
|
+
const errorMessage = err instanceof Error ? err.message : 'Failed to get points balance';
|
23
|
+
setError(errorMessage);
|
24
|
+
throw err;
|
25
|
+
}
|
26
|
+
},
|
27
|
+
});
|
28
|
+
const getPointsBalance = useCallback(async (walletAddress, signature, message) => {
|
29
|
+
return await mutation.mutateAsync({ walletAddress, signature, message });
|
30
|
+
}, [mutation]);
|
31
|
+
return {
|
32
|
+
getPointsBalance,
|
33
|
+
isLoading: mutation.isPending,
|
34
|
+
error,
|
35
|
+
clearError,
|
36
|
+
};
|
37
|
+
};
|
38
|
+
//# sourceMappingURL=useGetPointsBalance.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"useGetPointsBalance.js","sourceRoot":"","sources":["../../src/hooks/useGetPointsBalance.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAEzD,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAuB1C,MAAM,CAAC,MAAM,mBAAmB,GAAG,CACjC,WAAmB,EACnB,MAAe,KAAK,EACpB,UAAmB,KAAK,EACG,EAAE;IAC7B,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAmB,IAAI,CAAC,CAAC;IAE3D,MAAM,aAAa,GAAG,OAAO,CAC3B,GAAG,EAAE,CAAC,IAAI,aAAa,CAAC,WAAW,EAAE,GAAG,CAAC,EACzC,CAAC,WAAW,EAAE,GAAG,CAAC,CACnB,CAAC;IAEF,MAAM,UAAU,GAAG,WAAW,CAAC,GAAG,EAAE;QAClC,QAAQ,CAAC,IAAI,CAAC,CAAC;IACjB,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,QAAQ,GAAG,WAAW,CAAC;QAC3B,UAAU,EAAE,KAAK,EAAE,EACjB,aAAa,EACb,SAAS,EACT,OAAO,GAKR,EAAqC,EAAE;YACtC,QAAQ,CAAC,IAAI,CAAC,CAAC;YACf,IAAI,CAAC;gBACH,OAAO,MAAM,aAAa,CAAC,gBAAgB,CACzC,aAAa,EACb,SAAS,EACT,OAAO,CACR,CAAC;YACJ,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,IAAI,OAAO,EAAE,CAAC;oBACZ,OAAO,CAAC,IAAI,CACV,yDAAyD,EACzD,GAAG,CACJ,CAAC;oBACF,OAAO,eAAe,CAAC,gBAAgB,CAAC,aAAa,CAAC,CAAC;gBACzD,CAAC;gBACD,MAAM,YAAY,GAChB,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,8BAA8B,CAAC;gBACtE,QAAQ,CAAC,YAAY,CAAC,CAAC;gBACvB,MAAM,GAAG,CAAC;YACZ,CAAC;QACH,CAAC;KACF,CAAC,CAAC;IAEH,MAAM,gBAAgB,GAAG,WAAW,CAClC,KAAK,EACH,aAAqB,EACrB,SAAiB,EACjB,OAAe,EACoB,EAAE;QACrC,OAAO,MAAM,QAAQ,CAAC,WAAW,CAAC,EAAE,aAAa,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,CAAC;IAC3E,CAAC,EACD,CAAC,QAAQ,CAAC,CACX,CAAC;IAEF,OAAO;QACL,gBAAgB;QAChB,SAAS,EAAE,QAAQ,CAAC,SAAS;QAC7B,KAAK;QACL,UAAU;KACX,CAAC;AACJ,CAAC,CAAC"}
|
@@ -0,0 +1,10 @@
|
|
1
|
+
import { type Optional, type SignInMessageResponse } from '@johnqh/types';
|
2
|
+
interface UseGetSigningMessageReturn {
|
3
|
+
getSigningMessage: (walletAddress: string, chainId: number, domain: string, url: string) => Promise<Optional<SignInMessageResponse>>;
|
4
|
+
isLoading: boolean;
|
5
|
+
error: Optional<string>;
|
6
|
+
clearError: () => void;
|
7
|
+
}
|
8
|
+
export declare const useGetSigningMessage: (endpointUrl: string, dev?: boolean, devMode?: boolean) => UseGetSigningMessageReturn;
|
9
|
+
export {};
|
10
|
+
//# sourceMappingURL=useGetSigningMessage.d.ts.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"useGetSigningMessage.d.ts","sourceRoot":"","sources":["../../src/hooks/useGetSigningMessage.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,QAAQ,EAAE,KAAK,qBAAqB,EAAE,MAAM,eAAe,CAAC;AAG1E,UAAU,0BAA0B;IAClC,iBAAiB,EAAE,CACjB,aAAa,EAAE,MAAM,EACrB,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,EACd,GAAG,EAAE,MAAM,KACR,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAAC,CAAC,CAAC;IAC9C,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;IACxB,UAAU,EAAE,MAAM,IAAI,CAAC;CACxB;AAYD,eAAO,MAAM,oBAAoB,GAC/B,aAAa,MAAM,EACnB,MAAK,OAAe,EACpB,UAAS,OAAe,KACvB,0BA2EF,CAAC"}
|
@@ -0,0 +1,43 @@
|
|
1
|
+
import { useCallback, useMemo, useState } from 'react';
|
2
|
+
import { useMutation } from '@tanstack/react-query';
|
3
|
+
import { IndexerClient } from '../network/IndexerClient';
|
4
|
+
import { IndexerMockData } from './mocks';
|
5
|
+
export const useGetSigningMessage = (endpointUrl, dev = false, devMode = false) => {
|
6
|
+
const [error, setError] = useState(null);
|
7
|
+
const indexerClient = useMemo(() => new IndexerClient(endpointUrl, dev), [endpointUrl, dev]);
|
8
|
+
const clearError = useCallback(() => {
|
9
|
+
setError(null);
|
10
|
+
}, []);
|
11
|
+
const mutation = useMutation({
|
12
|
+
mutationFn: async ({ walletAddress, chainId, domain, url, }) => {
|
13
|
+
setError(null);
|
14
|
+
try {
|
15
|
+
return await indexerClient.getMessage(chainId, walletAddress, domain, url);
|
16
|
+
}
|
17
|
+
catch (err) {
|
18
|
+
if (devMode) {
|
19
|
+
console.warn('[DevMode] getSigningMessage failed, returning mock data:', err);
|
20
|
+
return IndexerMockData.getSigningMessage(walletAddress, chainId, domain);
|
21
|
+
}
|
22
|
+
const errorMessage = err instanceof Error ? err.message : 'Failed to get signing message';
|
23
|
+
setError(errorMessage);
|
24
|
+
throw err;
|
25
|
+
}
|
26
|
+
},
|
27
|
+
});
|
28
|
+
const getSigningMessage = useCallback(async (walletAddress, chainId, domain, url) => {
|
29
|
+
return await mutation.mutateAsync({
|
30
|
+
walletAddress,
|
31
|
+
chainId,
|
32
|
+
domain,
|
33
|
+
url,
|
34
|
+
});
|
35
|
+
}, [mutation]);
|
36
|
+
return {
|
37
|
+
getSigningMessage,
|
38
|
+
isLoading: mutation.isPending,
|
39
|
+
error,
|
40
|
+
clearError,
|
41
|
+
};
|
42
|
+
};
|
43
|
+
//# sourceMappingURL=useGetSigningMessage.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"useGetSigningMessage.js","sourceRoot":"","sources":["../../src/hooks/useGetSigningMessage.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAEzD,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAwB1C,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAClC,WAAmB,EACnB,MAAe,KAAK,EACpB,UAAmB,KAAK,EACI,EAAE;IAC9B,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAmB,IAAI,CAAC,CAAC;IAE3D,MAAM,aAAa,GAAG,OAAO,CAC3B,GAAG,EAAE,CAAC,IAAI,aAAa,CAAC,WAAW,EAAE,GAAG,CAAC,EACzC,CAAC,WAAW,EAAE,GAAG,CAAC,CACnB,CAAC;IAEF,MAAM,UAAU,GAAG,WAAW,CAAC,GAAG,EAAE;QAClC,QAAQ,CAAC,IAAI,CAAC,CAAC;IACjB,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,QAAQ,GAAG,WAAW,CAAC;QAC3B,UAAU,EAAE,KAAK,EAAE,EACjB,aAAa,EACb,OAAO,EACP,MAAM,EACN,GAAG,GAMJ,EAA4C,EAAE;YAC7C,QAAQ,CAAC,IAAI,CAAC,CAAC;YACf,IAAI,CAAC;gBACH,OAAO,MAAM,aAAa,CAAC,UAAU,CACnC,OAAO,EACP,aAAa,EACb,MAAM,EACN,GAAG,CACJ,CAAC;YACJ,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,IAAI,OAAO,EAAE,CAAC;oBACZ,OAAO,CAAC,IAAI,CACV,0DAA0D,EAC1D,GAAG,CACJ,CAAC;oBACF,OAAO,eAAe,CAAC,iBAAiB,CACtC,aAAa,EACb,OAAO,EACP,MAAM,CACP,CAAC;gBACJ,CAAC;gBACD,MAAM,YAAY,GAChB,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,+BAA+B,CAAC;gBACvE,QAAQ,CAAC,YAAY,CAAC,CAAC;gBACvB,MAAM,GAAG,CAAC;YACZ,CAAC;QACH,CAAC;KACF,CAAC,CAAC;IAEH,MAAM,iBAAiB,GAAG,WAAW,CACnC,KAAK,EACH,aAAqB,EACrB,OAAe,EACf,MAAc,EACd,GAAW,EAC+B,EAAE;QAC5C,OAAO,MAAM,QAAQ,CAAC,WAAW,CAAC;YAChC,aAAa;YACb,OAAO;YACP,MAAM;YACN,GAAG;SACJ,CAAC,CAAC;IACL,CAAC,EACD,CAAC,QAAQ,CAAC,CACX,CAAC;IAEF,OAAO;QACL,iBAAiB;QACjB,SAAS,EAAE,QAAQ,CAAC,SAAS;QAC7B,KAAK;QACL,UAAU;KACX,CAAC;AACJ,CAAC,CAAC"}
|
@@ -0,0 +1,10 @@
|
|
1
|
+
import { type EmailAccountsResponse, type Optional } from '@johnqh/types';
|
2
|
+
interface UseGetWalletAccountsReturn {
|
3
|
+
getWalletAccounts: (walletAddress: string, signature: string, message: string, referralCode?: string) => Promise<Optional<EmailAccountsResponse>>;
|
4
|
+
isLoading: boolean;
|
5
|
+
error: Optional<string>;
|
6
|
+
clearError: () => void;
|
7
|
+
}
|
8
|
+
export declare const useGetWalletAccounts: (endpointUrl: string, dev?: boolean, devMode?: boolean) => UseGetWalletAccountsReturn;
|
9
|
+
export {};
|
10
|
+
//# sourceMappingURL=useGetWalletAccounts.d.ts.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"useGetWalletAccounts.d.ts","sourceRoot":"","sources":["../../src/hooks/useGetWalletAccounts.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,qBAAqB,EAAE,KAAK,QAAQ,EAAE,MAAM,eAAe,CAAC;AAG1E,UAAU,0BAA0B;IAClC,iBAAiB,EAAE,CACjB,aAAa,EAAE,MAAM,EACrB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,EACf,YAAY,CAAC,EAAE,MAAM,KAClB,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAAC,CAAC,CAAC;IAC9C,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;IACxB,UAAU,EAAE,MAAM,IAAI,CAAC;CACxB;AAYD,eAAO,MAAM,oBAAoB,GAC/B,aAAa,MAAM,EACnB,MAAK,OAAe,EACpB,UAAS,OAAe,KACvB,0BA2EF,CAAC"}
|
@@ -0,0 +1,42 @@
|
|
1
|
+
import { useCallback, useMemo, useState } from 'react';
|
2
|
+
import { useMutation } from '@tanstack/react-query';
|
3
|
+
import { IndexerClient } from '../network/IndexerClient';
|
4
|
+
import { IndexerMockData } from './mocks';
|
5
|
+
export const useGetWalletAccounts = (endpointUrl, dev = false, devMode = false) => {
|
6
|
+
const [error, setError] = useState(null);
|
7
|
+
const indexerClient = useMemo(() => new IndexerClient(endpointUrl, dev), [endpointUrl, dev]);
|
8
|
+
const clearError = useCallback(() => {
|
9
|
+
setError(null);
|
10
|
+
}, []);
|
11
|
+
const mutation = useMutation({
|
12
|
+
mutationFn: async ({ walletAddress, signature, message, referralCode, }) => {
|
13
|
+
setError(null);
|
14
|
+
try {
|
15
|
+
return await indexerClient.getWalletAccounts(walletAddress, signature, message, referralCode);
|
16
|
+
}
|
17
|
+
catch (err) {
|
18
|
+
if (devMode) {
|
19
|
+
console.warn('[DevMode] getWalletAccounts failed, returning mock data:', err);
|
20
|
+
return IndexerMockData.getWalletAccounts(walletAddress);
|
21
|
+
}
|
22
|
+
const errorMessage = err instanceof Error ? err.message : 'Failed to get wallet accounts';
|
23
|
+
setError(errorMessage);
|
24
|
+
throw err;
|
25
|
+
}
|
26
|
+
},
|
27
|
+
});
|
28
|
+
const getWalletAccounts = useCallback(async (walletAddress, signature, message, referralCode) => {
|
29
|
+
const params = { walletAddress, signature, message };
|
30
|
+
if (referralCode !== undefined) {
|
31
|
+
params.referralCode = referralCode;
|
32
|
+
}
|
33
|
+
return await mutation.mutateAsync(params);
|
34
|
+
}, [mutation]);
|
35
|
+
return {
|
36
|
+
getWalletAccounts,
|
37
|
+
isLoading: mutation.isPending,
|
38
|
+
error,
|
39
|
+
clearError,
|
40
|
+
};
|
41
|
+
};
|
42
|
+
//# sourceMappingURL=useGetWalletAccounts.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"useGetWalletAccounts.js","sourceRoot":"","sources":["../../src/hooks/useGetWalletAccounts.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAEzD,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAwB1C,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAClC,WAAmB,EACnB,MAAe,KAAK,EACpB,UAAmB,KAAK,EACI,EAAE;IAC9B,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAmB,IAAI,CAAC,CAAC;IAE3D,MAAM,aAAa,GAAG,OAAO,CAC3B,GAAG,EAAE,CAAC,IAAI,aAAa,CAAC,WAAW,EAAE,GAAG,CAAC,EACzC,CAAC,WAAW,EAAE,GAAG,CAAC,CACnB,CAAC;IAEF,MAAM,UAAU,GAAG,WAAW,CAAC,GAAG,EAAE;QAClC,QAAQ,CAAC,IAAI,CAAC,CAAC;IACjB,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,QAAQ,GAAG,WAAW,CAAC;QAC3B,UAAU,EAAE,KAAK,EAAE,EACjB,aAAa,EACb,SAAS,EACT,OAAO,EACP,YAAY,GAMb,EAA4C,EAAE;YAC7C,QAAQ,CAAC,IAAI,CAAC,CAAC;YACf,IAAI,CAAC;gBACH,OAAO,MAAM,aAAa,CAAC,iBAAiB,CAC1C,aAAa,EACb,SAAS,EACT,OAAO,EACP,YAAY,CACb,CAAC;YACJ,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,IAAI,OAAO,EAAE,CAAC;oBACZ,OAAO,CAAC,IAAI,CACV,0DAA0D,EAC1D,GAAG,CACJ,CAAC;oBACF,OAAO,eAAe,CAAC,iBAAiB,CAAC,aAAa,CAAC,CAAC;gBAC1D,CAAC;gBACD,MAAM,YAAY,GAChB,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,+BAA+B,CAAC;gBACvE,QAAQ,CAAC,YAAY,CAAC,CAAC;gBACvB,MAAM,GAAG,CAAC;YACZ,CAAC;QACH,CAAC;KACF,CAAC,CAAC;IAEH,MAAM,iBAAiB,GAAG,WAAW,CACnC,KAAK,EACH,aAAqB,EACrB,SAAiB,EACjB,OAAe,EACf,YAAqB,EACqB,EAAE;QAC5C,MAAM,MAAM,GAKR,EAAE,aAAa,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC;QAC1C,IAAI,YAAY,KAAK,SAAS,EAAE,CAAC;YAC/B,MAAM,CAAC,YAAY,GAAG,YAAY,CAAC;QACrC,CAAC;QACD,OAAO,MAAM,QAAQ,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;IAC5C,CAAC,EACD,CAAC,QAAQ,CAAC,CACX,CAAC;IAEF,OAAO;QACL,iBAAiB;QACjB,SAAS,EAAE,QAAQ,CAAC,SAAS;QAC7B,KAAK;QACL,UAAU;KACX,CAAC;AACJ,CAAC,CAAC"}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"useIndexerMail.d.ts","sourceRoot":"","sources":["../../src/hooks/useIndexerMail.ts"],"names":[],"mappings":"
|
1
|
+
{"version":3,"file":"useIndexerMail.d.ts","sourceRoot":"","sources":["../../src/hooks/useIndexerMail.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,KAAK,yBAAyB,EAC9B,KAAK,qBAAqB,EAC1B,KAAK,mBAAmB,EACxB,KAAK,qBAAqB,EAC1B,KAAK,mBAAmB,EACxB,KAAK,mBAAmB,EACxB,KAAK,aAAa,EAClB,KAAK,QAAQ,EACb,KAAK,cAAc,EACnB,KAAK,qBAAqB,EAC1B,KAAK,iBAAiB,EACvB,MAAM,eAAe,CAAC;AAGvB,UAAU,oBAAoB;IAC5B,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;IAExB,gBAAgB,EAAE,CAChB,QAAQ,EAAE,MAAM,KACb,OAAO,CAAC,QAAQ,CAAC,yBAAyB,CAAC,CAAC,CAAC;IAClD,iBAAiB,EAAE,CACjB,aAAa,EAAE,MAAM,EACrB,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,EACd,GAAG,EAAE,MAAM,KACR,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAAC,CAAC,CAAC;IAC9C,oBAAoB,EAAE,CACpB,KAAK,CAAC,EAAE,MAAM,KACX,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAC,CAAC,CAAC;IAC5C,kBAAkB,EAAE,MAAM,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC,CAAC;IAE/D,iBAAiB,EAAE,CACjB,aAAa,EAAE,MAAM,EACrB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,EACf,YAAY,CAAC,EAAE,MAAM,KAClB,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAAC,CAAC,CAAC;IAC9C,cAAc,EAAE,CACd,aAAa,EAAE,MAAM,EACrB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,KACZ,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAC,CAAC,CAAC;IAC5C,gBAAgB,EAAE,CAChB,aAAa,EAAE,MAAM,EACrB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,KACZ,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAAC,CAAC,CAAC;IAC9C,WAAW,EAAE,CACX,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,KACZ,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC;IACtC,QAAQ,EAAE,CACR,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,KACZ,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC;IACtC,cAAc,EAAE,CACd,aAAa,EAAE,MAAM,EACrB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,KACZ,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAC,CAAC,CAAC;IAC5C,gBAAgB,EAAE,CAChB,aAAa,EAAE,MAAM,EACrB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,KACZ,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC,CAAC;IACvC,UAAU,EAAE,MAAM,IAAI,CAAC;CACxB;AAQD,QAAA,MAAM,cAAc,GAClB,aAAa,MAAM,EACnB,MAAK,OAAe,EACpB,UAAS,OAAe,KACvB,oBAshBF,CAAC;AAEF,OAAO,EAAE,cAAc,EAAE,KAAK,oBAAoB,EAAE,CAAC"}
|