@prb/effect-solana 1.0.0-beta.0

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 (210) hide show
  1. package/README.md +406 -0
  2. package/dist/balance/index.d.ts +2 -0
  3. package/dist/balance/index.d.ts.map +1 -0
  4. package/dist/balance/index.js +2 -0
  5. package/dist/balance/index.js.map +1 -0
  6. package/dist/balance/service.d.ts +21 -0
  7. package/dist/balance/service.d.ts.map +1 -0
  8. package/dist/balance/service.js +62 -0
  9. package/dist/balance/service.js.map +1 -0
  10. package/dist/constants/index.d.ts +11 -0
  11. package/dist/constants/index.d.ts.map +1 -0
  12. package/dist/constants/index.js +14 -0
  13. package/dist/constants/index.js.map +1 -0
  14. package/dist/core/errors/account.d.ts +21 -0
  15. package/dist/core/errors/account.d.ts.map +1 -0
  16. package/dist/core/errors/account.js +14 -0
  17. package/dist/core/errors/account.js.map +1 -0
  18. package/dist/core/errors/index.d.ts +6 -0
  19. package/dist/core/errors/index.d.ts.map +1 -0
  20. package/dist/core/errors/index.js +6 -0
  21. package/dist/core/errors/index.js.map +1 -0
  22. package/dist/core/errors/predicates.d.ts +21 -0
  23. package/dist/core/errors/predicates.d.ts.map +1 -0
  24. package/dist/core/errors/predicates.js +8 -0
  25. package/dist/core/errors/predicates.js.map +1 -0
  26. package/dist/core/errors/rpc.d.ts +20 -0
  27. package/dist/core/errors/rpc.d.ts.map +1 -0
  28. package/dist/core/errors/rpc.js +13 -0
  29. package/dist/core/errors/rpc.js.map +1 -0
  30. package/dist/core/errors/transaction.d.ts +46 -0
  31. package/dist/core/errors/transaction.d.ts.map +1 -0
  32. package/dist/core/errors/transaction.js +30 -0
  33. package/dist/core/errors/transaction.js.map +1 -0
  34. package/dist/core/errors/wallet.d.ts +25 -0
  35. package/dist/core/errors/wallet.d.ts.map +1 -0
  36. package/dist/core/errors/wallet.js +15 -0
  37. package/dist/core/errors/wallet.js.map +1 -0
  38. package/dist/core/index.d.ts +2 -0
  39. package/dist/core/index.d.ts.map +1 -0
  40. package/dist/core/index.js +2 -0
  41. package/dist/core/index.js.map +1 -0
  42. package/dist/index.d.ts +13 -0
  43. package/dist/index.d.ts.map +1 -0
  44. package/dist/index.js +13 -0
  45. package/dist/index.js.map +1 -0
  46. package/dist/internal/index.d.ts +2 -0
  47. package/dist/internal/index.d.ts.map +1 -0
  48. package/dist/internal/index.js +2 -0
  49. package/dist/internal/index.js.map +1 -0
  50. package/dist/internal/kit-effect.d.ts +11 -0
  51. package/dist/internal/kit-effect.d.ts.map +1 -0
  52. package/dist/internal/kit-effect.js +19 -0
  53. package/dist/internal/kit-effect.js.map +1 -0
  54. package/dist/pda/index.d.ts +2 -0
  55. package/dist/pda/index.d.ts.map +1 -0
  56. package/dist/pda/index.js +2 -0
  57. package/dist/pda/index.js.map +1 -0
  58. package/dist/pda/service.d.ts +15 -0
  59. package/dist/pda/service.d.ts.map +1 -0
  60. package/dist/pda/service.js +34 -0
  61. package/dist/pda/service.js.map +1 -0
  62. package/dist/presets/index.d.ts +2 -0
  63. package/dist/presets/index.d.ts.map +1 -0
  64. package/dist/presets/index.js +2 -0
  65. package/dist/presets/index.js.map +1 -0
  66. package/dist/presets/layers.d.ts +18 -0
  67. package/dist/presets/layers.d.ts.map +1 -0
  68. package/dist/presets/layers.js +40 -0
  69. package/dist/presets/layers.js.map +1 -0
  70. package/dist/react-hooks/index.d.ts +9 -0
  71. package/dist/react-hooks/index.d.ts.map +1 -0
  72. package/dist/react-hooks/index.js +5 -0
  73. package/dist/react-hooks/index.js.map +1 -0
  74. package/dist/react-hooks/internal/error.d.ts +5 -0
  75. package/dist/react-hooks/internal/error.d.ts.map +1 -0
  76. package/dist/react-hooks/internal/error.js +9 -0
  77. package/dist/react-hooks/internal/error.js.map +1 -0
  78. package/dist/react-hooks/internal/is-dev.d.ts +2 -0
  79. package/dist/react-hooks/internal/is-dev.d.ts.map +1 -0
  80. package/dist/react-hooks/internal/is-dev.js +5 -0
  81. package/dist/react-hooks/internal/is-dev.js.map +1 -0
  82. package/dist/react-hooks/internal/runtime.d.ts +21 -0
  83. package/dist/react-hooks/internal/runtime.d.ts.map +1 -0
  84. package/dist/react-hooks/internal/runtime.js +38 -0
  85. package/dist/react-hooks/internal/runtime.js.map +1 -0
  86. package/dist/react-hooks/internal/scoped-run.d.ts +11 -0
  87. package/dist/react-hooks/internal/scoped-run.d.ts.map +1 -0
  88. package/dist/react-hooks/internal/scoped-run.js +21 -0
  89. package/dist/react-hooks/internal/scoped-run.js.map +1 -0
  90. package/dist/react-hooks/internal/stable.d.ts +2 -0
  91. package/dist/react-hooks/internal/stable.d.ts.map +1 -0
  92. package/dist/react-hooks/internal/stable.js +3 -0
  93. package/dist/react-hooks/internal/stable.js.map +1 -0
  94. package/dist/react-hooks/primitives/use-effect-memo-factory.d.ts +11 -0
  95. package/dist/react-hooks/primitives/use-effect-memo-factory.d.ts.map +1 -0
  96. package/dist/react-hooks/primitives/use-effect-memo-factory.js +92 -0
  97. package/dist/react-hooks/primitives/use-effect-memo-factory.js.map +1 -0
  98. package/dist/react-hooks/primitives/use-effect.d.ts +23 -0
  99. package/dist/react-hooks/primitives/use-effect.d.ts.map +1 -0
  100. package/dist/react-hooks/primitives/use-effect.js +93 -0
  101. package/dist/react-hooks/primitives/use-effect.js.map +1 -0
  102. package/dist/react-hooks/primitives/use-fork-effect.d.ts +4 -0
  103. package/dist/react-hooks/primitives/use-fork-effect.d.ts.map +1 -0
  104. package/dist/react-hooks/primitives/use-fork-effect.js +20 -0
  105. package/dist/react-hooks/primitives/use-fork-effect.js.map +1 -0
  106. package/dist/react-hooks/primitives/use-stream.d.ts +26 -0
  107. package/dist/react-hooks/primitives/use-stream.d.ts.map +1 -0
  108. package/dist/react-hooks/primitives/use-stream.js +161 -0
  109. package/dist/react-hooks/primitives/use-stream.js.map +1 -0
  110. package/dist/react-hooks/primitives.d.ts +8 -0
  111. package/dist/react-hooks/primitives.d.ts.map +1 -0
  112. package/dist/react-hooks/primitives.js +6 -0
  113. package/dist/react-hooks/primitives.js.map +1 -0
  114. package/dist/react-hooks/provider.d.ts +19 -0
  115. package/dist/react-hooks/provider.d.ts.map +1 -0
  116. package/dist/react-hooks/provider.js +71 -0
  117. package/dist/react-hooks/provider.js.map +1 -0
  118. package/dist/rpc/index.d.ts +2 -0
  119. package/dist/rpc/index.d.ts.map +1 -0
  120. package/dist/rpc/index.js +2 -0
  121. package/dist/rpc/index.js.map +1 -0
  122. package/dist/rpc/service.d.ts +17 -0
  123. package/dist/rpc/service.d.ts.map +1 -0
  124. package/dist/rpc/service.js +35 -0
  125. package/dist/rpc/service.js.map +1 -0
  126. package/dist/signer/index.d.ts +2 -0
  127. package/dist/signer/index.d.ts.map +1 -0
  128. package/dist/signer/index.js +2 -0
  129. package/dist/signer/index.js.map +1 -0
  130. package/dist/signer/service.d.ts +22 -0
  131. package/dist/signer/service.d.ts.map +1 -0
  132. package/dist/signer/service.js +42 -0
  133. package/dist/signer/service.js.map +1 -0
  134. package/dist/telemetry/index.d.ts +3 -0
  135. package/dist/telemetry/index.d.ts.map +1 -0
  136. package/dist/telemetry/index.js +3 -0
  137. package/dist/telemetry/index.js.map +1 -0
  138. package/dist/telemetry/logger.d.ts +30 -0
  139. package/dist/telemetry/logger.d.ts.map +1 -0
  140. package/dist/telemetry/logger.js +8 -0
  141. package/dist/telemetry/logger.js.map +1 -0
  142. package/dist/telemetry/tracer.d.ts +47 -0
  143. package/dist/telemetry/tracer.d.ts.map +1 -0
  144. package/dist/telemetry/tracer.js +47 -0
  145. package/dist/telemetry/tracer.js.map +1 -0
  146. package/dist/testing-kit/_fixtures/addresses.d.ts +8 -0
  147. package/dist/testing-kit/_fixtures/addresses.d.ts.map +1 -0
  148. package/dist/testing-kit/_fixtures/addresses.js +7 -0
  149. package/dist/testing-kit/_fixtures/addresses.js.map +1 -0
  150. package/dist/testing-kit/helpers.d.ts +9 -0
  151. package/dist/testing-kit/helpers.d.ts.map +1 -0
  152. package/dist/testing-kit/helpers.js +32 -0
  153. package/dist/testing-kit/helpers.js.map +1 -0
  154. package/dist/testing-kit/index.d.ts +17 -0
  155. package/dist/testing-kit/index.d.ts.map +1 -0
  156. package/dist/testing-kit/index.js +10 -0
  157. package/dist/testing-kit/index.js.map +1 -0
  158. package/dist/testing-kit/mock-balance-service.d.ts +18 -0
  159. package/dist/testing-kit/mock-balance-service.d.ts.map +1 -0
  160. package/dist/testing-kit/mock-balance-service.js +10 -0
  161. package/dist/testing-kit/mock-balance-service.js.map +1 -0
  162. package/dist/testing-kit/mock-pda-service.d.ts +12 -0
  163. package/dist/testing-kit/mock-pda-service.d.ts.map +1 -0
  164. package/dist/testing-kit/mock-pda-service.js +11 -0
  165. package/dist/testing-kit/mock-pda-service.js.map +1 -0
  166. package/dist/testing-kit/mock-rpc-service.d.ts +15 -0
  167. package/dist/testing-kit/mock-rpc-service.d.ts.map +1 -0
  168. package/dist/testing-kit/mock-rpc-service.js +63 -0
  169. package/dist/testing-kit/mock-rpc-service.js.map +1 -0
  170. package/dist/testing-kit/mock-signer-service.d.ts +16 -0
  171. package/dist/testing-kit/mock-signer-service.d.ts.map +1 -0
  172. package/dist/testing-kit/mock-signer-service.js +25 -0
  173. package/dist/testing-kit/mock-signer-service.js.map +1 -0
  174. package/dist/testing-kit/mock-token-service.d.ts +28 -0
  175. package/dist/testing-kit/mock-token-service.d.ts.map +1 -0
  176. package/dist/testing-kit/mock-token-service.js +51 -0
  177. package/dist/testing-kit/mock-token-service.js.map +1 -0
  178. package/dist/testing-kit/mock-transaction-service.d.ts +22 -0
  179. package/dist/testing-kit/mock-transaction-service.d.ts.map +1 -0
  180. package/dist/testing-kit/mock-transaction-service.js +29 -0
  181. package/dist/testing-kit/mock-transaction-service.js.map +1 -0
  182. package/dist/testing-kit/test-layer.d.ts +23 -0
  183. package/dist/testing-kit/test-layer.d.ts.map +1 -0
  184. package/dist/testing-kit/test-layer.js +31 -0
  185. package/dist/testing-kit/test-layer.js.map +1 -0
  186. package/dist/token/index.d.ts +2 -0
  187. package/dist/token/index.d.ts.map +1 -0
  188. package/dist/token/index.js +2 -0
  189. package/dist/token/index.js.map +1 -0
  190. package/dist/token/service.d.ts +38 -0
  191. package/dist/token/service.d.ts.map +1 -0
  192. package/dist/token/service.js +158 -0
  193. package/dist/token/service.js.map +1 -0
  194. package/dist/tx/index.d.ts +3 -0
  195. package/dist/tx/index.d.ts.map +1 -0
  196. package/dist/tx/index.js +3 -0
  197. package/dist/tx/index.js.map +1 -0
  198. package/dist/tx/service.d.ts +27 -0
  199. package/dist/tx/service.d.ts.map +1 -0
  200. package/dist/tx/service.js +178 -0
  201. package/dist/tx/service.js.map +1 -0
  202. package/dist/tx/types.d.ts +29 -0
  203. package/dist/tx/types.d.ts.map +1 -0
  204. package/dist/tx/types.js +2 -0
  205. package/dist/tx/types.js.map +1 -0
  206. package/dist/types/index.d.ts +12 -0
  207. package/dist/types/index.d.ts.map +1 -0
  208. package/dist/types/index.js +2 -0
  209. package/dist/types/index.js.map +1 -0
  210. package/package.json +81 -0
@@ -0,0 +1,71 @@
1
+ "use client";
2
+ import { constVoid as noop } from "effect/Function";
3
+ import * as React from "react";
4
+ import { buildRuntime, buildRuntimeSync, closeRuntime } from "./internal/runtime.js";
5
+ const EffectSolanaRuntimeContext = React.createContext(null);
6
+ const EffectSolanaLayerContext = React.createContext(null);
7
+ export const EffectSolanaProvider = (props) => {
8
+ const { children, fallback = null, layer, onUnhandledError } = props;
9
+ const [runtime, setRuntime] = React.useState(null);
10
+ React.useEffect(() => {
11
+ let cancelled = false;
12
+ let current = null;
13
+ setRuntime(null);
14
+ (async () => {
15
+ const built = await buildRuntime(layer);
16
+ current = built;
17
+ if (cancelled) {
18
+ await closeRuntime(built.scope);
19
+ return;
20
+ }
21
+ setRuntime(built);
22
+ })().catch((cause) => {
23
+ onUnhandledError?.(cause);
24
+ });
25
+ return () => {
26
+ cancelled = true;
27
+ if (current) {
28
+ closeRuntime(current.scope).catch(noop);
29
+ }
30
+ };
31
+ }, [layer, onUnhandledError]);
32
+ if (runtime === null) {
33
+ return React.createElement(React.Fragment, null, fallback);
34
+ }
35
+ return React.createElement(EffectSolanaRuntimeContext.Provider, { value: runtime }, children);
36
+ };
37
+ export const EffectSolanaProviderSync = (props) => {
38
+ const { children, layer, onUnhandledError } = props;
39
+ const runtime = React.useMemo(() => {
40
+ try {
41
+ return buildRuntimeSync(layer);
42
+ }
43
+ catch (cause) {
44
+ onUnhandledError?.(cause);
45
+ throw cause;
46
+ }
47
+ }, [layer, onUnhandledError]);
48
+ React.useEffect(() => () => {
49
+ void closeRuntime(runtime.scope).catch(noop);
50
+ }, [runtime]);
51
+ return React.createElement(EffectSolanaRuntimeContext.Provider, { value: runtime }, children);
52
+ };
53
+ export const EffectSolanaLayerProvider = (props) => {
54
+ const { children, layer } = props;
55
+ return React.createElement(EffectSolanaLayerContext.Provider, { value: layer }, children);
56
+ };
57
+ export const useEffectSolanaRuntime = () => {
58
+ const runtime = React.useContext(EffectSolanaRuntimeContext);
59
+ if (runtime === null) {
60
+ throw new Error("EffectSolanaProvider is missing (useEffectSolanaRuntime)");
61
+ }
62
+ return runtime;
63
+ };
64
+ export const useEffectSolanaLayer = () => {
65
+ const layer = React.useContext(EffectSolanaLayerContext);
66
+ if (layer === null) {
67
+ throw new Error("EffectSolanaLayerProvider is missing (useEffectSolanaLayer)");
68
+ }
69
+ return layer;
70
+ };
71
+ //# sourceMappingURL=provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provider.js","sourceRoot":"","sources":["../../src/react-hooks/provider.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export * from "./service.js";
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/rpc/index.ts"],"names":[],"mappings":"AAMA,cAAc,cAAc,CAAC"}
@@ -0,0 +1,2 @@
1
+ export * from "./service.js";
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/rpc/index.ts"],"names":[],"mappings":"AAMA,cAAc,cAAc,CAAC"}
@@ -0,0 +1,17 @@
1
+ import type { Rpc, RpcSubscriptions, SolanaRpcApi, SolanaRpcSubscriptionsApi } from "@solana/kit";
2
+ import { Context, Effect, Layer } from "effect";
3
+ import { ConnectionNotFoundError } from "../core/errors/index.js";
4
+ import type { Cluster, ClusterConfig } from "../types/index.js";
5
+ export type RpcServiceShape = {
6
+ readonly getRpc: () => Effect.Effect<Rpc<SolanaRpcApi>>;
7
+ readonly getRpcSubscriptions: () => Effect.Effect<RpcSubscriptions<SolanaRpcSubscriptionsApi>, ConnectionNotFoundError>;
8
+ readonly getCluster: () => Effect.Effect<Cluster>;
9
+ readonly getRpcUrl: () => Effect.Effect<string>;
10
+ };
11
+ declare const RpcService_base: Context.TagClass<RpcService, "esolana/RpcService", RpcServiceShape>;
12
+ export declare class RpcService extends RpcService_base {
13
+ }
14
+ export declare const makeRpcServiceLive: (config: ClusterConfig) => Layer.Layer<RpcService, never, never>;
15
+ export declare const RpcServiceDevnet: Layer.Layer<RpcService, never, never>;
16
+ export {};
17
+ //# sourceMappingURL=service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../src/rpc/service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,gBAAgB,EAAE,YAAY,EAAE,yBAAyB,EAAE,MAAM,aAAa,CAAC;AAElG,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AAChD,OAAO,EAAE,uBAAuB,EAAE,MAAM,4BAA4B,CAAC;AACrE,OAAO,KAAK,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAOnE,MAAM,MAAM,eAAe,GAAG;IAI5B,QAAQ,CAAC,MAAM,EAAE,MAAM,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC;IAKxD,QAAQ,CAAC,mBAAmB,EAAE,MAAM,MAAM,CAAC,MAAM,CAC/C,gBAAgB,CAAC,yBAAyB,CAAC,EAC3C,uBAAuB,CACxB,CAAC;IAKF,QAAQ,CAAC,UAAU,EAAE,MAAM,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAKlD,QAAQ,CAAC,SAAS,EAAE,MAAM,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;CACjD,CAAC;;AAOF,qBAAa,UAAW,SAAQ,eAAgE;CAAG;AAOnG,eAAO,MAAM,kBAAkB,GAAI,QAAQ,aAAa,0CAmCvD,CAAC;AAOF,eAAO,MAAM,gBAAgB,uCAI3B,CAAC"}
@@ -0,0 +1,35 @@
1
+ import { createSolanaRpc, createSolanaRpcSubscriptions } from "@solana/kit";
2
+ import { Context, Effect, Layer } from "effect";
3
+ import { ConnectionNotFoundError } from "../core/errors/index.js";
4
+ export class RpcService extends Context.Tag("esolana/RpcService")() {
5
+ }
6
+ export const makeRpcServiceLive = (config) => {
7
+ const rpcClient = createSolanaRpc(config.rpcUrl);
8
+ let rpcSubscriptionsClient = null;
9
+ return Layer.succeed(RpcService, RpcService.of({
10
+ getCluster: () => Effect.succeed(config.cluster),
11
+ getRpc: () => Effect.succeed(rpcClient),
12
+ getRpcSubscriptions: () => {
13
+ const wsUrl = config.wsUrl;
14
+ if (!wsUrl) {
15
+ return Effect.fail(new ConnectionNotFoundError({
16
+ cluster: config.cluster,
17
+ message: `WebSocket URL not configured for cluster: ${config.cluster}`,
18
+ }));
19
+ }
20
+ return Effect.sync(() => {
21
+ if (!rpcSubscriptionsClient) {
22
+ rpcSubscriptionsClient = createSolanaRpcSubscriptions(wsUrl);
23
+ }
24
+ return rpcSubscriptionsClient;
25
+ });
26
+ },
27
+ getRpcUrl: () => Effect.succeed(config.rpcUrl),
28
+ }));
29
+ };
30
+ export const RpcServiceDevnet = makeRpcServiceLive({
31
+ cluster: "devnet",
32
+ rpcUrl: "https://api.devnet.solana.com",
33
+ wsUrl: "wss://api.devnet.solana.com",
34
+ });
35
+ //# sourceMappingURL=service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"service.js","sourceRoot":"","sources":["../../src/rpc/service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,4BAA4B,EAAE,MAAM,aAAa,CAAC;AAC5E,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AAChD,OAAO,EAAE,uBAAuB,EAAE,MAAM,4BAA4B,CAAC;AAsCrE,MAAM,OAAO,UAAW,SAAQ,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,EAA+B;CAAG;AAOnG,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,MAAqB,EAAE,EAAE;IAE1D,MAAM,SAAS,GAAG,eAAe,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAGjD,IAAI,sBAAsB,GAAuD,IAAI,CAAC;IAEtF,OAAO,KAAK,CAAC,OAAO,CAClB,UAAU,EACV,UAAU,CAAC,EAAE,CAAC;QACZ,UAAU,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC;QAEhD,MAAM,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC;QAEvC,mBAAmB,EAAE,GAAG,EAAE;YACxB,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;YAC3B,IAAI,CAAC,KAAK,EAAE,CAAC;gBACX,OAAO,MAAM,CAAC,IAAI,CAChB,IAAI,uBAAuB,CAAC;oBAC1B,OAAO,EAAE,MAAM,CAAC,OAAO;oBACvB,OAAO,EAAE,6CAA6C,MAAM,CAAC,OAAO,EAAE;iBACvE,CAAC,CACH,CAAC;YACJ,CAAC;YACD,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE;gBACtB,IAAI,CAAC,sBAAsB,EAAE,CAAC;oBAC5B,sBAAsB,GAAG,4BAA4B,CAAC,KAAK,CAAC,CAAC;gBAC/D,CAAC;gBACD,OAAO,sBAAsB,CAAC;YAChC,CAAC,CAAC,CAAC;QACL,CAAC;QAED,SAAS,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC;KAC/C,CAAC,CACH,CAAC;AACJ,CAAC,CAAC;AAOF,MAAM,CAAC,MAAM,gBAAgB,GAAG,kBAAkB,CAAC;IACjD,OAAO,EAAE,QAAQ;IACjB,MAAM,EAAE,+BAA+B;IACvC,KAAK,EAAE,6BAA6B;CACrC,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export * from "./service.js";
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/signer/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC"}
@@ -0,0 +1,2 @@
1
+ export * from "./service.js";
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/signer/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC"}
@@ -0,0 +1,22 @@
1
+ import type { Address } from "@solana/addresses";
2
+ import type { Transaction, TransactionWithLifetime } from "@solana/transactions";
3
+ import { Context, Effect, Layer } from "effect";
4
+ import { SignatureError, WalletNotConnectedError } from "../core/errors/index.js";
5
+ export type SignerServiceShape = {
6
+ readonly getAddress: () => Effect.Effect<Address, WalletNotConnectedError>;
7
+ readonly signTransaction: <T extends Transaction & TransactionWithLifetime>(tx: T) => Effect.Effect<T, SignatureError | WalletNotConnectedError>;
8
+ readonly signAllTransactions: <T extends Transaction & TransactionWithLifetime>(txs: readonly T[]) => Effect.Effect<readonly T[], SignatureError | WalletNotConnectedError>;
9
+ readonly isConnected: () => Effect.Effect<boolean>;
10
+ };
11
+ declare const SignerService_base: Context.TagClass<SignerService, "esolana/SignerService", SignerServiceShape>;
12
+ export declare class SignerService extends SignerService_base {
13
+ }
14
+ export type WalletAdapter = {
15
+ readonly publicKey: Address | null;
16
+ readonly connected: boolean;
17
+ readonly signTransaction: <T extends Transaction & TransactionWithLifetime>(tx: T) => Promise<T>;
18
+ readonly signAllTransactions: <T extends Transaction & TransactionWithLifetime>(txs: readonly T[]) => Promise<readonly T[]>;
19
+ };
20
+ export declare const makeSignerServiceFromAdapter: (getAdapter: () => WalletAdapter) => Layer.Layer<SignerService, never, never>;
21
+ export {};
22
+ //# sourceMappingURL=service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../src/signer/service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,KAAK,EAAE,WAAW,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AACjF,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,uBAAuB,EAAE,MAAM,4BAA4B,CAAC;AAGrF,MAAM,MAAM,kBAAkB,GAAG;IAI/B,QAAQ,CAAC,UAAU,EAAE,MAAM,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,uBAAuB,CAAC,CAAC;IAK3E,QAAQ,CAAC,eAAe,EAAE,CAAC,CAAC,SAAS,WAAW,GAAG,uBAAuB,EACxE,EAAE,EAAE,CAAC,KACF,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,cAAc,GAAG,uBAAuB,CAAC,CAAC;IAKhE,QAAQ,CAAC,mBAAmB,EAAE,CAAC,CAAC,SAAS,WAAW,GAAG,uBAAuB,EAC5E,GAAG,EAAE,SAAS,CAAC,EAAE,KACd,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,EAAE,cAAc,GAAG,uBAAuB,CAAC,CAAC;IAK3E,QAAQ,CAAC,WAAW,EAAE,MAAM,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;CACpD,CAAC;;AAEF,qBAAa,aAAc,SAAQ,kBAGhC;CAAG;AAKN,MAAM,MAAM,aAAa,GAAG;IAC1B,QAAQ,CAAC,SAAS,EAAE,OAAO,GAAG,IAAI,CAAC;IACnC,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,eAAe,EAAE,CAAC,CAAC,SAAS,WAAW,GAAG,uBAAuB,EAAE,EAAE,EAAE,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC;IACjG,QAAQ,CAAC,mBAAmB,EAAE,CAAC,CAAC,SAAS,WAAW,GAAG,uBAAuB,EAC5E,GAAG,EAAE,SAAS,CAAC,EAAE,KACd,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;CAC5B,CAAC;AAMF,eAAO,MAAM,4BAA4B,GAAI,YAAY,MAAM,aAAa,6CAqDzE,CAAC"}
@@ -0,0 +1,42 @@
1
+ import { Context, Effect, Layer } from "effect";
2
+ import { SignatureError, WalletNotConnectedError } from "../core/errors/index.js";
3
+ import { SpanNames } from "../telemetry/index.js";
4
+ export class SignerService extends Context.Tag("esolana/SignerService")() {
5
+ }
6
+ export const makeSignerServiceFromAdapter = (getAdapter) => Layer.succeed(SignerService, SignerService.of({
7
+ getAddress: () => Effect.gen(function* () {
8
+ const adapter = getAdapter();
9
+ if (!(adapter.connected && adapter.publicKey)) {
10
+ return yield* Effect.fail(new WalletNotConnectedError({ message: "Wallet not connected" }));
11
+ }
12
+ return adapter.publicKey;
13
+ }).pipe(Effect.withSpan(SpanNames.SIGNER_GET_ADDRESS)),
14
+ isConnected: () => Effect.sync(() => getAdapter().connected),
15
+ signAllTransactions: (txs) => Effect.gen(function* () {
16
+ const adapter = getAdapter();
17
+ if (!adapter.connected) {
18
+ return yield* Effect.fail(new WalletNotConnectedError({ message: "Wallet not connected" }));
19
+ }
20
+ return yield* Effect.tryPromise({
21
+ catch: (cause) => new SignatureError({
22
+ cause,
23
+ message: cause instanceof Error ? cause.message : "Failed to sign transactions",
24
+ }),
25
+ try: () => adapter.signAllTransactions(txs),
26
+ });
27
+ }).pipe(Effect.withSpan(SpanNames.TX_SIGN)),
28
+ signTransaction: (tx) => Effect.gen(function* () {
29
+ const adapter = getAdapter();
30
+ if (!adapter.connected) {
31
+ return yield* Effect.fail(new WalletNotConnectedError({ message: "Wallet not connected" }));
32
+ }
33
+ return yield* Effect.tryPromise({
34
+ catch: (cause) => new SignatureError({
35
+ cause,
36
+ message: cause instanceof Error ? cause.message : "Failed to sign transaction",
37
+ }),
38
+ try: () => adapter.signTransaction(tx),
39
+ });
40
+ }).pipe(Effect.withSpan(SpanNames.TX_SIGN)),
41
+ }));
42
+ //# sourceMappingURL=service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"service.js","sourceRoot":"","sources":["../../src/signer/service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export * from "./logger.js";
2
+ export * from "./tracer.js";
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/telemetry/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC"}
@@ -0,0 +1,3 @@
1
+ export * from "./logger.js";
2
+ export * from "./tracer.js";
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/telemetry/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC"}
@@ -0,0 +1,30 @@
1
+ import { Effect } from "effect";
2
+ export declare const logRpcCall: (params: {
3
+ method: string;
4
+ cluster: string;
5
+ params?: unknown;
6
+ }) => Effect.Effect<void, never, never>;
7
+ export declare const logTransactionSent: (params: {
8
+ signature: string;
9
+ cluster: string;
10
+ }) => Effect.Effect<void, never, never>;
11
+ export declare const logTransactionConfirmed: (params: {
12
+ signature: string;
13
+ slot: bigint;
14
+ confirmations?: number;
15
+ }) => Effect.Effect<void, never, never>;
16
+ export declare const logAccountChange: (params: {
17
+ address: string;
18
+ lamports: bigint;
19
+ slot: bigint;
20
+ }) => Effect.Effect<void, never, never>;
21
+ export declare const logEventReceived: (params: {
22
+ programId: string;
23
+ signature: string;
24
+ slot: bigint;
25
+ }) => Effect.Effect<void, never, never>;
26
+ export declare const logError: (params: {
27
+ operation: string;
28
+ error: unknown;
29
+ }) => Effect.Effect<void, never, never>;
30
+ //# sourceMappingURL=logger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/telemetry/logger.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAMhC,eAAO,MAAM,UAAU,GAAI,QAAQ;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,OAAO,CAAA;CAAE,sCACnD,CAAC;AAEtC,eAAO,MAAM,kBAAkB,GAAI,QAAQ;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,sCACrC,CAAC;AAE7C,eAAO,MAAM,uBAAuB,GAAI,QAAQ;IAC9C,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB,sCAAqD,CAAC;AAEvD,eAAO,MAAM,gBAAgB,GAAI,QAAQ;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,sCACjD,CAAC;AAE5C,eAAO,MAAM,gBAAgB,GAAI,QAAQ;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,sCACpD,CAAC;AAE5C,eAAO,MAAM,QAAQ,GAAI,QAAQ;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,OAAO,CAAA;CAAE,sCACzB,CAAC"}
@@ -0,0 +1,8 @@
1
+ import { Effect } from "effect";
2
+ export const logRpcCall = (params) => Effect.logDebug("RPC call", params);
3
+ export const logTransactionSent = (params) => Effect.logInfo("Transaction sent", params);
4
+ export const logTransactionConfirmed = (params) => Effect.logDebug("Transaction confirmed", params);
5
+ export const logAccountChange = (params) => Effect.logDebug("Account change", params);
6
+ export const logEventReceived = (params) => Effect.logDebug("Event received", params);
7
+ export const logError = (params) => Effect.logError("Operation failed", params);
8
+ //# sourceMappingURL=logger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/telemetry/logger.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAMhC,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,MAA6D,EAAE,EAAE,CAC1F,MAAM,CAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;AAEtC,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,MAA8C,EAAE,EAAE,CACnF,MAAM,CAAC,OAAO,CAAC,kBAAkB,EAAE,MAAM,CAAC,CAAC;AAE7C,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,MAIvC,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,uBAAuB,EAAE,MAAM,CAAC,CAAC;AAEvD,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,MAA2D,EAAE,EAAE,CAC9F,MAAM,CAAC,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;AAE5C,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,MAA8D,EAAE,EAAE,CACjG,MAAM,CAAC,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;AAE5C,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,MAA6C,EAAE,EAAE,CACxE,MAAM,CAAC,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC,CAAC"}
@@ -0,0 +1,47 @@
1
+ import { Effect } from "effect";
2
+ export declare const withSpan: (name: string, attributes?: Record<string, unknown>) => <A, E, R>(effect: Effect.Effect<A, E, R>) => Effect.Effect<A, E, R>;
3
+ export declare const SpanNames: {
4
+ readonly ACCOUNT_GET_INFO: "esol.account.getInfo";
5
+ readonly ACCOUNT_GET_MULTIPLE: "esol.account.getMultiple";
6
+ readonly ACCOUNT_WATCH: "esol.account.watch";
7
+ readonly BALANCE_GET_SOL: "esol.balance.getSol";
8
+ readonly BALANCE_GET_TOKEN: "esol.balance.getToken";
9
+ readonly BALANCE_WATCH_SOL: "esol.balance.watchSol";
10
+ readonly BALANCE_WATCH_TOKEN: "esol.balance.watchToken";
11
+ readonly COMPUTE_SET_LIMIT: "esol.compute.setLimit";
12
+ readonly COMPUTE_SET_PRICE: "esol.compute.setPrice";
13
+ readonly EVENT_WATCH_ACCOUNT: "esol.event.watchAccount";
14
+ readonly EVENT_WATCH_LOGS: "esol.event.watchLogs";
15
+ readonly EVENT_WATCH_PROGRAM: "esol.event.watchProgram";
16
+ readonly PDA_DERIVE: "esol.pda.derive";
17
+ readonly PDA_DERIVE_ADDRESS: "esol.pda.deriveAddress";
18
+ readonly PDA_DERIVE_BUMP: "esol.pda.deriveBump";
19
+ readonly PDA_FIND: "esol.pda.find";
20
+ readonly RPC_GET_ACCOUNT_INFO: "esol.rpc.getAccountInfo";
21
+ readonly RPC_GET_BALANCE: "esol.rpc.getBalance";
22
+ readonly RPC_GET_BLOCK: "esol.rpc.getBlock";
23
+ readonly RPC_GET_BLOCK_HEIGHT: "esol.rpc.getBlockHeight";
24
+ readonly RPC_GET_BLOCK_TIME: "esol.rpc.getBlockTime";
25
+ readonly RPC_GET_PROGRAM_ACCOUNTS: "esol.rpc.getProgramAccounts";
26
+ readonly RPC_GET_SLOT: "esol.rpc.getSlot";
27
+ readonly SIGNER_GET_ADDRESS: "esol.signer.getAddress";
28
+ readonly SIGNER_GET_SIGNER: "esol.signer.getSigner";
29
+ readonly TOKEN_ACCOUNT_EXISTS: "esol.token.accountExists";
30
+ readonly TOKEN_APPROVE: "esol.token.approve";
31
+ readonly TOKEN_BURN: "esol.token.burn";
32
+ readonly TOKEN_CREATE_ATA: "esol.token.createAta";
33
+ readonly TOKEN_GET_ACCOUNT: "esol.token.getAccount";
34
+ readonly TOKEN_GET_ATA: "esol.token.getAta";
35
+ readonly TOKEN_GET_MINT: "esol.token.getMint";
36
+ readonly TOKEN_MINT_TO: "esol.token.mintTo";
37
+ readonly TOKEN_REVOKE: "esol.token.revoke";
38
+ readonly TOKEN_TRANSFER: "esol.token.transfer";
39
+ readonly TX_BUILD: "esol.tx.build";
40
+ readonly TX_CONFIRM: "esol.tx.confirm";
41
+ readonly TX_GET_SIGNATURE_STATUSES: "esol.tx.getSignatureStatuses";
42
+ readonly TX_SEND: "esol.tx.send";
43
+ readonly TX_SEND_AND_CONFIRM: "esol.tx.sendAndConfirm";
44
+ readonly TX_SIGN: "esol.tx.sign";
45
+ readonly TX_SIMULATE: "esol.tx.simulate";
46
+ };
47
+ //# sourceMappingURL=tracer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tracer.d.ts","sourceRoot":"","sources":["../../src/telemetry/tracer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAKhC,eAAO,MAAM,QAAQ,GAClB,MAAM,MAAM,EAAE,aAAa,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,MAClD,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,QAAQ,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAAG,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CACjB,CAAC;AAKlD,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2DZ,CAAC"}
@@ -0,0 +1,47 @@
1
+ import { Effect } from "effect";
2
+ export const withSpan = (name, attributes) => (effect) => Effect.withSpan(name, { attributes })(effect);
3
+ export const SpanNames = {
4
+ ACCOUNT_GET_INFO: "esol.account.getInfo",
5
+ ACCOUNT_GET_MULTIPLE: "esol.account.getMultiple",
6
+ ACCOUNT_WATCH: "esol.account.watch",
7
+ BALANCE_GET_SOL: "esol.balance.getSol",
8
+ BALANCE_GET_TOKEN: "esol.balance.getToken",
9
+ BALANCE_WATCH_SOL: "esol.balance.watchSol",
10
+ BALANCE_WATCH_TOKEN: "esol.balance.watchToken",
11
+ COMPUTE_SET_LIMIT: "esol.compute.setLimit",
12
+ COMPUTE_SET_PRICE: "esol.compute.setPrice",
13
+ EVENT_WATCH_ACCOUNT: "esol.event.watchAccount",
14
+ EVENT_WATCH_LOGS: "esol.event.watchLogs",
15
+ EVENT_WATCH_PROGRAM: "esol.event.watchProgram",
16
+ PDA_DERIVE: "esol.pda.derive",
17
+ PDA_DERIVE_ADDRESS: "esol.pda.deriveAddress",
18
+ PDA_DERIVE_BUMP: "esol.pda.deriveBump",
19
+ PDA_FIND: "esol.pda.find",
20
+ RPC_GET_ACCOUNT_INFO: "esol.rpc.getAccountInfo",
21
+ RPC_GET_BALANCE: "esol.rpc.getBalance",
22
+ RPC_GET_BLOCK: "esol.rpc.getBlock",
23
+ RPC_GET_BLOCK_HEIGHT: "esol.rpc.getBlockHeight",
24
+ RPC_GET_BLOCK_TIME: "esol.rpc.getBlockTime",
25
+ RPC_GET_PROGRAM_ACCOUNTS: "esol.rpc.getProgramAccounts",
26
+ RPC_GET_SLOT: "esol.rpc.getSlot",
27
+ SIGNER_GET_ADDRESS: "esol.signer.getAddress",
28
+ SIGNER_GET_SIGNER: "esol.signer.getSigner",
29
+ TOKEN_ACCOUNT_EXISTS: "esol.token.accountExists",
30
+ TOKEN_APPROVE: "esol.token.approve",
31
+ TOKEN_BURN: "esol.token.burn",
32
+ TOKEN_CREATE_ATA: "esol.token.createAta",
33
+ TOKEN_GET_ACCOUNT: "esol.token.getAccount",
34
+ TOKEN_GET_ATA: "esol.token.getAta",
35
+ TOKEN_GET_MINT: "esol.token.getMint",
36
+ TOKEN_MINT_TO: "esol.token.mintTo",
37
+ TOKEN_REVOKE: "esol.token.revoke",
38
+ TOKEN_TRANSFER: "esol.token.transfer",
39
+ TX_BUILD: "esol.tx.build",
40
+ TX_CONFIRM: "esol.tx.confirm",
41
+ TX_GET_SIGNATURE_STATUSES: "esol.tx.getSignatureStatuses",
42
+ TX_SEND: "esol.tx.send",
43
+ TX_SEND_AND_CONFIRM: "esol.tx.sendAndConfirm",
44
+ TX_SIGN: "esol.tx.sign",
45
+ TX_SIMULATE: "esol.tx.simulate",
46
+ };
47
+ //# sourceMappingURL=tracer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tracer.js","sourceRoot":"","sources":["../../src/telemetry/tracer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAKhC,MAAM,CAAC,MAAM,QAAQ,GACnB,CAAC,IAAY,EAAE,UAAoC,EAAE,EAAE,CACvD,CAAU,MAA8B,EAA0B,EAAE,CAClE,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC;AAKlD,MAAM,CAAC,MAAM,SAAS,GAAG;IAEvB,gBAAgB,EAAE,sBAAsB;IACxC,oBAAoB,EAAE,0BAA0B;IAChD,aAAa,EAAE,oBAAoB;IAGnC,eAAe,EAAE,qBAAqB;IACtC,iBAAiB,EAAE,uBAAuB;IAC1C,iBAAiB,EAAE,uBAAuB;IAC1C,mBAAmB,EAAE,yBAAyB;IAG9C,iBAAiB,EAAE,uBAAuB;IAC1C,iBAAiB,EAAE,uBAAuB;IAC1C,mBAAmB,EAAE,yBAAyB;IAG9C,gBAAgB,EAAE,sBAAsB;IACxC,mBAAmB,EAAE,yBAAyB;IAG9C,UAAU,EAAE,iBAAiB;IAC7B,kBAAkB,EAAE,wBAAwB;IAC5C,eAAe,EAAE,qBAAqB;IACtC,QAAQ,EAAE,eAAe;IACzB,oBAAoB,EAAE,yBAAyB;IAE/C,eAAe,EAAE,qBAAqB;IACtC,aAAa,EAAE,mBAAmB;IAClC,oBAAoB,EAAE,yBAAyB;IAC/C,kBAAkB,EAAE,uBAAuB;IAC3C,wBAAwB,EAAE,6BAA6B;IACvD,YAAY,EAAE,kBAAkB;IAGhC,kBAAkB,EAAE,wBAAwB;IAC5C,iBAAiB,EAAE,uBAAuB;IAG1C,oBAAoB,EAAE,0BAA0B;IAChD,aAAa,EAAE,oBAAoB;IACnC,UAAU,EAAE,iBAAiB;IAC7B,gBAAgB,EAAE,sBAAsB;IACxC,iBAAiB,EAAE,uBAAuB;IAC1C,aAAa,EAAE,mBAAmB;IAClC,cAAc,EAAE,oBAAoB;IACpC,aAAa,EAAE,mBAAmB;IAClC,YAAY,EAAE,mBAAmB;IACjC,cAAc,EAAE,qBAAqB;IAGrC,QAAQ,EAAE,eAAe;IACzB,UAAU,EAAE,iBAAiB;IAC7B,yBAAyB,EAAE,8BAA8B;IACzD,OAAO,EAAE,cAAc;IACvB,mBAAmB,EAAE,wBAAwB;IAC7C,OAAO,EAAE,cAAc;IACvB,WAAW,EAAE,kBAAkB;CACvB,CAAC"}
@@ -0,0 +1,8 @@
1
+ import type { Address, Signature } from "@solana/kit";
2
+ export declare const TEST_ADDRESS: Address;
3
+ export declare const TEST_ADDRESS_2: Address;
4
+ export declare const TEST_SIGNATURE: Signature;
5
+ export declare const TEST_CLUSTER: "devnet";
6
+ export declare const TEST_MINT: Address;
7
+ export declare const TEST_WALLET: Address;
8
+ //# sourceMappingURL=addresses.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"addresses.d.ts","sourceRoot":"","sources":["../../../src/testing-kit/_fixtures/addresses.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAKtD,eAAO,MAAM,YAAY,EAAyC,OAAO,CAAC;AAK1E,eAAO,MAAM,cAAc,EAAoD,OAAO,CAAC;AAKvF,eAAO,MAAM,cAAc,EACqE,SAAS,CAAC;AAK1G,eAAO,MAAM,YAAY,EAAG,QAAiB,CAAC;AAK9C,eAAO,MAAM,SAAS,EAAqD,OAAO,CAAC;AAKnF,eAAO,MAAM,WAAW,EAAqD,OAAO,CAAC"}
@@ -0,0 +1,7 @@
1
+ export const TEST_ADDRESS = "11111111111111111111111111111111";
2
+ export const TEST_ADDRESS_2 = "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA";
3
+ export const TEST_SIGNATURE = "5VERv8NMvzbJMEkV8xnrLkEaWRtSz9CosKDYjCJjBRnbJLgp8uirBgmQpjKhoR4tjF3ZpRzrFmBV6UjKdiSZkQUW";
4
+ export const TEST_CLUSTER = "devnet";
5
+ export const TEST_MINT = "4zMMC9srt5Ri5X14GAgXhaHii3GnPAEERYPJgZJDncDU";
6
+ export const TEST_WALLET = "DYw8jCTfwHNRJhhmFcbXvVDTqWMEVFBX6ZKUmG5CNSKK";
7
+ //# sourceMappingURL=addresses.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"addresses.js","sourceRoot":"","sources":["../../../src/testing-kit/_fixtures/addresses.ts"],"names":[],"mappings":"AASA,MAAM,CAAC,MAAM,YAAY,GAAG,kCAA6C,CAAC;AAK1E,MAAM,CAAC,MAAM,cAAc,GAAG,6CAAwD,CAAC;AAKvF,MAAM,CAAC,MAAM,cAAc,GACzB,0FAAuG,CAAC;AAK1G,MAAM,CAAC,MAAM,YAAY,GAAG,QAAiB,CAAC;AAK9C,MAAM,CAAC,MAAM,SAAS,GAAG,8CAAyD,CAAC;AAKnF,MAAM,CAAC,MAAM,WAAW,GAAG,8CAAyD,CAAC"}
@@ -0,0 +1,9 @@
1
+ import type { Context } from "effect";
2
+ import { Either, Exit, Layer } from "effect";
3
+ export declare const expectTaggedFailure: <E extends {
4
+ _tag: string;
5
+ }>(exit: Exit.Exit<unknown, E>, expectedTag: E["_tag"]) => void;
6
+ export declare const assertLeft: <L, R>(either: Either.Either<R, L>) => L;
7
+ export declare const assertRight: <L, R>(either: Either.Either<R, L>) => R;
8
+ export declare const makeMockServiceLayer: <I, S, C extends Record<string, unknown>>(ServiceTag: Context.Tag<I, S>, defaults: C, config: Partial<C>, mapToShape: (merged: C) => S) => Layer.Layer<I>;
9
+ //# sourceMappingURL=helpers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../src/testing-kit/helpers.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,EAAS,MAAM,EAAE,IAAI,EAAE,KAAK,EAAU,MAAM,QAAQ,CAAC;AAe5D,eAAO,MAAM,mBAAmB,GAAI,CAAC,SAAS;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,EAC5D,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,EAC3B,aAAa,CAAC,CAAC,MAAM,CAAC,KACrB,IASF,CAAC;AAgBF,eAAO,MAAM,UAAU,GAAI,CAAC,EAAE,CAAC,EAAE,QAAQ,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,KAAG,CAM9D,CAAC;AAgBF,eAAO,MAAM,WAAW,GAAI,CAAC,EAAE,CAAC,EAAE,QAAQ,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,KAAG,CAM/D,CAAC;AAiCF,eAAO,MAAM,oBAAoB,GAAI,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC1E,YAAY,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EAC7B,UAAU,CAAC,EACX,QAAQ,OAAO,CAAC,CAAC,CAAC,EAClB,YAAY,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,KAC3B,KAAK,CAAC,KAAK,CAAC,CAAC,CAIf,CAAC"}
@@ -0,0 +1,32 @@
1
+ import { Cause, Either, Exit, Layer, Option } from "effect";
2
+ import { expect } from "vitest";
3
+ export const expectTaggedFailure = (exit, expectedTag) => {
4
+ expect(Exit.isFailure(exit)).toBe(true);
5
+ if (Exit.isFailure(exit)) {
6
+ const error = Cause.failureOption(exit.cause);
7
+ expect(Option.isSome(error)).toBe(true);
8
+ if (Option.isSome(error)) {
9
+ expect(error.value._tag).toBe(expectedTag);
10
+ }
11
+ }
12
+ };
13
+ export const assertLeft = (either) => {
14
+ expect(Either.isLeft(either)).toBe(true);
15
+ if (!Either.isLeft(either)) {
16
+ throw new Error("Expected Left");
17
+ }
18
+ return either.left;
19
+ };
20
+ export const assertRight = (either) => {
21
+ expect(Either.isRight(either)).toBe(true);
22
+ if (!Either.isRight(either)) {
23
+ throw new Error("Expected Right");
24
+ }
25
+ return either.right;
26
+ };
27
+ export const makeMockServiceLayer = (ServiceTag, defaults, config, mapToShape) => {
28
+ const merged = { ...defaults, ...config };
29
+ const serviceShape = mapToShape(merged);
30
+ return Layer.succeed(ServiceTag, ServiceTag.of(serviceShape));
31
+ };
32
+ //# sourceMappingURL=helpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../src/testing-kit/helpers.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC5D,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAchC,MAAM,CAAC,MAAM,mBAAmB,GAAG,CACjC,IAA2B,EAC3B,WAAsB,EAChB,EAAE;IACR,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACxC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC;QACzB,MAAM,KAAK,GAAG,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC9C,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACxC,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;YACzB,MAAM,CAAE,KAAK,CAAC,KAA0B,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACnE,CAAC;IACH,CAAC;AACH,CAAC,CAAC;AAgBF,MAAM,CAAC,MAAM,UAAU,GAAG,CAAO,MAA2B,EAAK,EAAE;IACjE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACzC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;QAC3B,MAAM,IAAI,KAAK,CAAC,eAAe,CAAC,CAAC;IACnC,CAAC;IACD,OAAO,MAAM,CAAC,IAAI,CAAC;AACrB,CAAC,CAAC;AAgBF,MAAM,CAAC,MAAM,WAAW,GAAG,CAAO,MAA2B,EAAK,EAAE;IAClE,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1C,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAC5B,MAAM,IAAI,KAAK,CAAC,gBAAgB,CAAC,CAAC;IACpC,CAAC;IACD,OAAO,MAAM,CAAC,KAAK,CAAC;AACtB,CAAC,CAAC;AAiCF,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAClC,UAA6B,EAC7B,QAAW,EACX,MAAkB,EAClB,UAA4B,EACZ,EAAE;IAClB,MAAM,MAAM,GAAG,EAAE,GAAG,QAAQ,EAAE,GAAG,MAAM,EAAO,CAAC;IAC/C,MAAM,YAAY,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC;IACxC,OAAO,KAAK,CAAC,OAAO,CAAC,UAAU,EAAE,UAAU,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC;AAChE,CAAC,CAAC"}
@@ -0,0 +1,17 @@
1
+ export { TEST_ADDRESS, TEST_ADDRESS_2, TEST_CLUSTER, TEST_MINT, TEST_SIGNATURE, TEST_WALLET, } from "./_fixtures/addresses.js";
2
+ export { assertLeft, assertRight, expectTaggedFailure, makeMockServiceLayer } from "./helpers.js";
3
+ export type { MockBalanceServiceConfig } from "./mock-balance-service.js";
4
+ export { makeMockBalanceServiceLayer } from "./mock-balance-service.js";
5
+ export type { MockPdaServiceConfig } from "./mock-pda-service.js";
6
+ export { makeMockPdaServiceLayer } from "./mock-pda-service.js";
7
+ export type { MockRpcServiceConfig } from "./mock-rpc-service.js";
8
+ export { makeMockRpc, makeMockRpcServiceLayer } from "./mock-rpc-service.js";
9
+ export type { MockSignerServiceConfig } from "./mock-signer-service.js";
10
+ export { makeMockSignerServiceLayer } from "./mock-signer-service.js";
11
+ export type { MockTokenServiceConfig } from "./mock-token-service.js";
12
+ export { makeMockTokenServiceLayer } from "./mock-token-service.js";
13
+ export type { MockTransactionServiceConfig } from "./mock-transaction-service.js";
14
+ export { makeMockTransactionServiceLayer } from "./mock-transaction-service.js";
15
+ export type { TestLayerConfig } from "./test-layer.js";
16
+ export { makeEffectSolanaTestLayer } from "./test-layer.js";
17
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/testing-kit/index.ts"],"names":[],"mappings":"AAmBA,OAAO,EACL,YAAY,EACZ,cAAc,EACd,YAAY,EACZ,SAAS,EACT,cAAc,EACd,WAAW,GACZ,MAAM,0BAA0B,CAAC;AAGlC,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AAClG,YAAY,EAAE,wBAAwB,EAAE,MAAM,2BAA2B,CAAC;AAC1E,OAAO,EAAE,2BAA2B,EAAE,MAAM,2BAA2B,CAAC;AACxE,YAAY,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAClE,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAEhE,YAAY,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAClE,OAAO,EAAE,WAAW,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAC7E,YAAY,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;AACxE,OAAO,EAAE,0BAA0B,EAAE,MAAM,0BAA0B,CAAC;AACtE,YAAY,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AACtE,OAAO,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC;AACpE,YAAY,EAAE,4BAA4B,EAAE,MAAM,+BAA+B,CAAC;AAClF,OAAO,EAAE,+BAA+B,EAAE,MAAM,+BAA+B,CAAC;AAGhF,YAAY,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AACvD,OAAO,EAAE,yBAAyB,EAAE,MAAM,iBAAiB,CAAC"}
@@ -0,0 +1,10 @@
1
+ export { TEST_ADDRESS, TEST_ADDRESS_2, TEST_CLUSTER, TEST_MINT, TEST_SIGNATURE, TEST_WALLET, } from "./_fixtures/addresses.js";
2
+ export { assertLeft, assertRight, expectTaggedFailure, makeMockServiceLayer } from "./helpers.js";
3
+ export { makeMockBalanceServiceLayer } from "./mock-balance-service.js";
4
+ export { makeMockPdaServiceLayer } from "./mock-pda-service.js";
5
+ export { makeMockRpc, makeMockRpcServiceLayer } from "./mock-rpc-service.js";
6
+ export { makeMockSignerServiceLayer } from "./mock-signer-service.js";
7
+ export { makeMockTokenServiceLayer } from "./mock-token-service.js";
8
+ export { makeMockTransactionServiceLayer } from "./mock-transaction-service.js";
9
+ export { makeEffectSolanaTestLayer } from "./test-layer.js";
10
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/testing-kit/index.ts"],"names":[],"mappings":"AAmBA,OAAO,EACL,YAAY,EACZ,cAAc,EACd,YAAY,EACZ,SAAS,EACT,cAAc,EACd,WAAW,GACZ,MAAM,0BAA0B,CAAC;AAGlC,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AAElG,OAAO,EAAE,2BAA2B,EAAE,MAAM,2BAA2B,CAAC;AAExE,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAGhE,OAAO,EAAE,WAAW,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAE7E,OAAO,EAAE,0BAA0B,EAAE,MAAM,0BAA0B,CAAC;AAEtE,OAAO,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC;AAEpE,OAAO,EAAE,+BAA+B,EAAE,MAAM,+BAA+B,CAAC;AAIhF,OAAO,EAAE,yBAAyB,EAAE,MAAM,iBAAiB,CAAC"}
@@ -0,0 +1,18 @@
1
+ import type { Address, Lamports } from "@solana/kit";
2
+ import type { Layer } from "effect";
3
+ import { Effect, Stream } from "effect";
4
+ import { BalanceService } from "../balance/index.js";
5
+ import type { RpcError } from "../core/errors/index.js";
6
+ export type MockBalanceServiceConfig = {
7
+ getSolBalance?: (address: Address) => Effect.Effect<Lamports, RpcError>;
8
+ hasSufficientBalance?: (params: {
9
+ address: Address;
10
+ required: Lamports;
11
+ }) => Effect.Effect<boolean, RpcError>;
12
+ watchBalance?: (params: {
13
+ address: Address;
14
+ pollingInterval?: number;
15
+ }) => Effect.Effect<Stream.Stream<Lamports, RpcError>>;
16
+ };
17
+ export declare const makeMockBalanceServiceLayer: (config?: MockBalanceServiceConfig) => Layer.Layer<BalanceService>;
18
+ //# sourceMappingURL=mock-balance-service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mock-balance-service.d.ts","sourceRoot":"","sources":["../../src/testing-kit/mock-balance-service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACrD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AACpC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AACxC,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AAS3D,MAAM,MAAM,wBAAwB,GAAG;IACrC,aAAa,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IACxE,oBAAoB,CAAC,EAAE,CAAC,MAAM,EAAE;QAC9B,OAAO,EAAE,OAAO,CAAC;QACjB,QAAQ,EAAE,QAAQ,CAAC;KACpB,KAAK,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IACvC,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE;QACtB,OAAO,EAAE,OAAO,CAAC;QACjB,eAAe,CAAC,EAAE,MAAM,CAAC;KAC1B,KAAK,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC;CACxD,CAAC;AAiCF,eAAO,MAAM,2BAA2B,GACtC,SAAQ,wBAA6B,KACpC,KAAK,CAAC,KAAK,CAAC,cAAc,CACoD,CAAC"}
@@ -0,0 +1,10 @@
1
+ import { Effect, Stream } from "effect";
2
+ import { BalanceService } from "../balance/index.js";
3
+ import { makeMockServiceLayer } from "./helpers.js";
4
+ const defaultConfig = {
5
+ getSolBalance: () => Effect.succeed(1000000000n),
6
+ hasSufficientBalance: () => Effect.succeed(true),
7
+ watchBalance: () => Effect.succeed(Stream.make(1000000000n)),
8
+ };
9
+ export const makeMockBalanceServiceLayer = (config = {}) => makeMockServiceLayer(BalanceService, defaultConfig, config, (merged) => merged);
10
+ //# sourceMappingURL=mock-balance-service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mock-balance-service.js","sourceRoot":"","sources":["../../src/testing-kit/mock-balance-service.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AACxC,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAExD,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AAoBpD,MAAM,aAAa,GAAuC;IACxD,aAAa,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,WAAuB,CAAC;IAC5D,oBAAoB,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC;IAChD,YAAY,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,WAAuB,CAAC,CAAC;CACzE,CAAC;AA2BF,MAAM,CAAC,MAAM,2BAA2B,GAAG,CACzC,SAAmC,EAAE,EACR,EAAE,CAC/B,oBAAoB,CAAC,cAAc,EAAE,aAAa,EAAE,MAAM,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC"}
@@ -0,0 +1,12 @@
1
+ import type { Address, ProgramDerivedAddressBump } from "@solana/addresses";
2
+ import type { Layer } from "effect";
3
+ import { Effect } from "effect";
4
+ import type { PdaSeed, ProgramDerivedAddress } from "../pda/index.js";
5
+ import { PdaService } from "../pda/index.js";
6
+ export type MockPdaServiceConfig = {
7
+ derive?: (seeds: readonly PdaSeed[], programAddress: Address) => Effect.Effect<ProgramDerivedAddress>;
8
+ deriveAddress?: (seeds: readonly PdaSeed[], programAddress: Address) => Effect.Effect<Address>;
9
+ deriveBump?: (seeds: readonly PdaSeed[], programAddress: Address) => Effect.Effect<ProgramDerivedAddressBump>;
10
+ };
11
+ export declare const makeMockPdaServiceLayer: (config?: MockPdaServiceConfig) => Layer.Layer<PdaService>;
12
+ //# sourceMappingURL=mock-pda-service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mock-pda-service.d.ts","sourceRoot":"","sources":["../../src/testing-kit/mock-pda-service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAC;AAC5E,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AACpC,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,KAAK,EAAE,OAAO,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AACzE,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAUhD,MAAM,MAAM,oBAAoB,GAAG;IACjC,MAAM,CAAC,EAAE,CACP,KAAK,EAAE,SAAS,OAAO,EAAE,EACzB,cAAc,EAAE,OAAO,KACpB,MAAM,CAAC,MAAM,CAAC,qBAAqB,CAAC,CAAC;IAC1C,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,SAAS,OAAO,EAAE,EAAE,cAAc,EAAE,OAAO,KAAK,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAC/F,UAAU,CAAC,EAAE,CACX,KAAK,EAAE,SAAS,OAAO,EAAE,EACzB,cAAc,EAAE,OAAO,KACpB,MAAM,CAAC,MAAM,CAAC,yBAAyB,CAAC,CAAC;CAC/C,CAAC;AAgCF,eAAO,MAAM,uBAAuB,GAClC,SAAQ,oBAAyB,KAChC,KAAK,CAAC,KAAK,CAAC,UAAU,CACoD,CAAC"}