@orbitmem/sdk 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/README.md +104 -0
- package/dist/agent/agent-adapter.d.ts +3 -0
- package/dist/agent/agent-adapter.d.ts.map +1 -0
- package/dist/agent/agent-adapter.js +3 -0
- package/dist/agent/agent-adapter.js.map +1 -0
- package/dist/agent/client.d.ts +5 -0
- package/dist/agent/client.d.ts.map +1 -0
- package/dist/agent/client.js +146 -0
- package/dist/agent/client.js.map +1 -0
- package/dist/agent/index.d.ts +2 -0
- package/dist/agent/index.d.ts.map +1 -0
- package/dist/agent/index.js +2 -0
- package/dist/agent/index.js.map +1 -0
- package/dist/client.d.ts +3 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +118 -0
- package/dist/client.js.map +1 -0
- package/dist/contracts.d.ts +19 -0
- package/dist/contracts.d.ts.map +1 -0
- package/dist/contracts.js +28 -0
- package/dist/contracts.js.map +1 -0
- package/dist/data/index.d.ts +5 -0
- package/dist/data/index.d.ts.map +1 -0
- package/dist/data/index.js +5 -0
- package/dist/data/index.js.map +1 -0
- package/dist/data/orbitdb.d.ts +10 -0
- package/dist/data/orbitdb.d.ts.map +1 -0
- package/dist/data/orbitdb.js +39 -0
- package/dist/data/orbitdb.js.map +1 -0
- package/dist/data/pricing.d.ts +7 -0
- package/dist/data/pricing.d.ts.map +1 -0
- package/dist/data/pricing.js +55 -0
- package/dist/data/pricing.js.map +1 -0
- package/dist/data/serialization.d.ts +28 -0
- package/dist/data/serialization.d.ts.map +1 -0
- package/dist/data/serialization.js +76 -0
- package/dist/data/serialization.js.map +1 -0
- package/dist/data/vault.d.ts +21 -0
- package/dist/data/vault.d.ts.map +1 -0
- package/dist/data/vault.js +284 -0
- package/dist/data/vault.js.map +1 -0
- package/dist/discovery/discovery-layer.d.ts +3 -0
- package/dist/discovery/discovery-layer.d.ts.map +1 -0
- package/dist/discovery/discovery-layer.js +205 -0
- package/dist/discovery/discovery-layer.js.map +1 -0
- package/dist/discovery/index.d.ts +4 -0
- package/dist/discovery/index.d.ts.map +1 -0
- package/dist/discovery/index.js +4 -0
- package/dist/discovery/index.js.map +1 -0
- package/dist/discovery/mock-registry.d.ts +30 -0
- package/dist/discovery/mock-registry.d.ts.map +1 -0
- package/dist/discovery/mock-registry.js +71 -0
- package/dist/discovery/mock-registry.js.map +1 -0
- package/dist/discovery/on-chain-registry.d.ts +35 -0
- package/dist/discovery/on-chain-registry.d.ts.map +1 -0
- package/dist/discovery/on-chain-registry.js +199 -0
- package/dist/discovery/on-chain-registry.js.map +1 -0
- package/dist/encryption/aes.d.ts +15 -0
- package/dist/encryption/aes.d.ts.map +1 -0
- package/dist/encryption/aes.js +63 -0
- package/dist/encryption/aes.js.map +1 -0
- package/dist/encryption/encryption-layer.d.ts +8 -0
- package/dist/encryption/encryption-layer.d.ts.map +1 -0
- package/dist/encryption/encryption-layer.js +82 -0
- package/dist/encryption/encryption-layer.js.map +1 -0
- package/dist/encryption/index.d.ts +6 -0
- package/dist/encryption/index.d.ts.map +1 -0
- package/dist/encryption/index.js +4 -0
- package/dist/encryption/index.js.map +1 -0
- package/dist/encryption/lit.d.ts +23 -0
- package/dist/encryption/lit.d.ts.map +1 -0
- package/dist/encryption/lit.js +113 -0
- package/dist/encryption/lit.js.map +1 -0
- package/dist/encryption/vault-key.d.ts +37 -0
- package/dist/encryption/vault-key.d.ts.map +1 -0
- package/dist/encryption/vault-key.js +43 -0
- package/dist/encryption/vault-key.js.map +1 -0
- package/dist/identity/identity-layer.d.ts +3 -0
- package/dist/identity/identity-layer.d.ts.map +1 -0
- package/dist/identity/identity-layer.js +99 -0
- package/dist/identity/identity-layer.js.map +1 -0
- package/dist/identity/index.d.ts +4 -0
- package/dist/identity/index.d.ts.map +1 -0
- package/dist/identity/index.js +4 -0
- package/dist/identity/index.js.map +1 -0
- package/dist/identity/ows-adapter.d.ts +15 -0
- package/dist/identity/ows-adapter.d.ts.map +1 -0
- package/dist/identity/ows-adapter.js +67 -0
- package/dist/identity/ows-adapter.js.map +1 -0
- package/dist/identity/session.d.ts +10 -0
- package/dist/identity/session.d.ts.map +1 -0
- package/dist/identity/session.js +36 -0
- package/dist/identity/session.js.map +1 -0
- package/dist/index.d.ts +12 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +12 -0
- package/dist/index.js.map +1 -0
- package/dist/persistence/create-agent.d.ts +11 -0
- package/dist/persistence/create-agent.d.ts.map +1 -0
- package/dist/persistence/create-agent.js +47 -0
- package/dist/persistence/create-agent.js.map +1 -0
- package/dist/persistence/index.d.ts +3 -0
- package/dist/persistence/index.d.ts.map +1 -0
- package/dist/persistence/index.js +3 -0
- package/dist/persistence/index.js.map +1 -0
- package/dist/persistence/persistence-layer.d.ts +12 -0
- package/dist/persistence/persistence-layer.d.ts.map +1 -0
- package/dist/persistence/persistence-layer.js +194 -0
- package/dist/persistence/persistence-layer.js.map +1 -0
- package/dist/transport/index.d.ts +3 -0
- package/dist/transport/index.d.ts.map +1 -0
- package/dist/transport/index.js +3 -0
- package/dist/transport/index.js.map +1 -0
- package/dist/transport/relay-session.d.ts +41 -0
- package/dist/transport/relay-session.d.ts.map +1 -0
- package/dist/transport/relay-session.js +86 -0
- package/dist/transport/relay-session.js.map +1 -0
- package/dist/transport/transport-layer.d.ts +32 -0
- package/dist/transport/transport-layer.d.ts.map +1 -0
- package/dist/transport/transport-layer.js +110 -0
- package/dist/transport/transport-layer.js.map +1 -0
- package/dist/types.d.ts +1319 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +7 -0
- package/dist/types.js.map +1 -0
- package/package.json +91 -0
- package/src/__tests__/client.test.ts +30 -0
- package/src/__tests__/orbitdb-availability.ts +8 -0
- package/src/agent/__tests__/agent-adapter.test.ts +50 -0
- package/src/agent/__tests__/client.test.ts +50 -0
- package/src/agent/agent-adapter.ts +2 -0
- package/src/agent/client.ts +158 -0
- package/src/agent/index.ts +1 -0
- package/src/client.ts +134 -0
- package/src/contracts.ts +44 -0
- package/src/data/__tests__/pricing.test.ts +73 -0
- package/src/data/__tests__/vault-encryption.test.ts +346 -0
- package/src/data/__tests__/vault.test.ts +75 -0
- package/src/data/index.ts +8 -0
- package/src/data/orbitdb.ts +47 -0
- package/src/data/pricing.ts +63 -0
- package/src/data/serialization.ts +108 -0
- package/src/data/vault.ts +382 -0
- package/src/discovery/__tests__/discovery.test.ts +49 -0
- package/src/discovery/__tests__/on-chain-registry.test.ts +176 -0
- package/src/discovery/discovery-layer.ts +244 -0
- package/src/discovery/index.ts +3 -0
- package/src/discovery/mock-registry.ts +96 -0
- package/src/discovery/on-chain-registry.ts +237 -0
- package/src/encryption/__tests__/aes.test.ts +64 -0
- package/src/encryption/__tests__/encryption-layer.test.ts +80 -0
- package/src/encryption/__tests__/lit.test.ts +97 -0
- package/src/encryption/aes.ts +109 -0
- package/src/encryption/encryption-layer.ts +100 -0
- package/src/encryption/index.ts +5 -0
- package/src/encryption/lit.ts +161 -0
- package/src/encryption/vault-key.ts +63 -0
- package/src/identity/__tests__/identity.test.ts +31 -0
- package/src/identity/__tests__/ows-adapter.test.ts +47 -0
- package/src/identity/identity-layer.ts +123 -0
- package/src/identity/index.ts +3 -0
- package/src/identity/ows-adapter.ts +80 -0
- package/src/identity/session.ts +57 -0
- package/src/index.ts +12 -0
- package/src/persistence/__tests__/create-agent.test.ts +9 -0
- package/src/persistence/__tests__/persistence.test.ts +242 -0
- package/src/persistence/create-agent.ts +55 -0
- package/src/persistence/index.ts +2 -0
- package/src/persistence/persistence-layer.ts +236 -0
- package/src/transport/__tests__/solana-transport.test.ts +112 -0
- package/src/transport/__tests__/transport.test.ts +84 -0
- package/src/transport/index.ts +2 -0
- package/src/transport/relay-session.ts +118 -0
- package/src/transport/transport-layer.ts +171 -0
- package/src/types/orbitdb.d.ts +9 -0
- package/src/types.ts +1496 -0
package/README.md
ADDED
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
# @orbitmem/sdk
|
|
2
|
+
|
|
3
|
+
Sovereign data layer for AI agents — encrypted P2P vaults, multi-chain identity, and on-chain data trust.
|
|
4
|
+
|
|
5
|
+
## Install
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
npm install @orbitmem/sdk
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## Quick Start
|
|
12
|
+
|
|
13
|
+
### For Users (Data Owners)
|
|
14
|
+
|
|
15
|
+
```typescript
|
|
16
|
+
import { createOrbitMem } from "@orbitmem/sdk";
|
|
17
|
+
|
|
18
|
+
const orbitmem = await createOrbitMem({
|
|
19
|
+
identity: { chains: ["evm"] },
|
|
20
|
+
encryption: { defaultEngine: "aes", aes: { kdf: "hkdf-sha256" } },
|
|
21
|
+
});
|
|
22
|
+
|
|
23
|
+
// Connect wallet
|
|
24
|
+
await orbitmem.connect({ method: "evm", adapter: "metamask" });
|
|
25
|
+
|
|
26
|
+
// Store data with different visibility levels
|
|
27
|
+
await orbitmem.vault.put("travel/dietary", "vegan", { visibility: "public" });
|
|
28
|
+
await orbitmem.vault.put("travel/passport", { number: "..." }, { visibility: "private" });
|
|
29
|
+
await orbitmem.vault.put("travel/preferences", { seat: "window" }, { visibility: "shared" });
|
|
30
|
+
|
|
31
|
+
// Query and sync
|
|
32
|
+
const entries = await orbitmem.vault.query({ prefix: "travel" });
|
|
33
|
+
await orbitmem.vault.sync();
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
### For Agents (Data Consumers)
|
|
37
|
+
|
|
38
|
+
```typescript
|
|
39
|
+
import { createOrbitMemClient } from "@orbitmem/sdk/agent";
|
|
40
|
+
|
|
41
|
+
const client = createOrbitMemClient({
|
|
42
|
+
wallet: { family: "evm", address: "0x...", signMessage: signer.signMessage },
|
|
43
|
+
discovery: {
|
|
44
|
+
dataRegistry: "0x9eE44938ED77227470CaA2DbCC0459F49d249B7A",
|
|
45
|
+
reputationRegistry: "0x1Bce77f90C33A5f8faCa54782Ce3a17d1AD7109a",
|
|
46
|
+
registryChain: "base-sepolia",
|
|
47
|
+
},
|
|
48
|
+
});
|
|
49
|
+
|
|
50
|
+
// Discover data
|
|
51
|
+
const results = await client.discoverData({ schema: "travel:v1" });
|
|
52
|
+
|
|
53
|
+
// Read with quality checks
|
|
54
|
+
await client.withUserData(
|
|
55
|
+
{ vaultAddress, path: "travel/dietary", minQuality: 70, relayUrl: "..." },
|
|
56
|
+
(data, score) => {
|
|
57
|
+
console.log(data); // "vegan"
|
|
58
|
+
},
|
|
59
|
+
);
|
|
60
|
+
|
|
61
|
+
// Rate data quality
|
|
62
|
+
await client.rateData({ vaultAddress, path: "travel/dietary", score: 90, tags: ["accurate"] });
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
## Exports
|
|
66
|
+
|
|
67
|
+
| Entry Point | Description |
|
|
68
|
+
| -------------------------- | -------------------------------------------- |
|
|
69
|
+
| `@orbitmem/sdk` | `createOrbitMem` — full SDK with all layers |
|
|
70
|
+
| `@orbitmem/sdk/agent` | `createOrbitMemClient` — agent-side client |
|
|
71
|
+
| `@orbitmem/sdk/discovery` | Discovery & reputation layer |
|
|
72
|
+
| `@orbitmem/sdk/transport` | ERC-8128 signed HTTP requests |
|
|
73
|
+
| `@orbitmem/sdk/encryption` | Lit Protocol & AES-256-GCM engines |
|
|
74
|
+
| `@orbitmem/sdk/identity` | Multi-chain wallet auth (EVM/Solana/Passkey) |
|
|
75
|
+
| `@orbitmem/sdk/types` | TypeScript type definitions |
|
|
76
|
+
|
|
77
|
+
## Architecture
|
|
78
|
+
|
|
79
|
+
The SDK is composed of six independent layers, each created by a factory function:
|
|
80
|
+
|
|
81
|
+
| Layer | Purpose |
|
|
82
|
+
| ---------------- | ------------------------------------------------------------------------------- |
|
|
83
|
+
| **Identity** | Multi-chain wallet connection (EVM, Solana, Passkey) and session key management |
|
|
84
|
+
| **Encryption** | Pluggable encryption via AES-256-GCM or Lit Protocol with access conditions |
|
|
85
|
+
| **Data (Vault)** | Local-first P2P storage backed by OrbitDB with nested paths |
|
|
86
|
+
| **Transport** | ERC-8128 signed HTTP requests for relay communication |
|
|
87
|
+
| **Discovery** | On-chain data registry and reputation scoring via ERC-8004 |
|
|
88
|
+
| **Persistence** | Snapshot archival to Filecoin/IPFS via Storacha |
|
|
89
|
+
|
|
90
|
+
## Data Visibility
|
|
91
|
+
|
|
92
|
+
| Level | Description |
|
|
93
|
+
| --------- | ----------------------------------------------------------------- |
|
|
94
|
+
| `public` | Plaintext, readable by anyone via relay |
|
|
95
|
+
| `private` | AES encrypted, only the owner can decrypt |
|
|
96
|
+
| `shared` | Encrypted with access conditions (Lit Protocol or shared AES key) |
|
|
97
|
+
|
|
98
|
+
## Supported Chains
|
|
99
|
+
|
|
100
|
+
Base, Base Sepolia
|
|
101
|
+
|
|
102
|
+
## License
|
|
103
|
+
|
|
104
|
+
MIT
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-adapter.d.ts","sourceRoot":"","sources":["../../src/agent/agent-adapter.ts"],"names":[],"mappings":"AAAA,uFAAuF;AACvF,OAAO,EAAE,0BAA0B,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-adapter.js","sourceRoot":"","sources":["../../src/agent/agent-adapter.ts"],"names":[],"mappings":"AAAA,uFAAuF;AACvF,OAAO,EAAE,0BAA0B,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { ClientConfig, IOrbitMemClient } from "../types.js";
|
|
2
|
+
export declare function createOrbitMemClient(config: ClientConfig): IOrbitMemClient;
|
|
3
|
+
/** @deprecated Use createOrbitMemClient instead */
|
|
4
|
+
export declare const createOrbitMemAgentAdapter: typeof createOrbitMemClient;
|
|
5
|
+
//# sourceMappingURL=client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/agent/client.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,YAAY,EAAiB,eAAe,EAAE,MAAM,aAAa,CAAC;AAEhF,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,YAAY,GAAG,eAAe,CAqJ1E;AAED,mDAAmD;AACnD,eAAO,MAAM,0BAA0B,6BAAuB,CAAC"}
|
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
import { createDiscoveryLayer } from "../discovery/index.js";
|
|
2
|
+
import { createEncryptionLayer } from "../encryption/index.js";
|
|
3
|
+
import { createTransportLayer } from "../transport/index.js";
|
|
4
|
+
export function createOrbitMemClient(config) {
|
|
5
|
+
const transport = createTransportLayer({
|
|
6
|
+
signer: async (payload) => ({
|
|
7
|
+
signature: await config.wallet.signMessage(payload),
|
|
8
|
+
algorithm: config.wallet.family === "evm"
|
|
9
|
+
? "ecdsa-secp256k1"
|
|
10
|
+
: config.wallet.family === "solana"
|
|
11
|
+
? "ed25519"
|
|
12
|
+
: "p256",
|
|
13
|
+
}),
|
|
14
|
+
signerAddress: config.wallet.address,
|
|
15
|
+
family: config.wallet.family,
|
|
16
|
+
});
|
|
17
|
+
const encryption = createEncryptionLayer({
|
|
18
|
+
defaultEngine: config.lit ? "lit" : "aes",
|
|
19
|
+
lit: config.lit,
|
|
20
|
+
aes: { kdf: "hkdf-sha256" },
|
|
21
|
+
});
|
|
22
|
+
const discovery = config.discovery
|
|
23
|
+
? createDiscoveryLayer({
|
|
24
|
+
dataRegistry: config.discovery.dataRegistry,
|
|
25
|
+
reputationRegistry: config.discovery.reputationRegistry,
|
|
26
|
+
registryChain: config.discovery.registryChain,
|
|
27
|
+
})
|
|
28
|
+
: null;
|
|
29
|
+
return {
|
|
30
|
+
async discoverData(query) {
|
|
31
|
+
if (!discovery)
|
|
32
|
+
return [];
|
|
33
|
+
return discovery.findData(query);
|
|
34
|
+
},
|
|
35
|
+
async getDataScore(vaultAddress, path) {
|
|
36
|
+
if (!discovery) {
|
|
37
|
+
return {
|
|
38
|
+
dataId: 0,
|
|
39
|
+
vaultAddress,
|
|
40
|
+
vaultKey: path,
|
|
41
|
+
quality: 0,
|
|
42
|
+
freshness: { lastUpdated: 0, score: 0 },
|
|
43
|
+
accuracy: { score: 0, feedbackCount: 0 },
|
|
44
|
+
completeness: { score: 0, feedbackCount: 0 },
|
|
45
|
+
verified: false,
|
|
46
|
+
consumptionCount: 0,
|
|
47
|
+
totalFeedback: 0,
|
|
48
|
+
tagScores: {},
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
return discovery.getDataScore(vaultAddress, path);
|
|
52
|
+
},
|
|
53
|
+
async rateData(feedback) {
|
|
54
|
+
if (!discovery)
|
|
55
|
+
throw new Error("Discovery layer not configured");
|
|
56
|
+
return discovery.rateData(feedback);
|
|
57
|
+
},
|
|
58
|
+
async readPublicData(request) {
|
|
59
|
+
try {
|
|
60
|
+
const url = `${request.relayUrl}/v1/vault/public/${encodeURIComponent(request.vaultAddress)}/${encodeURIComponent(request.path)}`;
|
|
61
|
+
const res = await transport.fetch(url, { method: "GET" });
|
|
62
|
+
if (!res.ok)
|
|
63
|
+
return null;
|
|
64
|
+
const body = (await res.json());
|
|
65
|
+
return body.value ?? null;
|
|
66
|
+
}
|
|
67
|
+
catch {
|
|
68
|
+
return null;
|
|
69
|
+
}
|
|
70
|
+
},
|
|
71
|
+
async listPublicKeys(request) {
|
|
72
|
+
try {
|
|
73
|
+
const url = `${request.relayUrl}/v1/vault/public/${encodeURIComponent(request.vaultAddress)}/keys`;
|
|
74
|
+
const params = request.prefix ? `?prefix=${encodeURIComponent(request.prefix)}` : "";
|
|
75
|
+
const res = await transport.fetch(`${url}${params}`, { method: "GET" });
|
|
76
|
+
if (!res.ok)
|
|
77
|
+
return [];
|
|
78
|
+
const body = (await res.json());
|
|
79
|
+
return body.keys ?? [];
|
|
80
|
+
}
|
|
81
|
+
catch {
|
|
82
|
+
return [];
|
|
83
|
+
}
|
|
84
|
+
},
|
|
85
|
+
async fetchUserData(request) {
|
|
86
|
+
const url = `${request.relayUrl}/v1/vault/read`;
|
|
87
|
+
const res = await transport.fetch(url, {
|
|
88
|
+
method: "POST",
|
|
89
|
+
body: { vaultAddress: request.vaultAddress, path: request.path },
|
|
90
|
+
});
|
|
91
|
+
if (!res.ok)
|
|
92
|
+
throw new Error(`Failed to fetch data: ${res.status}`);
|
|
93
|
+
return res.json();
|
|
94
|
+
},
|
|
95
|
+
async decrypt(encrypted, opts) {
|
|
96
|
+
if (encrypted.engine === "aes" && opts?.sharedKey) {
|
|
97
|
+
return encryption.decrypt(encrypted, {
|
|
98
|
+
keySource: { type: "raw", key: opts.sharedKey },
|
|
99
|
+
});
|
|
100
|
+
}
|
|
101
|
+
return encryption.decrypt(encrypted);
|
|
102
|
+
},
|
|
103
|
+
async withUserData(request, callback, opts) {
|
|
104
|
+
// 1. Check data score
|
|
105
|
+
const score = await this.getDataScore(request.vaultAddress, request.path);
|
|
106
|
+
const minQuality = request.minQuality ?? config.discovery?.minDataQuality ?? 0;
|
|
107
|
+
if (minQuality > 0 && score.quality < minQuality) {
|
|
108
|
+
throw new Error(`Data quality ${score.quality} below threshold ${minQuality}`);
|
|
109
|
+
}
|
|
110
|
+
// 2. Fetch encrypted data
|
|
111
|
+
const encrypted = await this.fetchUserData({
|
|
112
|
+
vaultAddress: request.vaultAddress,
|
|
113
|
+
path: request.path,
|
|
114
|
+
relayUrl: request.relayUrl,
|
|
115
|
+
});
|
|
116
|
+
// 3. Decrypt
|
|
117
|
+
const plaintext = await this.decrypt(encrypted, {
|
|
118
|
+
sharedKey: opts?.sharedKey,
|
|
119
|
+
});
|
|
120
|
+
// 4. Execute callback
|
|
121
|
+
let result;
|
|
122
|
+
try {
|
|
123
|
+
result = await callback(plaintext, score);
|
|
124
|
+
}
|
|
125
|
+
finally {
|
|
126
|
+
// 5. Zero plaintext buffer
|
|
127
|
+
plaintext.fill(0);
|
|
128
|
+
}
|
|
129
|
+
// 6. Auto-rate if configured
|
|
130
|
+
if (opts?.autoRate && discovery) {
|
|
131
|
+
const dataReg = (await discovery.findData({})).find((d) => d.vaultAddress === request.vaultAddress && d.vaultKey === request.path);
|
|
132
|
+
if (dataReg) {
|
|
133
|
+
await discovery.rateData({
|
|
134
|
+
dataId: dataReg.dataId,
|
|
135
|
+
value: opts.autoRate.value,
|
|
136
|
+
qualityDimension: opts.autoRate.qualityDimension,
|
|
137
|
+
});
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
return result;
|
|
141
|
+
},
|
|
142
|
+
};
|
|
143
|
+
}
|
|
144
|
+
/** @deprecated Use createOrbitMemClient instead */
|
|
145
|
+
export const createOrbitMemAgentAdapter = createOrbitMemClient;
|
|
146
|
+
//# sourceMappingURL=client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/agent/client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/agent/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,0BAA0B,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/agent/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,0BAA0B,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC"}
|
package/dist/client.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAE5D,wBAAsB,cAAc,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,SAAS,CAAC,CA4H/E"}
|
package/dist/client.js
ADDED
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
import { getNetwork } from "./contracts.js";
|
|
2
|
+
import { createOrbitDBInstance, createVault, createVaultPricing } from "./data/index.js";
|
|
3
|
+
import { createDiscoveryLayer } from "./discovery/index.js";
|
|
4
|
+
import { createEncryptionLayer } from "./encryption/index.js";
|
|
5
|
+
import { createIdentityLayer } from "./identity/index.js";
|
|
6
|
+
import { createPersistenceLayer } from "./persistence/index.js";
|
|
7
|
+
import { createTransportLayer } from "./transport/index.js";
|
|
8
|
+
export async function createOrbitMem(config) {
|
|
9
|
+
// Initialize identity layer
|
|
10
|
+
const identity = createIdentityLayer(config.identity);
|
|
11
|
+
// Initialize encryption layer
|
|
12
|
+
const encryption = createEncryptionLayer(config.encryption ?? {
|
|
13
|
+
defaultEngine: "aes",
|
|
14
|
+
aes: { kdf: "hkdf-sha256" },
|
|
15
|
+
});
|
|
16
|
+
// Initialize OrbitDB + vault
|
|
17
|
+
const { orbitdb, cleanup: orbitdbCleanup } = await createOrbitDBInstance({
|
|
18
|
+
directory: config.vault?.dbName ? `./${config.vault.dbName}` : "./orbitdb",
|
|
19
|
+
});
|
|
20
|
+
const vault = await createVault(orbitdb, {
|
|
21
|
+
dbName: config.vault?.dbName,
|
|
22
|
+
aesEngine: encryption.aes,
|
|
23
|
+
encryptionLayer: encryption,
|
|
24
|
+
});
|
|
25
|
+
const pricing = createVaultPricing(vault.metaDb);
|
|
26
|
+
// Initialize transport layer with a placeholder signer
|
|
27
|
+
// (gets wired to identity layer when a wallet connects)
|
|
28
|
+
const transport = createTransportLayer({
|
|
29
|
+
signer: async (payload) => {
|
|
30
|
+
const session = identity.getActiveSession();
|
|
31
|
+
if (!session)
|
|
32
|
+
throw new Error("No active session — connect a wallet first");
|
|
33
|
+
// Delegate to identity layer's signChallenge
|
|
34
|
+
const message = new TextDecoder().decode(payload);
|
|
35
|
+
const { signature, algorithm } = await identity.signChallenge(message);
|
|
36
|
+
return { signature, algorithm };
|
|
37
|
+
},
|
|
38
|
+
signerAddress: "0x0",
|
|
39
|
+
family: "evm",
|
|
40
|
+
});
|
|
41
|
+
// Initialize discovery layer (defaults to current network's contracts)
|
|
42
|
+
const network = getNetwork(config.network);
|
|
43
|
+
const discoveryConfig = config.discovery ?? {
|
|
44
|
+
dataRegistry: network.dataRegistry,
|
|
45
|
+
reputationRegistry: network.feedbackRegistry,
|
|
46
|
+
registryChain: network.chain,
|
|
47
|
+
};
|
|
48
|
+
// Inject deployBlock from network if not explicitly set
|
|
49
|
+
if (discoveryConfig.deployBlock === undefined) {
|
|
50
|
+
discoveryConfig.deployBlock = network.deployBlock;
|
|
51
|
+
}
|
|
52
|
+
const discovery = createDiscoveryLayer(discoveryConfig);
|
|
53
|
+
// Initialize persistence layer
|
|
54
|
+
const persistence = createPersistenceLayer({
|
|
55
|
+
mock: !config.persistence?.relayUrl && !config.persistence?.proof,
|
|
56
|
+
relayUrl: config.persistence?.relayUrl,
|
|
57
|
+
proof: config.persistence?.proof,
|
|
58
|
+
gatewayUrl: config.persistence?.gatewayUrl,
|
|
59
|
+
});
|
|
60
|
+
return {
|
|
61
|
+
identity,
|
|
62
|
+
vault,
|
|
63
|
+
encryption,
|
|
64
|
+
transport,
|
|
65
|
+
persistence,
|
|
66
|
+
discovery,
|
|
67
|
+
pricing,
|
|
68
|
+
async connect(opts) {
|
|
69
|
+
const result = await identity.connect(opts);
|
|
70
|
+
// Derive a deterministic AES key from the wallet signature for vault encryption
|
|
71
|
+
try {
|
|
72
|
+
const { signature } = await identity.signChallenge("OrbitMem Vault Key v1");
|
|
73
|
+
const hash = new Uint8Array(await crypto.subtle.digest("SHA-256", new Uint8Array(signature)));
|
|
74
|
+
const key = await encryption.aes.deriveKey({ type: "raw", key: hash });
|
|
75
|
+
vault.setDefaultKey(key);
|
|
76
|
+
}
|
|
77
|
+
catch {
|
|
78
|
+
// Key derivation is best-effort — vault works without it for public data
|
|
79
|
+
}
|
|
80
|
+
// Generate Lit authSig for decrypting Lit-encrypted vault entries
|
|
81
|
+
if (encryption.lit && result.family === "evm") {
|
|
82
|
+
try {
|
|
83
|
+
const message = "OrbitMem Lit Auth";
|
|
84
|
+
const { signature } = await identity.signChallenge(message);
|
|
85
|
+
const sig = "0x" +
|
|
86
|
+
Array.from(new Uint8Array(signature))
|
|
87
|
+
.map((b) => b.toString(16).padStart(2, "0"))
|
|
88
|
+
.join("");
|
|
89
|
+
vault.setAuthSig({
|
|
90
|
+
sig,
|
|
91
|
+
derivedVia: "web3.eth.personal.sign",
|
|
92
|
+
signedMessage: message,
|
|
93
|
+
address: result.address,
|
|
94
|
+
});
|
|
95
|
+
}
|
|
96
|
+
catch {
|
|
97
|
+
// Lit auth is best-effort — vault works without it for public/AES data
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
return result;
|
|
101
|
+
},
|
|
102
|
+
async disconnect() {
|
|
103
|
+
await identity.disconnect();
|
|
104
|
+
},
|
|
105
|
+
async encrypt(data, opts) {
|
|
106
|
+
return encryption.encrypt(data, opts);
|
|
107
|
+
},
|
|
108
|
+
async decrypt(encrypted, opts) {
|
|
109
|
+
return encryption.decrypt(encrypted, opts);
|
|
110
|
+
},
|
|
111
|
+
async destroy() {
|
|
112
|
+
await vault.close();
|
|
113
|
+
await orbitdbCleanup();
|
|
114
|
+
await identity.disconnect();
|
|
115
|
+
},
|
|
116
|
+
};
|
|
117
|
+
}
|
|
118
|
+
//# sourceMappingURL=client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { EvmAddress, EvmChain } from "./types.js";
|
|
2
|
+
export type NetworkId = "base" | "base-sepolia";
|
|
3
|
+
export interface NetworkConfig {
|
|
4
|
+
dataRegistry: EvmAddress;
|
|
5
|
+
feedbackRegistry: EvmAddress;
|
|
6
|
+
chain: EvmChain;
|
|
7
|
+
chainId: number;
|
|
8
|
+
rpcUrl: string;
|
|
9
|
+
relayUrl: string;
|
|
10
|
+
/** Block number at which contracts were deployed (used for event queries) */
|
|
11
|
+
deployBlock: bigint;
|
|
12
|
+
}
|
|
13
|
+
/** Deployed contract addresses and relay URLs per network */
|
|
14
|
+
export declare const NETWORKS: Record<NetworkId, NetworkConfig>;
|
|
15
|
+
/** Current default network */
|
|
16
|
+
export declare const DEFAULT_NETWORK: NetworkId;
|
|
17
|
+
/** Resolve network config by ID */
|
|
18
|
+
export declare function getNetwork(network?: NetworkId): NetworkConfig;
|
|
19
|
+
//# sourceMappingURL=contracts.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"contracts.d.ts","sourceRoot":"","sources":["../src/contracts.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEvD,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,cAAc,CAAC;AAEhD,MAAM,WAAW,aAAa;IAC5B,YAAY,EAAE,UAAU,CAAC;IACzB,gBAAgB,EAAE,UAAU,CAAC;IAC7B,KAAK,EAAE,QAAQ,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,6EAA6E;IAC7E,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,6DAA6D;AAC7D,eAAO,MAAM,QAAQ,EAAE,MAAM,CAAC,SAAS,EAAE,aAAa,CAmBrD,CAAC;AAEF,8BAA8B;AAC9B,eAAO,MAAM,eAAe,EAAE,SAA0B,CAAC;AAEzD,mCAAmC;AACnC,wBAAgB,UAAU,CAAC,OAAO,CAAC,EAAE,SAAS,GAAG,aAAa,CAE7D"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/** Deployed contract addresses and relay URLs per network */
|
|
2
|
+
export const NETWORKS = {
|
|
3
|
+
"base-sepolia": {
|
|
4
|
+
dataRegistry: "0x9eE44938ED77227470CaA2DbCC0459F49d249B7A",
|
|
5
|
+
feedbackRegistry: "0x1Bce77f90C33A5f8faCa54782Ce3a17d1AD7109a",
|
|
6
|
+
chain: "base-sepolia",
|
|
7
|
+
chainId: 84532,
|
|
8
|
+
rpcUrl: "https://sepolia.base.org",
|
|
9
|
+
relayUrl: "https://orbitmem-relay.fly.dev",
|
|
10
|
+
deployBlock: 38728995n,
|
|
11
|
+
},
|
|
12
|
+
base: {
|
|
13
|
+
dataRegistry: "0x0000000000000000000000000000000000000000",
|
|
14
|
+
feedbackRegistry: "0x0000000000000000000000000000000000000000",
|
|
15
|
+
chain: "base",
|
|
16
|
+
chainId: 8453,
|
|
17
|
+
rpcUrl: "https://mainnet.base.org",
|
|
18
|
+
relayUrl: "https://orbitmem-relay.fly.dev",
|
|
19
|
+
deployBlock: 0n,
|
|
20
|
+
},
|
|
21
|
+
};
|
|
22
|
+
/** Current default network */
|
|
23
|
+
export const DEFAULT_NETWORK = "base-sepolia";
|
|
24
|
+
/** Resolve network config by ID */
|
|
25
|
+
export function getNetwork(network) {
|
|
26
|
+
return NETWORKS[network ?? DEFAULT_NETWORK];
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=contracts.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"contracts.js","sourceRoot":"","sources":["../src/contracts.ts"],"names":[],"mappings":"AAeA,6DAA6D;AAC7D,MAAM,CAAC,MAAM,QAAQ,GAAqC;IACxD,cAAc,EAAE;QACd,YAAY,EAAE,4CAA0D;QACxE,gBAAgB,EAAE,4CAA0D;QAC5E,KAAK,EAAE,cAAc;QACrB,OAAO,EAAE,KAAK;QACd,MAAM,EAAE,0BAA0B;QAClC,QAAQ,EAAE,gCAAgC;QAC1C,WAAW,EAAE,SAAS;KACvB;IACD,IAAI,EAAE;QACJ,YAAY,EAAE,4CAA0D;QACxE,gBAAgB,EAAE,4CAA0D;QAC5E,KAAK,EAAE,MAAM;QACb,OAAO,EAAE,IAAI;QACb,MAAM,EAAE,0BAA0B;QAClC,QAAQ,EAAE,gCAAgC;QAC1C,WAAW,EAAE,EAAE;KAChB;CACF,CAAC;AAEF,8BAA8B;AAC9B,MAAM,CAAC,MAAM,eAAe,GAAc,cAAc,CAAC;AAEzD,mCAAmC;AACnC,MAAM,UAAU,UAAU,CAAC,OAAmB;IAC5C,OAAO,QAAQ,CAAC,OAAO,IAAI,eAAe,CAAC,CAAC;AAC9C,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export { createOrbitDBInstance } from "./orbitdb.js";
|
|
2
|
+
export { deserializeEncrypted, isSerializedEncrypted, serializeEncrypted, } from "./serialization.js";
|
|
3
|
+
export { createVault } from "./vault.js";
|
|
4
|
+
export { createVaultPricing } from "./pricing.js";
|
|
5
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/data/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,EACL,oBAAoB,EACpB,qBAAqB,EACrB,kBAAkB,GACnB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACzC,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export { createOrbitDBInstance } from "./orbitdb.js";
|
|
2
|
+
export { deserializeEncrypted, isSerializedEncrypted, serializeEncrypted, } from "./serialization.js";
|
|
3
|
+
export { createVault } from "./vault.js";
|
|
4
|
+
export { createVaultPricing } from "./pricing.js";
|
|
5
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/data/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,EACL,oBAAoB,EACpB,qBAAqB,EACrB,kBAAkB,GACnB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACzC,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"orbitdb.d.ts","sourceRoot":"","sources":["../../src/data/orbitdb.ts"],"names":[],"mappings":"AAiBA,wBAAsB,qBAAqB,CAAC,IAAI,EAAE;IAChD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;CACxB,GAAG,OAAO,CAAC;IAAE,OAAO,EAAE,GAAG,CAAC;IAAC,IAAI,EAAE,GAAG,CAAC;IAAC,MAAM,EAAE,GAAG,CAAC;IAAC,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;CAAE,CAAC,CA0BlF"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
// oxlint-disable-next-line typescript/triple-slash-reference
|
|
2
|
+
/// <reference path="../types/orbitdb.d.ts" />
|
|
3
|
+
import { gossipsub } from "@chainsafe/libp2p-gossipsub";
|
|
4
|
+
import { noise } from "@chainsafe/libp2p-noise";
|
|
5
|
+
import { yamux } from "@chainsafe/libp2p-yamux";
|
|
6
|
+
import { identify } from "@libp2p/identify";
|
|
7
|
+
import { tcp } from "@libp2p/tcp";
|
|
8
|
+
import { createOrbitDB, useDatabaseType } from "@orbitdb/core";
|
|
9
|
+
import { Nested } from "@orbitdb/nested-db";
|
|
10
|
+
import { LevelBlockstore } from "blockstore-level";
|
|
11
|
+
import { createHelia } from "helia";
|
|
12
|
+
import { createLibp2p } from "libp2p";
|
|
13
|
+
// Register the Nested database type (must happen before createOrbitDB)
|
|
14
|
+
useDatabaseType(Nested);
|
|
15
|
+
export async function createOrbitDBInstance(opts) {
|
|
16
|
+
const blockstore = new LevelBlockstore(opts.directory ?? "./orbitdb/blocks");
|
|
17
|
+
const libp2p = await createLibp2p({
|
|
18
|
+
addresses: { listen: opts.listenAddrs ?? ["/ip4/0.0.0.0/tcp/0"] },
|
|
19
|
+
transports: [tcp()],
|
|
20
|
+
connectionEncrypters: [noise()],
|
|
21
|
+
streamMuxers: [yamux()],
|
|
22
|
+
services: {
|
|
23
|
+
identify: identify(),
|
|
24
|
+
pubsub: gossipsub({ allowPublishToZeroTopicPeers: true }),
|
|
25
|
+
},
|
|
26
|
+
});
|
|
27
|
+
const ipfs = await createHelia({ libp2p, blockstore });
|
|
28
|
+
const orbitdb = await createOrbitDB({ ipfs });
|
|
29
|
+
return {
|
|
30
|
+
orbitdb,
|
|
31
|
+
ipfs,
|
|
32
|
+
libp2p,
|
|
33
|
+
cleanup: async () => {
|
|
34
|
+
await orbitdb.stop();
|
|
35
|
+
await ipfs.stop();
|
|
36
|
+
},
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=orbitdb.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"orbitdb.js","sourceRoot":"","sources":["../../src/data/orbitdb.ts"],"names":[],"mappings":"AAAA,6DAA6D;AAC7D,8CAA8C;AAE9C,OAAO,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AACxD,OAAO,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAC;AAChD,OAAO,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAC;AAChD,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,GAAG,EAAE,MAAM,aAAa,CAAC;AAClC,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAC/D,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AACpC,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAEtC,uEAAuE;AACvE,eAAe,CAAC,MAAM,CAAC,CAAC;AAExB,MAAM,CAAC,KAAK,UAAU,qBAAqB,CAAC,IAG3C;IACC,MAAM,UAAU,GAAG,IAAI,eAAe,CAAC,IAAI,CAAC,SAAS,IAAI,kBAAkB,CAAC,CAAC;IAE7E,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC;QAChC,SAAS,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,WAAW,IAAI,CAAC,oBAAoB,CAAC,EAAE;QACjE,UAAU,EAAE,CAAC,GAAG,EAAE,CAAC;QACnB,oBAAoB,EAAE,CAAC,KAAK,EAAE,CAAC;QAC/B,YAAY,EAAE,CAAC,KAAK,EAAE,CAAC;QACvB,QAAQ,EAAE;YACR,QAAQ,EAAE,QAAQ,EAAE;YACpB,MAAM,EAAE,SAAS,CAAC,EAAE,4BAA4B,EAAE,IAAI,EAAE,CAAC;SAC1D;KACF,CAAC,CAAC;IAEH,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC;IACvD,MAAM,OAAO,GAAG,MAAM,aAAa,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;IAE9C,OAAO;QACL,OAAO;QACP,IAAI;QACJ,MAAM;QACN,OAAO,EAAE,KAAK,IAAI,EAAE;YAClB,MAAM,OAAO,CAAC,IAAI,EAAE,CAAC;YACrB,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;QACpB,CAAC;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { IVaultPricing } from "../types.js";
|
|
2
|
+
/**
|
|
3
|
+
* Create pricing CRUD methods backed by a vault's `-meta` OrbitDB store.
|
|
4
|
+
* Pricing keys live under the `pricing/` prefix in metadata.
|
|
5
|
+
*/
|
|
6
|
+
export declare function createVaultPricing(metaDb: any): IVaultPricing;
|
|
7
|
+
//# sourceMappingURL=pricing.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pricing.d.ts","sourceRoot":"","sources":["../../src/data/pricing.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAgB,MAAM,aAAa,CAAC;AAK/D;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,GAAG,GAAG,aAAa,CAqD7D"}
|