ccip-router 0.1.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/LICENSE +21 -0
- package/README.md +528 -0
- package/contracts/AttestationIndex.sol +125 -0
- package/contracts/NodeRegistry.sol +85 -0
- package/dist/attestation/eip712.d.ts +50 -0
- package/dist/attestation/eip712.d.ts.map +1 -0
- package/dist/attestation/eip712.js +31 -0
- package/dist/attestation/eip712.js.map +1 -0
- package/dist/attestation/ocp.d.ts +9 -0
- package/dist/attestation/ocp.d.ts.map +1 -0
- package/dist/attestation/ocp.js +11 -0
- package/dist/attestation/ocp.js.map +1 -0
- package/dist/attestation/withWyriwe.d.ts +11 -0
- package/dist/attestation/withWyriwe.d.ts.map +1 -0
- package/dist/attestation/withWyriwe.js +92 -0
- package/dist/attestation/withWyriwe.js.map +1 -0
- package/dist/chain/abi.d.ts +178 -0
- package/dist/chain/abi.d.ts.map +1 -0
- package/dist/chain/abi.js +94 -0
- package/dist/chain/abi.js.map +1 -0
- package/dist/chain/client.d.ts +16762 -0
- package/dist/chain/client.d.ts.map +1 -0
- package/dist/chain/client.js +21 -0
- package/dist/chain/client.js.map +1 -0
- package/dist/chain/publish.d.ts +26 -0
- package/dist/chain/publish.d.ts.map +1 -0
- package/dist/chain/publish.js +66 -0
- package/dist/chain/publish.js.map +1 -0
- package/dist/chain/register.d.ts +9 -0
- package/dist/chain/register.d.ts.map +1 -0
- package/dist/chain/register.js +20 -0
- package/dist/chain/register.js.map +1 -0
- package/dist/crypto/hash.d.ts +3 -0
- package/dist/crypto/hash.d.ts.map +1 -0
- package/dist/crypto/hash.js +12 -0
- package/dist/crypto/hash.js.map +1 -0
- package/dist/crypto/index.d.ts +3 -0
- package/dist/crypto/index.d.ts.map +1 -0
- package/dist/crypto/index.js +3 -0
- package/dist/crypto/index.js.map +1 -0
- package/dist/crypto/sign.d.ts +6 -0
- package/dist/crypto/sign.d.ts.map +1 -0
- package/dist/crypto/sign.js +60 -0
- package/dist/crypto/sign.js.map +1 -0
- package/dist/db/index.d.ts +5 -0
- package/dist/db/index.d.ts.map +1 -0
- package/dist/db/index.js +13 -0
- package/dist/db/index.js.map +1 -0
- package/dist/db/schema.d.ts +6 -0
- package/dist/db/schema.d.ts.map +1 -0
- package/dist/db/schema.js +41 -0
- package/dist/db/schema.js.map +1 -0
- package/dist/db/sqlite.d.ts +19 -0
- package/dist/db/sqlite.d.ts.map +1 -0
- package/dist/db/sqlite.js +196 -0
- package/dist/db/sqlite.js.map +1 -0
- package/dist/db/types.d.ts +34 -0
- package/dist/db/types.d.ts.map +1 -0
- package/dist/db/types.js +5 -0
- package/dist/db/types.js.map +1 -0
- package/dist/gateway/__tests__/eip3668.test.d.ts +2 -0
- package/dist/gateway/__tests__/eip3668.test.d.ts.map +1 -0
- package/dist/gateway/__tests__/eip3668.test.js +31 -0
- package/dist/gateway/__tests__/eip3668.test.js.map +1 -0
- package/dist/gateway/eip3668.d.ts +14 -0
- package/dist/gateway/eip3668.d.ts.map +1 -0
- package/dist/gateway/eip3668.js +28 -0
- package/dist/gateway/eip3668.js.map +1 -0
- package/dist/lib.d.ts +12 -0
- package/dist/lib.d.ts.map +1 -0
- package/dist/lib.js +8 -0
- package/dist/lib.js.map +1 -0
- package/dist/mesh/cron.d.ts +4 -0
- package/dist/mesh/cron.d.ts.map +1 -0
- package/dist/mesh/cron.js +22 -0
- package/dist/mesh/cron.js.map +1 -0
- package/dist/mesh/records.d.ts +4 -0
- package/dist/mesh/records.d.ts.map +1 -0
- package/dist/mesh/records.js +47 -0
- package/dist/mesh/records.js.map +1 -0
- package/dist/mesh/sync.d.ts +5 -0
- package/dist/mesh/sync.d.ts.map +1 -0
- package/dist/mesh/sync.js +154 -0
- package/dist/mesh/sync.js.map +1 -0
- package/dist/mesh/vni.d.ts +14 -0
- package/dist/mesh/vni.d.ts.map +1 -0
- package/dist/mesh/vni.js +52 -0
- package/dist/mesh/vni.js.map +1 -0
- package/dist/router/CcipRouter.d.ts +26 -0
- package/dist/router/CcipRouter.d.ts.map +1 -0
- package/dist/router/CcipRouter.js +85 -0
- package/dist/router/CcipRouter.js.map +1 -0
- package/dist/router/index.d.ts +3 -0
- package/dist/router/index.d.ts.map +1 -0
- package/dist/router/index.js +2 -0
- package/dist/router/index.js.map +1 -0
- package/package.json +63 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/chain/client.ts"],"names":[],"mappings":"AAYA,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;irBAWkrY,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;yBAA4iT,CAAC;mCAA6lC,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;yeAAumoB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EATp+1C;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,MAAM,EAAE;;;;;;;;;;;wTAO+qB,CAAC;sBAAsB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;wTAAxB,CAAC;sBAAsB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;wTAAxB,CAAC;sBAAsB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;oEAA68O,CAAC;;;;;;;;;;;;;wTAAt+O,CAAC;sBAAsB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;wTAAxB,CAAC;sBAAsB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;wTAAxB,CAAC;sBAAsB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;wTAAxB,CAAC;sBAAsB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;wTAAxB,CAAC;sBAAsB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;wTAAxB,CAAC;sBAAsB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;wTAAxB,CAAC;sBAAsB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;wTAAxB,CAAC;sBAAsB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;wTAAxB,CAAC;sBAAsB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;wTAAxB,CAAC;sBAAsB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;wTAAxB,CAAC;sBAAsB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;wTAAxB,CAAC;sBAAsB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;wTAAxB,CAAC;sBAAsB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;wTAAxB,CAAC;sBAAsB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;wTAAxB,CAAC;sBAAsB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;wTAAxB,CAAC;sBAAsB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;wTAAxB,CAAC;sBAAsB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;wTAAxB,CAAC;sBAAsB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;wTAAxB,CAAC;sBAAsB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;wTAAxB,CAAC;sBAAsB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EADhyB"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { createPublicClient, createWalletClient, defineChain, http } from 'viem';
|
|
2
|
+
import { privateKeyToAccount } from 'viem/accounts';
|
|
3
|
+
function makeChain(chainId, rpcUrl) {
|
|
4
|
+
return defineChain({
|
|
5
|
+
id: chainId,
|
|
6
|
+
name: `chain-${chainId}`,
|
|
7
|
+
nativeCurrency: { name: 'Ether', symbol: 'ETH', decimals: 18 },
|
|
8
|
+
rpcUrls: { default: { http: [rpcUrl] } },
|
|
9
|
+
});
|
|
10
|
+
}
|
|
11
|
+
export function getPublicClient(rpcUrl, chainId) {
|
|
12
|
+
return createPublicClient({ chain: makeChain(chainId, rpcUrl), transport: http(rpcUrl) });
|
|
13
|
+
}
|
|
14
|
+
export function getWalletClient(rpcUrl, chainId, privateKey) {
|
|
15
|
+
return createWalletClient({
|
|
16
|
+
account: privateKeyToAccount(privateKey),
|
|
17
|
+
chain: makeChain(chainId, rpcUrl),
|
|
18
|
+
transport: http(rpcUrl),
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/chain/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAChF,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAA;AAEnD,SAAS,SAAS,CAAC,OAAe,EAAE,MAAc;IAChD,OAAO,WAAW,CAAC;QACjB,EAAE,EAAE,OAAO;QACX,IAAI,EAAE,SAAS,OAAO,EAAE;QACxB,cAAc,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,EAAE;QAC9D,OAAO,EAAE,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,CAAC,MAAM,CAAC,EAAE,EAAE;KACzC,CAAC,CAAA;AACJ,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,MAAc,EAAE,OAAe;IAC7D,OAAO,kBAAkB,CAAC,EAAE,KAAK,EAAE,SAAS,CAAC,OAAO,EAAE,MAAM,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;AAC3F,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,MAAc,EAAE,OAAe,EAAE,UAAyB;IACxF,OAAO,kBAAkB,CAAC;QACxB,OAAO,EAAI,mBAAmB,CAAC,UAAU,CAAC;QAC1C,KAAK,EAAM,SAAS,CAAC,OAAO,EAAE,MAAM,CAAC;QACrC,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC;KACxB,CAAC,CAAA;AACJ,CAAC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import type { MeshRecord } from '../db/types.js';
|
|
2
|
+
export type ChainOpts = {
|
|
3
|
+
rpcUrl: string;
|
|
4
|
+
chainId: number;
|
|
5
|
+
gatewayKey: `0x${string}`;
|
|
6
|
+
contractAddress: `0x${string}`;
|
|
7
|
+
};
|
|
8
|
+
export type PublishResult = {
|
|
9
|
+
status: 'published';
|
|
10
|
+
txHash: `0x${string}`;
|
|
11
|
+
} | {
|
|
12
|
+
status: 'skipped';
|
|
13
|
+
} | {
|
|
14
|
+
status: 'error';
|
|
15
|
+
reason: string;
|
|
16
|
+
};
|
|
17
|
+
export type OnChainProof = {
|
|
18
|
+
found: false;
|
|
19
|
+
} | {
|
|
20
|
+
found: true;
|
|
21
|
+
commitmentHash: `0x${string}`;
|
|
22
|
+
signer: `0x${string}`;
|
|
23
|
+
};
|
|
24
|
+
export declare function publishAttestation(record: MeshRecord, opts: ChainOpts): Promise<PublishResult>;
|
|
25
|
+
export declare function checkOnChain(inputHash: string, opts: Pick<ChainOpts, 'rpcUrl' | 'chainId' | 'contractAddress'>): Promise<OnChainProof>;
|
|
26
|
+
//# sourceMappingURL=publish.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"publish.d.ts","sourceRoot":"","sources":["../../src/chain/publish.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAMhD,MAAM,MAAM,SAAS,GAAG;IACtB,MAAM,EAAW,MAAM,CAAA;IACvB,OAAO,EAAU,MAAM,CAAA;IACvB,UAAU,EAAO,KAAK,MAAM,EAAE,CAAA;IAC9B,eAAe,EAAE,KAAK,MAAM,EAAE,CAAA;CAC/B,CAAA;AAED,MAAM,MAAM,aAAa,GACrB;IAAE,MAAM,EAAE,WAAW,CAAC;IAAC,MAAM,EAAE,KAAK,MAAM,EAAE,CAAA;CAAE,GAC9C;IAAE,MAAM,EAAE,SAAS,CAAA;CAAE,GACrB;IAAE,MAAM,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAA;AAEvC,MAAM,MAAM,YAAY,GACpB;IAAE,KAAK,EAAE,KAAK,CAAA;CAAE,GAChB;IAAE,KAAK,EAAE,IAAI,CAAC;IAAC,cAAc,EAAE,KAAK,MAAM,EAAE,CAAC;IAAC,MAAM,EAAE,KAAK,MAAM,EAAE,CAAA;CAAE,CAAA;AAIzE,wBAAsB,kBAAkB,CACtC,MAAM,EAAE,UAAU,EAClB,IAAI,EAAE,SAAS,GACd,OAAO,CAAC,aAAa,CAAC,CA0CxB;AAID,wBAAsB,YAAY,CAChC,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,IAAI,CAAC,SAAS,EAAE,QAAQ,GAAG,SAAS,GAAG,iBAAiB,CAAC,GAC9D,OAAO,CAAC,YAAY,CAAC,CAoBvB"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import { ATTESTATION_INDEX_ABI } from './abi.js';
|
|
2
|
+
import { getPublicClient, getWalletClient } from './client.js';
|
|
3
|
+
const ZERO_HASH = '0x0000000000000000000000000000000000000000000000000000000000000000';
|
|
4
|
+
// Anchor a single WYRIWE attestation record on-chain.
|
|
5
|
+
// Checks isRecorded() first — skips if already anchored to avoid wasted gas.
|
|
6
|
+
export async function publishAttestation(record, opts) {
|
|
7
|
+
let parsed;
|
|
8
|
+
try {
|
|
9
|
+
parsed = JSON.parse(record.value);
|
|
10
|
+
}
|
|
11
|
+
catch {
|
|
12
|
+
return { status: 'error', reason: 'malformed attestation JSON' };
|
|
13
|
+
}
|
|
14
|
+
const commitmentHash = parsed.commitmentHash;
|
|
15
|
+
if (!commitmentHash)
|
|
16
|
+
return { status: 'error', reason: 'missing commitmentHash' };
|
|
17
|
+
const publicClient = getPublicClient(opts.rpcUrl, opts.chainId);
|
|
18
|
+
const already = await publicClient.readContract({
|
|
19
|
+
address: opts.contractAddress,
|
|
20
|
+
abi: ATTESTATION_INDEX_ABI,
|
|
21
|
+
functionName: 'isRecorded',
|
|
22
|
+
args: [commitmentHash],
|
|
23
|
+
});
|
|
24
|
+
if (already)
|
|
25
|
+
return { status: 'skipped' };
|
|
26
|
+
const a = {
|
|
27
|
+
agentId: parsed.agentId,
|
|
28
|
+
registry: parsed.registry,
|
|
29
|
+
modelHash: parsed.modelHash,
|
|
30
|
+
rawInputHash: parsed.rawInputHash,
|
|
31
|
+
sanitizationPipelineHash: parsed.sanitizationPipelineHash,
|
|
32
|
+
inputHash: parsed.inputHash,
|
|
33
|
+
outputHash: parsed.outputHash,
|
|
34
|
+
commitmentHash,
|
|
35
|
+
timestamp: BigInt(parsed.timestamp),
|
|
36
|
+
};
|
|
37
|
+
const walletClient = getWalletClient(opts.rpcUrl, opts.chainId, opts.gatewayKey);
|
|
38
|
+
const txHash = await walletClient.writeContract({
|
|
39
|
+
address: opts.contractAddress,
|
|
40
|
+
abi: ATTESTATION_INDEX_ABI,
|
|
41
|
+
functionName: 'record',
|
|
42
|
+
args: [a, record.signature],
|
|
43
|
+
});
|
|
44
|
+
return { status: 'published', txHash };
|
|
45
|
+
}
|
|
46
|
+
// Check whether an inputHash is anchored on-chain.
|
|
47
|
+
// Returns the commitmentHash + signer if found, or { found: false }.
|
|
48
|
+
export async function checkOnChain(inputHash, opts) {
|
|
49
|
+
const publicClient = getPublicClient(opts.rpcUrl, opts.chainId);
|
|
50
|
+
const commitmentHash = await publicClient.readContract({
|
|
51
|
+
address: opts.contractAddress,
|
|
52
|
+
abi: ATTESTATION_INDEX_ABI,
|
|
53
|
+
functionName: 'commitmentOf',
|
|
54
|
+
args: [inputHash],
|
|
55
|
+
});
|
|
56
|
+
if (commitmentHash === ZERO_HASH)
|
|
57
|
+
return { found: false };
|
|
58
|
+
const signer = await publicClient.readContract({
|
|
59
|
+
address: opts.contractAddress,
|
|
60
|
+
abi: ATTESTATION_INDEX_ABI,
|
|
61
|
+
functionName: 'signerOf',
|
|
62
|
+
args: [commitmentHash],
|
|
63
|
+
});
|
|
64
|
+
return { found: true, commitmentHash, signer };
|
|
65
|
+
}
|
|
66
|
+
//# sourceMappingURL=publish.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"publish.js","sourceRoot":"","sources":["../../src/chain/publish.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
type RegisterOpts = {
|
|
2
|
+
rpcUrl: string;
|
|
3
|
+
chainId: number;
|
|
4
|
+
gatewayKey: `0x${string}`;
|
|
5
|
+
contractAddress: `0x${string}`;
|
|
6
|
+
};
|
|
7
|
+
export declare function registerNode(url: string, opts: RegisterOpts): Promise<`0x${string}`>;
|
|
8
|
+
export {};
|
|
9
|
+
//# sourceMappingURL=register.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"register.d.ts","sourceRoot":"","sources":["../../src/chain/register.ts"],"names":[],"mappings":"AAKA,KAAK,YAAY,GAAG;IAClB,MAAM,EAAW,MAAM,CAAA;IACvB,OAAO,EAAU,MAAM,CAAA;IACvB,UAAU,EAAO,KAAK,MAAM,EAAE,CAAA;IAC9B,eAAe,EAAE,KAAK,MAAM,EAAE,CAAA;CAC/B,CAAA;AAKD,wBAAsB,YAAY,CAChC,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,YAAY,GACjB,OAAO,CAAC,KAAK,MAAM,EAAE,CAAC,CAYxB"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { keccak256, toBytes } from 'viem';
|
|
2
|
+
import { privateKeyToAccount } from 'viem/accounts';
|
|
3
|
+
import { NODE_REGISTRY_ABI } from './abi.js';
|
|
4
|
+
import { getWalletClient } from './client.js';
|
|
5
|
+
// Sign and submit a node registration to NodeRegistry.
|
|
6
|
+
// The signing key proves ownership — the signing key does not need ETH.
|
|
7
|
+
// The caller (opts.gatewayKey) pays gas, but the registered signer is derived from the sig.
|
|
8
|
+
export async function registerNode(url, opts) {
|
|
9
|
+
const account = privateKeyToAccount(opts.gatewayKey);
|
|
10
|
+
const msgHash = keccak256(toBytes('ccip-router:node:' + url));
|
|
11
|
+
const signature = await account.signMessage({ message: { raw: msgHash } });
|
|
12
|
+
const walletClient = getWalletClient(opts.rpcUrl, opts.chainId, opts.gatewayKey);
|
|
13
|
+
return walletClient.writeContract({
|
|
14
|
+
address: opts.contractAddress,
|
|
15
|
+
abi: NODE_REGISTRY_ABI,
|
|
16
|
+
functionName: 'register',
|
|
17
|
+
args: [url, signature],
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=register.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"register.js","sourceRoot":"","sources":["../../src/chain/register.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,MAAM,CAAA;AACzC,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAA;AACnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAA;AAC5C,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAS7C,uDAAuD;AACvD,wEAAwE;AACxE,4FAA4F;AAC5F,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,GAAW,EACX,IAAkB;IAElB,MAAM,OAAO,GAAK,mBAAmB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;IACtD,MAAM,OAAO,GAAK,SAAS,CAAC,OAAO,CAAC,mBAAmB,GAAG,GAAG,CAAC,CAAC,CAAA;IAC/D,MAAM,SAAS,GAAG,MAAM,OAAO,CAAC,WAAW,CAAC,EAAE,OAAO,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE,EAAE,CAAC,CAAA;IAE1E,MAAM,YAAY,GAAG,eAAe,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,UAAU,CAAC,CAAA;IAChF,OAAO,YAAY,CAAC,aAAa,CAAC;QAChC,OAAO,EAAO,IAAI,CAAC,eAAe;QAClC,GAAG,EAAW,iBAAiB;QAC/B,YAAY,EAAE,UAAU;QACxB,IAAI,EAAU,CAAC,GAAG,EAAE,SAAS,CAAC;KAC/B,CAAC,CAAA;AACJ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hash.d.ts","sourceRoot":"","sources":["../../src/crypto/hash.ts"],"names":[],"mappings":"AAIA,wBAAgB,YAAY,CAAC,QAAQ,EAAE,KAAK,MAAM,EAAE,GAAG,KAAK,MAAM,EAAE,CAEnE;AAID,wBAAgB,iBAAiB,CAC/B,SAAS,EAAE,KAAK,MAAM,EAAE,EACxB,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,KAAK,MAAM,EAAE,EACpB,SAAS,EAAE,MAAM,GAChB,KAAK,MAAM,EAAE,CAOf"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { keccak256, encodePacked } from 'viem';
|
|
2
|
+
// Basic tier: input_hash = keccak256(calldata)
|
|
3
|
+
// Advanced tier (withWyriwe): full triple-hash chain lives in attestation/withWyriwe.ts
|
|
4
|
+
export function hashCalldata(calldata) {
|
|
5
|
+
return keccak256(calldata);
|
|
6
|
+
}
|
|
7
|
+
// Hash the fields that a record signature must cover.
|
|
8
|
+
// Any peer receiving a record recomputes this before verifying the signature.
|
|
9
|
+
export function hashRecordPayload(inputHash, namespace, value, timestamp) {
|
|
10
|
+
return keccak256(encodePacked(['bytes32', 'string', 'bytes32', 'uint64'], [inputHash, namespace, keccak256(value), BigInt(timestamp)]));
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=hash.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hash.js","sourceRoot":"","sources":["../../src/crypto/hash.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,MAAM,CAAA;AAE9C,+CAA+C;AAC/C,wFAAwF;AACxF,MAAM,UAAU,YAAY,CAAC,QAAuB;IAClD,OAAO,SAAS,CAAC,QAAQ,CAAC,CAAA;AAC5B,CAAC;AAED,sDAAsD;AACtD,8EAA8E;AAC9E,MAAM,UAAU,iBAAiB,CAC/B,SAAwB,EACxB,SAAiB,EACjB,KAAoB,EACpB,SAAiB;IAEjB,OAAO,SAAS,CACd,YAAY,CACV,CAAC,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,CAAC,EAC1C,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC,CAC5D,CACF,CAAA;AACH,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/crypto/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAA;AAC3D,OAAO,EAAE,UAAU,EAAE,mBAAmB,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/crypto/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAA;AAC3D,OAAO,EAAE,UAAU,EAAE,mBAAmB,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { MeshRecord } from '../db/types.js';
|
|
2
|
+
export declare function signRecord(inputHash: `0x${string}`, namespace: string, value: `0x${string}`, timestamp: number, gatewayKey: `0x${string}`): Promise<`0x${string}`>;
|
|
3
|
+
export declare function recoverRecordSigner(record: MeshRecord): Promise<`0x${string}`>;
|
|
4
|
+
export declare function verifyRecord(record: MeshRecord, expectedSigner: `0x${string}`): Promise<boolean>;
|
|
5
|
+
export declare function recoverWyriweAttestation(record: MeshRecord): Promise<`0x${string}` | null>;
|
|
6
|
+
//# sourceMappingURL=sign.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sign.d.ts","sourceRoot":"","sources":["../../src/crypto/sign.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAIhD,wBAAsB,UAAU,CAC9B,SAAS,EAAE,KAAK,MAAM,EAAE,EACxB,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,KAAK,MAAM,EAAE,EACpB,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,KAAK,MAAM,EAAE,GACxB,OAAO,CAAC,KAAK,MAAM,EAAE,CAAC,CAIxB;AAID,wBAAsB,mBAAmB,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,KAAK,MAAM,EAAE,CAAC,CAWpF;AAID,wBAAsB,YAAY,CAChC,MAAM,EAAE,UAAU,EAClB,cAAc,EAAE,KAAK,MAAM,EAAE,GAC5B,OAAO,CAAC,OAAO,CAAC,CAOlB;AAKD,wBAAsB,wBAAwB,CAC5C,MAAM,EAAE,UAAU,GACjB,OAAO,CAAC,KAAK,MAAM,EAAE,GAAG,IAAI,CAAC,CAmC/B"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { recoverMessageAddress, recoverTypedDataAddress } from 'viem';
|
|
2
|
+
import { privateKeyToAccount } from 'viem/accounts';
|
|
3
|
+
import { hashRecordPayload } from './hash.js';
|
|
4
|
+
import { buildDomain, WYRIWE_TYPES } from '../attestation/eip712.js';
|
|
5
|
+
// Sign a record payload with the gateway hot key.
|
|
6
|
+
// Returns EIP-191 personal_sign signature over the record hash.
|
|
7
|
+
export async function signRecord(inputHash, namespace, value, timestamp, gatewayKey) {
|
|
8
|
+
const account = privateKeyToAccount(gatewayKey);
|
|
9
|
+
const payloadHash = hashRecordPayload(inputHash, namespace, value, timestamp);
|
|
10
|
+
return account.signMessage({ message: { raw: payloadHash } });
|
|
11
|
+
}
|
|
12
|
+
// Recover the signer address from a record signature.
|
|
13
|
+
// Returns the address that signed — caller decides if it's trusted.
|
|
14
|
+
export async function recoverRecordSigner(record) {
|
|
15
|
+
const payloadHash = hashRecordPayload(record.inputHash, record.namespace, record.value, record.timestamp);
|
|
16
|
+
return recoverMessageAddress({
|
|
17
|
+
message: { raw: payloadHash },
|
|
18
|
+
signature: record.signature,
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
// Verify a record signature against an expected signer address.
|
|
22
|
+
// Used by peer sync before every db.insertRecord().
|
|
23
|
+
export async function verifyRecord(record, expectedSigner) {
|
|
24
|
+
try {
|
|
25
|
+
const signer = await recoverRecordSigner(record);
|
|
26
|
+
return signer.toLowerCase() === expectedSigner.toLowerCase();
|
|
27
|
+
}
|
|
28
|
+
catch {
|
|
29
|
+
return false;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
// Recover signer from a WYRIWE attestation record (EIP-712 signed).
|
|
33
|
+
// The record value must be the JSON produced by withWyriwe() — includes chainId.
|
|
34
|
+
// Returns null if the record is malformed or missing required fields.
|
|
35
|
+
export async function recoverWyriweAttestation(record) {
|
|
36
|
+
try {
|
|
37
|
+
const att = JSON.parse(record.value);
|
|
38
|
+
return recoverTypedDataAddress({
|
|
39
|
+
domain: buildDomain(att.chainId, att.registry),
|
|
40
|
+
types: WYRIWE_TYPES,
|
|
41
|
+
primaryType: 'WyriweAttestation',
|
|
42
|
+
message: {
|
|
43
|
+
agentId: att.agentId,
|
|
44
|
+
registry: att.registry,
|
|
45
|
+
modelHash: att.modelHash,
|
|
46
|
+
rawInputHash: att.rawInputHash,
|
|
47
|
+
sanitizationPipelineHash: att.sanitizationPipelineHash,
|
|
48
|
+
inputHash: att.inputHash,
|
|
49
|
+
outputHash: att.outputHash,
|
|
50
|
+
commitmentHash: att.commitmentHash,
|
|
51
|
+
timestamp: BigInt(att.timestamp),
|
|
52
|
+
},
|
|
53
|
+
signature: record.signature,
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
catch {
|
|
57
|
+
return null;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
//# sourceMappingURL=sign.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sign.js","sourceRoot":"","sources":["../../src/crypto/sign.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,uBAAuB,EAAE,MAAM,MAAM,CAAA;AACrE,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAA;AACnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAA;AAC7C,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;AAGpE,kDAAkD;AAClD,gEAAgE;AAChE,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,SAAwB,EACxB,SAAiB,EACjB,KAAoB,EACpB,SAAiB,EACjB,UAAyB;IAEzB,MAAM,OAAO,GAAG,mBAAmB,CAAC,UAAU,CAAC,CAAA;IAC/C,MAAM,WAAW,GAAG,iBAAiB,CAAC,SAAS,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,CAAC,CAAA;IAC7E,OAAO,OAAO,CAAC,WAAW,CAAC,EAAE,OAAO,EAAE,EAAE,GAAG,EAAE,WAAW,EAAE,EAAE,CAAC,CAAA;AAC/D,CAAC;AAED,sDAAsD;AACtD,oEAAoE;AACpE,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,MAAkB;IAC1D,MAAM,WAAW,GAAG,iBAAiB,CACnC,MAAM,CAAC,SAA0B,EACjC,MAAM,CAAC,SAAS,EAChB,MAAM,CAAC,KAAsB,EAC7B,MAAM,CAAC,SAAS,CACjB,CAAA;IACD,OAAO,qBAAqB,CAAC;QAC3B,OAAO,EAAI,EAAE,GAAG,EAAE,WAAW,EAAE;QAC/B,SAAS,EAAE,MAAM,CAAC,SAA0B;KAC7C,CAAC,CAAA;AACJ,CAAC;AAED,gEAAgE;AAChE,oDAAoD;AACpD,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,MAAkB,EAClB,cAA6B;IAE7B,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,mBAAmB,CAAC,MAAM,CAAC,CAAA;QAChD,OAAO,MAAM,CAAC,WAAW,EAAE,KAAK,cAAc,CAAC,WAAW,EAAE,CAAA;IAC9D,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAA;IACd,CAAC;AACH,CAAC;AAED,oEAAoE;AACpE,iFAAiF;AACjF,sEAAsE;AACtE,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAC5C,MAAkB;IAElB,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAWlC,CAAA;QAED,OAAO,uBAAuB,CAAC;YAC7B,MAAM,EAAO,WAAW,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,QAAQ,CAAC;YACnD,KAAK,EAAQ,YAAY;YACzB,WAAW,EAAE,mBAAmB;YAChC,OAAO,EAAE;gBACP,OAAO,EAAmB,GAAG,CAAC,OAAO;gBACrC,QAAQ,EAAkB,GAAG,CAAC,QAAQ;gBACtC,SAAS,EAAiB,GAAG,CAAC,SAAS;gBACvC,YAAY,EAAc,GAAG,CAAC,YAAY;gBAC1C,wBAAwB,EAAE,GAAG,CAAC,wBAAwB;gBACtD,SAAS,EAAiB,GAAG,CAAC,SAAS;gBACvC,UAAU,EAAgB,GAAG,CAAC,UAAU;gBACxC,cAAc,EAAY,GAAG,CAAC,cAAc;gBAC5C,SAAS,EAAiB,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC;aAChD;YACD,SAAS,EAAE,MAAM,CAAC,SAA0B;SAC7C,CAAC,CAAA;IACJ,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAA;IACb,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/db/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,YAAY,CAAA;AAEpC,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AACtC,YAAY,EAAE,EAAE,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA;AAK3D,wBAAgB,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,EAAE,CAMvC"}
|
package/dist/db/index.js
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { SQLiteDB } from './sqlite.js';
|
|
2
|
+
export { SQLiteDB } from './sqlite.js';
|
|
3
|
+
let _db = null;
|
|
4
|
+
// Singleton — call with path once at boot (index.ts), then call without args everywhere else.
|
|
5
|
+
export function getDB(path) {
|
|
6
|
+
if (!_db) {
|
|
7
|
+
if (!path)
|
|
8
|
+
throw new Error('getDB() called before DB was initialised — pass path on first call');
|
|
9
|
+
_db = new SQLiteDB(path);
|
|
10
|
+
}
|
|
11
|
+
return _db;
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/db/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AAGtC,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AAGtC,IAAI,GAAG,GAAoB,IAAI,CAAA;AAE/B,8FAA8F;AAC9F,MAAM,UAAU,KAAK,CAAC,IAAa;IACjC,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,IAAI,CAAC,IAAI;YAAE,MAAM,IAAI,KAAK,CAAC,oEAAoE,CAAC,CAAA;QAChG,GAAG,GAAG,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAA;IAC1B,CAAC;IACD,OAAO,GAAG,CAAA;AACZ,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export declare const SCHEMA = "\n CREATE TABLE IF NOT EXISTS schema_version (\n version INTEGER PRIMARY KEY,\n applied_at INTEGER NOT NULL DEFAULT (strftime('%s','now'))\n );\n\n CREATE TABLE IF NOT EXISTS peers (\n url TEXT PRIMARY KEY,\n last_sync_at INTEGER NOT NULL DEFAULT 0,\n healthy INTEGER NOT NULL DEFAULT 1,\n node_version TEXT,\n signer_address TEXT\n );\n";
|
|
2
|
+
export declare const MIGRATIONS: {
|
|
3
|
+
version: number;
|
|
4
|
+
sql: string;
|
|
5
|
+
}[];
|
|
6
|
+
//# sourceMappingURL=schema.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/db/schema.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,MAAM,8YAalB,CAAA;AAMD,eAAO,MAAM,UAAU,EAAE;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,EAmBxD,CAAA"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
// schema_version tracks applied migrations.
|
|
2
|
+
// Run SCHEMA first (creates the version table if missing), then runMigrations().
|
|
3
|
+
export const SCHEMA = `
|
|
4
|
+
CREATE TABLE IF NOT EXISTS schema_version (
|
|
5
|
+
version INTEGER PRIMARY KEY,
|
|
6
|
+
applied_at INTEGER NOT NULL DEFAULT (strftime('%s','now'))
|
|
7
|
+
);
|
|
8
|
+
|
|
9
|
+
CREATE TABLE IF NOT EXISTS peers (
|
|
10
|
+
url TEXT PRIMARY KEY,
|
|
11
|
+
last_sync_at INTEGER NOT NULL DEFAULT 0,
|
|
12
|
+
healthy INTEGER NOT NULL DEFAULT 1,
|
|
13
|
+
node_version TEXT,
|
|
14
|
+
signer_address TEXT
|
|
15
|
+
);
|
|
16
|
+
`;
|
|
17
|
+
// Ordered migrations — each runs exactly once, gated by schema_version.
|
|
18
|
+
// v1: composite PK (input_hash, namespace) replaces single-column input_hash PK,
|
|
19
|
+
// allowing WYRIWE attestation records to coexist with basic records
|
|
20
|
+
// for the same calldata in a different namespace.
|
|
21
|
+
export const MIGRATIONS = [
|
|
22
|
+
{
|
|
23
|
+
version: 1,
|
|
24
|
+
sql: `
|
|
25
|
+
DROP TABLE IF EXISTS records;
|
|
26
|
+
CREATE TABLE records (
|
|
27
|
+
input_hash TEXT NOT NULL,
|
|
28
|
+
namespace TEXT NOT NULL,
|
|
29
|
+
key TEXT NOT NULL,
|
|
30
|
+
value TEXT NOT NULL,
|
|
31
|
+
timestamp INTEGER NOT NULL,
|
|
32
|
+
signature TEXT NOT NULL,
|
|
33
|
+
source_peer TEXT,
|
|
34
|
+
PRIMARY KEY (input_hash, namespace)
|
|
35
|
+
);
|
|
36
|
+
CREATE INDEX IF NOT EXISTS idx_records_ns_ts
|
|
37
|
+
ON records (namespace, timestamp);
|
|
38
|
+
`,
|
|
39
|
+
},
|
|
40
|
+
];
|
|
41
|
+
//# sourceMappingURL=schema.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/db/schema.ts"],"names":[],"mappings":"AAAA,4CAA4C;AAC5C,iFAAiF;AACjF,MAAM,CAAC,MAAM,MAAM,GAAG;;;;;;;;;;;;;CAarB,CAAA;AAED,wEAAwE;AACxE,iFAAiF;AACjF,wEAAwE;AACxE,sDAAsD;AACtD,MAAM,CAAC,MAAM,UAAU,GAAuC;IAC5D;QACE,OAAO,EAAE,CAAC;QACV,GAAG,EAAE;;;;;;;;;;;;;;KAcJ;KACF;CACF,CAAA"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { DB, MeshRecord, PeerState, Contribution } from './types.js';
|
|
2
|
+
export declare class SQLiteDB implements DB {
|
|
3
|
+
private db;
|
|
4
|
+
private stmts;
|
|
5
|
+
constructor(path: string);
|
|
6
|
+
private runMigrations;
|
|
7
|
+
insertRecord(record: MeshRecord): Promise<void>;
|
|
8
|
+
getRecordsSince(namespace: string, since: number, limit: number, cursor?: string): Promise<MeshRecord[]>;
|
|
9
|
+
getRecord(inputHash: string, namespace?: string): Promise<MeshRecord | null>;
|
|
10
|
+
getRecordsByInputHash(inputHash: string): Promise<MeshRecord[]>;
|
|
11
|
+
upsertPeer(peer: PeerState): Promise<void>;
|
|
12
|
+
getPeers(): Promise<PeerState[]>;
|
|
13
|
+
recordCount(namespace: string): Promise<number>;
|
|
14
|
+
getRecentRecords(namespace: string, limit: number): Promise<MeshRecord[]>;
|
|
15
|
+
getContributions(namespace: string): Promise<Contribution[]>;
|
|
16
|
+
removePeer(url: string): Promise<void>;
|
|
17
|
+
close(): void;
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=sqlite.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sqlite.d.ts","sourceRoot":"","sources":["../../src/db/sqlite.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,EAAE,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAoBzE,qBAAa,QAAS,YAAW,EAAE;IACjC,OAAO,CAAC,EAAE,CAAmB;IAE7B,OAAO,CAAC,KAAK,CAcZ;gBAEW,IAAI,EAAE,MAAM;IA4FxB,OAAO,CAAC,aAAa;IAgBf,YAAY,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAqB/C,eAAe,CACnB,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,EACb,MAAM,CAAC,EAAE,MAAM,GACd,OAAO,CAAC,UAAU,EAAE,CAAC;IAkBlB,SAAS,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;IAO5E,qBAAqB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAK/D,UAAU,CAAC,IAAI,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;IAU1C,QAAQ,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;IAKhC,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAK/C,gBAAgB,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAKzE,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IAK5D,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAI5C,KAAK,IAAI,IAAI;CAGd"}
|