@prb/effect-evm 1.0.0-beta.4 → 1.0.0-beta.6

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 (233) hide show
  1. package/DOCS.md +13 -0
  2. package/README.md +1 -0
  3. package/dist/constants/index.d.ts +0 -4
  4. package/dist/constants/index.d.ts.map +1 -1
  5. package/dist/constants/index.js +0 -4
  6. package/dist/constants/index.js.map +1 -1
  7. package/dist/contract/pipeline/internal/core.d.ts +2 -2
  8. package/dist/contract/pipeline/internal/core.d.ts.map +1 -1
  9. package/dist/contract/pipeline/internal/core.js.map +1 -1
  10. package/dist/contract/pipeline/internal/receipt.d.ts +2 -2
  11. package/dist/contract/pipeline/internal/receipt.d.ts.map +1 -1
  12. package/dist/contract/pipeline/internal/receipt.js +1 -1
  13. package/dist/contract/pipeline/internal/receipt.js.map +1 -1
  14. package/dist/contract/pipeline/service.d.ts +3 -3
  15. package/dist/contract/pipeline/service.d.ts.map +1 -1
  16. package/dist/contract/pipeline/service.js.map +1 -1
  17. package/dist/contract/pipeline/types.d.ts +2 -2
  18. package/dist/contract/pipeline/types.d.ts.map +1 -1
  19. package/dist/contract/pipeline/types.js.map +1 -1
  20. package/dist/contract/pipeline/write-and-track.js +1 -1
  21. package/dist/contract/pipeline/write-and-track.js.map +1 -1
  22. package/dist/contract/pipeline/write-and-wait.d.ts +1 -1
  23. package/dist/contract/pipeline/write-and-wait.d.ts.map +1 -1
  24. package/dist/core/errors/transaction.d.ts +7 -7
  25. package/dist/core/errors/transaction.d.ts.map +1 -1
  26. package/dist/core/errors/transaction.js +2 -2
  27. package/dist/core/errors/transaction.js.map +1 -1
  28. package/dist/core/errors/viem-mapper.d.ts +3 -3
  29. package/dist/core/errors/viem-mapper.d.ts.map +1 -1
  30. package/dist/core/errors/viem-mapper.js +3 -3
  31. package/dist/core/errors/viem-mapper.js.map +1 -1
  32. package/dist/deploy/service.d.ts +3 -3
  33. package/dist/deploy/service.d.ts.map +1 -1
  34. package/dist/deploy/service.js.map +1 -1
  35. package/dist/eip7702/errors.d.ts +3 -3
  36. package/dist/eip7702/errors.d.ts.map +1 -1
  37. package/dist/eip7702/errors.js +1 -1
  38. package/dist/eip7702/errors.js.map +1 -1
  39. package/dist/eip7702/service.d.ts +8 -8
  40. package/dist/eip7702/service.d.ts.map +1 -1
  41. package/dist/eip7702/service.js +2 -2
  42. package/dist/eip7702/service.js.map +1 -1
  43. package/dist/react-hooks/index.d.ts +0 -4
  44. package/dist/react-hooks/index.d.ts.map +1 -1
  45. package/dist/react-hooks/index.js +0 -4
  46. package/dist/react-hooks/index.js.map +1 -1
  47. package/dist/subscriptions/pending-tx.d.ts +1 -1
  48. package/dist/subscriptions/pending-tx.d.ts.map +1 -1
  49. package/dist/subscriptions/pending-tx.js +1 -1
  50. package/dist/subscriptions/pending-tx.js.map +1 -1
  51. package/dist/subscriptions/service.d.ts +2 -2
  52. package/dist/subscriptions/service.d.ts.map +1 -1
  53. package/dist/subscriptions/service.js +4 -4
  54. package/dist/subscriptions/service.js.map +1 -1
  55. package/dist/telemetry/tracer.d.ts +2 -2
  56. package/dist/telemetry/tracer.js +2 -2
  57. package/dist/telemetry/tracer.js.map +1 -1
  58. package/dist/testing-kit/mock-subscription-service.d.ts +2 -2
  59. package/dist/testing-kit/mock-subscription-service.d.ts.map +1 -1
  60. package/dist/testing-kit/mock-subscription-service.js +5 -5
  61. package/dist/testing-kit/mock-subscription-service.js.map +1 -1
  62. package/dist/testing-kit/mock-transfer-service.d.ts +3 -3
  63. package/dist/testing-kit/mock-transfer-service.d.ts.map +1 -1
  64. package/dist/testing-kit/mock-transfer-service.js.map +1 -1
  65. package/dist/transfer/service.d.ts +3 -3
  66. package/dist/transfer/service.d.ts.map +1 -1
  67. package/dist/transfer/service.js +3 -3
  68. package/dist/transfer/service.js.map +1 -1
  69. package/dist/tx/manager.d.ts +2 -2
  70. package/dist/tx/manager.d.ts.map +1 -1
  71. package/dist/tx/manager.js +5 -5
  72. package/dist/tx/manager.js.map +1 -1
  73. package/dist/tx/manager.test.integration.js +4 -4
  74. package/dist/tx/manager.test.integration.js.map +1 -1
  75. package/dist/tx/replacement.d.ts +3 -3
  76. package/dist/tx/replacement.d.ts.map +1 -1
  77. package/dist/tx/replacement.js +3 -3
  78. package/dist/tx/replacement.js.map +1 -1
  79. package/dist/tx/tracker.d.ts +6 -6
  80. package/dist/tx/tracker.d.ts.map +1 -1
  81. package/dist/tx/tracker.js +9 -9
  82. package/dist/tx/tracker.js.map +1 -1
  83. package/dist/types/params.d.ts +1 -1
  84. package/dist/types/params.d.ts.map +1 -1
  85. package/dist/types/params.js.map +1 -1
  86. package/dist/wallet/errors.d.ts +3 -3
  87. package/dist/wallet/errors.d.ts.map +1 -1
  88. package/dist/wallet/errors.js +1 -1
  89. package/dist/wallet/errors.js.map +1 -1
  90. package/dist/wallet/operations.d.ts +2 -2
  91. package/dist/wallet/operations.d.ts.map +1 -1
  92. package/dist/wallet/operations.js +2 -2
  93. package/dist/wallet/operations.js.map +1 -1
  94. package/dist/wallet/service.d.ts +2 -2
  95. package/dist/wallet/service.d.ts.map +1 -1
  96. package/dist/wallet/service.js.map +1 -1
  97. package/package.json +1 -6
  98. package/dist/react-hooks/safe-origins.d.ts +0 -8
  99. package/dist/react-hooks/safe-origins.d.ts.map +0 -1
  100. package/dist/react-hooks/safe-origins.js +0 -124
  101. package/dist/react-hooks/safe-origins.js.map +0 -1
  102. package/dist/react-hooks/use-is-host-safe-multisig.d.ts +0 -2
  103. package/dist/react-hooks/use-is-host-safe-multisig.d.ts.map +0 -1
  104. package/dist/react-hooks/use-is-host-safe-multisig.js +0 -16
  105. package/dist/react-hooks/use-is-host-safe-multisig.js.map +0 -1
  106. package/dist/react-hooks/use-is-wallet-safe-multisig.d.ts +0 -2
  107. package/dist/react-hooks/use-is-wallet-safe-multisig.d.ts.map +0 -1
  108. package/dist/react-hooks/use-is-wallet-safe-multisig.js +0 -24
  109. package/dist/react-hooks/use-is-wallet-safe-multisig.js.map +0 -1
  110. package/dist/react-hooks/use-safe-context.d.ts +0 -2
  111. package/dist/react-hooks/use-safe-context.d.ts.map +0 -1
  112. package/dist/react-hooks/use-safe-context.js +0 -41
  113. package/dist/react-hooks/use-safe-context.js.map +0 -1
  114. package/dist/safe/adapter.d.ts +0 -9
  115. package/dist/safe/adapter.d.ts.map +0 -1
  116. package/dist/safe/adapter.js +0 -13
  117. package/dist/safe/adapter.js.map +0 -1
  118. package/dist/safe/detection.d.ts +0 -26
  119. package/dist/safe/detection.d.ts.map +0 -1
  120. package/dist/safe/detection.js +0 -102
  121. package/dist/safe/detection.js.map +0 -1
  122. package/dist/safe/detection.test.integration.d.ts +0 -2
  123. package/dist/safe/detection.test.integration.d.ts.map +0 -1
  124. package/dist/safe/detection.test.integration.js +0 -92
  125. package/dist/safe/detection.test.integration.js.map +0 -1
  126. package/dist/safe/errors.d.ts +0 -79
  127. package/dist/safe/errors.d.ts.map +0 -1
  128. package/dist/safe/errors.js +0 -34
  129. package/dist/safe/errors.js.map +0 -1
  130. package/dist/safe/index.d.ts +0 -8
  131. package/dist/safe/index.d.ts.map +0 -1
  132. package/dist/safe/index.js +0 -6
  133. package/dist/safe/index.js.map +0 -1
  134. package/dist/safe/live.d.ts +0 -8
  135. package/dist/safe/live.d.ts.map +0 -1
  136. package/dist/safe/live.js +0 -250
  137. package/dist/safe/live.js.map +0 -1
  138. package/dist/safe/service.d.ts +0 -26
  139. package/dist/safe/service.d.ts.map +0 -1
  140. package/dist/safe/service.js +0 -4
  141. package/dist/safe/service.js.map +0 -1
  142. package/dist/safe/service.test.integration.d.ts +0 -2
  143. package/dist/safe/service.test.integration.d.ts.map +0 -1
  144. package/dist/safe/service.test.integration.js +0 -173
  145. package/dist/safe/service.test.integration.js.map +0 -1
  146. package/dist/safe/simulation/abis.d.ts +0 -73
  147. package/dist/safe/simulation/abis.d.ts.map +0 -1
  148. package/dist/safe/simulation/abis.js +0 -61
  149. package/dist/safe/simulation/abis.js.map +0 -1
  150. package/dist/safe/simulation/addresses.d.ts +0 -4
  151. package/dist/safe/simulation/addresses.d.ts.map +0 -1
  152. package/dist/safe/simulation/addresses.js +0 -54
  153. package/dist/safe/simulation/addresses.js.map +0 -1
  154. package/dist/safe/simulation/encoding.d.ts +0 -16
  155. package/dist/safe/simulation/encoding.d.ts.map +0 -1
  156. package/dist/safe/simulation/encoding.js +0 -36
  157. package/dist/safe/simulation/encoding.js.map +0 -1
  158. package/dist/safe/simulation/errors.d.ts +0 -56
  159. package/dist/safe/simulation/errors.d.ts.map +0 -1
  160. package/dist/safe/simulation/errors.js +0 -37
  161. package/dist/safe/simulation/errors.js.map +0 -1
  162. package/dist/safe/simulation/index.d.ts +0 -7
  163. package/dist/safe/simulation/index.d.ts.map +0 -1
  164. package/dist/safe/simulation/index.js +0 -6
  165. package/dist/safe/simulation/index.js.map +0 -1
  166. package/dist/safe/simulation/internal/calldata/calldata.d.ts +0 -5
  167. package/dist/safe/simulation/internal/calldata/calldata.d.ts.map +0 -1
  168. package/dist/safe/simulation/internal/calldata/calldata.js +0 -17
  169. package/dist/safe/simulation/internal/calldata/calldata.js.map +0 -1
  170. package/dist/safe/simulation/internal/calldata/index.d.ts +0 -2
  171. package/dist/safe/simulation/internal/calldata/index.d.ts.map +0 -1
  172. package/dist/safe/simulation/internal/calldata/index.js +0 -2
  173. package/dist/safe/simulation/internal/calldata/index.js.map +0 -1
  174. package/dist/safe/simulation/internal/contracts/contracts.d.ts +0 -5
  175. package/dist/safe/simulation/internal/contracts/contracts.d.ts.map +0 -1
  176. package/dist/safe/simulation/internal/contracts/contracts.js +0 -25
  177. package/dist/safe/simulation/internal/contracts/contracts.js.map +0 -1
  178. package/dist/safe/simulation/internal/contracts/index.d.ts +0 -2
  179. package/dist/safe/simulation/internal/contracts/index.d.ts.map +0 -1
  180. package/dist/safe/simulation/internal/contracts/index.js +0 -2
  181. package/dist/safe/simulation/internal/contracts/index.js.map +0 -1
  182. package/dist/safe/simulation/internal/evaluation/evaluation.d.ts +0 -6
  183. package/dist/safe/simulation/internal/evaluation/evaluation.d.ts.map +0 -1
  184. package/dist/safe/simulation/internal/evaluation/evaluation.js +0 -20
  185. package/dist/safe/simulation/internal/evaluation/evaluation.js.map +0 -1
  186. package/dist/safe/simulation/internal/evaluation/index.d.ts +0 -2
  187. package/dist/safe/simulation/internal/evaluation/index.d.ts.map +0 -1
  188. package/dist/safe/simulation/internal/evaluation/index.js +0 -2
  189. package/dist/safe/simulation/internal/evaluation/index.js.map +0 -1
  190. package/dist/safe/simulation/internal/execution/execution.d.ts +0 -9
  191. package/dist/safe/simulation/internal/execution/execution.d.ts.map +0 -1
  192. package/dist/safe/simulation/internal/execution/execution.js +0 -65
  193. package/dist/safe/simulation/internal/execution/execution.js.map +0 -1
  194. package/dist/safe/simulation/internal/execution/index.d.ts +0 -2
  195. package/dist/safe/simulation/internal/execution/index.d.ts.map +0 -1
  196. package/dist/safe/simulation/internal/execution/index.js +0 -2
  197. package/dist/safe/simulation/internal/execution/index.js.map +0 -1
  198. package/dist/safe/simulation/internal/limits/index.d.ts +0 -2
  199. package/dist/safe/simulation/internal/limits/index.d.ts.map +0 -1
  200. package/dist/safe/simulation/internal/limits/index.js +0 -2
  201. package/dist/safe/simulation/internal/limits/index.js.map +0 -1
  202. package/dist/safe/simulation/internal/limits/limits.d.ts +0 -5
  203. package/dist/safe/simulation/internal/limits/limits.d.ts.map +0 -1
  204. package/dist/safe/simulation/internal/limits/limits.js +0 -18
  205. package/dist/safe/simulation/internal/limits/limits.js.map +0 -1
  206. package/dist/safe/simulation/internal/types/index.d.ts +0 -2
  207. package/dist/safe/simulation/internal/types/index.d.ts.map +0 -1
  208. package/dist/safe/simulation/internal/types/index.js +0 -2
  209. package/dist/safe/simulation/internal/types/index.js.map +0 -1
  210. package/dist/safe/simulation/internal/types/types.d.ts +0 -11
  211. package/dist/safe/simulation/internal/types/types.d.ts.map +0 -1
  212. package/dist/safe/simulation/internal/types/types.js +0 -2
  213. package/dist/safe/simulation/internal/types/types.js.map +0 -1
  214. package/dist/safe/simulation/internal/validation/index.d.ts +0 -2
  215. package/dist/safe/simulation/internal/validation/index.d.ts.map +0 -1
  216. package/dist/safe/simulation/internal/validation/index.js +0 -2
  217. package/dist/safe/simulation/internal/validation/index.js.map +0 -1
  218. package/dist/safe/simulation/internal/validation/validation.d.ts +0 -5
  219. package/dist/safe/simulation/internal/validation/validation.d.ts.map +0 -1
  220. package/dist/safe/simulation/internal/validation/validation.js +0 -27
  221. package/dist/safe/simulation/internal/validation/validation.js.map +0 -1
  222. package/dist/safe/simulation/service.d.ts +0 -14
  223. package/dist/safe/simulation/service.d.ts.map +0 -1
  224. package/dist/safe/simulation/service.js +0 -25
  225. package/dist/safe/simulation/service.js.map +0 -1
  226. package/dist/safe/simulation/types.d.ts +0 -20
  227. package/dist/safe/simulation/types.d.ts.map +0 -1
  228. package/dist/safe/simulation/types.js +0 -2
  229. package/dist/safe/simulation/types.js.map +0 -1
  230. package/dist/safe/types.d.ts +0 -61
  231. package/dist/safe/types.d.ts.map +0 -1
  232. package/dist/safe/types.js +0 -2
  233. package/dist/safe/types.js.map +0 -1
@@ -1,79 +0,0 @@
1
- import { Schema } from "effect";
2
- declare const SafeSdkUnavailableError_base: Schema.TaggedErrorClass<SafeSdkUnavailableError, "SafeSdkUnavailableError", {
3
- readonly _tag: Schema.tag<"SafeSdkUnavailableError">;
4
- } & {
5
- cause: Schema.optional<typeof Schema.Unknown>;
6
- message: typeof Schema.String;
7
- }>;
8
- export declare class SafeSdkUnavailableError extends SafeSdkUnavailableError_base {
9
- }
10
- declare const NotInSafeAppContextError_base: Schema.TaggedErrorClass<NotInSafeAppContextError, "NotInSafeAppContextError", {
11
- readonly _tag: Schema.tag<"NotInSafeAppContextError">;
12
- } & {
13
- message: typeof Schema.String;
14
- }>;
15
- export declare class NotInSafeAppContextError extends NotInSafeAppContextError_base {
16
- }
17
- declare const SafeInfoUnavailableError_base: Schema.TaggedErrorClass<SafeInfoUnavailableError, "SafeInfoUnavailableError", {
18
- readonly _tag: Schema.tag<"SafeInfoUnavailableError">;
19
- } & {
20
- cause: Schema.optional<typeof Schema.Unknown>;
21
- message: typeof Schema.String;
22
- }>;
23
- export declare class SafeInfoUnavailableError extends SafeInfoUnavailableError_base {
24
- }
25
- declare const SafeSettingsError_base: Schema.TaggedErrorClass<SafeSettingsError, "SafeSettingsError", {
26
- readonly _tag: Schema.tag<"SafeSettingsError">;
27
- } & {
28
- cause: Schema.optional<typeof Schema.Unknown>;
29
- message: typeof Schema.String;
30
- }>;
31
- export declare class SafeSettingsError extends SafeSettingsError_base {
32
- }
33
- declare const SafeTxSubmissionError_base: Schema.TaggedErrorClass<SafeTxSubmissionError, "SafeTxSubmissionError", {
34
- readonly _tag: Schema.tag<"SafeTxSubmissionError">;
35
- } & {
36
- cause: Schema.optional<typeof Schema.Unknown>;
37
- message: typeof Schema.String;
38
- }>;
39
- export declare class SafeTxSubmissionError extends SafeTxSubmissionError_base {
40
- }
41
- declare const SafeTxLookupError_base: Schema.TaggedErrorClass<SafeTxLookupError, "SafeTxLookupError", {
42
- readonly _tag: Schema.tag<"SafeTxLookupError">;
43
- } & {
44
- cause: Schema.optional<typeof Schema.Unknown>;
45
- message: typeof Schema.String;
46
- retryable: typeof Schema.Boolean;
47
- safeTxHash: typeof Schema.String;
48
- }>;
49
- export declare class SafeTxLookupError extends SafeTxLookupError_base {
50
- }
51
- declare const SafeTxExecutionTimeoutError_base: Schema.TaggedErrorClass<SafeTxExecutionTimeoutError, "SafeTxExecutionTimeoutError", {
52
- readonly _tag: Schema.tag<"SafeTxExecutionTimeoutError">;
53
- } & {
54
- lastStatus: Schema.optional<typeof Schema.String>;
55
- message: typeof Schema.String;
56
- safeTxHash: typeof Schema.String;
57
- timeout: typeof Schema.Number;
58
- }>;
59
- export declare class SafeTxExecutionTimeoutError extends SafeTxExecutionTimeoutError_base {
60
- }
61
- declare const SignTypedDataError_base: Schema.TaggedErrorClass<SignTypedDataError, "SignTypedDataError", {
62
- readonly _tag: Schema.tag<"SignTypedDataError">;
63
- } & {
64
- cause: Schema.optional<typeof Schema.Unknown>;
65
- message: typeof Schema.String;
66
- }>;
67
- export declare class SignTypedDataError extends SignTypedDataError_base {
68
- }
69
- declare const OffchainSignatureTimeoutError_base: Schema.TaggedErrorClass<OffchainSignatureTimeoutError, "OffchainSignatureTimeoutError", {
70
- readonly _tag: Schema.tag<"OffchainSignatureTimeoutError">;
71
- } & {
72
- message: typeof Schema.String;
73
- messageHash: typeof Schema.String;
74
- timeout: typeof Schema.Number;
75
- }>;
76
- export declare class OffchainSignatureTimeoutError extends OffchainSignatureTimeoutError_base {
77
- }
78
- export {};
79
- //# sourceMappingURL=errors.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/safe/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;;;;;;;AAGhC,qBAAa,uBAAwB,SAAQ,4BAG5C;CAAG;;;;;;AAEJ,qBAAa,wBAAyB,SAAQ,6BAG7C;CAAG;;;;;;;AAGJ,qBAAa,wBAAyB,SAAQ,6BAG7C;CAAG;;;;;;;AAEJ,qBAAa,iBAAkB,SAAQ,sBAGtC;CAAG;;;;;;;AAEJ,qBAAa,qBAAsB,SAAQ,0BAG1C;CAAG;;;;;;;;;AAEJ,qBAAa,iBAAkB,SAAQ,sBAQtC;CAAG;;;;;;;;;AAEJ,qBAAa,2BAA4B,SAAQ,gCAQhD;CAAG;;;;;;;AAGJ,qBAAa,kBAAmB,SAAQ,uBAGvC;CAAG;;;;;;;;AAEJ,qBAAa,6BAA8B,SAAQ,kCAOlD;CAAG"}
@@ -1,34 +0,0 @@
1
- import { Schema } from "effect";
2
- export class SafeSdkUnavailableError extends Schema.TaggedError()("SafeSdkUnavailableError", { cause: Schema.optional(Schema.Unknown), message: Schema.String }) {
3
- }
4
- export class NotInSafeAppContextError extends Schema.TaggedError()("NotInSafeAppContextError", { message: Schema.String }) {
5
- }
6
- export class SafeInfoUnavailableError extends Schema.TaggedError()("SafeInfoUnavailableError", { cause: Schema.optional(Schema.Unknown), message: Schema.String }) {
7
- }
8
- export class SafeSettingsError extends Schema.TaggedError()("SafeSettingsError", { cause: Schema.optional(Schema.Unknown), message: Schema.String }) {
9
- }
10
- export class SafeTxSubmissionError extends Schema.TaggedError()("SafeTxSubmissionError", { cause: Schema.optional(Schema.Unknown), message: Schema.String }) {
11
- }
12
- export class SafeTxLookupError extends Schema.TaggedError()("SafeTxLookupError", {
13
- cause: Schema.optional(Schema.Unknown),
14
- message: Schema.String,
15
- retryable: Schema.Boolean,
16
- safeTxHash: Schema.String,
17
- }) {
18
- }
19
- export class SafeTxExecutionTimeoutError extends Schema.TaggedError()("SafeTxExecutionTimeoutError", {
20
- lastStatus: Schema.optional(Schema.String),
21
- message: Schema.String,
22
- safeTxHash: Schema.String,
23
- timeout: Schema.Number,
24
- }) {
25
- }
26
- export class SignTypedDataError extends Schema.TaggedError()("SignTypedDataError", { cause: Schema.optional(Schema.Unknown), message: Schema.String }) {
27
- }
28
- export class OffchainSignatureTimeoutError extends Schema.TaggedError()("OffchainSignatureTimeoutError", {
29
- message: Schema.String,
30
- messageHash: Schema.String,
31
- timeout: Schema.Number,
32
- }) {
33
- }
34
- //# sourceMappingURL=errors.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/safe/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAGhC,MAAM,OAAO,uBAAwB,SAAQ,MAAM,CAAC,WAAW,EAA2B,CACxF,yBAAyB,EACzB,EAAE,KAAK,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,CACnE;CAAG;AAEJ,MAAM,OAAO,wBAAyB,SAAQ,MAAM,CAAC,WAAW,EAA4B,CAC1F,0BAA0B,EAC1B,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,CAC3B;CAAG;AAGJ,MAAM,OAAO,wBAAyB,SAAQ,MAAM,CAAC,WAAW,EAA4B,CAC1F,0BAA0B,EAC1B,EAAE,KAAK,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,CACnE;CAAG;AAEJ,MAAM,OAAO,iBAAkB,SAAQ,MAAM,CAAC,WAAW,EAAqB,CAC5E,mBAAmB,EACnB,EAAE,KAAK,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,CACnE;CAAG;AAEJ,MAAM,OAAO,qBAAsB,SAAQ,MAAM,CAAC,WAAW,EAAyB,CACpF,uBAAuB,EACvB,EAAE,KAAK,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,CACnE;CAAG;AAEJ,MAAM,OAAO,iBAAkB,SAAQ,MAAM,CAAC,WAAW,EAAqB,CAC5E,mBAAmB,EACnB;IACE,KAAK,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC;IACtC,OAAO,EAAE,MAAM,CAAC,MAAM;IACtB,SAAS,EAAE,MAAM,CAAC,OAAO;IACzB,UAAU,EAAE,MAAM,CAAC,MAAM;CAC1B,CACF;CAAG;AAEJ,MAAM,OAAO,2BAA4B,SAAQ,MAAM,CAAC,WAAW,EAA+B,CAChG,6BAA6B,EAC7B;IACE,UAAU,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC;IAC1C,OAAO,EAAE,MAAM,CAAC,MAAM;IACtB,UAAU,EAAE,MAAM,CAAC,MAAM;IACzB,OAAO,EAAE,MAAM,CAAC,MAAM;CACvB,CACF;CAAG;AAGJ,MAAM,OAAO,kBAAmB,SAAQ,MAAM,CAAC,WAAW,EAAsB,CAC9E,oBAAoB,EACpB,EAAE,KAAK,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,CACnE;CAAG;AAEJ,MAAM,OAAO,6BAA8B,SAAQ,MAAM,CAAC,WAAW,EAAiC,CACpG,+BAA+B,EAC/B;IACE,OAAO,EAAE,MAAM,CAAC,MAAM;IACtB,WAAW,EAAE,MAAM,CAAC,MAAM;IAC1B,OAAO,EAAE,MAAM,CAAC,MAAM;CACvB,CACF;CAAG","sourcesContent":["import { Schema } from \"effect\";\n\n// SDK availability errors\nexport class SafeSdkUnavailableError extends Schema.TaggedError<SafeSdkUnavailableError>()(\n \"SafeSdkUnavailableError\",\n { cause: Schema.optional(Schema.Unknown), message: Schema.String }\n) {}\n\nexport class NotInSafeAppContextError extends Schema.TaggedError<NotInSafeAppContextError>()(\n \"NotInSafeAppContextError\",\n { message: Schema.String }\n) {}\n\n// Safe operation errors\nexport class SafeInfoUnavailableError extends Schema.TaggedError<SafeInfoUnavailableError>()(\n \"SafeInfoUnavailableError\",\n { cause: Schema.optional(Schema.Unknown), message: Schema.String }\n) {}\n\nexport class SafeSettingsError extends Schema.TaggedError<SafeSettingsError>()(\n \"SafeSettingsError\",\n { cause: Schema.optional(Schema.Unknown), message: Schema.String }\n) {}\n\nexport class SafeTxSubmissionError extends Schema.TaggedError<SafeTxSubmissionError>()(\n \"SafeTxSubmissionError\",\n { cause: Schema.optional(Schema.Unknown), message: Schema.String }\n) {}\n\nexport class SafeTxLookupError extends Schema.TaggedError<SafeTxLookupError>()(\n \"SafeTxLookupError\",\n {\n cause: Schema.optional(Schema.Unknown),\n message: Schema.String,\n retryable: Schema.Boolean,\n safeTxHash: Schema.String,\n }\n) {}\n\nexport class SafeTxExecutionTimeoutError extends Schema.TaggedError<SafeTxExecutionTimeoutError>()(\n \"SafeTxExecutionTimeoutError\",\n {\n lastStatus: Schema.optional(Schema.String),\n message: Schema.String,\n safeTxHash: Schema.String,\n timeout: Schema.Number,\n }\n) {}\n\n// Signing errors\nexport class SignTypedDataError extends Schema.TaggedError<SignTypedDataError>()(\n \"SignTypedDataError\",\n { cause: Schema.optional(Schema.Unknown), message: Schema.String }\n) {}\n\nexport class OffchainSignatureTimeoutError extends Schema.TaggedError<OffchainSignatureTimeoutError>()(\n \"OffchainSignatureTimeoutError\",\n {\n message: Schema.String,\n messageHash: Schema.String,\n timeout: Schema.Number,\n }\n) {}\n"]}
@@ -1,8 +0,0 @@
1
- export type { SafeDetectionParams, SafeDetectionResult } from "./detection.js";
2
- export { isSafeMultisig, SafeDetectionError } from "./detection.js";
3
- export { NotInSafeAppContextError, OffchainSignatureTimeoutError, SafeInfoUnavailableError, SafeSdkUnavailableError, SafeSettingsError, SafeTxExecutionTimeoutError, SafeTxLookupError, SafeTxSubmissionError, SignTypedDataError, } from "./errors.js";
4
- export { type SafeAppsServiceConfig, SafeAppsServiceLive } from "./live.js";
5
- export { SafeAppsService, type SafeAppsServiceShape } from "./service.js";
6
- export * from "./simulation/index.js";
7
- export type { EIP712TypedData, OffchainSignaturePolicy, OffchainSignatureResult, SafeInfo, SafeTransaction, SafeTxResult, SafeTxSubmission, SafeWaitPolicy, SignTypedDataResult, } from "./types.js";
8
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/safe/index.ts"],"names":[],"mappings":"AAEA,YAAY,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAE/E,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAGpE,OAAO,EACL,wBAAwB,EACxB,6BAA6B,EAC7B,wBAAwB,EACxB,uBAAuB,EACvB,iBAAiB,EACjB,2BAA2B,EAC3B,iBAAiB,EACjB,qBAAqB,EACrB,kBAAkB,GACnB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,KAAK,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAC5E,OAAO,EAAE,eAAe,EAAE,KAAK,oBAAoB,EAAE,MAAM,cAAc,CAAC;AAE1E,cAAc,uBAAuB,CAAC;AAEtC,YAAY,EACV,eAAe,EACf,uBAAuB,EACvB,uBAAuB,EACvB,QAAQ,EACR,eAAe,EACf,YAAY,EACZ,gBAAgB,EAChB,cAAc,EACd,mBAAmB,GACpB,MAAM,YAAY,CAAC"}
@@ -1,6 +0,0 @@
1
- export { isSafeMultisig, SafeDetectionError } from "./detection.js";
2
- export { NotInSafeAppContextError, OffchainSignatureTimeoutError, SafeInfoUnavailableError, SafeSdkUnavailableError, SafeSettingsError, SafeTxExecutionTimeoutError, SafeTxLookupError, SafeTxSubmissionError, SignTypedDataError, } from "./errors.js";
3
- export { SafeAppsServiceLive } from "./live.js";
4
- export { SafeAppsService } from "./service.js";
5
- export * from "./simulation/index.js";
6
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/safe/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAGpE,OAAO,EACL,wBAAwB,EACxB,6BAA6B,EAC7B,wBAAwB,EACxB,uBAAuB,EACvB,iBAAiB,EACjB,2BAA2B,EAC3B,iBAAiB,EACjB,qBAAqB,EACrB,kBAAkB,GACnB,MAAM,aAAa,CAAC;AACrB,OAAO,EAA8B,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAC5E,OAAO,EAAE,eAAe,EAA6B,MAAM,cAAc,CAAC;AAE1E,cAAc,uBAAuB,CAAC","sourcesContent":["// Service and layer\n\nexport type { SafeDetectionParams, SafeDetectionResult } from \"./detection.js\";\n// Detection\nexport { isSafeMultisig, SafeDetectionError } from \"./detection.js\";\n\n// Errors\nexport {\n NotInSafeAppContextError,\n OffchainSignatureTimeoutError,\n SafeInfoUnavailableError,\n SafeSdkUnavailableError,\n SafeSettingsError,\n SafeTxExecutionTimeoutError,\n SafeTxLookupError,\n SafeTxSubmissionError,\n SignTypedDataError,\n} from \"./errors.js\";\nexport { type SafeAppsServiceConfig, SafeAppsServiceLive } from \"./live.js\";\nexport { SafeAppsService, type SafeAppsServiceShape } from \"./service.js\";\n// Simulation\nexport * from \"./simulation/index.js\";\n// Types\nexport type {\n EIP712TypedData,\n OffchainSignaturePolicy,\n OffchainSignatureResult,\n SafeInfo,\n SafeTransaction,\n SafeTxResult,\n SafeTxSubmission,\n SafeWaitPolicy,\n SignTypedDataResult,\n} from \"./types.js\";\n"]}
@@ -1,8 +0,0 @@
1
- import { Layer } from "effect";
2
- import { TxManager } from "../tx/index.js";
3
- import type { SafeAppsSdkConfig } from "./adapter.js";
4
- import { NotInSafeAppContextError } from "./errors.js";
5
- import { SafeAppsService } from "./service.js";
6
- export type SafeAppsServiceConfig = SafeAppsSdkConfig;
7
- export declare const SafeAppsServiceLive: (config?: SafeAppsServiceConfig) => Layer.Layer<SafeAppsService, import("./errors.js").SafeSdkUnavailableError | NotInSafeAppContextError, TxManager>;
8
- //# sourceMappingURL=live.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"live.d.ts","sourceRoot":"","sources":["../../src/safe/live.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,KAAK,EAAe,MAAM,QAAQ,CAAC;AAU9D,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAEtD,OAAO,EACL,wBAAwB,EAQzB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAG/C,MAAM,MAAM,qBAAqB,GAAG,iBAAiB,CAAC;AA+CtD,eAAO,MAAM,mBAAmB,GAAI,SAAS,qBAAqB,sHAgX/D,CAAC"}
package/dist/safe/live.js DELETED
@@ -1,250 +0,0 @@
1
- import { Duration, Effect, Layer, Option, Ref } from "effect";
2
- import { isAddress, isHash, isHex } from "viem";
3
- import { SAFE_EXECUTION_TIMEOUT, SAFE_POLL_INTERVAL, SAFE_SIGNATURE_POLL_INTERVAL, SAFE_SIGNATURE_TIMEOUT, } from "../constants/index.js";
4
- import { SpanNames } from "../telemetry/index.js";
5
- import { TxManager } from "../tx/index.js";
6
- import { loadSafeSdk } from "./adapter.js";
7
- import { NotInSafeAppContextError, OffchainSignatureTimeoutError, SafeInfoUnavailableError, SafeSettingsError, SafeTxExecutionTimeoutError, SafeTxLookupError, SafeTxSubmissionError, SignTypedDataError, } from "./errors.js";
8
- import { SafeAppsService } from "./service.js";
9
- const validateAddress = (value, context) => isAddress(value)
10
- ? Effect.succeed(value)
11
- : Effect.fail(new SafeTxLookupError({
12
- message: `Invalid address from SDK in ${context}: ${value}`,
13
- retryable: false,
14
- safeTxHash: "",
15
- }));
16
- const validateHash = (value, context) => isHash(value)
17
- ? Effect.succeed(value)
18
- : Effect.fail(new SafeTxLookupError({
19
- message: `Invalid hash from SDK in ${context}: ${value}`,
20
- retryable: false,
21
- safeTxHash: "",
22
- }));
23
- const validateHex = (value, context) => isHex(value)
24
- ? Effect.succeed(value)
25
- : Effect.fail(new SafeTxLookupError({
26
- message: `Invalid hex from SDK in ${context}: ${value}`,
27
- retryable: false,
28
- safeTxHash: "",
29
- }));
30
- export const SafeAppsServiceLive = (config) => Layer.scoped(SafeAppsService, Effect.gen(function* () {
31
- if (typeof window === "undefined") {
32
- return yield* Effect.fail(new NotInSafeAppContextError({
33
- message: "Safe Apps SDK requires a browser environment (window is undefined)",
34
- }));
35
- }
36
- const sdk = yield* loadSafeSdk(config);
37
- const infoRef = yield* Ref.make(null);
38
- const txManager = yield* TxManager;
39
- const getInfo = () => Effect.gen(function* () {
40
- const cached = yield* Ref.get(infoRef);
41
- if (cached) {
42
- return cached;
43
- }
44
- const info = yield* Effect.tryPromise({
45
- catch: (cause) => new SafeInfoUnavailableError({
46
- cause,
47
- message: "Failed to get Safe info from SDK",
48
- }),
49
- try: () => sdk.safe.getInfo(),
50
- });
51
- const safeAddress = yield* validateAddress(info.safeAddress, "getInfo").pipe(Effect.catchTag("SafeTxLookupError", (e) => Effect.fail(new SafeInfoUnavailableError({ cause: e, message: e.message }))));
52
- const safeInfo = {
53
- chainId: info.chainId,
54
- safeAddress,
55
- };
56
- yield* Ref.set(infoRef, safeInfo);
57
- return safeInfo;
58
- }).pipe(Effect.withSpan(SpanNames.SAFE_GET_INFO));
59
- const sendTransactions = (txs, params) => Effect.gen(function* () {
60
- const sdkTxs = txs.map((tx) => ({
61
- data: tx.data,
62
- to: tx.to,
63
- value: tx.value?.toString() ?? "0",
64
- }));
65
- const result = yield* Effect.tryPromise({
66
- catch: (cause) => new SafeTxSubmissionError({
67
- cause,
68
- message: "Failed to submit transactions to Safe",
69
- }),
70
- try: () => sdk.txs.send({ params, txs: sdkTxs }),
71
- });
72
- const safeTxHash = yield* validateHash(result.safeTxHash, "sendTransactions").pipe(Effect.catchTag("SafeTxLookupError", (e) => Effect.fail(new SafeTxSubmissionError({ cause: e, message: e.message }))));
73
- const info = yield* getInfo();
74
- return {
75
- chainId: info.chainId,
76
- safeAddress: info.safeAddress,
77
- safeTxHash,
78
- };
79
- })
80
- .pipe(Effect.catchTag("SafeInfoUnavailableError", (error) => Effect.fail(new SafeTxSubmissionError({
81
- cause: error,
82
- message: "Failed to get Safe info after transaction submission",
83
- }))))
84
- .pipe(Effect.withSpan(SpanNames.SAFE_SEND_TXS, {
85
- attributes: { txCount: txs.length },
86
- }));
87
- const getTransaction = (safeTxHash) => Effect.gen(function* () {
88
- const tx = yield* Effect.tryPromise({
89
- catch: (cause) => new SafeTxLookupError({
90
- cause,
91
- message: `Failed to lookup Safe transaction ${safeTxHash}`,
92
- retryable: true,
93
- safeTxHash,
94
- }),
95
- try: () => sdk.txs.getBySafeTxHash(safeTxHash),
96
- });
97
- const txHash = tx.txHash ? yield* validateHash(tx.txHash, "getTransaction") : null;
98
- return {
99
- status: tx.txStatus ?? "AWAITING_CONFIRMATIONS",
100
- txHash: txHash ? Option.some(txHash) : Option.none(),
101
- };
102
- }).pipe(Effect.withSpan(SpanNames.SAFE_GET_TX, {
103
- attributes: { safeTxHash },
104
- }));
105
- const waitForTransactionReceipt = (safeTxHash, policy = {}) => Effect.gen(function* () {
106
- const info = yield* getInfo();
107
- const pollInterval = policy.pollInterval ?? SAFE_POLL_INTERVAL;
108
- const executionTimeout = policy.executionTimeout ?? SAFE_EXECUTION_TIMEOUT;
109
- const onchainHash = yield* Effect.gen(function* () {
110
- let lastStatus = "AWAITING_CONFIRMATIONS";
111
- let found = null;
112
- const pollEffect = Effect.gen(function* () {
113
- while (found === null) {
114
- const tx = yield* getTransaction(safeTxHash);
115
- lastStatus = tx.status;
116
- if (Option.isSome(tx.txHash)) {
117
- found = tx.txHash.value;
118
- }
119
- else {
120
- yield* Effect.sleep(Duration.millis(pollInterval));
121
- }
122
- }
123
- });
124
- yield* pollEffect.pipe(Effect.timeout(Duration.millis(executionTimeout)), Effect.catchTag("TimeoutException", () => Effect.fail(new SafeTxExecutionTimeoutError({
125
- lastStatus,
126
- message: `Safe transaction ${safeTxHash} not executed within ${executionTimeout}ms (last status: ${lastStatus})`,
127
- safeTxHash,
128
- timeout: executionTimeout,
129
- }))));
130
- if (found === null) {
131
- return yield* Effect.fail(new SafeTxExecutionTimeoutError({
132
- lastStatus,
133
- message: `Safe transaction ${safeTxHash} not executed within timeout`,
134
- safeTxHash,
135
- timeout: executionTimeout,
136
- }));
137
- }
138
- return found;
139
- });
140
- const receipt = yield* txManager
141
- .waitForReceipt(info.chainId, onchainHash, policy.receiptPolicy)
142
- .pipe(Effect.catchTag("TransactionReplacedError", (error) => Effect.fail(new SafeTxLookupError({
143
- cause: error,
144
- message: `Transaction was replaced: ${error.message}`,
145
- retryable: false,
146
- safeTxHash,
147
- }))));
148
- return {
149
- chainId: info.chainId,
150
- onchainHash,
151
- receipt,
152
- safeAddress: info.safeAddress,
153
- safeTxHash,
154
- };
155
- })
156
- .pipe(Effect.catchTag("SafeInfoUnavailableError", (error) => Effect.fail(new SafeTxLookupError({
157
- cause: error,
158
- message: "Failed to get Safe info for receipt waiting",
159
- retryable: true,
160
- safeTxHash,
161
- }))))
162
- .pipe(Effect.withSpan(SpanNames.SAFE_WAIT_RECEIPT, {
163
- attributes: { safeTxHash },
164
- }));
165
- const signTypedData = (typedData) => Effect.gen(function* () {
166
- const result = yield* Effect.tryPromise({
167
- catch: (cause) => new SignTypedDataError({
168
- cause,
169
- message: "Failed to sign typed data via Safe",
170
- }),
171
- try: () => sdk.txs.signTypedMessage(typedData),
172
- });
173
- if ("messageHash" in result && result.messageHash) {
174
- const messageHash = yield* validateHex(result.messageHash, "signTypedData").pipe(Effect.catchTag("SafeTxLookupError", (e) => Effect.fail(new SignTypedDataError({ cause: e, message: e.message }))));
175
- return { _tag: "Offchain", messageHash };
176
- }
177
- const onchainResult = result;
178
- const safeTxHash = yield* validateHash(onchainResult.safeTxHash, "signTypedData").pipe(Effect.catchTag("SafeTxLookupError", (e) => Effect.fail(new SignTypedDataError({ cause: e, message: e.message }))));
179
- return { _tag: "Onchain", safeTxHash };
180
- }).pipe(Effect.withSpan(SpanNames.SAFE_SIGN_TYPED_DATA));
181
- const getOffchainSignature = (messageHash) => Effect.gen(function* () {
182
- const sig = yield* Effect.tryPromise({
183
- catch: (cause) => new SafeTxLookupError({
184
- cause,
185
- message: `Failed to get off-chain signature for ${messageHash}`,
186
- retryable: true,
187
- safeTxHash: messageHash,
188
- }),
189
- try: () => sdk.safe.getOffChainSignature(messageHash),
190
- });
191
- if (!sig || sig === "" || sig === "0x") {
192
- return Option.none();
193
- }
194
- const validatedSig = yield* validateHex(sig, "getOffchainSignature");
195
- return Option.some(validatedSig);
196
- }).pipe(Effect.withSpan(SpanNames.SAFE_GET_OFFCHAIN_SIG, {
197
- attributes: { messageHash },
198
- }));
199
- const pollOffchainSignature = (messageHash, policy = {}) => Effect.gen(function* () {
200
- const pollInterval = policy.pollInterval ?? SAFE_SIGNATURE_POLL_INTERVAL;
201
- const timeout = policy.timeout ?? SAFE_SIGNATURE_TIMEOUT;
202
- let found = null;
203
- const pollEffect = Effect.gen(function* () {
204
- while (found === null) {
205
- const sig = yield* getOffchainSignature(messageHash);
206
- if (Option.isSome(sig)) {
207
- found = sig.value;
208
- }
209
- else {
210
- yield* Effect.sleep(Duration.millis(pollInterval));
211
- }
212
- }
213
- });
214
- yield* pollEffect.pipe(Effect.timeout(Duration.millis(timeout)), Effect.catchTag("TimeoutException", () => Effect.fail(new OffchainSignatureTimeoutError({
215
- message: `Off-chain signature for ${messageHash} not available within ${timeout}ms`,
216
- messageHash,
217
- timeout,
218
- }))));
219
- if (found === null) {
220
- return yield* Effect.fail(new OffchainSignatureTimeoutError({
221
- message: `Off-chain signature for ${messageHash} not available within timeout`,
222
- messageHash,
223
- timeout,
224
- }));
225
- }
226
- return { messageHash, signature: found };
227
- }).pipe(Effect.withSpan(SpanNames.SAFE_POLL_OFFCHAIN_SIG, {
228
- attributes: { messageHash },
229
- }));
230
- const enableOffchainSigning = () => Effect.tryPromise({
231
- catch: (cause) => new SafeSettingsError({
232
- cause,
233
- message: "Failed to enable off-chain signing mode",
234
- }),
235
- try: () => sdk.eth.setSafeSettings([{ offChainSigning: true }]),
236
- })
237
- .pipe(Effect.asVoid)
238
- .pipe(Effect.withSpan(SpanNames.SAFE_ENABLE_OFFCHAIN));
239
- return SafeAppsService.of({
240
- enableOffchainSigning,
241
- getInfo,
242
- getOffchainSignature,
243
- getTransaction,
244
- pollOffchainSignature,
245
- sendTransactions,
246
- signTypedData,
247
- waitForTransactionReceipt,
248
- });
249
- }));
250
- //# sourceMappingURL=live.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"live.js","sourceRoot":"","sources":["../../src/safe/live.ts"],"names":[],"mappings":"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","sourcesContent":["import { Duration, Effect, Layer, Option, Ref } from \"effect\";\nimport type { Address, Hash, Hex } from \"viem\";\nimport { isAddress, isHash, isHex } from \"viem\";\nimport {\n SAFE_EXECUTION_TIMEOUT,\n SAFE_POLL_INTERVAL,\n SAFE_SIGNATURE_POLL_INTERVAL,\n SAFE_SIGNATURE_TIMEOUT,\n} from \"@/src/constants/index.js\";\nimport { SpanNames } from \"@/src/telemetry/index.js\";\nimport { TxManager } from \"@/src/tx/index.js\";\nimport type { SafeAppsSdkConfig } from \"./adapter.js\";\nimport { loadSafeSdk } from \"./adapter.js\";\nimport {\n NotInSafeAppContextError,\n OffchainSignatureTimeoutError,\n SafeInfoUnavailableError,\n SafeSettingsError,\n SafeTxExecutionTimeoutError,\n SafeTxLookupError,\n SafeTxSubmissionError,\n SignTypedDataError,\n} from \"./errors.js\";\nimport { SafeAppsService } from \"./service.js\";\nimport type { EIP712TypedData, SafeInfo } from \"./types.js\";\n\nexport type SafeAppsServiceConfig = SafeAppsSdkConfig;\n\n/**\n * Validate that a string is a valid Ethereum address, failing with context if not.\n */\nconst validateAddress = (\n value: string,\n context: string\n): Effect.Effect<Address, SafeTxLookupError> =>\n isAddress(value)\n ? Effect.succeed(value)\n : Effect.fail(\n new SafeTxLookupError({\n message: `Invalid address from SDK in ${context}: ${value}`,\n retryable: false,\n safeTxHash: \"\",\n })\n );\n\n/**\n * Validate that a string is a valid transaction hash, failing with context if not.\n */\nconst validateHash = (value: string, context: string): Effect.Effect<Hash, SafeTxLookupError> =>\n isHash(value)\n ? Effect.succeed(value)\n : Effect.fail(\n new SafeTxLookupError({\n message: `Invalid hash from SDK in ${context}: ${value}`,\n retryable: false,\n safeTxHash: \"\",\n })\n );\n\n/**\n * Validate that a string is valid hex, failing with context if not.\n */\nconst validateHex = (value: string, context: string): Effect.Effect<Hex, SafeTxLookupError> =>\n isHex(value)\n ? Effect.succeed(value)\n : Effect.fail(\n new SafeTxLookupError({\n message: `Invalid hex from SDK in ${context}: ${value}`,\n retryable: false,\n safeTxHash: \"\",\n })\n );\n\nexport const SafeAppsServiceLive = (config?: SafeAppsServiceConfig) =>\n Layer.scoped(\n SafeAppsService,\n Effect.gen(function* () {\n // SSR guard - Safe Apps SDK requires browser environment\n if (typeof window === \"undefined\") {\n return yield* Effect.fail(\n new NotInSafeAppContextError({\n message: \"Safe Apps SDK requires a browser environment (window is undefined)\",\n })\n );\n }\n\n // Load SDK dynamically to keep it optional\n const sdk = yield* loadSafeSdk(config);\n\n // Cache Safe info after first fetch\n const infoRef = yield* Ref.make<SafeInfo | null>(null);\n\n // Get TxManager for receipt waiting\n const txManager = yield* TxManager;\n\n // --- Service method implementations ---\n\n const getInfo = () =>\n Effect.gen(function* () {\n const cached = yield* Ref.get(infoRef);\n if (cached) {\n return cached;\n }\n\n const info = yield* Effect.tryPromise({\n catch: (cause) =>\n new SafeInfoUnavailableError({\n cause,\n message: \"Failed to get Safe info from SDK\",\n }),\n try: () => sdk.safe.getInfo(),\n });\n\n const safeAddress = yield* validateAddress(info.safeAddress, \"getInfo\").pipe(\n Effect.catchTag(\"SafeTxLookupError\", (e) =>\n Effect.fail(new SafeInfoUnavailableError({ cause: e, message: e.message }))\n )\n );\n\n const safeInfo: SafeInfo = {\n chainId: info.chainId,\n safeAddress,\n };\n\n yield* Ref.set(infoRef, safeInfo);\n return safeInfo;\n }).pipe(Effect.withSpan(SpanNames.SAFE_GET_INFO));\n\n const sendTransactions = (\n txs: readonly { to: Address; data: Hex; value?: bigint }[],\n params?: { safeTxGas?: number }\n ) =>\n Effect.gen(function* () {\n // Convert bigint values to strings (Safe SDK expects decimal strings)\n const sdkTxs = txs.map((tx) => ({\n data: tx.data,\n to: tx.to,\n value: tx.value?.toString() ?? \"0\",\n }));\n\n const result = yield* Effect.tryPromise({\n catch: (cause) =>\n new SafeTxSubmissionError({\n cause,\n message: \"Failed to submit transactions to Safe\",\n }),\n try: () => sdk.txs.send({ params, txs: sdkTxs }),\n });\n\n const safeTxHash = yield* validateHash(result.safeTxHash, \"sendTransactions\").pipe(\n Effect.catchTag(\"SafeTxLookupError\", (e) =>\n Effect.fail(new SafeTxSubmissionError({ cause: e, message: e.message }))\n )\n );\n\n const info = yield* getInfo();\n\n return {\n chainId: info.chainId,\n safeAddress: info.safeAddress,\n safeTxHash,\n };\n })\n .pipe(\n Effect.catchTag(\"SafeInfoUnavailableError\", (error) =>\n Effect.fail(\n new SafeTxSubmissionError({\n cause: error,\n message: \"Failed to get Safe info after transaction submission\",\n })\n )\n )\n )\n .pipe(\n Effect.withSpan(SpanNames.SAFE_SEND_TXS, {\n attributes: { txCount: txs.length },\n })\n );\n\n const getTransaction = (safeTxHash: Hash) =>\n Effect.gen(function* () {\n const tx = yield* Effect.tryPromise({\n catch: (cause) =>\n new SafeTxLookupError({\n cause,\n message: `Failed to lookup Safe transaction ${safeTxHash}`,\n retryable: true,\n safeTxHash,\n }),\n try: () => sdk.txs.getBySafeTxHash(safeTxHash),\n });\n\n const txHash = tx.txHash ? yield* validateHash(tx.txHash, \"getTransaction\") : null;\n\n return {\n status: tx.txStatus ?? \"AWAITING_CONFIRMATIONS\",\n txHash: txHash ? Option.some(txHash) : Option.none<Hash>(),\n };\n }).pipe(\n Effect.withSpan(SpanNames.SAFE_GET_TX, {\n attributes: { safeTxHash },\n })\n );\n\n const waitForTransactionReceipt = (\n safeTxHash: Hash,\n policy: {\n pollInterval?: number;\n executionTimeout?: number;\n receiptPolicy?: { receiptTimeout?: number; pollingInterval?: number };\n } = {}\n ) =>\n Effect.gen(function* () {\n const info = yield* getInfo();\n const pollInterval = policy.pollInterval ?? SAFE_POLL_INTERVAL;\n const executionTimeout = policy.executionTimeout ?? SAFE_EXECUTION_TIMEOUT;\n\n // Poll Safe gateway until txHash appears\n // Effect.sleep is interruptible, so this loop respects Effect's interruption model\n const onchainHash = yield* Effect.gen(function* () {\n let lastStatus = \"AWAITING_CONFIRMATIONS\";\n let found: Hash | null = null;\n\n const pollEffect = Effect.gen(function* () {\n while (found === null) {\n const tx = yield* getTransaction(safeTxHash);\n lastStatus = tx.status;\n\n if (Option.isSome(tx.txHash)) {\n found = tx.txHash.value;\n } else {\n // Sleep is interruptible - key for Effect's interruption model\n yield* Effect.sleep(Duration.millis(pollInterval));\n }\n }\n });\n\n yield* pollEffect.pipe(\n Effect.timeout(Duration.millis(executionTimeout)),\n Effect.catchTag(\"TimeoutException\", () =>\n Effect.fail(\n new SafeTxExecutionTimeoutError({\n lastStatus,\n message: `Safe transaction ${safeTxHash} not executed within ${executionTimeout}ms (last status: ${lastStatus})`,\n safeTxHash,\n timeout: executionTimeout,\n })\n )\n )\n );\n\n if (found === null) {\n return yield* Effect.fail(\n new SafeTxExecutionTimeoutError({\n lastStatus,\n message: `Safe transaction ${safeTxHash} not executed within timeout`,\n safeTxHash,\n timeout: executionTimeout,\n })\n );\n }\n return found;\n });\n\n // Delegate to TxManager for on-chain receipt\n const receipt = yield* txManager\n .waitForReceipt(info.chainId, onchainHash, policy.receiptPolicy)\n .pipe(\n Effect.catchTag(\"TransactionReplacedError\", (error) =>\n Effect.fail(\n new SafeTxLookupError({\n cause: error,\n message: `Transaction was replaced: ${error.message}`,\n retryable: false,\n safeTxHash,\n })\n )\n )\n );\n\n return {\n chainId: info.chainId,\n onchainHash,\n receipt,\n safeAddress: info.safeAddress,\n safeTxHash,\n };\n })\n .pipe(\n Effect.catchTag(\"SafeInfoUnavailableError\", (error) =>\n Effect.fail(\n new SafeTxLookupError({\n cause: error,\n message: \"Failed to get Safe info for receipt waiting\",\n retryable: true,\n safeTxHash,\n })\n )\n )\n )\n .pipe(\n Effect.withSpan(SpanNames.SAFE_WAIT_RECEIPT, {\n attributes: { safeTxHash },\n })\n );\n\n const signTypedData = (typedData: EIP712TypedData) =>\n Effect.gen(function* () {\n const result = yield* Effect.tryPromise({\n catch: (cause) =>\n new SignTypedDataError({\n cause,\n message: \"Failed to sign typed data via Safe\",\n }),\n try: () =>\n sdk.txs.signTypedMessage(typedData as Parameters<typeof sdk.txs.signTypedMessage>[0]),\n });\n\n // SDK returns { safeTxHash } for on-chain or { messageHash } for off-chain\n if (\"messageHash\" in result && result.messageHash) {\n const messageHash = yield* validateHex(result.messageHash, \"signTypedData\").pipe(\n Effect.catchTag(\"SafeTxLookupError\", (e) =>\n Effect.fail(new SignTypedDataError({ cause: e, message: e.message }))\n )\n );\n return { _tag: \"Offchain\" as const, messageHash };\n }\n\n // Type assertion needed because TypeScript can't narrow SignMessageResponse properly\n const onchainResult = result as { safeTxHash: string };\n const safeTxHash = yield* validateHash(onchainResult.safeTxHash, \"signTypedData\").pipe(\n Effect.catchTag(\"SafeTxLookupError\", (e) =>\n Effect.fail(new SignTypedDataError({ cause: e, message: e.message }))\n )\n );\n return { _tag: \"Onchain\" as const, safeTxHash };\n }).pipe(Effect.withSpan(SpanNames.SAFE_SIGN_TYPED_DATA));\n\n const getOffchainSignature = (messageHash: Hex) =>\n Effect.gen(function* () {\n const sig = yield* Effect.tryPromise({\n catch: (cause) =>\n new SafeTxLookupError({\n cause,\n message: `Failed to get off-chain signature for ${messageHash}`,\n retryable: true,\n safeTxHash: messageHash,\n }),\n try: () => sdk.safe.getOffChainSignature(messageHash),\n });\n\n // Empty string or \"0x\" means signature not yet available\n if (!sig || sig === \"\" || sig === \"0x\") {\n return Option.none<Hex>();\n }\n\n const validatedSig = yield* validateHex(sig, \"getOffchainSignature\");\n return Option.some(validatedSig);\n }).pipe(\n Effect.withSpan(SpanNames.SAFE_GET_OFFCHAIN_SIG, {\n attributes: { messageHash },\n })\n );\n\n const pollOffchainSignature = (\n messageHash: Hex,\n policy: { pollInterval?: number; timeout?: number } = {}\n ) =>\n Effect.gen(function* () {\n const pollInterval = policy.pollInterval ?? SAFE_SIGNATURE_POLL_INTERVAL;\n const timeout = policy.timeout ?? SAFE_SIGNATURE_TIMEOUT;\n\n // Poll until we get a signature\n // Effect.sleep is interruptible, so this loop respects Effect's interruption model\n let found: Hex | null = null;\n\n const pollEffect = Effect.gen(function* () {\n while (found === null) {\n const sig = yield* getOffchainSignature(messageHash);\n if (Option.isSome(sig)) {\n found = sig.value;\n } else {\n // Sleep is interruptible - key for Effect's interruption model\n yield* Effect.sleep(Duration.millis(pollInterval));\n }\n }\n });\n\n yield* pollEffect.pipe(\n Effect.timeout(Duration.millis(timeout)),\n Effect.catchTag(\"TimeoutException\", () =>\n Effect.fail(\n new OffchainSignatureTimeoutError({\n message: `Off-chain signature for ${messageHash} not available within ${timeout}ms`,\n messageHash,\n timeout,\n })\n )\n )\n );\n\n if (found === null) {\n return yield* Effect.fail(\n new OffchainSignatureTimeoutError({\n message: `Off-chain signature for ${messageHash} not available within timeout`,\n messageHash,\n timeout,\n })\n );\n }\n\n return { messageHash, signature: found };\n }).pipe(\n Effect.withSpan(SpanNames.SAFE_POLL_OFFCHAIN_SIG, {\n attributes: { messageHash },\n })\n );\n\n const enableOffchainSigning = () =>\n Effect.tryPromise({\n catch: (cause) =>\n new SafeSettingsError({\n cause,\n message: \"Failed to enable off-chain signing mode\",\n }),\n try: () => sdk.eth.setSafeSettings([{ offChainSigning: true }]),\n })\n .pipe(Effect.asVoid)\n .pipe(Effect.withSpan(SpanNames.SAFE_ENABLE_OFFCHAIN));\n\n return SafeAppsService.of({\n enableOffchainSigning,\n getInfo,\n getOffchainSignature,\n getTransaction,\n pollOffchainSignature,\n sendTransactions,\n signTypedData,\n waitForTransactionReceipt,\n });\n })\n );\n"]}
@@ -1,26 +0,0 @@
1
- import type { Effect, Option } from "effect";
2
- import { Context } from "effect";
3
- import type { Hash, Hex } from "viem";
4
- import type { ClientNotFoundError, ReceiptTimeoutError, TransactionFailedError } from "../core/errors/index.js";
5
- import type { OffchainSignatureTimeoutError, SafeInfoUnavailableError, SafeSettingsError, SafeTxExecutionTimeoutError, SafeTxLookupError, SafeTxSubmissionError, SignTypedDataError } from "./errors.js";
6
- import type { EIP712TypedData, OffchainSignaturePolicy, OffchainSignatureResult, SafeInfo, SafeTransaction, SafeTxResult, SafeTxSubmission, SafeWaitPolicy, SignTypedDataResult } from "./types.js";
7
- export type SafeAppsServiceShape = {
8
- readonly getInfo: () => Effect.Effect<SafeInfo, SafeInfoUnavailableError>;
9
- readonly sendTransactions: (txs: readonly SafeTransaction[], params?: {
10
- safeTxGas?: number;
11
- }) => Effect.Effect<SafeTxSubmission, SafeTxSubmissionError>;
12
- readonly getTransaction: (safeTxHash: Hash) => Effect.Effect<{
13
- txHash: Option.Option<Hash>;
14
- status: string;
15
- }, SafeTxLookupError>;
16
- readonly waitForTransactionReceipt: (safeTxHash: Hash, policy?: SafeWaitPolicy) => Effect.Effect<SafeTxResult, SafeTxExecutionTimeoutError | SafeTxLookupError | TransactionFailedError | ReceiptTimeoutError | ClientNotFoundError>;
17
- readonly signTypedData: (typedData: EIP712TypedData) => Effect.Effect<SignTypedDataResult, SignTypedDataError>;
18
- readonly getOffchainSignature: (messageHash: Hex) => Effect.Effect<Option.Option<Hex>, SafeTxLookupError>;
19
- readonly pollOffchainSignature: (messageHash: Hex, policy?: OffchainSignaturePolicy) => Effect.Effect<OffchainSignatureResult, OffchainSignatureTimeoutError | SafeTxLookupError>;
20
- readonly enableOffchainSigning: () => Effect.Effect<void, SafeSettingsError>;
21
- };
22
- declare const SafeAppsService_base: Context.TagClass<SafeAppsService, "ew3/SafeApps", SafeAppsServiceShape>;
23
- export declare class SafeAppsService extends SafeAppsService_base {
24
- }
25
- export {};
26
- //# sourceMappingURL=service.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../src/safe/service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC7C,OAAO,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AACjC,OAAO,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,MAAM,CAAC;AACtC,OAAO,KAAK,EACV,mBAAmB,EACnB,mBAAmB,EACnB,sBAAsB,EACvB,MAAM,4BAA4B,CAAC;AACpC,OAAO,KAAK,EACV,6BAA6B,EAC7B,wBAAwB,EACxB,iBAAiB,EACjB,2BAA2B,EAC3B,iBAAiB,EACjB,qBAAqB,EACrB,kBAAkB,EACnB,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EACV,eAAe,EACf,uBAAuB,EACvB,uBAAuB,EACvB,QAAQ,EACR,eAAe,EACf,YAAY,EACZ,gBAAgB,EAChB,cAAc,EACd,mBAAmB,EACpB,MAAM,YAAY,CAAC;AAEpB,MAAM,MAAM,oBAAoB,GAAG;IAEjC,QAAQ,CAAC,OAAO,EAAE,MAAM,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,wBAAwB,CAAC,CAAC;IAG1E,QAAQ,CAAC,gBAAgB,EAAE,CACzB,GAAG,EAAE,SAAS,eAAe,EAAE,EAC/B,MAAM,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,KAC5B,MAAM,CAAC,MAAM,CAAC,gBAAgB,EAAE,qBAAqB,CAAC,CAAC;IAG5D,QAAQ,CAAC,cAAc,EAAE,CACvB,UAAU,EAAE,IAAI,KACb,MAAM,CAAC,MAAM,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,EAAE,iBAAiB,CAAC,CAAC;IAGvF,QAAQ,CAAC,yBAAyB,EAAE,CAClC,UAAU,EAAE,IAAI,EAChB,MAAM,CAAC,EAAE,cAAc,KACpB,MAAM,CAAC,MAAM,CAChB,YAAY,EACV,2BAA2B,GAC3B,iBAAiB,GACjB,sBAAsB,GACtB,mBAAmB,GACnB,mBAAmB,CACtB,CAAC;IAGF,QAAQ,CAAC,aAAa,EAAE,CACtB,SAAS,EAAE,eAAe,KACvB,MAAM,CAAC,MAAM,CAAC,mBAAmB,EAAE,kBAAkB,CAAC,CAAC;IAG5D,QAAQ,CAAC,oBAAoB,EAAE,CAC7B,WAAW,EAAE,GAAG,KACb,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,iBAAiB,CAAC,CAAC;IAG1D,QAAQ,CAAC,qBAAqB,EAAE,CAC9B,WAAW,EAAE,GAAG,EAChB,MAAM,CAAC,EAAE,uBAAuB,KAC7B,MAAM,CAAC,MAAM,CAAC,uBAAuB,EAAE,6BAA6B,GAAG,iBAAiB,CAAC,CAAC;IAG/F,QAAQ,CAAC,qBAAqB,EAAE,MAAM,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,iBAAiB,CAAC,CAAC;CAC9E,CAAC;;AAEF,qBAAa,eAAgB,SAAQ,oBAGlC;CAAG"}
@@ -1,4 +0,0 @@
1
- import { Context } from "effect";
2
- export class SafeAppsService extends Context.Tag("ew3/SafeApps")() {
3
- }
4
- //# sourceMappingURL=service.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"service.js","sourceRoot":"","sources":["../../src/safe/service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AA4EjC,MAAM,OAAO,eAAgB,SAAQ,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,EAG7D;CAAG","sourcesContent":["import type { Effect, Option } from \"effect\";\nimport { Context } from \"effect\";\nimport type { Hash, Hex } from \"viem\";\nimport type {\n ClientNotFoundError,\n ReceiptTimeoutError,\n TransactionFailedError,\n} from \"@/src/core/errors/index.js\";\nimport type {\n OffchainSignatureTimeoutError,\n SafeInfoUnavailableError,\n SafeSettingsError,\n SafeTxExecutionTimeoutError,\n SafeTxLookupError,\n SafeTxSubmissionError,\n SignTypedDataError,\n} from \"./errors.js\";\nimport type {\n EIP712TypedData,\n OffchainSignaturePolicy,\n OffchainSignatureResult,\n SafeInfo,\n SafeTransaction,\n SafeTxResult,\n SafeTxSubmission,\n SafeWaitPolicy,\n SignTypedDataResult,\n} from \"./types.js\";\n\nexport type SafeAppsServiceShape = {\n /** Get Safe info (cached after first call) */\n readonly getInfo: () => Effect.Effect<SafeInfo, SafeInfoUnavailableError>;\n\n /** Send transactions to Safe for execution */\n readonly sendTransactions: (\n txs: readonly SafeTransaction[],\n params?: { safeTxGas?: number }\n ) => Effect.Effect<SafeTxSubmission, SafeTxSubmissionError>;\n\n /** Get Safe transaction details by safeTxHash */\n readonly getTransaction: (\n safeTxHash: Hash\n ) => Effect.Effect<{ txHash: Option.Option<Hash>; status: string }, SafeTxLookupError>;\n\n /** Wait for Safe tx to execute and return receipt */\n readonly waitForTransactionReceipt: (\n safeTxHash: Hash,\n policy?: SafeWaitPolicy\n ) => Effect.Effect<\n SafeTxResult,\n | SafeTxExecutionTimeoutError\n | SafeTxLookupError\n | TransactionFailedError\n | ReceiptTimeoutError\n | ClientNotFoundError\n >;\n\n /** Sign typed data (returns discriminated union based on Safe settings) */\n readonly signTypedData: (\n typedData: EIP712TypedData\n ) => Effect.Effect<SignTypedDataResult, SignTypedDataError>;\n\n /** Get off-chain signature (returns Option.none if not yet available) */\n readonly getOffchainSignature: (\n messageHash: Hex\n ) => Effect.Effect<Option.Option<Hex>, SafeTxLookupError>;\n\n /** Poll for off-chain signature until available or timeout */\n readonly pollOffchainSignature: (\n messageHash: Hex,\n policy?: OffchainSignaturePolicy\n ) => Effect.Effect<OffchainSignatureResult, OffchainSignatureTimeoutError | SafeTxLookupError>;\n\n /** Enable off-chain signing mode */\n readonly enableOffchainSigning: () => Effect.Effect<void, SafeSettingsError>;\n};\n\nexport class SafeAppsService extends Context.Tag(\"ew3/SafeApps\")<\n SafeAppsService,\n SafeAppsServiceShape\n>() {}\n"]}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=service.test.integration.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"service.test.integration.d.ts","sourceRoot":"","sources":["../../src/safe/service.test.integration.ts"],"names":[],"mappings":""}