@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.
- package/README.md +406 -0
- package/dist/balance/index.d.ts +2 -0
- package/dist/balance/index.d.ts.map +1 -0
- package/dist/balance/index.js +2 -0
- package/dist/balance/index.js.map +1 -0
- package/dist/balance/service.d.ts +21 -0
- package/dist/balance/service.d.ts.map +1 -0
- package/dist/balance/service.js +62 -0
- package/dist/balance/service.js.map +1 -0
- package/dist/constants/index.d.ts +11 -0
- package/dist/constants/index.d.ts.map +1 -0
- package/dist/constants/index.js +14 -0
- package/dist/constants/index.js.map +1 -0
- package/dist/core/errors/account.d.ts +21 -0
- package/dist/core/errors/account.d.ts.map +1 -0
- package/dist/core/errors/account.js +14 -0
- package/dist/core/errors/account.js.map +1 -0
- package/dist/core/errors/index.d.ts +6 -0
- package/dist/core/errors/index.d.ts.map +1 -0
- package/dist/core/errors/index.js +6 -0
- package/dist/core/errors/index.js.map +1 -0
- package/dist/core/errors/predicates.d.ts +21 -0
- package/dist/core/errors/predicates.d.ts.map +1 -0
- package/dist/core/errors/predicates.js +8 -0
- package/dist/core/errors/predicates.js.map +1 -0
- package/dist/core/errors/rpc.d.ts +20 -0
- package/dist/core/errors/rpc.d.ts.map +1 -0
- package/dist/core/errors/rpc.js +13 -0
- package/dist/core/errors/rpc.js.map +1 -0
- package/dist/core/errors/transaction.d.ts +46 -0
- package/dist/core/errors/transaction.d.ts.map +1 -0
- package/dist/core/errors/transaction.js +30 -0
- package/dist/core/errors/transaction.js.map +1 -0
- package/dist/core/errors/wallet.d.ts +25 -0
- package/dist/core/errors/wallet.d.ts.map +1 -0
- package/dist/core/errors/wallet.js +15 -0
- package/dist/core/errors/wallet.js.map +1 -0
- package/dist/core/index.d.ts +2 -0
- package/dist/core/index.d.ts.map +1 -0
- package/dist/core/index.js +2 -0
- package/dist/core/index.js.map +1 -0
- package/dist/index.d.ts +13 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +13 -0
- package/dist/index.js.map +1 -0
- package/dist/internal/index.d.ts +2 -0
- package/dist/internal/index.d.ts.map +1 -0
- package/dist/internal/index.js +2 -0
- package/dist/internal/index.js.map +1 -0
- package/dist/internal/kit-effect.d.ts +11 -0
- package/dist/internal/kit-effect.d.ts.map +1 -0
- package/dist/internal/kit-effect.js +19 -0
- package/dist/internal/kit-effect.js.map +1 -0
- package/dist/pda/index.d.ts +2 -0
- package/dist/pda/index.d.ts.map +1 -0
- package/dist/pda/index.js +2 -0
- package/dist/pda/index.js.map +1 -0
- package/dist/pda/service.d.ts +15 -0
- package/dist/pda/service.d.ts.map +1 -0
- package/dist/pda/service.js +34 -0
- package/dist/pda/service.js.map +1 -0
- package/dist/presets/index.d.ts +2 -0
- package/dist/presets/index.d.ts.map +1 -0
- package/dist/presets/index.js +2 -0
- package/dist/presets/index.js.map +1 -0
- package/dist/presets/layers.d.ts +18 -0
- package/dist/presets/layers.d.ts.map +1 -0
- package/dist/presets/layers.js +40 -0
- package/dist/presets/layers.js.map +1 -0
- package/dist/react-hooks/index.d.ts +9 -0
- package/dist/react-hooks/index.d.ts.map +1 -0
- package/dist/react-hooks/index.js +5 -0
- package/dist/react-hooks/index.js.map +1 -0
- package/dist/react-hooks/internal/error.d.ts +5 -0
- package/dist/react-hooks/internal/error.d.ts.map +1 -0
- package/dist/react-hooks/internal/error.js +9 -0
- package/dist/react-hooks/internal/error.js.map +1 -0
- package/dist/react-hooks/internal/is-dev.d.ts +2 -0
- package/dist/react-hooks/internal/is-dev.d.ts.map +1 -0
- package/dist/react-hooks/internal/is-dev.js +5 -0
- package/dist/react-hooks/internal/is-dev.js.map +1 -0
- package/dist/react-hooks/internal/runtime.d.ts +21 -0
- package/dist/react-hooks/internal/runtime.d.ts.map +1 -0
- package/dist/react-hooks/internal/runtime.js +38 -0
- package/dist/react-hooks/internal/runtime.js.map +1 -0
- package/dist/react-hooks/internal/scoped-run.d.ts +11 -0
- package/dist/react-hooks/internal/scoped-run.d.ts.map +1 -0
- package/dist/react-hooks/internal/scoped-run.js +21 -0
- package/dist/react-hooks/internal/scoped-run.js.map +1 -0
- package/dist/react-hooks/internal/stable.d.ts +2 -0
- package/dist/react-hooks/internal/stable.d.ts.map +1 -0
- package/dist/react-hooks/internal/stable.js +3 -0
- package/dist/react-hooks/internal/stable.js.map +1 -0
- package/dist/react-hooks/primitives/use-effect-memo-factory.d.ts +11 -0
- package/dist/react-hooks/primitives/use-effect-memo-factory.d.ts.map +1 -0
- package/dist/react-hooks/primitives/use-effect-memo-factory.js +92 -0
- package/dist/react-hooks/primitives/use-effect-memo-factory.js.map +1 -0
- package/dist/react-hooks/primitives/use-effect.d.ts +23 -0
- package/dist/react-hooks/primitives/use-effect.d.ts.map +1 -0
- package/dist/react-hooks/primitives/use-effect.js +93 -0
- package/dist/react-hooks/primitives/use-effect.js.map +1 -0
- package/dist/react-hooks/primitives/use-fork-effect.d.ts +4 -0
- package/dist/react-hooks/primitives/use-fork-effect.d.ts.map +1 -0
- package/dist/react-hooks/primitives/use-fork-effect.js +20 -0
- package/dist/react-hooks/primitives/use-fork-effect.js.map +1 -0
- package/dist/react-hooks/primitives/use-stream.d.ts +26 -0
- package/dist/react-hooks/primitives/use-stream.d.ts.map +1 -0
- package/dist/react-hooks/primitives/use-stream.js +161 -0
- package/dist/react-hooks/primitives/use-stream.js.map +1 -0
- package/dist/react-hooks/primitives.d.ts +8 -0
- package/dist/react-hooks/primitives.d.ts.map +1 -0
- package/dist/react-hooks/primitives.js +6 -0
- package/dist/react-hooks/primitives.js.map +1 -0
- package/dist/react-hooks/provider.d.ts +19 -0
- package/dist/react-hooks/provider.d.ts.map +1 -0
- package/dist/react-hooks/provider.js +71 -0
- package/dist/react-hooks/provider.js.map +1 -0
- package/dist/rpc/index.d.ts +2 -0
- package/dist/rpc/index.d.ts.map +1 -0
- package/dist/rpc/index.js +2 -0
- package/dist/rpc/index.js.map +1 -0
- package/dist/rpc/service.d.ts +17 -0
- package/dist/rpc/service.d.ts.map +1 -0
- package/dist/rpc/service.js +35 -0
- package/dist/rpc/service.js.map +1 -0
- package/dist/signer/index.d.ts +2 -0
- package/dist/signer/index.d.ts.map +1 -0
- package/dist/signer/index.js +2 -0
- package/dist/signer/index.js.map +1 -0
- package/dist/signer/service.d.ts +22 -0
- package/dist/signer/service.d.ts.map +1 -0
- package/dist/signer/service.js +42 -0
- package/dist/signer/service.js.map +1 -0
- package/dist/telemetry/index.d.ts +3 -0
- package/dist/telemetry/index.d.ts.map +1 -0
- package/dist/telemetry/index.js +3 -0
- package/dist/telemetry/index.js.map +1 -0
- package/dist/telemetry/logger.d.ts +30 -0
- package/dist/telemetry/logger.d.ts.map +1 -0
- package/dist/telemetry/logger.js +8 -0
- package/dist/telemetry/logger.js.map +1 -0
- package/dist/telemetry/tracer.d.ts +47 -0
- package/dist/telemetry/tracer.d.ts.map +1 -0
- package/dist/telemetry/tracer.js +47 -0
- package/dist/telemetry/tracer.js.map +1 -0
- package/dist/testing-kit/_fixtures/addresses.d.ts +8 -0
- package/dist/testing-kit/_fixtures/addresses.d.ts.map +1 -0
- package/dist/testing-kit/_fixtures/addresses.js +7 -0
- package/dist/testing-kit/_fixtures/addresses.js.map +1 -0
- package/dist/testing-kit/helpers.d.ts +9 -0
- package/dist/testing-kit/helpers.d.ts.map +1 -0
- package/dist/testing-kit/helpers.js +32 -0
- package/dist/testing-kit/helpers.js.map +1 -0
- package/dist/testing-kit/index.d.ts +17 -0
- package/dist/testing-kit/index.d.ts.map +1 -0
- package/dist/testing-kit/index.js +10 -0
- package/dist/testing-kit/index.js.map +1 -0
- package/dist/testing-kit/mock-balance-service.d.ts +18 -0
- package/dist/testing-kit/mock-balance-service.d.ts.map +1 -0
- package/dist/testing-kit/mock-balance-service.js +10 -0
- package/dist/testing-kit/mock-balance-service.js.map +1 -0
- package/dist/testing-kit/mock-pda-service.d.ts +12 -0
- package/dist/testing-kit/mock-pda-service.d.ts.map +1 -0
- package/dist/testing-kit/mock-pda-service.js +11 -0
- package/dist/testing-kit/mock-pda-service.js.map +1 -0
- package/dist/testing-kit/mock-rpc-service.d.ts +15 -0
- package/dist/testing-kit/mock-rpc-service.d.ts.map +1 -0
- package/dist/testing-kit/mock-rpc-service.js +63 -0
- package/dist/testing-kit/mock-rpc-service.js.map +1 -0
- package/dist/testing-kit/mock-signer-service.d.ts +16 -0
- package/dist/testing-kit/mock-signer-service.d.ts.map +1 -0
- package/dist/testing-kit/mock-signer-service.js +25 -0
- package/dist/testing-kit/mock-signer-service.js.map +1 -0
- package/dist/testing-kit/mock-token-service.d.ts +28 -0
- package/dist/testing-kit/mock-token-service.d.ts.map +1 -0
- package/dist/testing-kit/mock-token-service.js +51 -0
- package/dist/testing-kit/mock-token-service.js.map +1 -0
- package/dist/testing-kit/mock-transaction-service.d.ts +22 -0
- package/dist/testing-kit/mock-transaction-service.d.ts.map +1 -0
- package/dist/testing-kit/mock-transaction-service.js +29 -0
- package/dist/testing-kit/mock-transaction-service.js.map +1 -0
- package/dist/testing-kit/test-layer.d.ts +23 -0
- package/dist/testing-kit/test-layer.d.ts.map +1 -0
- package/dist/testing-kit/test-layer.js +31 -0
- package/dist/testing-kit/test-layer.js.map +1 -0
- package/dist/token/index.d.ts +2 -0
- package/dist/token/index.d.ts.map +1 -0
- package/dist/token/index.js +2 -0
- package/dist/token/index.js.map +1 -0
- package/dist/token/service.d.ts +38 -0
- package/dist/token/service.d.ts.map +1 -0
- package/dist/token/service.js +158 -0
- package/dist/token/service.js.map +1 -0
- package/dist/tx/index.d.ts +3 -0
- package/dist/tx/index.d.ts.map +1 -0
- package/dist/tx/index.js +3 -0
- package/dist/tx/index.js.map +1 -0
- package/dist/tx/service.d.ts +27 -0
- package/dist/tx/service.d.ts.map +1 -0
- package/dist/tx/service.js +178 -0
- package/dist/tx/service.js.map +1 -0
- package/dist/tx/types.d.ts +29 -0
- package/dist/tx/types.d.ts.map +1 -0
- package/dist/tx/types.js +2 -0
- package/dist/tx/types.js.map +1 -0
- package/dist/types/index.d.ts +12 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +2 -0
- package/dist/types/index.js.map +1 -0
- 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 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/rpc/index.ts"],"names":[],"mappings":"AAMA,cAAc,cAAc,CAAC"}
|
|
@@ -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 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/signer/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC"}
|
|
@@ -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 @@
|
|
|
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 @@
|
|
|
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"}
|