@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
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
export class AESEngine {
|
|
2
|
+
config;
|
|
3
|
+
lastSalt = new Uint8Array(32);
|
|
4
|
+
lastSource = "raw";
|
|
5
|
+
constructor(config) {
|
|
6
|
+
this.config = config;
|
|
7
|
+
}
|
|
8
|
+
async deriveKey(source, walletSignature) {
|
|
9
|
+
if (source.type === "raw") {
|
|
10
|
+
this.lastSource = "raw";
|
|
11
|
+
this.lastSalt = new Uint8Array(0);
|
|
12
|
+
return crypto.subtle.importKey("raw", source.key, { name: "AES-GCM" }, false, ["encrypt", "decrypt"]);
|
|
13
|
+
}
|
|
14
|
+
if (source.type === "wallet-signature") {
|
|
15
|
+
if (!walletSignature)
|
|
16
|
+
throw new Error("walletSignature required for wallet-signature source");
|
|
17
|
+
const ikm = await crypto.subtle.importKey("raw", walletSignature, "HKDF", false, ["deriveKey"]);
|
|
18
|
+
const salt = crypto.getRandomValues(new Uint8Array(32));
|
|
19
|
+
const info = new TextEncoder().encode("orbitmem-aes-256-gcm");
|
|
20
|
+
this.lastSource = "wallet-signature";
|
|
21
|
+
this.lastSalt = salt;
|
|
22
|
+
return crypto.subtle.deriveKey({ name: "HKDF", hash: "SHA-256", salt, info }, ikm, { name: "AES-GCM", length: 256 }, false, ["encrypt", "decrypt"]);
|
|
23
|
+
}
|
|
24
|
+
if (source.type === "password") {
|
|
25
|
+
const enc = new TextEncoder().encode(source.password);
|
|
26
|
+
const ikm = await crypto.subtle.importKey("raw", enc, "PBKDF2", false, ["deriveKey"]);
|
|
27
|
+
const salt = crypto.getRandomValues(new Uint8Array(32));
|
|
28
|
+
this.lastSource = "password";
|
|
29
|
+
this.lastSalt = salt;
|
|
30
|
+
return crypto.subtle.deriveKey({ name: "PBKDF2", hash: "SHA-256", salt, iterations: this.config.iterations ?? 100000 }, ikm, { name: "AES-GCM", length: 256 }, false, ["encrypt", "decrypt"]);
|
|
31
|
+
}
|
|
32
|
+
throw new Error(`Unknown key source type: ${source.type}`);
|
|
33
|
+
}
|
|
34
|
+
async encrypt(data, key) {
|
|
35
|
+
const iv = crypto.getRandomValues(new Uint8Array(12));
|
|
36
|
+
const ciphertextWithTag = await crypto.subtle.encrypt({ name: "AES-GCM", iv: iv, tagLength: 128 }, key, data);
|
|
37
|
+
// AES-GCM appends the 16-byte auth tag to the ciphertext
|
|
38
|
+
const raw = new Uint8Array(ciphertextWithTag);
|
|
39
|
+
const ciphertext = raw.slice(0, raw.length - 16);
|
|
40
|
+
const authTag = raw.slice(raw.length - 16);
|
|
41
|
+
return {
|
|
42
|
+
engine: "aes",
|
|
43
|
+
ciphertext,
|
|
44
|
+
iv,
|
|
45
|
+
authTag,
|
|
46
|
+
keyDerivation: {
|
|
47
|
+
source: this.lastSource,
|
|
48
|
+
salt: new Uint8Array(this.lastSalt),
|
|
49
|
+
kdf: this.config.kdf === "hkdf-sha256" ? "hkdf-sha256" : "pbkdf2-sha256",
|
|
50
|
+
...(this.lastSource === "password" ? { iterations: this.config.iterations ?? 100000 } : {}),
|
|
51
|
+
},
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
async decrypt(encrypted, key) {
|
|
55
|
+
// Reconstruct ciphertext + authTag
|
|
56
|
+
const combined = new Uint8Array(encrypted.ciphertext.length + encrypted.authTag.length);
|
|
57
|
+
combined.set(encrypted.ciphertext, 0);
|
|
58
|
+
combined.set(encrypted.authTag, encrypted.ciphertext.length);
|
|
59
|
+
const plaintext = await crypto.subtle.decrypt({ name: "AES-GCM", iv: encrypted.iv, tagLength: 128 }, key, combined);
|
|
60
|
+
return new Uint8Array(plaintext);
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
//# sourceMappingURL=aes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"aes.js","sourceRoot":"","sources":["../../src/encryption/aes.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { EncryptionConfig, IEncryptionLayer } from "../types.js";
|
|
2
|
+
import { AESEngine } from "./aes.js";
|
|
3
|
+
import { LitEngine } from "./lit.js";
|
|
4
|
+
export declare function createEncryptionLayer(config: EncryptionConfig): IEncryptionLayer & {
|
|
5
|
+
aes: AESEngine;
|
|
6
|
+
lit: LitEngine | null;
|
|
7
|
+
};
|
|
8
|
+
//# sourceMappingURL=encryption-layer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"encryption-layer.d.ts","sourceRoot":"","sources":["../../src/encryption/encryption-layer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAGV,gBAAgB,EAEhB,gBAAgB,EAGjB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AACrC,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAErC,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,gBAAgB,GAAG,gBAAgB,GAAG;IAClF,GAAG,EAAE,SAAS,CAAC;IACf,GAAG,EAAE,SAAS,GAAG,IAAI,CAAC;CACvB,CAoFA"}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import { AESEngine } from "./aes.js";
|
|
2
|
+
import { LitEngine } from "./lit.js";
|
|
3
|
+
export function createEncryptionLayer(config) {
|
|
4
|
+
const aes = new AESEngine({
|
|
5
|
+
kdf: config.aes?.kdf ?? "hkdf-sha256",
|
|
6
|
+
iterations: config.aes?.iterations,
|
|
7
|
+
});
|
|
8
|
+
const lit = config.lit
|
|
9
|
+
? new LitEngine({
|
|
10
|
+
network: config.lit.network === "cayenne"
|
|
11
|
+
? "datil-dev"
|
|
12
|
+
: config.lit.network === "manzano"
|
|
13
|
+
? "datil-test"
|
|
14
|
+
: config.lit.network === "habanero"
|
|
15
|
+
? "datil"
|
|
16
|
+
: config.lit.network,
|
|
17
|
+
debug: config.lit.debug,
|
|
18
|
+
})
|
|
19
|
+
: null;
|
|
20
|
+
return {
|
|
21
|
+
aes,
|
|
22
|
+
lit,
|
|
23
|
+
async encrypt(data, opts) {
|
|
24
|
+
if (opts.engine === "aes") {
|
|
25
|
+
const aesOpts = opts;
|
|
26
|
+
const key = await aes.deriveKey(aesOpts.keySource);
|
|
27
|
+
return aes.encrypt(data instanceof Uint8Array ? data : new TextEncoder().encode(data), key);
|
|
28
|
+
}
|
|
29
|
+
if (opts.engine === "lit") {
|
|
30
|
+
if (!lit)
|
|
31
|
+
throw new Error("Lit Protocol not configured");
|
|
32
|
+
const litOpts = opts;
|
|
33
|
+
const raw = data instanceof Uint8Array ? data : new TextEncoder().encode(data);
|
|
34
|
+
return lit.encrypt(raw, litOpts.accessConditions, litOpts.chain);
|
|
35
|
+
}
|
|
36
|
+
throw new Error(`Unknown engine: ${opts.engine}`);
|
|
37
|
+
},
|
|
38
|
+
async decrypt(encrypted, opts) {
|
|
39
|
+
if (encrypted.engine === "aes") {
|
|
40
|
+
const aesData = encrypted;
|
|
41
|
+
if (!opts?.keySource)
|
|
42
|
+
throw new Error("keySource required for AES decryption");
|
|
43
|
+
const key = await aes.deriveKey(opts.keySource);
|
|
44
|
+
return aes.decrypt(aesData, key);
|
|
45
|
+
}
|
|
46
|
+
if (encrypted.engine === "lit") {
|
|
47
|
+
if (!lit)
|
|
48
|
+
throw new Error("Lit Protocol not configured");
|
|
49
|
+
if (!opts?.authSig)
|
|
50
|
+
throw new Error("Lit decryption requires authSig in DecryptOptions");
|
|
51
|
+
return lit.decrypt(encrypted, opts.authSig);
|
|
52
|
+
}
|
|
53
|
+
throw new Error(`Unknown engine: ${encrypted.engine}`);
|
|
54
|
+
},
|
|
55
|
+
async grantAccess(encrypted, agentAddress, opts) {
|
|
56
|
+
if (!lit)
|
|
57
|
+
throw new Error("Lit Protocol not configured");
|
|
58
|
+
const newCondition = lit.createAddressCondition(agentAddress, (opts?.chain ?? "base"));
|
|
59
|
+
const updatedConditions = [
|
|
60
|
+
...encrypted.accessControlConditions,
|
|
61
|
+
{ operator: "or" },
|
|
62
|
+
newCondition,
|
|
63
|
+
];
|
|
64
|
+
return { ...encrypted, accessControlConditions: updatedConditions };
|
|
65
|
+
},
|
|
66
|
+
async revokeAccess(encrypted, agentAddress) {
|
|
67
|
+
const filtered = encrypted.accessControlConditions.filter((c) => !("returnValueTest" in c && c.returnValueTest?.value === agentAddress));
|
|
68
|
+
return { ...encrypted, accessControlConditions: filtered };
|
|
69
|
+
},
|
|
70
|
+
async deriveAESKey(source) {
|
|
71
|
+
return aes.deriveKey(source);
|
|
72
|
+
},
|
|
73
|
+
async canDecrypt(encrypted) {
|
|
74
|
+
if (encrypted.engine === "aes")
|
|
75
|
+
return true; // caller must have key
|
|
76
|
+
if (encrypted.engine === "lit")
|
|
77
|
+
return lit !== null;
|
|
78
|
+
return false;
|
|
79
|
+
},
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
//# sourceMappingURL=encryption-layer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"encryption-layer.js","sourceRoot":"","sources":["../../src/encryption/encryption-layer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export type { AESConfig } from "./aes.js";
|
|
2
|
+
export { AESEngine } from "./aes.js";
|
|
3
|
+
export { createEncryptionLayer } from "./encryption-layer.js";
|
|
4
|
+
export type { LitConfig } from "./lit.js";
|
|
5
|
+
export { LitEngine } from "./lit.js";
|
|
6
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/encryption/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAC1C,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AACrC,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,YAAY,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAC1C,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/encryption/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AACrC,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAE9D,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { EvmChain, LitAccessCondition, LitAuthSig, LitEncryptedData, LitEvmCondition } from "../types.js";
|
|
2
|
+
export interface LitConfig {
|
|
3
|
+
network: "datil-dev" | "datil-test" | "datil";
|
|
4
|
+
debug?: boolean;
|
|
5
|
+
}
|
|
6
|
+
export declare class LitEngine {
|
|
7
|
+
private config;
|
|
8
|
+
private client;
|
|
9
|
+
constructor(config: LitConfig);
|
|
10
|
+
/** Lazy-initialize the Lit client (heavy import) */
|
|
11
|
+
getClient(): Promise<any>;
|
|
12
|
+
getSessionSigs(authSig: LitAuthSig, chain: string): Promise<any>;
|
|
13
|
+
encrypt(data: Uint8Array, accessConditions: LitAccessCondition[], chain?: string): Promise<LitEncryptedData>;
|
|
14
|
+
decrypt(encrypted: LitEncryptedData, sessionSigsOrAuthSig: any): Promise<Uint8Array>;
|
|
15
|
+
createAddressCondition(address: string, chain: EvmChain): LitEvmCondition;
|
|
16
|
+
createReputationCondition(opts: {
|
|
17
|
+
registryAddress: string;
|
|
18
|
+
minScore: number;
|
|
19
|
+
chain: EvmChain;
|
|
20
|
+
}): LitEvmCondition;
|
|
21
|
+
disconnect(): Promise<void>;
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=lit.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lit.d.ts","sourceRoot":"","sources":["../../src/encryption/lit.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,QAAQ,EACR,kBAAkB,EAClB,UAAU,EACV,gBAAgB,EAChB,eAAe,EAChB,MAAM,aAAa,CAAC;AAErB,MAAM,WAAW,SAAS;IACxB,OAAO,EAAE,WAAW,GAAG,YAAY,GAAG,OAAO,CAAC;IAC9C,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,qBAAa,SAAS;IACpB,OAAO,CAAC,MAAM,CAAY;IAC1B,OAAO,CAAC,MAAM,CAAoB;gBAEtB,MAAM,EAAE,SAAS;IAI7B,oDAAoD;IAC9C,SAAS,IAAI,OAAO,CAAC,GAAG,CAAC;IAiBzB,cAAc,CAAC,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC;IAqChE,OAAO,CACX,IAAI,EAAE,UAAU,EAChB,gBAAgB,EAAE,kBAAkB,EAAE,EACtC,KAAK,GAAE,MAAmB,GACzB,OAAO,CAAC,gBAAgB,CAAC;IAiBtB,OAAO,CAAC,SAAS,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,GAAG,GAAG,OAAO,CAAC,UAAU,CAAC;IA4B1F,sBAAsB,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,GAAG,eAAe;IAYzE,yBAAyB,CAAC,IAAI,EAAE;QAC9B,eAAe,EAAE,MAAM,CAAC;QACxB,QAAQ,EAAE,MAAM,CAAC;QACjB,KAAK,EAAE,QAAQ,CAAC;KACjB,GAAG,eAAe;IAYb,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;CAMlC"}
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
export class LitEngine {
|
|
2
|
+
config;
|
|
3
|
+
client = null;
|
|
4
|
+
constructor(config) {
|
|
5
|
+
this.config = config;
|
|
6
|
+
}
|
|
7
|
+
/** Lazy-initialize the Lit client (heavy import) */
|
|
8
|
+
async getClient() {
|
|
9
|
+
if (this.client)
|
|
10
|
+
return this.client;
|
|
11
|
+
const { LitNodeClient } = await import("@lit-protocol/lit-node-client");
|
|
12
|
+
const { LIT_NETWORK } = await import("@lit-protocol/constants");
|
|
13
|
+
const networkMap = {
|
|
14
|
+
"datil-dev": LIT_NETWORK.DatilDev,
|
|
15
|
+
"datil-test": LIT_NETWORK.DatilTest,
|
|
16
|
+
datil: LIT_NETWORK.Datil,
|
|
17
|
+
};
|
|
18
|
+
this.client = new LitNodeClient({
|
|
19
|
+
litNetwork: networkMap[this.config.network],
|
|
20
|
+
debug: this.config.debug ?? false,
|
|
21
|
+
});
|
|
22
|
+
await this.client.connect();
|
|
23
|
+
return this.client;
|
|
24
|
+
}
|
|
25
|
+
async getSessionSigs(authSig, chain) {
|
|
26
|
+
const client = await this.getClient();
|
|
27
|
+
const { LitAbility } = await import("@lit-protocol/constants");
|
|
28
|
+
const { LitAccessControlConditionResource, createSiweMessageWithRecaps, generateAuthSig } = await import("@lit-protocol/auth-helpers");
|
|
29
|
+
const litResource = new LitAccessControlConditionResource("*");
|
|
30
|
+
return client.getSessionSigs({
|
|
31
|
+
chain,
|
|
32
|
+
resourceAbilityRequests: [
|
|
33
|
+
{ resource: litResource, ability: LitAbility.AccessControlConditionDecryption },
|
|
34
|
+
],
|
|
35
|
+
authNeededCallback: async (params) => {
|
|
36
|
+
const toSign = await createSiweMessageWithRecaps({
|
|
37
|
+
uri: params.uri,
|
|
38
|
+
expiration: params.expiration,
|
|
39
|
+
resources: params.resourceAbilityRequests,
|
|
40
|
+
walletAddress: authSig.address,
|
|
41
|
+
nonce: await client.getLatestBlockhash(),
|
|
42
|
+
litNodeClient: client,
|
|
43
|
+
});
|
|
44
|
+
return generateAuthSig({
|
|
45
|
+
signer: {
|
|
46
|
+
signMessage: async () => authSig.sig,
|
|
47
|
+
getAddress: async () => authSig.address,
|
|
48
|
+
},
|
|
49
|
+
toSign,
|
|
50
|
+
});
|
|
51
|
+
},
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
async encrypt(data, accessConditions, chain = "ethereum") {
|
|
55
|
+
const client = await this.getClient();
|
|
56
|
+
const { encryptUint8Array } = await import("@lit-protocol/encryption");
|
|
57
|
+
const { ciphertext, dataToEncryptHash } = await encryptUint8Array({ accessControlConditions: accessConditions, dataToEncrypt: data }, client);
|
|
58
|
+
return {
|
|
59
|
+
engine: "lit",
|
|
60
|
+
ciphertext: typeof ciphertext === "string" ? new TextEncoder().encode(ciphertext) : ciphertext,
|
|
61
|
+
dataToEncryptHash,
|
|
62
|
+
accessControlConditions: accessConditions,
|
|
63
|
+
chain: chain,
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
async decrypt(encrypted, sessionSigsOrAuthSig) {
|
|
67
|
+
let sessionSigs = sessionSigsOrAuthSig;
|
|
68
|
+
// If an authSig object is passed, resolve it to sessionSigs
|
|
69
|
+
if (sessionSigsOrAuthSig?.sig && sessionSigsOrAuthSig?.address) {
|
|
70
|
+
sessionSigs = await this.getSessionSigs(sessionSigsOrAuthSig, encrypted.chain);
|
|
71
|
+
}
|
|
72
|
+
const client = await this.getClient();
|
|
73
|
+
const { decryptToUint8Array } = await import("@lit-protocol/encryption");
|
|
74
|
+
return decryptToUint8Array({
|
|
75
|
+
accessControlConditions: encrypted.accessControlConditions,
|
|
76
|
+
chain: encrypted.chain,
|
|
77
|
+
ciphertext: typeof encrypted.ciphertext === "string"
|
|
78
|
+
? encrypted.ciphertext
|
|
79
|
+
: new TextDecoder().decode(encrypted.ciphertext),
|
|
80
|
+
dataToEncryptHash: encrypted.dataToEncryptHash,
|
|
81
|
+
sessionSigs,
|
|
82
|
+
}, client);
|
|
83
|
+
}
|
|
84
|
+
createAddressCondition(address, chain) {
|
|
85
|
+
return {
|
|
86
|
+
conditionType: "evmBasic",
|
|
87
|
+
contractAddress: "",
|
|
88
|
+
standardContractType: "",
|
|
89
|
+
chain,
|
|
90
|
+
method: "",
|
|
91
|
+
parameters: [":userAddress"],
|
|
92
|
+
returnValueTest: { comparator: "=", value: address },
|
|
93
|
+
};
|
|
94
|
+
}
|
|
95
|
+
createReputationCondition(opts) {
|
|
96
|
+
return {
|
|
97
|
+
conditionType: "evmContract",
|
|
98
|
+
contractAddress: opts.registryAddress,
|
|
99
|
+
standardContractType: "",
|
|
100
|
+
chain: opts.chain,
|
|
101
|
+
method: "getScore",
|
|
102
|
+
parameters: [":userAddress"],
|
|
103
|
+
returnValueTest: { comparator: ">=", value: String(opts.minScore) },
|
|
104
|
+
};
|
|
105
|
+
}
|
|
106
|
+
async disconnect() {
|
|
107
|
+
if (this.client) {
|
|
108
|
+
await this.client.disconnect();
|
|
109
|
+
this.client = null;
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
//# sourceMappingURL=lit.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lit.js","sourceRoot":"","sources":["../../src/encryption/lit.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Vault key derivation with optional caching.
|
|
3
|
+
*
|
|
4
|
+
* Derives a deterministic AES-256 key from a wallet signature
|
|
5
|
+
* and caches the signature in storage to avoid re-prompting.
|
|
6
|
+
*/
|
|
7
|
+
export interface VaultKeyConfig {
|
|
8
|
+
/** Wallet address (used as cache key discriminator) */
|
|
9
|
+
address: string;
|
|
10
|
+
/** Wallet signMessage function — returns hex signature */
|
|
11
|
+
signMessage: (message: string) => Promise<string>;
|
|
12
|
+
/** Storage adapter for caching (default: sessionStorage if available) */
|
|
13
|
+
storage?: {
|
|
14
|
+
getItem(key: string): string | null;
|
|
15
|
+
setItem(key: string, value: string): void;
|
|
16
|
+
removeItem(key: string): void;
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Derive a vault encryption key, caching the signature to avoid
|
|
21
|
+
* re-prompting the wallet on page reload.
|
|
22
|
+
*
|
|
23
|
+
* Usage:
|
|
24
|
+
* ```ts
|
|
25
|
+
* const { key, clear } = await deriveVaultKeyWithCache({
|
|
26
|
+
* address: "0x...",
|
|
27
|
+
* signMessage: (msg) => wagmiSignMessage({ message: msg }),
|
|
28
|
+
* });
|
|
29
|
+
* // Use `key` for encryption/decryption
|
|
30
|
+
* // Call `clear()` on disconnect
|
|
31
|
+
* ```
|
|
32
|
+
*/
|
|
33
|
+
export declare function deriveVaultKeyWithCache(config: VaultKeyConfig): Promise<{
|
|
34
|
+
key: CryptoKey;
|
|
35
|
+
clear: () => void;
|
|
36
|
+
}>;
|
|
37
|
+
//# sourceMappingURL=vault-key.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vault-key.d.ts","sourceRoot":"","sources":["../../src/encryption/vault-key.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAOH,MAAM,WAAW,cAAc;IAC7B,uDAAuD;IACvD,OAAO,EAAE,MAAM,CAAC;IAChB,0DAA0D;IAC1D,WAAW,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IAClD,yEAAyE;IACzE,OAAO,CAAC,EAAE;QACR,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;QACpC,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;QAC1C,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;KAC/B,CAAC;CACH;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAsB,uBAAuB,CAC3C,MAAM,EAAE,cAAc,GACrB,OAAO,CAAC;IAAE,GAAG,EAAE,SAAS,CAAC;IAAC,KAAK,EAAE,MAAM,IAAI,CAAA;CAAE,CAAC,CAqBhD"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Vault key derivation with optional caching.
|
|
3
|
+
*
|
|
4
|
+
* Derives a deterministic AES-256 key from a wallet signature
|
|
5
|
+
* and caches the signature in storage to avoid re-prompting.
|
|
6
|
+
*/
|
|
7
|
+
import { AESEngine } from "./aes.js";
|
|
8
|
+
const CACHE_PREFIX = "orbitmem:vk";
|
|
9
|
+
const aes = new AESEngine({ kdf: "hkdf-sha256" });
|
|
10
|
+
/**
|
|
11
|
+
* Derive a vault encryption key, caching the signature to avoid
|
|
12
|
+
* re-prompting the wallet on page reload.
|
|
13
|
+
*
|
|
14
|
+
* Usage:
|
|
15
|
+
* ```ts
|
|
16
|
+
* const { key, clear } = await deriveVaultKeyWithCache({
|
|
17
|
+
* address: "0x...",
|
|
18
|
+
* signMessage: (msg) => wagmiSignMessage({ message: msg }),
|
|
19
|
+
* });
|
|
20
|
+
* // Use `key` for encryption/decryption
|
|
21
|
+
* // Call `clear()` on disconnect
|
|
22
|
+
* ```
|
|
23
|
+
*/
|
|
24
|
+
export async function deriveVaultKeyWithCache(config) {
|
|
25
|
+
const { address, signMessage } = config;
|
|
26
|
+
const storage = config.storage ?? (typeof sessionStorage !== "undefined" ? sessionStorage : null);
|
|
27
|
+
const cacheKey = `${CACHE_PREFIX}:${address}`;
|
|
28
|
+
let sig = storage?.getItem(cacheKey) ?? null;
|
|
29
|
+
if (!sig) {
|
|
30
|
+
sig = await signMessage("OrbitMem Vault Key v1");
|
|
31
|
+
storage?.setItem(cacheKey, sig);
|
|
32
|
+
}
|
|
33
|
+
const sigBytes = new Uint8Array((sig.slice(2).match(/.{2}/g) ?? []).map((b) => parseInt(b, 16)));
|
|
34
|
+
const hash = new Uint8Array(await crypto.subtle.digest("SHA-256", sigBytes));
|
|
35
|
+
const key = await aes.deriveKey({ type: "raw", key: hash });
|
|
36
|
+
return {
|
|
37
|
+
key,
|
|
38
|
+
clear() {
|
|
39
|
+
storage?.removeItem(cacheKey);
|
|
40
|
+
},
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=vault-key.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vault-key.js","sourceRoot":"","sources":["../../src/encryption/vault-key.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAErC,MAAM,YAAY,GAAG,aAAa,CAAC;AACnC,MAAM,GAAG,GAAG,IAAI,SAAS,CAAC,EAAE,GAAG,EAAE,aAAa,EAAE,CAAC,CAAC;AAelD;;;;;;;;;;;;;GAaG;AACH,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAC3C,MAAsB;IAEtB,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,GAAG,MAAM,CAAC;IACxC,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,IAAI,CAAC,OAAO,cAAc,KAAK,WAAW,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAClG,MAAM,QAAQ,GAAG,GAAG,YAAY,IAAI,OAAO,EAAE,CAAC;IAE9C,IAAI,GAAG,GAAG,OAAO,EAAE,OAAO,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC;IAC7C,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,GAAG,GAAG,MAAM,WAAW,CAAC,uBAAuB,CAAC,CAAC;QACjD,OAAO,EAAE,OAAO,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;IAClC,CAAC;IAED,MAAM,QAAQ,GAAG,IAAI,UAAU,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;IACjG,MAAM,IAAI,GAAG,IAAI,UAAU,CAAC,MAAM,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,QAAwB,CAAC,CAAC,CAAC;IAC7F,MAAM,GAAG,GAAG,MAAM,GAAG,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC;IAE5D,OAAO;QACL,GAAG;QACH,KAAK;YACH,OAAO,EAAE,UAAU,CAAC,QAAQ,CAAC,CAAC;QAChC,CAAC;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"identity-layer.d.ts","sourceRoot":"","sources":["../../src/identity/identity-layer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,cAAc,EACd,cAAc,EAIf,MAAM,aAAa,CAAC;AAGrB,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,cAAc,GAAG,cAAc,CAgH1E"}
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
import { deriveSessionKey } from "./session.js";
|
|
2
|
+
export function createIdentityLayer(config) {
|
|
3
|
+
let connection = null;
|
|
4
|
+
let activeSession = null;
|
|
5
|
+
const sessions = new Map();
|
|
6
|
+
const listeners = new Set();
|
|
7
|
+
// Store signer function set by external wallet adapters
|
|
8
|
+
let signFn = null;
|
|
9
|
+
return {
|
|
10
|
+
async connect(opts) {
|
|
11
|
+
// If an OWS wallet was provided (CLI / server usage), auto-connect via OWS adapter
|
|
12
|
+
if (config.owsWallet) {
|
|
13
|
+
const { createOwsAdapter } = await import("./ows-adapter.js");
|
|
14
|
+
const owsChain = config.owsChain ?? "eip155:84532";
|
|
15
|
+
const adapter = createOwsAdapter(config.owsWallet, owsChain);
|
|
16
|
+
const address = await adapter.getAddress();
|
|
17
|
+
const family = owsChain.startsWith("solana:") ? "solana" : "evm";
|
|
18
|
+
const algorithm = family === "solana" ? "ed25519" : "ecdsa-secp256k1";
|
|
19
|
+
connection = {
|
|
20
|
+
address,
|
|
21
|
+
family,
|
|
22
|
+
signatureAlgorithm: algorithm,
|
|
23
|
+
connectedAt: Date.now(),
|
|
24
|
+
};
|
|
25
|
+
signFn = async (message) => {
|
|
26
|
+
return adapter.signMessage(message);
|
|
27
|
+
};
|
|
28
|
+
for (const cb of listeners)
|
|
29
|
+
cb(connection);
|
|
30
|
+
return connection;
|
|
31
|
+
}
|
|
32
|
+
throw new Error(`connect(${opts.method}) requires a wallet adapter or owsWallet config. ` +
|
|
33
|
+
"Use setConnection() for testing or integrate a wallet provider.");
|
|
34
|
+
},
|
|
35
|
+
async createPasskey() {
|
|
36
|
+
throw new Error("Passkey creation requires browser WebAuthn API");
|
|
37
|
+
},
|
|
38
|
+
async disconnect() {
|
|
39
|
+
connection = null;
|
|
40
|
+
activeSession = null;
|
|
41
|
+
signFn = null;
|
|
42
|
+
for (const cb of listeners)
|
|
43
|
+
cb(null);
|
|
44
|
+
},
|
|
45
|
+
async signChallenge(message) {
|
|
46
|
+
if (!signFn)
|
|
47
|
+
throw new Error("No signer available — connect a wallet first");
|
|
48
|
+
return signFn(message);
|
|
49
|
+
},
|
|
50
|
+
async createSessionKey(permissions, opts) {
|
|
51
|
+
if (!connection)
|
|
52
|
+
throw new Error("No wallet connected");
|
|
53
|
+
if (!signFn)
|
|
54
|
+
throw new Error("No signer available");
|
|
55
|
+
const challenge = `OrbitMem Authentication\nTimestamp: ${Date.now()}\nNonce: ${crypto.randomUUID()}`;
|
|
56
|
+
const { signature } = await signFn(challenge);
|
|
57
|
+
const session = await deriveSessionKey({
|
|
58
|
+
family: connection.family,
|
|
59
|
+
signature,
|
|
60
|
+
parentAddress: connection.address,
|
|
61
|
+
permissions,
|
|
62
|
+
ttl: opts?.ttl ?? config.sessionTTL ?? 3600,
|
|
63
|
+
});
|
|
64
|
+
sessions.set(session.id, session);
|
|
65
|
+
activeSession = session;
|
|
66
|
+
return session;
|
|
67
|
+
},
|
|
68
|
+
async resumeSession(sessionId) {
|
|
69
|
+
const session = sessions.get(sessionId);
|
|
70
|
+
if (!session)
|
|
71
|
+
return null;
|
|
72
|
+
if (session.expiresAt <= Date.now()) {
|
|
73
|
+
sessions.delete(sessionId);
|
|
74
|
+
return null;
|
|
75
|
+
}
|
|
76
|
+
activeSession = session;
|
|
77
|
+
return session;
|
|
78
|
+
},
|
|
79
|
+
async revokeSession(sessionId) {
|
|
80
|
+
sessions.delete(sessionId);
|
|
81
|
+
if (activeSession?.id === sessionId)
|
|
82
|
+
activeSession = null;
|
|
83
|
+
},
|
|
84
|
+
getConnection() {
|
|
85
|
+
return connection;
|
|
86
|
+
},
|
|
87
|
+
getActiveSession() {
|
|
88
|
+
if (activeSession && activeSession.expiresAt <= Date.now()) {
|
|
89
|
+
activeSession = null;
|
|
90
|
+
}
|
|
91
|
+
return activeSession;
|
|
92
|
+
},
|
|
93
|
+
onConnectionChange(callback) {
|
|
94
|
+
listeners.add(callback);
|
|
95
|
+
return () => listeners.delete(callback);
|
|
96
|
+
},
|
|
97
|
+
};
|
|
98
|
+
}
|
|
99
|
+
//# sourceMappingURL=identity-layer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"identity-layer.js","sourceRoot":"","sources":["../../src/identity/identity-layer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/identity/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,EAAE,gBAAgB,EAAE,KAAK,UAAU,EAAE,MAAM,kBAAkB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/identity/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,EAAE,gBAAgB,EAAmB,MAAM,kBAAkB,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { SignatureAlgorithm, WalletAddress } from "../types.js";
|
|
2
|
+
export interface OwsAdapter {
|
|
3
|
+
getAddress(): Promise<WalletAddress>;
|
|
4
|
+
signMessage(message: string): Promise<{
|
|
5
|
+
signature: Uint8Array;
|
|
6
|
+
algorithm: SignatureAlgorithm;
|
|
7
|
+
}>;
|
|
8
|
+
toViemAccount(): Promise<import("viem").Account>;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* @param walletName — OWS wallet name (e.g., "orbitmem")
|
|
12
|
+
* @param chain — CAIP-2 chain ID (e.g., "eip155:84532" for Base Sepolia)
|
|
13
|
+
*/
|
|
14
|
+
export declare function createOwsAdapter(walletName: string, chain: string): OwsAdapter;
|
|
15
|
+
//# sourceMappingURL=ows-adapter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ows-adapter.d.ts","sourceRoot":"","sources":["../../src/identity/ows-adapter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAErE,MAAM,WAAW,UAAU;IACzB,UAAU,IAAI,OAAO,CAAC,aAAa,CAAC,CAAC;IACrC,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,SAAS,EAAE,UAAU,CAAC;QAAC,SAAS,EAAE,kBAAkB,CAAA;KAAE,CAAC,CAAC;IAChG,aAAa,IAAI,OAAO,CAAC,OAAO,MAAM,EAAE,OAAO,CAAC,CAAC;CAClD;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,UAAU,CAmE9E"}
|