@filoz/synapse-react 0.0.1

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.
Files changed (68) hide show
  1. package/LICENSE.md +228 -0
  2. package/README.md +32 -0
  3. package/dist/src/calibration.d.ts +9 -0
  4. package/dist/src/calibration.d.ts.map +1 -0
  5. package/dist/src/calibration.js +45 -0
  6. package/dist/src/calibration.js.map +1 -0
  7. package/dist/src/erc20.d.ts +17 -0
  8. package/dist/src/erc20.d.ts.map +1 -0
  9. package/dist/src/erc20.js +57 -0
  10. package/dist/src/erc20.js.map +1 -0
  11. package/dist/src/filsnap.d.ts +5 -0
  12. package/dist/src/filsnap.d.ts.map +1 -0
  13. package/dist/src/filsnap.js +14 -0
  14. package/dist/src/filsnap.js.map +1 -0
  15. package/dist/src/index.d.ts +7 -0
  16. package/dist/src/index.d.ts.map +1 -0
  17. package/dist/src/index.js +7 -0
  18. package/dist/src/index.js.map +1 -0
  19. package/dist/src/payments/index.d.ts +42 -0
  20. package/dist/src/payments/index.d.ts.map +1 -0
  21. package/dist/src/payments/index.js +192 -0
  22. package/dist/src/payments/index.js.map +1 -0
  23. package/dist/src/payments/use-deposit-and-approve.d.ts +11 -0
  24. package/dist/src/payments/use-deposit-and-approve.d.ts.map +1 -0
  25. package/dist/src/payments/use-deposit-and-approve.js +42 -0
  26. package/dist/src/payments/use-deposit-and-approve.js.map +1 -0
  27. package/dist/src/usdfc.d.ts +6 -0
  28. package/dist/src/usdfc.d.ts.map +1 -0
  29. package/dist/src/usdfc.js +15 -0
  30. package/dist/src/usdfc.js.map +1 -0
  31. package/dist/src/warm-storage/index.d.ts +6 -0
  32. package/dist/src/warm-storage/index.d.ts.map +1 -0
  33. package/dist/src/warm-storage/index.js +6 -0
  34. package/dist/src/warm-storage/index.js.map +1 -0
  35. package/dist/src/warm-storage/use-create-data-set.d.ts +14 -0
  36. package/dist/src/warm-storage/use-create-data-set.d.ts.map +1 -0
  37. package/dist/src/warm-storage/use-create-data-set.js +35 -0
  38. package/dist/src/warm-storage/use-create-data-set.js.map +1 -0
  39. package/dist/src/warm-storage/use-data-sets.d.ts +42 -0
  40. package/dist/src/warm-storage/use-data-sets.d.ts.map +1 -0
  41. package/dist/src/warm-storage/use-data-sets.js +51 -0
  42. package/dist/src/warm-storage/use-data-sets.js.map +1 -0
  43. package/dist/src/warm-storage/use-providers.d.ts +8 -0
  44. package/dist/src/warm-storage/use-providers.d.ts.map +1 -0
  45. package/dist/src/warm-storage/use-providers.js +14 -0
  46. package/dist/src/warm-storage/use-providers.js.map +1 -0
  47. package/dist/src/warm-storage/use-service-price.d.ts +8 -0
  48. package/dist/src/warm-storage/use-service-price.d.ts.map +1 -0
  49. package/dist/src/warm-storage/use-service-price.js +15 -0
  50. package/dist/src/warm-storage/use-service-price.js.map +1 -0
  51. package/dist/src/warm-storage/use-upload.d.ts +14 -0
  52. package/dist/src/warm-storage/use-upload.d.ts.map +1 -0
  53. package/dist/src/warm-storage/use-upload.js +39 -0
  54. package/dist/src/warm-storage/use-upload.js.map +1 -0
  55. package/package.json +91 -0
  56. package/src/calibration.ts +76 -0
  57. package/src/erc20.ts +103 -0
  58. package/src/filsnap.ts +16 -0
  59. package/src/index.ts +17 -0
  60. package/src/payments/index.ts +357 -0
  61. package/src/payments/use-deposit-and-approve.ts +71 -0
  62. package/src/usdfc.ts +26 -0
  63. package/src/warm-storage/index.ts +5 -0
  64. package/src/warm-storage/use-create-data-set.ts +62 -0
  65. package/src/warm-storage/use-data-sets.ts +74 -0
  66. package/src/warm-storage/use-providers.ts +21 -0
  67. package/src/warm-storage/use-service-price.ts +34 -0
  68. package/src/warm-storage/use-upload.ts +58 -0
@@ -0,0 +1,192 @@
1
+ import { getChain } from '@filoz/synapse-core/chains';
2
+ import { accountInfo, deposit, operatorApprovals, setOperatorApproval, withdraw, } from '@filoz/synapse-core/pay';
3
+ import { skipToken, useMutation, useQuery, useQueryClient, } from '@tanstack/react-query';
4
+ import { waitForTransactionReceipt } from 'viem/actions';
5
+ import { useAccount, useBlock, useChainId, useConfig } from 'wagmi';
6
+ import { getConnectorClient } from 'wagmi/actions';
7
+ export function useAccountInfo(props) {
8
+ const config = useConfig();
9
+ const chainId = useChainId({ config });
10
+ const chain = getChain(chainId);
11
+ const token = props?.token ?? chain.contracts.usdfc.address;
12
+ const address = props?.address;
13
+ const { data } = useBlock({
14
+ blockTag: 'latest',
15
+ chainId,
16
+ watch: props?.watch ?? false,
17
+ });
18
+ const result = useQuery({
19
+ ...props?.query,
20
+ queryKey: ['synapse-payments-account-info', address, token, data?.number?.toString()],
21
+ queryFn: address
22
+ ? async () => {
23
+ return await accountInfo(config.getClient(), {
24
+ token,
25
+ address,
26
+ blockNumber: data?.number,
27
+ });
28
+ }
29
+ : skipToken,
30
+ });
31
+ return result;
32
+ }
33
+ export function useOperatorApprovals(props) {
34
+ const config = useConfig();
35
+ const chainId = useChainId({ config });
36
+ const chain = getChain(chainId);
37
+ const token = props?.token ?? chain.contracts.usdfc.address;
38
+ const operator = props?.operator ?? chain.contracts.storage.address;
39
+ const address = props?.address;
40
+ const result = useQuery({
41
+ ...props?.query,
42
+ queryKey: ['synapse-payments-operator-approvals', address, token, operator],
43
+ queryFn: address
44
+ ? async () => {
45
+ return await operatorApprovals(config.getClient(), {
46
+ token,
47
+ address,
48
+ operator,
49
+ });
50
+ }
51
+ : skipToken,
52
+ });
53
+ return result;
54
+ }
55
+ export function useDeposit(props) {
56
+ const config = useConfig();
57
+ const chainId = useChainId({ config });
58
+ const chain = getChain(chainId);
59
+ const account = useAccount({ config });
60
+ const queryClient = useQueryClient();
61
+ const token = props?.token ?? chain.contracts.usdfc.address;
62
+ const from = props?.address ?? account.address;
63
+ return useMutation({
64
+ mutationFn: async ({ amount }) => {
65
+ const client = await getConnectorClient(config, {
66
+ account: account.address,
67
+ chainId,
68
+ });
69
+ const hash = await deposit(client, {
70
+ amount,
71
+ address: account.address,
72
+ token,
73
+ });
74
+ props?.onHash?.(hash);
75
+ const transactionReceipt = await waitForTransactionReceipt(config.getClient(), {
76
+ hash: hash,
77
+ });
78
+ queryClient.invalidateQueries({
79
+ queryKey: ['synapse-payments-account-info', from, token],
80
+ });
81
+ queryClient.invalidateQueries({
82
+ queryKey: ['synapse-erc20-balance', from, token],
83
+ });
84
+ return transactionReceipt;
85
+ },
86
+ ...props?.mutation,
87
+ });
88
+ }
89
+ export function useWithdraw(props) {
90
+ const config = useConfig();
91
+ const chainId = useChainId({ config });
92
+ const chain = getChain(chainId);
93
+ const account = useAccount({ config });
94
+ const queryClient = useQueryClient();
95
+ const token = props?.token ?? chain.contracts.usdfc.address;
96
+ const from = props?.address ?? account.address;
97
+ return useMutation({
98
+ mutationFn: async ({ amount }) => {
99
+ const client = await getConnectorClient(config, {
100
+ account: account.address,
101
+ chainId,
102
+ });
103
+ const hash = await withdraw(client, {
104
+ amount,
105
+ address: account.address,
106
+ token,
107
+ });
108
+ props?.onHash?.(hash);
109
+ const transactionReceipt = await waitForTransactionReceipt(config.getClient(), {
110
+ hash,
111
+ });
112
+ queryClient.invalidateQueries({
113
+ queryKey: ['synapse-payments-account-info', from, token],
114
+ });
115
+ queryClient.invalidateQueries({
116
+ queryKey: ['synapse-erc20-balance', from, token],
117
+ });
118
+ return transactionReceipt;
119
+ },
120
+ ...props?.mutation,
121
+ });
122
+ }
123
+ export function useApproveOperator(props) {
124
+ const config = useConfig();
125
+ const chainId = useChainId({ config });
126
+ const chain = getChain(chainId);
127
+ const account = useAccount({ config });
128
+ const queryClient = useQueryClient();
129
+ const token = props?.token ?? chain.contracts.usdfc.address;
130
+ const operator = props?.operator ?? chain.contracts.storage.address;
131
+ return useMutation({
132
+ ...props?.mutation,
133
+ mutationFn: async () => {
134
+ const client = await getConnectorClient(config, {
135
+ account: account.address,
136
+ chainId,
137
+ });
138
+ const hash = await setOperatorApproval(client, {
139
+ token: props?.token,
140
+ operator: props?.operator,
141
+ approve: true,
142
+ });
143
+ props?.onHash?.(hash);
144
+ const transactionReceipt = await waitForTransactionReceipt(config.getClient(), {
145
+ hash,
146
+ });
147
+ queryClient.invalidateQueries({
148
+ queryKey: ['synapse-payments-operator-approvals', account.address, token, operator],
149
+ });
150
+ queryClient.invalidateQueries({
151
+ queryKey: ['synapse-payments-account-info', account.address, token],
152
+ });
153
+ return transactionReceipt;
154
+ },
155
+ });
156
+ }
157
+ export function useRevokeOperator(props) {
158
+ const config = useConfig();
159
+ const configChainId = useChainId({ config });
160
+ const chain = getChain(configChainId);
161
+ const account = useAccount({ config });
162
+ const queryClient = useQueryClient();
163
+ const token = props?.token ?? chain.contracts.usdfc.address;
164
+ const operator = props?.operator ?? chain.contracts.storage.address;
165
+ return useMutation({
166
+ ...props?.mutation,
167
+ mutationFn: async () => {
168
+ const client = await getConnectorClient(config, {
169
+ account: account.address,
170
+ chainId: chain.id,
171
+ });
172
+ const hash = await setOperatorApproval(client, {
173
+ token: props?.token,
174
+ operator: props?.operator,
175
+ approve: false,
176
+ });
177
+ props?.onHash?.(hash);
178
+ const transactionReceipt = await waitForTransactionReceipt(config.getClient(), {
179
+ hash,
180
+ });
181
+ queryClient.invalidateQueries({
182
+ queryKey: ['synapse-payments-operator-approvals', account.address, token, operator],
183
+ });
184
+ queryClient.invalidateQueries({
185
+ queryKey: ['synapse-payments-account-info', account.address, token],
186
+ });
187
+ return transactionReceipt;
188
+ },
189
+ });
190
+ }
191
+ export * from "./use-deposit-and-approve.js";
192
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/payments/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import type { DepositAndApproveOptions } from '@filoz/synapse-core/pay';
2
+ import { type MutateOptions } from '@tanstack/react-query';
3
+ import type { TransactionReceipt } from 'viem';
4
+ type UseDepositVariables = Pick<DepositAndApproveOptions, 'amount'>;
5
+ interface UseDepositAndApproveProps extends Omit<DepositAndApproveOptions, 'amount'> {
6
+ mutation?: Omit<MutateOptions<TransactionReceipt, Error, UseDepositVariables>, 'mutationFn'>;
7
+ onHash?: (hash: string) => void;
8
+ }
9
+ export declare function useDepositAndApprove(props?: UseDepositAndApproveProps): import("@tanstack/react-query").UseMutationResult<TransactionReceipt, Error, UseDepositVariables, unknown>;
10
+ export {};
11
+ //# sourceMappingURL=use-deposit-and-approve.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-deposit-and-approve.d.ts","sourceRoot":"","sources":["../../../src/payments/use-deposit-and-approve.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAA;AAEvE,OAAO,EAAE,KAAK,aAAa,EAA+B,MAAM,uBAAuB,CAAA;AACvF,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,MAAM,CAAA;AAK9C,KAAK,mBAAmB,GAAG,IAAI,CAAC,wBAAwB,EAAE,QAAQ,CAAC,CAAA;AACnE,UAAU,yBAA0B,SAAQ,IAAI,CAAC,wBAAwB,EAAE,QAAQ,CAAC;IAIlF,QAAQ,CAAC,EAAE,IAAI,CAAC,aAAa,CAAC,kBAAkB,EAAE,KAAK,EAAE,mBAAmB,CAAC,EAAE,YAAY,CAAC,CAAA;IAI5F,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;CAChC;AAYD,wBAAgB,oBAAoB,CAAC,KAAK,CAAC,EAAE,yBAAyB,8GAuCrE"}
@@ -0,0 +1,42 @@
1
+ import { getChain } from '@filoz/synapse-core/chains';
2
+ import * as payments from '@filoz/synapse-core/pay';
3
+ import { useMutation, useQueryClient } from '@tanstack/react-query';
4
+ import { waitForTransactionReceipt } from 'viem/actions';
5
+ import { useAccount, useChainId, useConfig } from 'wagmi';
6
+ import { getConnectorClient } from 'wagmi/actions';
7
+ export function useDepositAndApprove(props) {
8
+ const config = useConfig();
9
+ const chainId = useChainId({ config });
10
+ const chain = getChain(chainId);
11
+ const account = useAccount({ config });
12
+ const queryClient = useQueryClient();
13
+ const token = props?.token ?? chain.contracts.usdfc.address;
14
+ const from = props?.address ?? account.address;
15
+ return useMutation({
16
+ mutationFn: async ({ amount }) => {
17
+ const client = await getConnectorClient(config, {
18
+ account: account.address,
19
+ chainId,
20
+ });
21
+ const hash = await payments.depositAndApprove(client, {
22
+ amount,
23
+ });
24
+ props?.onHash?.(hash);
25
+ const transactionReceipt = await waitForTransactionReceipt(config.getClient(), {
26
+ hash: hash,
27
+ });
28
+ queryClient.invalidateQueries({
29
+ queryKey: ['synapse-payments-account-info', from, token],
30
+ });
31
+ queryClient.invalidateQueries({
32
+ queryKey: ['synapse-erc20-balance', from, token],
33
+ });
34
+ queryClient.invalidateQueries({
35
+ queryKey: ['synapse-payments-operator-approvals', from, token, chain.contracts.storage.address],
36
+ });
37
+ return transactionReceipt;
38
+ },
39
+ ...props?.mutation,
40
+ });
41
+ }
42
+ //# sourceMappingURL=use-deposit-and-approve.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-deposit-and-approve.js","sourceRoot":"","sources":["../../../src/payments/use-deposit-and-approve.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAA;AAErD,OAAO,KAAK,QAAQ,MAAM,yBAAyB,CAAA;AACnD,OAAO,EAAsB,WAAW,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAA;AAEvF,OAAO,EAAE,yBAAyB,EAAE,MAAM,cAAc,CAAA;AACxD,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AACzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAA;AAwBlD,MAAM,UAAU,oBAAoB,CAAC,KAAiC;IACpE,MAAM,MAAM,GAAG,SAAS,EAAE,CAAA;IAC1B,MAAM,OAAO,GAAG,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC,CAAA;IACtC,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAA;IAC/B,MAAM,OAAO,GAAG,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC,CAAA;IACtC,MAAM,WAAW,GAAG,cAAc,EAAE,CAAA;IACpC,MAAM,KAAK,GAAG,KAAK,EAAE,KAAK,IAAI,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,OAAO,CAAA;IAC3D,MAAM,IAAI,GAAG,KAAK,EAAE,OAAO,IAAI,OAAO,CAAC,OAAO,CAAA;IAE9C,OAAO,WAAW,CAAC;QACjB,UAAU,EAAE,KAAK,EAAE,EAAE,MAAM,EAAuB,EAAE,EAAE;YACpD,MAAM,MAAM,GAAG,MAAM,kBAAkB,CAAC,MAAM,EAAE;gBAC9C,OAAO,EAAE,OAAO,CAAC,OAAO;gBACxB,OAAO;aACR,CAAC,CAAA;YAEF,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,iBAAiB,CAAC,MAAM,EAAE;gBACpD,MAAM;aACP,CAAC,CAAA;YAEF,KAAK,EAAE,MAAM,EAAE,CAAC,IAAI,CAAC,CAAA;YACrB,MAAM,kBAAkB,GAAG,MAAM,yBAAyB,CAAC,MAAM,CAAC,SAAS,EAAE,EAAE;gBAC7E,IAAI,EAAE,IAAI;aACX,CAAC,CAAA;YAEF,WAAW,CAAC,iBAAiB,CAAC;gBAC5B,QAAQ,EAAE,CAAC,+BAA+B,EAAE,IAAI,EAAE,KAAK,CAAC;aACzD,CAAC,CAAA;YACF,WAAW,CAAC,iBAAiB,CAAC;gBAC5B,QAAQ,EAAE,CAAC,uBAAuB,EAAE,IAAI,EAAE,KAAK,CAAC;aACjD,CAAC,CAAA;YACF,WAAW,CAAC,iBAAiB,CAAC;gBAC5B,QAAQ,EAAE,CAAC,qCAAqC,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC;aAChG,CAAC,CAAA;YAEF,OAAO,kBAAkB,CAAA;QAC3B,CAAC;QACD,GAAG,KAAK,EAAE,QAAQ;KACnB,CAAC,CAAA;AACJ,CAAC"}
@@ -0,0 +1,6 @@
1
+ import { type MutateOptions } from '@tanstack/react-query';
2
+ export interface UseWatchUsdfcProps {
3
+ mutation?: Omit<MutateOptions<boolean, Error>, 'mutationFn'>;
4
+ }
5
+ export declare function useAddUsdfc(props?: UseWatchUsdfcProps): import("@tanstack/react-query").UseMutationResult<boolean, Error, void, unknown>;
6
+ //# sourceMappingURL=usdfc.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"usdfc.d.ts","sourceRoot":"","sources":["../../src/usdfc.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,aAAa,EAAe,MAAM,uBAAuB,CAAA;AAIvE,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,EAAE,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE,YAAY,CAAC,CAAA;CAC7D;AAQD,wBAAgB,WAAW,CAAC,KAAK,CAAC,EAAE,kBAAkB,oFAUrD"}
@@ -0,0 +1,15 @@
1
+ import { watchUsdfc } from '@filoz/synapse-core/usdfc';
2
+ import { useMutation } from '@tanstack/react-query';
3
+ import { useConfig } from 'wagmi';
4
+ import { getConnectorClient } from 'wagmi/actions';
5
+ export function useAddUsdfc(props) {
6
+ const config = useConfig();
7
+ return useMutation({
8
+ ...props?.mutation,
9
+ mutationFn: async () => {
10
+ const client = await getConnectorClient(config);
11
+ return await watchUsdfc(client);
12
+ },
13
+ });
14
+ }
15
+ //# sourceMappingURL=usdfc.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"usdfc.js","sourceRoot":"","sources":["../../src/usdfc.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAA;AACtD,OAAO,EAAsB,WAAW,EAAE,MAAM,uBAAuB,CAAA;AACvE,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AACjC,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAA;AAYlD,MAAM,UAAU,WAAW,CAAC,KAA0B;IACpD,MAAM,MAAM,GAAG,SAAS,EAAE,CAAA;IAE1B,OAAO,WAAW,CAAC;QACjB,GAAG,KAAK,EAAE,QAAQ;QAClB,UAAU,EAAE,KAAK,IAAI,EAAE;YACrB,MAAM,MAAM,GAAG,MAAM,kBAAkB,CAAC,MAAM,CAAC,CAAA;YAC/C,OAAO,MAAM,UAAU,CAAC,MAAM,CAAC,CAAA;QACjC,CAAC;KACF,CAAC,CAAA;AACJ,CAAC"}
@@ -0,0 +1,6 @@
1
+ export * from './use-create-data-set.ts';
2
+ export * from './use-data-sets.ts';
3
+ export * from './use-providers.ts';
4
+ export * from './use-service-price.ts';
5
+ export * from './use-upload.ts';
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/warm-storage/index.ts"],"names":[],"mappings":"AAAA,cAAc,0BAA0B,CAAA;AACxC,cAAc,oBAAoB,CAAA;AAClC,cAAc,oBAAoB,CAAA;AAClC,cAAc,wBAAwB,CAAA;AACtC,cAAc,iBAAiB,CAAA"}
@@ -0,0 +1,6 @@
1
+ export * from "./use-create-data-set.js";
2
+ export * from "./use-data-sets.js";
3
+ export * from "./use-providers.js";
4
+ export * from "./use-service-price.js";
5
+ export * from "./use-upload.js";
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/warm-storage/index.ts"],"names":[],"mappings":"AAAA,cAAc,0BAA0B,CAAA;AACxC,cAAc,oBAAoB,CAAA;AAClC,cAAc,oBAAoB,CAAA;AAClC,cAAc,wBAAwB,CAAA;AACtC,cAAc,iBAAiB,CAAA"}
@@ -0,0 +1,14 @@
1
+ import type { DataSetCreatedResponse } from '@filoz/synapse-core/curio';
2
+ import type { PDPProvider } from '@filoz/synapse-core/warm-storage';
3
+ import { type MutateOptions } from '@tanstack/react-query';
4
+ export interface UseCreateDataSetProps {
5
+ onHash?: (hash: string) => void;
6
+ mutation?: Omit<MutateOptions<DataSetCreatedResponse, Error, UseCreateDataSetVariables>, 'mutationFn'>;
7
+ }
8
+ export interface UseCreateDataSetVariables {
9
+ provider: PDPProvider;
10
+ cdn: boolean;
11
+ }
12
+ export type UseCreateDataSetResult = DataSetCreatedResponse;
13
+ export declare function useCreateDataSet(props: UseCreateDataSetProps): import("@tanstack/react-query").UseMutationResult<DataSetCreatedResponse, Error, UseCreateDataSetVariables, unknown>;
14
+ //# sourceMappingURL=use-create-data-set.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-create-data-set.d.ts","sourceRoot":"","sources":["../../../src/warm-storage/use-create-data-set.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAA;AAEvE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kCAAkC,CAAA;AAEnE,OAAO,EAAE,KAAK,aAAa,EAA+B,MAAM,uBAAuB,CAAA;AAIvF,MAAM,WAAW,qBAAqB;IAIpC,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;IAC/B,QAAQ,CAAC,EAAE,IAAI,CAAC,aAAa,CAAC,sBAAsB,EAAE,KAAK,EAAE,yBAAyB,CAAC,EAAE,YAAY,CAAC,CAAA;CACvG;AAED,MAAM,WAAW,yBAAyB;IAIxC,QAAQ,EAAE,WAAW,CAAA;IACrB,GAAG,EAAE,OAAO,CAAA;CACb;AAED,MAAM,MAAM,sBAAsB,GAAG,sBAAsB,CAAA;AAE3D,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,qBAAqB,wHAmC5D"}
@@ -0,0 +1,35 @@
1
+ import * as Curio from '@filoz/synapse-core/curio';
2
+ import { createDataSet } from '@filoz/synapse-core/warm-storage';
3
+ import { useMutation, useQueryClient } from '@tanstack/react-query';
4
+ import { useAccount, useChainId, useConfig } from 'wagmi';
5
+ import { getConnectorClient } from 'wagmi/actions';
6
+ export function useCreateDataSet(props) {
7
+ const config = useConfig();
8
+ const chainId = useChainId({ config });
9
+ const account = useAccount({ config });
10
+ const queryClient = useQueryClient();
11
+ return useMutation({
12
+ ...props?.mutation,
13
+ mutationFn: async ({ provider, cdn }) => {
14
+ const connectorClient = await getConnectorClient(config, {
15
+ account: account.address,
16
+ chainId,
17
+ });
18
+ const { hash, statusUrl } = await createDataSet(connectorClient, {
19
+ publicClient: config.getClient(),
20
+ provider,
21
+ cdn,
22
+ });
23
+ props?.onHash?.(hash);
24
+ const dataSet = await Curio.pollForDataSetCreationStatus({ statusUrl });
25
+ queryClient.invalidateQueries({
26
+ queryKey: ['synapse-warm-storage-data-sets', account.address],
27
+ });
28
+ queryClient.invalidateQueries({
29
+ queryKey: ['synapse-warm-storage-providers-with-data-sets', account.address],
30
+ });
31
+ return dataSet;
32
+ },
33
+ });
34
+ }
35
+ //# sourceMappingURL=use-create-data-set.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-create-data-set.js","sourceRoot":"","sources":["../../../src/warm-storage/use-create-data-set.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,2BAA2B,CAAA;AAElD,OAAO,EAAE,aAAa,EAAE,MAAM,kCAAkC,CAAA;AAChE,OAAO,EAAsB,WAAW,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAA;AACvF,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AACzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAA;AAoBlD,MAAM,UAAU,gBAAgB,CAAC,KAA4B;IAC3D,MAAM,MAAM,GAAG,SAAS,EAAE,CAAA;IAC1B,MAAM,OAAO,GAAG,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC,CAAA;IACtC,MAAM,OAAO,GAAG,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC,CAAA;IACtC,MAAM,WAAW,GAAG,cAAc,EAAE,CAAA;IACpC,OAAO,WAAW,CAAC;QACjB,GAAG,KAAK,EAAE,QAAQ;QAClB,UAAU,EAAE,KAAK,EAAE,EAAE,QAAQ,EAAE,GAAG,EAA6B,EAAE,EAAE;YACjE,MAAM,eAAe,GAAG,MAAM,kBAAkB,CAAC,MAAM,EAAE;gBACvD,OAAO,EAAE,OAAO,CAAC,OAAO;gBACxB,OAAO;aACR,CAAC,CAAA;YAEF,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,MAAM,aAAa,CAAC,eAAe,EAAE;gBAC/D,YAAY,EAAE,MAAM,CAAC,SAAS,EAAE;gBAChC,QAAQ;gBACR,GAAG;aAKJ,CAAC,CAAA;YACF,KAAK,EAAE,MAAM,EAAE,CAAC,IAAI,CAAC,CAAA;YAErB,MAAM,OAAO,GAAG,MAAM,KAAK,CAAC,4BAA4B,CAAC,EAAE,SAAS,EAAE,CAAC,CAAA;YAEvE,WAAW,CAAC,iBAAiB,CAAC;gBAC5B,QAAQ,EAAE,CAAC,gCAAgC,EAAE,OAAO,CAAC,OAAO,CAAC;aAC9D,CAAC,CAAA;YACF,WAAW,CAAC,iBAAiB,CAAC;gBAC5B,QAAQ,EAAE,CAAC,+CAA+C,EAAE,OAAO,CAAC,OAAO,CAAC;aAC7E,CAAC,CAAA;YACF,OAAO,OAAO,CAAA;QAChB,CAAC;KACF,CAAC,CAAA;AACJ,CAAC"}
@@ -0,0 +1,42 @@
1
+ import { type MetadataObject } from '@filoz/synapse-core';
2
+ import type { CurioPieceWithUrl } from '@filoz/synapse-core/curio';
3
+ import { type DataSet } from '@filoz/synapse-core/warm-storage';
4
+ import { type UseQueryOptions } from '@tanstack/react-query';
5
+ import type { Simplify } from 'type-fest';
6
+ import type { Address } from 'viem';
7
+ export type PieceWithMetadata = Simplify<CurioPieceWithUrl & {
8
+ metadata: MetadataObject;
9
+ }>;
10
+ export interface DataSetWithPieces extends DataSet {
11
+ pieces: PieceWithMetadata[];
12
+ }
13
+ export type UseDataSetsResult = DataSetWithPieces[];
14
+ export interface UseDataSetsProps {
15
+ address?: Address;
16
+ query?: Omit<UseQueryOptions<UseDataSetsResult>, 'queryKey' | 'queryFn'>;
17
+ }
18
+ export declare function useDataSets(props: UseDataSetsProps): import("@tanstack/react-query").UseQueryResult<{
19
+ pieces: {
20
+ metadata: Record<string, string>;
21
+ pieceCid: string;
22
+ pieceId: number;
23
+ pieceUrl: string;
24
+ }[];
25
+ pdpDatasetId: bigint;
26
+ live: boolean;
27
+ managed: boolean;
28
+ cdn: boolean;
29
+ metadata: MetadataObject;
30
+ pdpRailId: bigint;
31
+ cacheMissRailId: bigint;
32
+ cdnRailId: bigint;
33
+ payer: `0x${string}`;
34
+ payee: `0x${string}`;
35
+ serviceProvider: `0x${string}`;
36
+ commissionBps: bigint;
37
+ clientDataSetId: bigint;
38
+ pdpEndEpoch: bigint;
39
+ providerId: bigint;
40
+ cdnEndEpoch: bigint;
41
+ }[], Error>;
42
+ //# sourceMappingURL=use-data-sets.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-data-sets.d.ts","sourceRoot":"","sources":["../../../src/warm-storage/use-data-sets.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,cAAc,EAAyB,MAAM,qBAAqB,CAAA;AAEhF,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAA;AAElE,OAAO,EAAE,KAAK,OAAO,EAA8B,MAAM,kCAAkC,CAAA;AAC3F,OAAO,EAAa,KAAK,eAAe,EAAY,MAAM,uBAAuB,CAAA;AACjF,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAA;AACzC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,MAAM,CAAA;AAKnC,MAAM,MAAM,iBAAiB,GAAG,QAAQ,CAAC,iBAAiB,GAAG;IAAE,QAAQ,EAAE,cAAc,CAAA;CAAE,CAAC,CAAA;AAE1F,MAAM,WAAW,iBAAkB,SAAQ,OAAO;IAChD,MAAM,EAAE,iBAAiB,EAAE,CAAA;CAC5B;AAED,MAAM,MAAM,iBAAiB,GAAG,iBAAiB,EAAE,CAAA;AAEnD,MAAM,WAAW,gBAAgB;IAC/B,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,KAAK,CAAC,EAAE,IAAI,CAAC,eAAe,CAAC,iBAAiB,CAAC,EAAE,UAAU,GAAG,SAAS,CAAC,CAAA;CACzE;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;YAgDlD"}
@@ -0,0 +1,51 @@
1
+ import { metadataArrayToObject } from '@filoz/synapse-core';
2
+ import { getChain } from '@filoz/synapse-core/chains';
3
+ import * as PDP from '@filoz/synapse-core/curio';
4
+ import { getDataSets, readProviders } from '@filoz/synapse-core/warm-storage';
5
+ import { skipToken, useQuery } from '@tanstack/react-query';
6
+ import { readContract } from 'viem/actions';
7
+ import { useChainId, useConfig } from 'wagmi';
8
+ import { useProviders } from "./use-providers.js";
9
+ export function useDataSets(props) {
10
+ const config = useConfig();
11
+ const chainId = useChainId();
12
+ const address = props.address;
13
+ const { data: providersPrefected } = useProviders();
14
+ const chain = getChain(chainId);
15
+ return useQuery({
16
+ queryKey: ['synapse-warm-storage-data-sets', address],
17
+ queryFn: address
18
+ ? async () => {
19
+ const providers = providersPrefected ?? (await readProviders(config.getClient()));
20
+ const dataSets = await getDataSets(config.getClient(), { address });
21
+ const dataSetsWithPieces = await Promise.all(dataSets.map(async (dataSet) => {
22
+ const pieces = await PDP.getPiecesForDataSet({
23
+ endpoint: providers.find((p) => p.providerId === dataSet.providerId)?.pdp.serviceURL || '',
24
+ dataSetId: dataSet.pdpDatasetId,
25
+ chainId,
26
+ address,
27
+ cdn: dataSet.cdn,
28
+ });
29
+ const piecesWithMetadata = await Promise.all(pieces.map(async (piece) => {
30
+ const metadata = await readContract(config.getClient(), {
31
+ address: chain.contracts.storageView.address,
32
+ abi: chain.contracts.storageView.abi,
33
+ functionName: 'getAllPieceMetadata',
34
+ args: [dataSet.pdpDatasetId, BigInt(piece.pieceId)],
35
+ });
36
+ return {
37
+ ...piece,
38
+ metadata: metadataArrayToObject(metadata),
39
+ };
40
+ }));
41
+ return {
42
+ ...dataSet,
43
+ pieces: piecesWithMetadata,
44
+ };
45
+ }));
46
+ return dataSetsWithPieces;
47
+ }
48
+ : skipToken,
49
+ });
50
+ }
51
+ //# sourceMappingURL=use-data-sets.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-data-sets.js","sourceRoot":"","sources":["../../../src/warm-storage/use-data-sets.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuB,qBAAqB,EAAE,MAAM,qBAAqB,CAAA;AAChF,OAAO,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAA;AAErD,OAAO,KAAK,GAAG,MAAM,2BAA2B,CAAA;AAChD,OAAO,EAAgB,WAAW,EAAE,aAAa,EAAE,MAAM,kCAAkC,CAAA;AAC3F,OAAO,EAAE,SAAS,EAAwB,QAAQ,EAAE,MAAM,uBAAuB,CAAA;AAGjF,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAC3C,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAejD,MAAM,UAAU,WAAW,CAAC,KAAuB;IACjD,MAAM,MAAM,GAAG,SAAS,EAAE,CAAA;IAC1B,MAAM,OAAO,GAAG,UAAU,EAAE,CAAA;IAC5B,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAA;IAC7B,MAAM,EAAE,IAAI,EAAE,kBAAkB,EAAE,GAAG,YAAY,EAAE,CAAA;IACnD,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAA;IAC/B,OAAO,QAAQ,CAAC;QACd,QAAQ,EAAE,CAAC,gCAAgC,EAAE,OAAO,CAAC;QACrD,OAAO,EAAE,OAAO;YACd,CAAC,CAAC,KAAK,IAAI,EAAE;gBACT,MAAM,SAAS,GAAG,kBAAkB,IAAI,CAAC,MAAM,aAAa,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC,CAAA;gBACjF,MAAM,QAAQ,GAAG,MAAM,WAAW,CAAC,MAAM,CAAC,SAAS,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,CAAA;gBACnE,MAAM,kBAAkB,GAAG,MAAM,OAAO,CAAC,GAAG,CAC1C,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;oBAE7B,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,mBAAmB,CAAC;wBAC3C,QAAQ,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,KAAK,OAAO,CAAC,UAAU,CAAC,EAAE,GAAG,CAAC,UAAU,IAAI,EAAE;wBAC1F,SAAS,EAAE,OAAO,CAAC,YAAY;wBAC/B,OAAO;wBACP,OAAO;wBACP,GAAG,EAAE,OAAO,CAAC,GAAG;qBACjB,CAAC,CAAA;oBAEF,MAAM,kBAAkB,GAAG,MAAM,OAAO,CAAC,GAAG,CAC1C,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;wBACzB,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,MAAM,CAAC,SAAS,EAAE,EAAE;4BACtD,OAAO,EAAE,KAAK,CAAC,SAAS,CAAC,WAAW,CAAC,OAAO;4BAC5C,GAAG,EAAE,KAAK,CAAC,SAAS,CAAC,WAAW,CAAC,GAAG;4BACpC,YAAY,EAAE,qBAAqB;4BACnC,IAAI,EAAE,CAAC,OAAO,CAAC,YAAY,EAAE,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;yBACpD,CAAC,CAAA;wBACF,OAAO;4BACL,GAAG,KAAK;4BACR,QAAQ,EAAE,qBAAqB,CAAC,QAAQ,CAAC;yBAC1C,CAAA;oBACH,CAAC,CAAC,CACH,CAAA;oBAED,OAAO;wBACL,GAAG,OAAO;wBACV,MAAM,EAAE,kBAAkB;qBAC3B,CAAA;gBACH,CAAC,CAAC,CACH,CAAA;gBACD,OAAO,kBAAkB,CAAA;YAC3B,CAAC;YACH,CAAC,CAAC,SAAS;KACd,CAAC,CAAA;AACJ,CAAC"}
@@ -0,0 +1,8 @@
1
+ import { type PDPProvider } from '@filoz/synapse-core/warm-storage';
2
+ import { type UseQueryOptions } from '@tanstack/react-query';
3
+ export interface UseProvidersProps {
4
+ query?: Omit<UseQueryOptions<UseProvidersResult>, 'queryKey' | 'queryFn'>;
5
+ }
6
+ export type UseProvidersResult = PDPProvider[];
7
+ export declare function useProviders(props?: UseProvidersProps): import("@tanstack/react-query").UseQueryResult<UseProvidersResult, Error>;
8
+ //# sourceMappingURL=use-providers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-providers.d.ts","sourceRoot":"","sources":["../../../src/warm-storage/use-providers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,WAAW,EAAiB,MAAM,kCAAkC,CAAA;AAClF,OAAO,EAAE,KAAK,eAAe,EAAY,MAAM,uBAAuB,CAAA;AAGtE,MAAM,WAAW,iBAAiB;IAChC,KAAK,CAAC,EAAE,IAAI,CAAC,eAAe,CAAC,kBAAkB,CAAC,EAAE,UAAU,GAAG,SAAS,CAAC,CAAA;CAC1E;AAED,MAAM,MAAM,kBAAkB,GAAG,WAAW,EAAE,CAAA;AAE9C,wBAAgB,YAAY,CAAC,KAAK,CAAC,EAAE,iBAAiB,6EAUrD"}
@@ -0,0 +1,14 @@
1
+ import { readProviders } from '@filoz/synapse-core/warm-storage';
2
+ import { useQuery } from '@tanstack/react-query';
3
+ import { useConfig } from 'wagmi';
4
+ export function useProviders(props) {
5
+ const config = useConfig();
6
+ return useQuery({
7
+ ...props?.query,
8
+ queryKey: ['synapse-warm-storage-providers'],
9
+ queryFn: () => {
10
+ return readProviders(config.getClient());
11
+ },
12
+ });
13
+ }
14
+ //# sourceMappingURL=use-providers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-providers.js","sourceRoot":"","sources":["../../../src/warm-storage/use-providers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,aAAa,EAAE,MAAM,kCAAkC,CAAA;AAClF,OAAO,EAAwB,QAAQ,EAAE,MAAM,uBAAuB,CAAA;AACtE,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAQjC,MAAM,UAAU,YAAY,CAAC,KAAyB;IACpD,MAAM,MAAM,GAAG,SAAS,EAAE,CAAA;IAE1B,OAAO,QAAQ,CAAC;QACd,GAAG,KAAK,EAAE,KAAK;QACf,QAAQ,EAAE,CAAC,gCAAgC,CAAC;QAC5C,OAAO,EAAE,GAAG,EAAE;YACZ,OAAO,aAAa,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC,CAAA;QAC1C,CAAC;KACF,CAAC,CAAA;AACJ,CAAC"}
@@ -0,0 +1,8 @@
1
+ import { type ServicePriceResult } from '@filoz/synapse-core/warm-storage';
2
+ import { type UseQueryOptions } from '@tanstack/react-query';
3
+ export interface UseServicePriceProps {
4
+ query?: Omit<UseQueryOptions<ServicePriceResult>, 'queryKey' | 'queryFn'>;
5
+ }
6
+ export type UseServicePriceResult = ServicePriceResult;
7
+ export declare function useServicePrice(props?: UseServicePriceProps): import("@tanstack/react-query").UseQueryResult<ServicePriceResult, Error>;
8
+ //# sourceMappingURL=use-service-price.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-service-price.d.ts","sourceRoot":"","sources":["../../../src/warm-storage/use-service-price.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,kBAAkB,EAAgB,MAAM,kCAAkC,CAAA;AACxF,OAAO,EAAE,KAAK,eAAe,EAAY,MAAM,uBAAuB,CAAA;AAMtE,MAAM,WAAW,oBAAoB;IACnC,KAAK,CAAC,EAAE,IAAI,CAAC,eAAe,CAAC,kBAAkB,CAAC,EAAE,UAAU,GAAG,SAAS,CAAC,CAAA;CAC1E;AAKD,MAAM,MAAM,qBAAqB,GAAG,kBAAkB,CAAA;AAQtD,wBAAgB,eAAe,CAAC,KAAK,CAAC,EAAE,oBAAoB,6EAW3D"}
@@ -0,0 +1,15 @@
1
+ import { servicePrice } from '@filoz/synapse-core/warm-storage';
2
+ import { useQuery } from '@tanstack/react-query';
3
+ import { useConfig } from 'wagmi';
4
+ export function useServicePrice(props) {
5
+ const config = useConfig();
6
+ return useQuery({
7
+ ...props?.query,
8
+ queryKey: ['synapse-warm-storage-get-service-price'],
9
+ queryFn: async () => {
10
+ const result = await servicePrice(config.getClient());
11
+ return result;
12
+ },
13
+ });
14
+ }
15
+ //# sourceMappingURL=use-service-price.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-service-price.js","sourceRoot":"","sources":["../../../src/warm-storage/use-service-price.ts"],"names":[],"mappings":"AAAA,OAAO,EAA2B,YAAY,EAAE,MAAM,kCAAkC,CAAA;AACxF,OAAO,EAAwB,QAAQ,EAAE,MAAM,uBAAuB,CAAA;AACtE,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAoBjC,MAAM,UAAU,eAAe,CAAC,KAA4B;IAC1D,MAAM,MAAM,GAAG,SAAS,EAAE,CAAA;IAE1B,OAAO,QAAQ,CAAC;QACd,GAAG,KAAK,EAAE,KAAK;QACf,QAAQ,EAAE,CAAC,wCAAwC,CAAC;QACpD,OAAO,EAAE,KAAK,IAAI,EAAE;YAClB,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC,CAAA;YACrD,OAAO,MAAM,CAAA;QACf,CAAC;KACF,CAAC,CAAA;AACJ,CAAC"}
@@ -0,0 +1,14 @@
1
+ import type { AddPiecesSuccess } from '@filoz/synapse-core/curio';
2
+ import type { SessionKey } from '@filoz/synapse-core/session-key';
3
+ import { type MutateOptions } from '@tanstack/react-query';
4
+ export interface UseUploadProps {
5
+ onHash?: (hash: string) => void;
6
+ mutation?: Omit<MutateOptions<AddPiecesSuccess, Error, UseUploadVariables>, 'mutationFn'>;
7
+ }
8
+ export interface UseUploadVariables {
9
+ files: File[];
10
+ dataSetId: bigint;
11
+ sessionKey?: SessionKey;
12
+ }
13
+ export declare function useUpload(props: UseUploadProps): import("@tanstack/react-query").UseMutationResult<AddPiecesSuccess, Error, UseUploadVariables, unknown>;
14
+ //# sourceMappingURL=use-upload.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-upload.d.ts","sourceRoot":"","sources":["../../../src/warm-storage/use-upload.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAA;AAEjE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAA;AAEjE,OAAO,EAAE,KAAK,aAAa,EAA+B,MAAM,uBAAuB,CAAA;AAIvF,MAAM,WAAW,cAAc;IAI7B,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;IAC/B,QAAQ,CAAC,EAAE,IAAI,CAAC,aAAa,CAAC,gBAAgB,EAAE,KAAK,EAAE,kBAAkB,CAAC,EAAE,YAAY,CAAC,CAAA;CAC1F;AAED,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,IAAI,EAAE,CAAA;IACb,SAAS,EAAE,MAAM,CAAA;IACjB,UAAU,CAAC,EAAE,UAAU,CAAA;CACxB;AACD,wBAAgB,SAAS,CAAC,KAAK,EAAE,cAAc,2GAmC9C"}
@@ -0,0 +1,39 @@
1
+ import { getChain } from '@filoz/synapse-core/chains';
2
+ import * as Curio from '@filoz/synapse-core/curio';
3
+ import { upload } from '@filoz/synapse-core/warm-storage';
4
+ import { useMutation, useQueryClient } from '@tanstack/react-query';
5
+ import { useAccount, useChainId, useConfig } from 'wagmi';
6
+ import { getConnectorClient } from 'wagmi/actions';
7
+ export function useUpload(props) {
8
+ const config = useConfig();
9
+ const chainId = useChainId({ config });
10
+ const chain = getChain(chainId);
11
+ const account = useAccount({ config });
12
+ const queryClient = useQueryClient();
13
+ const client = config.getClient();
14
+ return useMutation({
15
+ ...props?.mutation,
16
+ mutationFn: async ({ files, dataSetId, sessionKey }) => {
17
+ let connectorClient = await getConnectorClient(config, {
18
+ account: account.address,
19
+ chainId,
20
+ });
21
+ if (sessionKey && (await sessionKey.isValid(connectorClient, 'AddPieces'))) {
22
+ connectorClient = sessionKey.client(chain, client.transport);
23
+ }
24
+ const pieces = await upload(connectorClient, {
25
+ dataSetId,
26
+ data: files,
27
+ });
28
+ props?.onHash?.(pieces.txHash);
29
+ const rsp = await Curio.pollForAddPiecesStatus({
30
+ statusUrl: pieces.statusUrl,
31
+ });
32
+ queryClient.invalidateQueries({
33
+ queryKey: ['synapse-warm-storage-data-sets', account.address],
34
+ });
35
+ return rsp;
36
+ },
37
+ });
38
+ }
39
+ //# sourceMappingURL=use-upload.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-upload.js","sourceRoot":"","sources":["../../../src/warm-storage/use-upload.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAA;AAErD,OAAO,KAAK,KAAK,MAAM,2BAA2B,CAAA;AAElD,OAAO,EAAE,MAAM,EAAE,MAAM,kCAAkC,CAAA;AACzD,OAAO,EAAsB,WAAW,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAA;AACvF,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AACzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAA;AAelD,MAAM,UAAU,SAAS,CAAC,KAAqB;IAC7C,MAAM,MAAM,GAAG,SAAS,EAAE,CAAA;IAC1B,MAAM,OAAO,GAAG,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC,CAAA;IACtC,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAA;IAC/B,MAAM,OAAO,GAAG,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC,CAAA;IACtC,MAAM,WAAW,GAAG,cAAc,EAAE,CAAA;IACpC,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,EAAE,CAAA;IAEjC,OAAO,WAAW,CAAC;QACjB,GAAG,KAAK,EAAE,QAAQ;QAClB,UAAU,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,UAAU,EAAsB,EAAE,EAAE;YACzE,IAAI,eAAe,GAAG,MAAM,kBAAkB,CAAC,MAAM,EAAE;gBACrD,OAAO,EAAE,OAAO,CAAC,OAAO;gBACxB,OAAO;aACR,CAAC,CAAA;YACF,IAAI,UAAU,IAAI,CAAC,MAAM,UAAU,CAAC,OAAO,CAAC,eAAe,EAAE,WAAW,CAAC,CAAC,EAAE,CAAC;gBAC3E,eAAe,GAAG,UAAU,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,SAAS,CAAC,CAAA;YAC9D,CAAC;YAED,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,eAAe,EAAE;gBAC3C,SAAS;gBACT,IAAI,EAAE,KAAK;aACZ,CAAC,CAAA;YAEF,KAAK,EAAE,MAAM,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;YAC9B,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,sBAAsB,CAAC;gBAC7C,SAAS,EAAE,MAAM,CAAC,SAAS;aAC5B,CAAC,CAAA;YAEF,WAAW,CAAC,iBAAiB,CAAC;gBAC5B,QAAQ,EAAE,CAAC,gCAAgC,EAAE,OAAO,CAAC,OAAO,CAAC;aAC9D,CAAC,CAAA;YACF,OAAO,GAAG,CAAA;QACZ,CAAC;KACF,CAAC,CAAA;AACJ,CAAC"}