@vouch-protocol/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 +87 -0
- package/dist/sdk/src/config.d.ts +18 -0
- package/dist/sdk/src/config.d.ts.map +1 -0
- package/dist/sdk/src/config.js +48 -0
- package/dist/sdk/src/config.js.map +1 -0
- package/dist/sdk/src/constants.d.ts +111 -0
- package/dist/sdk/src/constants.d.ts.map +1 -0
- package/dist/sdk/src/constants.js +123 -0
- package/dist/sdk/src/constants.js.map +1 -0
- package/dist/sdk/src/credentials.d.ts +85 -0
- package/dist/sdk/src/credentials.d.ts.map +1 -0
- package/dist/sdk/src/credentials.js +91 -0
- package/dist/sdk/src/credentials.js.map +1 -0
- package/dist/sdk/src/did.d.ts +68 -0
- package/dist/sdk/src/did.d.ts.map +1 -0
- package/dist/sdk/src/did.js +89 -0
- package/dist/sdk/src/did.js.map +1 -0
- package/dist/sdk/src/index.d.ts +9 -0
- package/dist/sdk/src/index.d.ts.map +1 -0
- package/dist/sdk/src/index.js +28 -0
- package/dist/sdk/src/index.js.map +1 -0
- package/dist/sdk/src/registry.d.ts +69 -0
- package/dist/sdk/src/registry.d.ts.map +1 -0
- package/dist/sdk/src/registry.js +179 -0
- package/dist/sdk/src/registry.js.map +1 -0
- package/dist/sdk/src/types.d.ts +107 -0
- package/dist/sdk/src/types.d.ts.map +1 -0
- package/dist/sdk/src/types.js +46 -0
- package/dist/sdk/src/types.js.map +1 -0
- package/dist/sdk/src/vault.d.ts +51 -0
- package/dist/sdk/src/vault.d.ts.map +1 -0
- package/dist/sdk/src/vault.js +128 -0
- package/dist/sdk/src/vault.js.map +1 -0
- package/dist/target/types/kya.d.ts +5074 -0
- package/dist/target/types/kya.d.ts.map +1 -0
- package/dist/target/types/kya.js +3 -0
- package/dist/target/types/kya.js.map +1 -0
- package/package.json +41 -0
- package/src/config.ts +55 -0
- package/src/constants.ts +134 -0
- package/src/credentials.ts +115 -0
- package/src/did.ts +140 -0
- package/src/index.ts +8 -0
- package/src/registry.ts +287 -0
- package/src/types.ts +129 -0
- package/src/vault.ts +208 -0
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DID_SOL_METHOD = exports.DID_SOL_PREFIX = void 0;
|
|
4
|
+
exports.deriveAgentDid = deriveAgentDid;
|
|
5
|
+
exports.parseDid = parseDid;
|
|
6
|
+
exports.agentPdaFromDid = agentPdaFromDid;
|
|
7
|
+
exports.generateDidDocument = generateDidDocument;
|
|
8
|
+
const web3_js_1 = require("@solana/web3.js");
|
|
9
|
+
const constants_1 = require("./constants");
|
|
10
|
+
// ── Constants ──
|
|
11
|
+
exports.DID_SOL_PREFIX = "did:sol:";
|
|
12
|
+
exports.DID_SOL_METHOD = "sol";
|
|
13
|
+
// ── DID Derivation ──
|
|
14
|
+
/**
|
|
15
|
+
* Derive the W3C DID (did:sol:<base58>) for an agent given its owner pubkey.
|
|
16
|
+
* The did:sol method maps 1:1 to Solana public keys.
|
|
17
|
+
*/
|
|
18
|
+
function deriveAgentDid(owner) {
|
|
19
|
+
return `${exports.DID_SOL_PREFIX}${owner.toBase58()}`;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Parse a did:sol: URI and extract the Solana public key.
|
|
23
|
+
* Returns null if the DID is not a valid did:sol URI.
|
|
24
|
+
*/
|
|
25
|
+
function parseDid(did) {
|
|
26
|
+
if (!did.startsWith(exports.DID_SOL_PREFIX))
|
|
27
|
+
return null;
|
|
28
|
+
const base58 = did.slice(exports.DID_SOL_PREFIX.length);
|
|
29
|
+
try {
|
|
30
|
+
return new web3_js_1.PublicKey(base58);
|
|
31
|
+
}
|
|
32
|
+
catch {
|
|
33
|
+
return null;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Derive the Agent PDA from a did:sol URI.
|
|
38
|
+
* Returns null if the DID is invalid.
|
|
39
|
+
*/
|
|
40
|
+
function agentPdaFromDid(did, programId = constants_1.VOUCH_PROGRAM_ID) {
|
|
41
|
+
const owner = parseDid(did);
|
|
42
|
+
if (!owner)
|
|
43
|
+
return null;
|
|
44
|
+
return web3_js_1.PublicKey.findProgramAddressSync([constants_1.SEEDS.AGENT, owner.toBuffer()], programId);
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Generate a W3C DID Document for a Vouch-registered agent.
|
|
48
|
+
*
|
|
49
|
+
* The DID Document links the agent's on-chain identity (did:sol) to its
|
|
50
|
+
* A2A Agent Card URL, enabling W3C-compliant identity resolution.
|
|
51
|
+
*/
|
|
52
|
+
function generateDidDocument(params) {
|
|
53
|
+
const { owner, agentPda, agent } = params;
|
|
54
|
+
const did = deriveAgentDid(owner);
|
|
55
|
+
const services = [
|
|
56
|
+
{
|
|
57
|
+
id: `${did}#agent-card`,
|
|
58
|
+
type: "A2AAgentCard",
|
|
59
|
+
serviceEndpoint: agent.agentCardUrl,
|
|
60
|
+
description: "A2A Agent Card for capability discovery",
|
|
61
|
+
},
|
|
62
|
+
{
|
|
63
|
+
id: `${did}#vouch-registry`,
|
|
64
|
+
type: "VouchRegistry",
|
|
65
|
+
serviceEndpoint: `solana:${constants_1.VOUCH_PROGRAM_ID.toBase58()}:${agentPda.toBase58()}`,
|
|
66
|
+
description: "On-chain Vouch identity PDA",
|
|
67
|
+
},
|
|
68
|
+
];
|
|
69
|
+
return {
|
|
70
|
+
"@context": [
|
|
71
|
+
"https://www.w3.org/ns/did/v1",
|
|
72
|
+
"https://w3id.org/security/suites/ed25519-2020/v1",
|
|
73
|
+
],
|
|
74
|
+
id: did,
|
|
75
|
+
controller: did,
|
|
76
|
+
verificationMethod: [
|
|
77
|
+
{
|
|
78
|
+
id: `${did}#key-1`,
|
|
79
|
+
type: "Ed25519VerificationKey2020",
|
|
80
|
+
controller: did,
|
|
81
|
+
publicKeyBase58: owner.toBase58(),
|
|
82
|
+
},
|
|
83
|
+
],
|
|
84
|
+
authentication: [`${did}#key-1`],
|
|
85
|
+
assertionMethod: [`${did}#key-1`], // V6-L10: Required for VC issuance
|
|
86
|
+
service: services,
|
|
87
|
+
};
|
|
88
|
+
}
|
|
89
|
+
//# sourceMappingURL=did.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"did.js","sourceRoot":"","sources":["../../../src/did.ts"],"names":[],"mappings":";;;AAeA,wCAEC;AAMD,4BAQC;AAMD,0CAUC;AAkDD,kDA0CC;AA3ID,6CAA4C;AAC5C,2CAAsD;AAGtD,kBAAkB;AAEL,QAAA,cAAc,GAAG,UAAU,CAAC;AAC5B,QAAA,cAAc,GAAG,KAAK,CAAC;AAEpC,uBAAuB;AAEvB;;;GAGG;AACH,SAAgB,cAAc,CAAC,KAAgB;IAC7C,OAAO,GAAG,sBAAc,GAAG,KAAK,CAAC,QAAQ,EAAE,EAAE,CAAC;AAChD,CAAC;AAED;;;GAGG;AACH,SAAgB,QAAQ,CAAC,GAAW;IAClC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,sBAAc,CAAC;QAAE,OAAO,IAAI,CAAC;IACjD,MAAM,MAAM,GAAG,GAAG,CAAC,KAAK,CAAC,sBAAc,CAAC,MAAM,CAAC,CAAC;IAChD,IAAI,CAAC;QACH,OAAO,IAAI,mBAAS,CAAC,MAAM,CAAC,CAAC;IAC/B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,SAAgB,eAAe,CAC7B,GAAW,EACX,YAAuB,4BAAgB;IAEvC,MAAM,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;IAC5B,IAAI,CAAC,KAAK;QAAE,OAAO,IAAI,CAAC;IACxB,OAAO,mBAAS,CAAC,sBAAsB,CACrC,CAAC,iBAAK,CAAC,KAAK,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC,EAC/B,SAAS,CACV,CAAC;AACJ,CAAC;AA4CD;;;;;GAKG;AACH,SAAgB,mBAAmB,CAAC,MAInC;IACC,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,MAAM,CAAC;IAC1C,MAAM,GAAG,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;IAElC,MAAM,QAAQ,GAAsB;QAClC;YACE,EAAE,EAAE,GAAG,GAAG,aAAa;YACvB,IAAI,EAAE,cAAc;YACpB,eAAe,EAAE,KAAK,CAAC,YAAY;YACnC,WAAW,EAAE,yCAAyC;SACvD;QACD;YACE,EAAE,EAAE,GAAG,GAAG,iBAAiB;YAC3B,IAAI,EAAE,eAAe;YACrB,eAAe,EAAE,UAAU,4BAAgB,CAAC,QAAQ,EAAE,IAAI,QAAQ,CAAC,QAAQ,EAAE,EAAE;YAC/E,WAAW,EAAE,6BAA6B;SAC3C;KACF,CAAC;IAEF,OAAO;QACL,UAAU,EAAE;YACV,8BAA8B;YAC9B,kDAAkD;SACnD;QACD,EAAE,EAAE,GAAG;QACP,UAAU,EAAE,GAAG;QACf,kBAAkB,EAAE;YAClB;gBACE,EAAE,EAAE,GAAG,GAAG,QAAQ;gBAClB,IAAI,EAAE,4BAA4B;gBAClC,UAAU,EAAE,GAAG;gBACf,eAAe,EAAE,KAAK,CAAC,QAAQ,EAAE;aAClC;SACF;QACD,cAAc,EAAE,CAAC,GAAG,GAAG,QAAQ,CAAC;QAChC,eAAe,EAAE,CAAC,GAAG,GAAG,QAAQ,CAAC,EAAE,mCAAmC;QACtE,OAAO,EAAE,QAAQ;KAClB,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export { RegistryClient } from "./registry";
|
|
2
|
+
export { VaultClient } from "./vault";
|
|
3
|
+
export * from "./constants";
|
|
4
|
+
export { fetchConfig } from "./config";
|
|
5
|
+
export type { VouchConfigData } from "./config";
|
|
6
|
+
export * from "./types";
|
|
7
|
+
export * from "./did";
|
|
8
|
+
export * from "./credentials";
|
|
9
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AACtC,cAAc,aAAa,CAAC;AAC5B,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AACvC,YAAY,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAChD,cAAc,SAAS,CAAC;AACxB,cAAc,OAAO,CAAC;AACtB,cAAc,eAAe,CAAC"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
exports.fetchConfig = exports.VaultClient = exports.RegistryClient = void 0;
|
|
18
|
+
var registry_1 = require("./registry");
|
|
19
|
+
Object.defineProperty(exports, "RegistryClient", { enumerable: true, get: function () { return registry_1.RegistryClient; } });
|
|
20
|
+
var vault_1 = require("./vault");
|
|
21
|
+
Object.defineProperty(exports, "VaultClient", { enumerable: true, get: function () { return vault_1.VaultClient; } });
|
|
22
|
+
__exportStar(require("./constants"), exports);
|
|
23
|
+
var config_1 = require("./config");
|
|
24
|
+
Object.defineProperty(exports, "fetchConfig", { enumerable: true, get: function () { return config_1.fetchConfig; } });
|
|
25
|
+
__exportStar(require("./types"), exports);
|
|
26
|
+
__exportStar(require("./did"), exports);
|
|
27
|
+
__exportStar(require("./credentials"), exports);
|
|
28
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,uCAA4C;AAAnC,0GAAA,cAAc,OAAA;AACvB,iCAAsC;AAA7B,oGAAA,WAAW,OAAA;AACpB,8CAA4B;AAC5B,mCAAuC;AAA9B,qGAAA,WAAW,OAAA;AAEpB,0CAAwB;AACxB,wCAAsB;AACtB,gDAA8B"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import { Program, AnchorProvider, BN } from "@coral-xyz/anchor";
|
|
2
|
+
import { PublicKey } from "@solana/web3.js";
|
|
3
|
+
import { Kya } from "../../target/types/kya";
|
|
4
|
+
import type { VouchConfig, AgentIdentity } from "./types";
|
|
5
|
+
import type { DidDocument } from "./did";
|
|
6
|
+
export declare class RegistryClient {
|
|
7
|
+
readonly program: Program<Kya>;
|
|
8
|
+
readonly provider: AnchorProvider;
|
|
9
|
+
constructor(program: Program<Kya>, provider: AnchorProvider);
|
|
10
|
+
static findConfigPda(programId?: PublicKey): [PublicKey, number];
|
|
11
|
+
static findAgentPda(owner: PublicKey, programId?: PublicKey): [PublicKey, number];
|
|
12
|
+
static findDeactivationRecordPda(owner: PublicKey, programId?: PublicKey): [PublicKey, number];
|
|
13
|
+
registerAgent(params: {
|
|
14
|
+
owner: PublicKey;
|
|
15
|
+
name: string;
|
|
16
|
+
serviceCategory: Record<string, Record<string, never>>;
|
|
17
|
+
agentCardUrl: string;
|
|
18
|
+
agentCardHash: number[] | Uint8Array;
|
|
19
|
+
}): Promise<string>;
|
|
20
|
+
updateAgent(params: {
|
|
21
|
+
owner: PublicKey;
|
|
22
|
+
agentPda: PublicKey;
|
|
23
|
+
newCapabilities?: BN | number | null;
|
|
24
|
+
newName?: string | null;
|
|
25
|
+
newServiceCategory?: Record<string, Record<string, never>> | null;
|
|
26
|
+
newVersion?: string | null;
|
|
27
|
+
newAgentCardUrl?: string | null;
|
|
28
|
+
newAgentCardHash?: number[] | Uint8Array | null;
|
|
29
|
+
}): Promise<string>;
|
|
30
|
+
deactivateAgent(params: {
|
|
31
|
+
owner: PublicKey;
|
|
32
|
+
agentPda: PublicKey;
|
|
33
|
+
}): Promise<string>;
|
|
34
|
+
closeAgent(params: {
|
|
35
|
+
owner: PublicKey;
|
|
36
|
+
agentPda: PublicKey;
|
|
37
|
+
}): Promise<string>;
|
|
38
|
+
suspendAgent(params: {
|
|
39
|
+
authority: PublicKey;
|
|
40
|
+
agentPda: PublicKey;
|
|
41
|
+
}): Promise<string>;
|
|
42
|
+
reactivateAgent(params: {
|
|
43
|
+
authority: PublicKey;
|
|
44
|
+
agentPda: PublicKey;
|
|
45
|
+
}): Promise<string>;
|
|
46
|
+
closeDeactivationRecord(params: {
|
|
47
|
+
owner: PublicKey;
|
|
48
|
+
}): Promise<string>;
|
|
49
|
+
checkAgentEligibility(agentPda: PublicKey): Promise<string>;
|
|
50
|
+
verifyAgent(agentPda: PublicKey): Promise<string>;
|
|
51
|
+
fetchConfig(): Promise<VouchConfig>;
|
|
52
|
+
fetchAgent(agentPda: PublicKey): Promise<AgentIdentity>;
|
|
53
|
+
fetchAgentByOwner(owner: PublicKey): Promise<AgentIdentity>;
|
|
54
|
+
fetchDeactivationRecord(owner: PublicKey): Promise<any>;
|
|
55
|
+
/**
|
|
56
|
+
* Derive the W3C DID (did:sol:<base58>) for an agent owner.
|
|
57
|
+
*/
|
|
58
|
+
static deriveAgentDid(owner: PublicKey): string;
|
|
59
|
+
/**
|
|
60
|
+
* Resolve a did:sol URI to the on-chain AgentIdentity.
|
|
61
|
+
* Returns null if the DID is invalid or the agent doesn't exist.
|
|
62
|
+
*/
|
|
63
|
+
resolveAgentByDid(did: string): Promise<AgentIdentity | null>;
|
|
64
|
+
/**
|
|
65
|
+
* Generate a W3C DID Document for a Vouch-registered agent.
|
|
66
|
+
*/
|
|
67
|
+
generateDidDocument(owner: PublicKey): Promise<DidDocument>;
|
|
68
|
+
}
|
|
69
|
+
//# sourceMappingURL=registry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../../src/registry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,EAAE,EAAE,MAAM,mBAAmB,CAAC;AAChE,OAAO,EAAE,SAAS,EAAiB,MAAM,iBAAiB,CAAC;AAC3D,OAAO,EAAE,GAAG,EAAE,MAAM,wBAAwB,CAAC;AAE7C,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAE1D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AAEzC,qBAAa,cAAc;aAEP,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC;aACrB,QAAQ,EAAE,cAAc;gBADxB,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,EACrB,QAAQ,EAAE,cAAc;IAK1C,MAAM,CAAC,aAAa,CAClB,SAAS,GAAE,SAA4B,GACtC,CAAC,SAAS,EAAE,MAAM,CAAC;IAItB,MAAM,CAAC,YAAY,CACjB,KAAK,EAAE,SAAS,EAChB,SAAS,GAAE,SAA4B,GACtC,CAAC,SAAS,EAAE,MAAM,CAAC;IAOtB,MAAM,CAAC,yBAAyB,CAC9B,KAAK,EAAE,SAAS,EAChB,SAAS,GAAE,SAA4B,GACtC,CAAC,SAAS,EAAE,MAAM,CAAC;IAShB,aAAa,CAAC,MAAM,EAAE;QAC1B,KAAK,EAAE,SAAS,CAAC;QACjB,IAAI,EAAE,MAAM,CAAC;QACb,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC;QACvD,YAAY,EAAE,MAAM,CAAC;QACrB,aAAa,EAAE,MAAM,EAAE,GAAG,UAAU,CAAC;KACtC;IA2BK,WAAW,CAAC,MAAM,EAAE;QACxB,KAAK,EAAE,SAAS,CAAC;QACjB,QAAQ,EAAE,SAAS,CAAC;QACpB,eAAe,CAAC,EAAE,EAAE,GAAG,MAAM,GAAG,IAAI,CAAC;QACrC,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QACxB,kBAAkB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC;QAClE,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAC3B,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAChC,gBAAgB,CAAC,EAAE,MAAM,EAAE,GAAG,UAAU,GAAG,IAAI,CAAC;KACjD;IAqBK,eAAe,CAAC,MAAM,EAAE;QAC5B,KAAK,EAAE,SAAS,CAAC;QACjB,QAAQ,EAAE,SAAS,CAAC;KACrB;IAkBK,UAAU,CAAC,MAAM,EAAE;QACvB,KAAK,EAAE,SAAS,CAAC;QACjB,QAAQ,EAAE,SAAS,CAAC;KACrB;IAmBK,YAAY,CAAC,MAAM,EAAE;QACzB,SAAS,EAAE,SAAS,CAAC;QACrB,QAAQ,EAAE,SAAS,CAAC;KACrB;IAaK,eAAe,CAAC,MAAM,EAAE;QAC5B,SAAS,EAAE,SAAS,CAAC;QACrB,QAAQ,EAAE,SAAS,CAAC;KACrB;IAaK,uBAAuB,CAAC,MAAM,EAAE;QACpC,KAAK,EAAE,SAAS,CAAC;KAClB;IAiBK,qBAAqB,CAAC,QAAQ,EAAE,SAAS;IAYzC,WAAW,CAAC,QAAQ,EAAE,SAAS;IAc/B,WAAW,IAAI,OAAO,CAAC,WAAW,CAAC;IAKnC,UAAU,CAAC,QAAQ,EAAE,SAAS,GAAG,OAAO,CAAC,aAAa,CAAC;IAIvD,iBAAiB,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,CAAC,aAAa,CAAC;IAQ3D,uBAAuB,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC;IAU7D;;OAEG;IACH,MAAM,CAAC,cAAc,CAAC,KAAK,EAAE,SAAS,GAAG,MAAM;IAI/C;;;OAGG;IACG,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC;IAUnE;;OAEG;IACG,mBAAmB,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,CAAC,WAAW,CAAC;CAQlE"}
|
|
@@ -0,0 +1,179 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.RegistryClient = void 0;
|
|
4
|
+
const anchor_1 = require("@coral-xyz/anchor");
|
|
5
|
+
const web3_js_1 = require("@solana/web3.js");
|
|
6
|
+
const constants_1 = require("./constants");
|
|
7
|
+
const did_1 = require("./did");
|
|
8
|
+
class RegistryClient {
|
|
9
|
+
constructor(program, provider) {
|
|
10
|
+
this.program = program;
|
|
11
|
+
this.provider = provider;
|
|
12
|
+
}
|
|
13
|
+
// ── PDA derivation ──
|
|
14
|
+
static findConfigPda(programId = constants_1.VOUCH_PROGRAM_ID) {
|
|
15
|
+
return web3_js_1.PublicKey.findProgramAddressSync([constants_1.SEEDS.VOUCH_CONFIG], programId);
|
|
16
|
+
}
|
|
17
|
+
static findAgentPda(owner, programId = constants_1.VOUCH_PROGRAM_ID) {
|
|
18
|
+
return web3_js_1.PublicKey.findProgramAddressSync([constants_1.SEEDS.AGENT, owner.toBuffer()], programId);
|
|
19
|
+
}
|
|
20
|
+
static findDeactivationRecordPda(owner, programId = constants_1.VOUCH_PROGRAM_ID) {
|
|
21
|
+
return web3_js_1.PublicKey.findProgramAddressSync([constants_1.SEEDS.DEACTIVATED, owner.toBuffer()], programId);
|
|
22
|
+
}
|
|
23
|
+
// ── Instructions (agent owner operations) ──
|
|
24
|
+
async registerAgent(params) {
|
|
25
|
+
const [configPda] = RegistryClient.findConfigPda(this.program.programId);
|
|
26
|
+
const [agentPda] = RegistryClient.findAgentPda(params.owner, this.program.programId);
|
|
27
|
+
return this.program.methods
|
|
28
|
+
.registerAgent(params.name, params.serviceCategory, params.agentCardUrl, Array.from(params.agentCardHash))
|
|
29
|
+
.accounts({
|
|
30
|
+
owner: params.owner,
|
|
31
|
+
config: configPda,
|
|
32
|
+
agent: agentPda,
|
|
33
|
+
deactivationRecord: web3_js_1.PublicKey.findProgramAddressSync([constants_1.SEEDS.DEACTIVATED, params.owner.toBuffer()], this.program.programId)[0],
|
|
34
|
+
systemProgram: web3_js_1.SystemProgram.programId,
|
|
35
|
+
})
|
|
36
|
+
.rpc();
|
|
37
|
+
}
|
|
38
|
+
async updateAgent(params) {
|
|
39
|
+
const [configPda] = RegistryClient.findConfigPda(this.program.programId);
|
|
40
|
+
return this.program.methods
|
|
41
|
+
.updateAgent(params.newCapabilities !== undefined && params.newCapabilities !== null
|
|
42
|
+
? new anchor_1.BN(params.newCapabilities) : null, params.newName ?? null, params.newServiceCategory ?? null, params.newVersion ?? null, params.newAgentCardUrl ?? null, params.newAgentCardHash ? Array.from(params.newAgentCardHash) : null)
|
|
43
|
+
.accounts({
|
|
44
|
+
owner: params.owner,
|
|
45
|
+
config: configPda,
|
|
46
|
+
agent: params.agentPda,
|
|
47
|
+
})
|
|
48
|
+
.rpc();
|
|
49
|
+
}
|
|
50
|
+
async deactivateAgent(params) {
|
|
51
|
+
const [configPda] = RegistryClient.findConfigPda(this.program.programId);
|
|
52
|
+
return this.program.methods
|
|
53
|
+
.deactivateAgent()
|
|
54
|
+
.accounts({
|
|
55
|
+
owner: params.owner,
|
|
56
|
+
config: configPda,
|
|
57
|
+
agent: params.agentPda,
|
|
58
|
+
deactivationRecord: web3_js_1.PublicKey.findProgramAddressSync([constants_1.SEEDS.DEACTIVATED, params.owner.toBuffer()], this.program.programId)[0],
|
|
59
|
+
systemProgram: web3_js_1.SystemProgram.programId,
|
|
60
|
+
})
|
|
61
|
+
.rpc();
|
|
62
|
+
}
|
|
63
|
+
async closeAgent(params) {
|
|
64
|
+
// V6-M10: Include stake_account PDA required by on-chain CloseAgent
|
|
65
|
+
const [stakePda] = web3_js_1.PublicKey.findProgramAddressSync([constants_1.SEEDS.STAKE, params.agentPda.toBuffer()], this.program.programId);
|
|
66
|
+
const [configPda] = RegistryClient.findConfigPda(this.program.programId);
|
|
67
|
+
return this.program.methods
|
|
68
|
+
.closeAgent()
|
|
69
|
+
.accounts({
|
|
70
|
+
owner: params.owner,
|
|
71
|
+
config: configPda,
|
|
72
|
+
agent: params.agentPda,
|
|
73
|
+
stakeAccount: stakePda,
|
|
74
|
+
})
|
|
75
|
+
.rpc();
|
|
76
|
+
}
|
|
77
|
+
async suspendAgent(params) {
|
|
78
|
+
const [configPda] = RegistryClient.findConfigPda(this.program.programId);
|
|
79
|
+
return this.program.methods
|
|
80
|
+
.suspendAgent()
|
|
81
|
+
.accounts({
|
|
82
|
+
authority: params.authority,
|
|
83
|
+
config: configPda,
|
|
84
|
+
agent: params.agentPda,
|
|
85
|
+
})
|
|
86
|
+
.rpc();
|
|
87
|
+
}
|
|
88
|
+
async reactivateAgent(params) {
|
|
89
|
+
const [configPda] = RegistryClient.findConfigPda(this.program.programId);
|
|
90
|
+
return this.program.methods
|
|
91
|
+
.reactivateAgent()
|
|
92
|
+
.accounts({
|
|
93
|
+
authority: params.authority,
|
|
94
|
+
config: configPda,
|
|
95
|
+
agent: params.agentPda,
|
|
96
|
+
})
|
|
97
|
+
.rpc();
|
|
98
|
+
}
|
|
99
|
+
async closeDeactivationRecord(params) {
|
|
100
|
+
const [configPda] = RegistryClient.findConfigPda(this.program.programId);
|
|
101
|
+
const [deactivationRecordPda] = web3_js_1.PublicKey.findProgramAddressSync([constants_1.SEEDS.DEACTIVATED, params.owner.toBuffer()], this.program.programId);
|
|
102
|
+
return this.program.methods
|
|
103
|
+
.closeDeactivationRecord()
|
|
104
|
+
.accounts({
|
|
105
|
+
owner: params.owner,
|
|
106
|
+
config: configPda,
|
|
107
|
+
deactivationRecord: deactivationRecordPda,
|
|
108
|
+
})
|
|
109
|
+
.rpc();
|
|
110
|
+
}
|
|
111
|
+
async checkAgentEligibility(agentPda) {
|
|
112
|
+
const [configPda] = RegistryClient.findConfigPda(this.program.programId);
|
|
113
|
+
return this.program.methods
|
|
114
|
+
.checkAgentEligibility()
|
|
115
|
+
.accounts({
|
|
116
|
+
agent: agentPda,
|
|
117
|
+
config: configPda,
|
|
118
|
+
})
|
|
119
|
+
.rpc();
|
|
120
|
+
}
|
|
121
|
+
async verifyAgent(agentPda) {
|
|
122
|
+
const [configPda] = RegistryClient.findConfigPda(this.program.programId);
|
|
123
|
+
return this.program.methods
|
|
124
|
+
.verifyAgent()
|
|
125
|
+
.accounts({
|
|
126
|
+
agent: agentPda,
|
|
127
|
+
config: configPda,
|
|
128
|
+
})
|
|
129
|
+
.rpc();
|
|
130
|
+
}
|
|
131
|
+
// ── Fetchers ──
|
|
132
|
+
async fetchConfig() {
|
|
133
|
+
const [configPda] = RegistryClient.findConfigPda(this.program.programId);
|
|
134
|
+
return this.program.account.vouchConfig.fetch(configPda);
|
|
135
|
+
}
|
|
136
|
+
async fetchAgent(agentPda) {
|
|
137
|
+
return this.program.account.agentIdentity.fetch(agentPda);
|
|
138
|
+
}
|
|
139
|
+
async fetchAgentByOwner(owner) {
|
|
140
|
+
const [agentPda] = RegistryClient.findAgentPda(owner, this.program.programId);
|
|
141
|
+
return this.fetchAgent(agentPda);
|
|
142
|
+
}
|
|
143
|
+
async fetchDeactivationRecord(owner) {
|
|
144
|
+
const [pda] = RegistryClient.findDeactivationRecordPda(owner, this.program.programId);
|
|
145
|
+
return this.program.account.deactivationRecord.fetch(pda);
|
|
146
|
+
}
|
|
147
|
+
// ── DID Resolution ──
|
|
148
|
+
/**
|
|
149
|
+
* Derive the W3C DID (did:sol:<base58>) for an agent owner.
|
|
150
|
+
*/
|
|
151
|
+
static deriveAgentDid(owner) {
|
|
152
|
+
return (0, did_1.deriveAgentDid)(owner);
|
|
153
|
+
}
|
|
154
|
+
/**
|
|
155
|
+
* Resolve a did:sol URI to the on-chain AgentIdentity.
|
|
156
|
+
* Returns null if the DID is invalid or the agent doesn't exist.
|
|
157
|
+
*/
|
|
158
|
+
async resolveAgentByDid(did) {
|
|
159
|
+
const owner = (0, did_1.parseDid)(did);
|
|
160
|
+
if (!owner)
|
|
161
|
+
return null;
|
|
162
|
+
try {
|
|
163
|
+
return await this.fetchAgentByOwner(owner);
|
|
164
|
+
}
|
|
165
|
+
catch {
|
|
166
|
+
return null;
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
/**
|
|
170
|
+
* Generate a W3C DID Document for a Vouch-registered agent.
|
|
171
|
+
*/
|
|
172
|
+
async generateDidDocument(owner) {
|
|
173
|
+
const [agentPda] = RegistryClient.findAgentPda(owner, this.program.programId);
|
|
174
|
+
const agent = await this.fetchAgent(agentPda);
|
|
175
|
+
return (0, did_1.generateDidDocument)({ owner, agentPda, agent });
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
exports.RegistryClient = RegistryClient;
|
|
179
|
+
//# sourceMappingURL=registry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../../src/registry.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
import { PublicKey } from "@solana/web3.js";
|
|
2
|
+
import { BN } from "@coral-xyz/anchor";
|
|
3
|
+
export declare enum AgentTier {
|
|
4
|
+
Observer = "observer",
|
|
5
|
+
Basic = "basic",
|
|
6
|
+
Standard = "standard",
|
|
7
|
+
Premium = "premium"
|
|
8
|
+
}
|
|
9
|
+
export declare enum AgentStatus {
|
|
10
|
+
Active = "active",
|
|
11
|
+
Suspended = "suspended",
|
|
12
|
+
Deactivated = "deactivated"
|
|
13
|
+
}
|
|
14
|
+
export declare enum ServiceCategory {
|
|
15
|
+
Commerce = "commerce",
|
|
16
|
+
DataAnalysis = "dataAnalysis",
|
|
17
|
+
ContentCreation = "contentCreation",
|
|
18
|
+
CustomerService = "customerService",
|
|
19
|
+
Financial = "financial",
|
|
20
|
+
Logistics = "logistics",
|
|
21
|
+
Development = "development",
|
|
22
|
+
Research = "research",
|
|
23
|
+
Other = "other"
|
|
24
|
+
}
|
|
25
|
+
export interface VouchConfig {
|
|
26
|
+
admin: PublicKey;
|
|
27
|
+
pendingAdmin: PublicKey | null;
|
|
28
|
+
paused: boolean;
|
|
29
|
+
treasury: PublicKey;
|
|
30
|
+
usdcMint: PublicKey;
|
|
31
|
+
tierThresholds: [BN, BN, BN, BN];
|
|
32
|
+
cooldownPeriod: BN;
|
|
33
|
+
stakeToTxRatio: number;
|
|
34
|
+
bump: number;
|
|
35
|
+
}
|
|
36
|
+
export interface AgentIdentity {
|
|
37
|
+
owner: PublicKey;
|
|
38
|
+
tier: {
|
|
39
|
+
[key in AgentTier]?: {};
|
|
40
|
+
};
|
|
41
|
+
capabilities: BN;
|
|
42
|
+
name: string;
|
|
43
|
+
serviceCategory: {
|
|
44
|
+
[key in ServiceCategory]?: {};
|
|
45
|
+
};
|
|
46
|
+
version: string;
|
|
47
|
+
agentCardUrl: string;
|
|
48
|
+
agentCardHash: number[];
|
|
49
|
+
status: {
|
|
50
|
+
[key in AgentStatus]?: {};
|
|
51
|
+
};
|
|
52
|
+
createdAt: BN;
|
|
53
|
+
updatedAt: BN;
|
|
54
|
+
bump: number;
|
|
55
|
+
reputationScore: number;
|
|
56
|
+
reputationUpdatedAt: BN;
|
|
57
|
+
reputationChangeToday: number;
|
|
58
|
+
reputationDayStart: BN;
|
|
59
|
+
tierEffectiveAt: BN;
|
|
60
|
+
suspendedBy: PublicKey | null;
|
|
61
|
+
}
|
|
62
|
+
export interface StakeAccount {
|
|
63
|
+
agent: PublicKey;
|
|
64
|
+
owner: PublicKey;
|
|
65
|
+
depositedAmount: BN;
|
|
66
|
+
lockedAmount: BN;
|
|
67
|
+
pendingWithdrawal: BN;
|
|
68
|
+
bump: number;
|
|
69
|
+
}
|
|
70
|
+
export interface WithdrawalRequest {
|
|
71
|
+
stakeAccount: PublicKey;
|
|
72
|
+
owner: PublicKey;
|
|
73
|
+
amount: BN;
|
|
74
|
+
unlockAt: BN;
|
|
75
|
+
createdAt: BN;
|
|
76
|
+
bump: number;
|
|
77
|
+
}
|
|
78
|
+
export interface PendingConfigChange {
|
|
79
|
+
proposer: PublicKey;
|
|
80
|
+
proposedAt: BN;
|
|
81
|
+
executableAt: BN;
|
|
82
|
+
newTierThresholds: [BN, BN, BN, BN] | null;
|
|
83
|
+
newCooldownPeriod: BN | null;
|
|
84
|
+
newTreasury: PublicKey | null;
|
|
85
|
+
newStakeToTxRatio: number | null;
|
|
86
|
+
bump: number;
|
|
87
|
+
}
|
|
88
|
+
export interface DeactivationRecord {
|
|
89
|
+
owner: PublicKey;
|
|
90
|
+
deactivatedAt: BN;
|
|
91
|
+
finalReputationScore: number;
|
|
92
|
+
bump: number;
|
|
93
|
+
}
|
|
94
|
+
export interface ReputationReporter {
|
|
95
|
+
authority: PublicKey;
|
|
96
|
+
registeredBy: PublicKey;
|
|
97
|
+
label: string;
|
|
98
|
+
weight: number;
|
|
99
|
+
totalReports: BN;
|
|
100
|
+
lastReportSlot: BN;
|
|
101
|
+
isActive: boolean;
|
|
102
|
+
bump: number;
|
|
103
|
+
}
|
|
104
|
+
export declare function parseEnum<T extends string>(enumObj: {
|
|
105
|
+
[key: string]: {} | undefined;
|
|
106
|
+
} | null | undefined, enumType: Record<string, T>): T | null;
|
|
107
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ServiceCategory = exports.AgentStatus = exports.AgentTier = void 0;
|
|
4
|
+
exports.parseEnum = parseEnum;
|
|
5
|
+
// ── Enums ──
|
|
6
|
+
var AgentTier;
|
|
7
|
+
(function (AgentTier) {
|
|
8
|
+
AgentTier["Observer"] = "observer";
|
|
9
|
+
AgentTier["Basic"] = "basic";
|
|
10
|
+
AgentTier["Standard"] = "standard";
|
|
11
|
+
AgentTier["Premium"] = "premium";
|
|
12
|
+
})(AgentTier || (exports.AgentTier = AgentTier = {}));
|
|
13
|
+
var AgentStatus;
|
|
14
|
+
(function (AgentStatus) {
|
|
15
|
+
AgentStatus["Active"] = "active";
|
|
16
|
+
AgentStatus["Suspended"] = "suspended";
|
|
17
|
+
AgentStatus["Deactivated"] = "deactivated";
|
|
18
|
+
})(AgentStatus || (exports.AgentStatus = AgentStatus = {}));
|
|
19
|
+
var ServiceCategory;
|
|
20
|
+
(function (ServiceCategory) {
|
|
21
|
+
ServiceCategory["Commerce"] = "commerce";
|
|
22
|
+
ServiceCategory["DataAnalysis"] = "dataAnalysis";
|
|
23
|
+
ServiceCategory["ContentCreation"] = "contentCreation";
|
|
24
|
+
ServiceCategory["CustomerService"] = "customerService";
|
|
25
|
+
ServiceCategory["Financial"] = "financial";
|
|
26
|
+
ServiceCategory["Logistics"] = "logistics";
|
|
27
|
+
ServiceCategory["Development"] = "development";
|
|
28
|
+
ServiceCategory["Research"] = "research";
|
|
29
|
+
ServiceCategory["Other"] = "other";
|
|
30
|
+
})(ServiceCategory || (exports.ServiceCategory = ServiceCategory = {}));
|
|
31
|
+
// ── Helper for parsing Anchor enum variants ──
|
|
32
|
+
function parseEnum(enumObj, enumType) {
|
|
33
|
+
if (!enumObj)
|
|
34
|
+
return null;
|
|
35
|
+
const objKey = Object.keys(enumObj)[0];
|
|
36
|
+
if (!objKey)
|
|
37
|
+
return null;
|
|
38
|
+
const lowerKey = objKey.toLowerCase();
|
|
39
|
+
for (const [enumKey, enumValue] of Object.entries(enumType)) {
|
|
40
|
+
if (enumKey.toLowerCase() === lowerKey) {
|
|
41
|
+
return enumValue;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
return null;
|
|
45
|
+
}
|
|
46
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/types.ts"],"names":[],"mappings":";;;AAkHA,8BAcC;AA7HD,cAAc;AAEd,IAAY,SAKX;AALD,WAAY,SAAS;IACnB,kCAAqB,CAAA;IACrB,4BAAe,CAAA;IACf,kCAAqB,CAAA;IACrB,gCAAmB,CAAA;AACrB,CAAC,EALW,SAAS,yBAAT,SAAS,QAKpB;AAED,IAAY,WAIX;AAJD,WAAY,WAAW;IACrB,gCAAiB,CAAA;IACjB,sCAAuB,CAAA;IACvB,0CAA2B,CAAA;AAC7B,CAAC,EAJW,WAAW,2BAAX,WAAW,QAItB;AAED,IAAY,eAUX;AAVD,WAAY,eAAe;IACzB,wCAAqB,CAAA;IACrB,gDAA6B,CAAA;IAC7B,sDAAmC,CAAA;IACnC,sDAAmC,CAAA;IACnC,0CAAuB,CAAA;IACvB,0CAAuB,CAAA;IACvB,8CAA2B,CAAA;IAC3B,wCAAqB,CAAA;IACrB,kCAAe,CAAA;AACjB,CAAC,EAVW,eAAe,+BAAf,eAAe,QAU1B;AAoFD,gDAAgD;AAEhD,SAAgB,SAAS,CACvB,OAA6D,EAC7D,QAA2B;IAE3B,IAAI,CAAC,OAAO;QAAE,OAAO,IAAI,CAAC;IAC1B,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;IACvC,IAAI,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC;IACzB,MAAM,QAAQ,GAAG,MAAM,CAAC,WAAW,EAAE,CAAC;IACtC,KAAK,MAAM,CAAC,OAAO,EAAE,SAAS,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC5D,IAAI,OAAO,CAAC,WAAW,EAAE,KAAK,QAAQ,EAAE,CAAC;YACvC,OAAO,SAAS,CAAC;QACnB,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { Program, AnchorProvider, BN } from "@coral-xyz/anchor";
|
|
2
|
+
import { PublicKey } from "@solana/web3.js";
|
|
3
|
+
import { Kya } from "../../target/types/kya";
|
|
4
|
+
import type { StakeAccount, WithdrawalRequest } from "./types";
|
|
5
|
+
export declare class VaultClient {
|
|
6
|
+
readonly program: Program<Kya>;
|
|
7
|
+
readonly provider: AnchorProvider;
|
|
8
|
+
constructor(program: Program<Kya>, provider: AnchorProvider);
|
|
9
|
+
static findConfigPda(programId?: PublicKey): [PublicKey, number];
|
|
10
|
+
static findStakePda(agentPda: PublicKey, programId?: PublicKey): [PublicKey, number];
|
|
11
|
+
static findWithdrawalPda(stakeAccountPda: PublicKey, programId?: PublicKey): [PublicKey, number];
|
|
12
|
+
/**
|
|
13
|
+
* V6-M04: Derive the canonical vault token account (ATA of config PDA for USDC mint).
|
|
14
|
+
* This is the only vault address accepted by the on-chain program.
|
|
15
|
+
*/
|
|
16
|
+
static findVaultTokenAccount(usdcMint: PublicKey, programId?: PublicKey): PublicKey;
|
|
17
|
+
deposit(params: {
|
|
18
|
+
owner: PublicKey;
|
|
19
|
+
agentPda: PublicKey;
|
|
20
|
+
ownerTokenAccount: PublicKey;
|
|
21
|
+
vaultTokenAccount: PublicKey;
|
|
22
|
+
amount: BN | number;
|
|
23
|
+
}): Promise<string>;
|
|
24
|
+
requestWithdrawal(params: {
|
|
25
|
+
owner: PublicKey;
|
|
26
|
+
agentPda: PublicKey;
|
|
27
|
+
stakeAccountPda: PublicKey;
|
|
28
|
+
amount: BN | number;
|
|
29
|
+
}): Promise<string>;
|
|
30
|
+
completeWithdrawal(params: {
|
|
31
|
+
owner: PublicKey;
|
|
32
|
+
stakeAccountPda: PublicKey;
|
|
33
|
+
agentPda: PublicKey;
|
|
34
|
+
vaultTokenAccount: PublicKey;
|
|
35
|
+
ownerTokenAccount: PublicKey;
|
|
36
|
+
}): Promise<string>;
|
|
37
|
+
cancelWithdrawal(params: {
|
|
38
|
+
owner: PublicKey;
|
|
39
|
+
agentPda: PublicKey;
|
|
40
|
+
stakeAccountPda: PublicKey;
|
|
41
|
+
}): Promise<string>;
|
|
42
|
+
closeStake(params: {
|
|
43
|
+
owner: PublicKey;
|
|
44
|
+
agentPda: PublicKey;
|
|
45
|
+
}): Promise<string>;
|
|
46
|
+
fetchConfig(): Promise<any>;
|
|
47
|
+
fetchStakeAccount(stakePda: PublicKey): Promise<StakeAccount>;
|
|
48
|
+
fetchStakeByAgent(agentPda: PublicKey): Promise<StakeAccount>;
|
|
49
|
+
fetchWithdrawalRequest(stakeAccountPda: PublicKey): Promise<WithdrawalRequest>;
|
|
50
|
+
}
|
|
51
|
+
//# sourceMappingURL=vault.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vault.d.ts","sourceRoot":"","sources":["../../../src/vault.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,EAAE,EAAE,MAAM,mBAAmB,CAAC;AAChE,OAAO,EAAE,SAAS,EAAiB,MAAM,iBAAiB,CAAC;AAE3D,OAAO,EAAE,GAAG,EAAE,MAAM,wBAAwB,CAAC;AAE7C,OAAO,KAAK,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAE/D,qBAAa,WAAW;aAEJ,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC;aACrB,QAAQ,EAAE,cAAc;gBADxB,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,EACrB,QAAQ,EAAE,cAAc;IAK1C,MAAM,CAAC,aAAa,CAClB,SAAS,GAAE,SAA4B,GACtC,CAAC,SAAS,EAAE,MAAM,CAAC;IAItB,MAAM,CAAC,YAAY,CACjB,QAAQ,EAAE,SAAS,EACnB,SAAS,GAAE,SAA4B,GACtC,CAAC,SAAS,EAAE,MAAM,CAAC;IAOtB,MAAM,CAAC,iBAAiB,CACtB,eAAe,EAAE,SAAS,EAC1B,SAAS,GAAE,SAA4B,GACtC,CAAC,SAAS,EAAE,MAAM,CAAC;IAOtB;;;OAGG;IACH,MAAM,CAAC,qBAAqB,CAAC,QAAQ,EAAE,SAAS,EAAE,SAAS,GAAE,SAA4B,GAAG,SAAS;IAO/F,OAAO,CAAC,MAAM,EAAE;QACpB,KAAK,EAAE,SAAS,CAAC;QACjB,QAAQ,EAAE,SAAS,CAAC;QACpB,iBAAiB,EAAE,SAAS,CAAC;QAC7B,iBAAiB,EAAE,SAAS,CAAC;QAC7B,MAAM,EAAE,EAAE,GAAG,MAAM,CAAC;KACrB;IAsBK,iBAAiB,CAAC,MAAM,EAAE;QAC9B,KAAK,EAAE,SAAS,CAAC;QACjB,QAAQ,EAAE,SAAS,CAAC;QACpB,eAAe,EAAE,SAAS,CAAC;QAC3B,MAAM,EAAE,EAAE,GAAG,MAAM,CAAC;KACrB;IAoBK,kBAAkB,CAAC,MAAM,EAAE;QAC/B,KAAK,EAAE,SAAS,CAAC;QACjB,eAAe,EAAE,SAAS,CAAC;QAC3B,QAAQ,EAAE,SAAS,CAAC;QACpB,iBAAiB,EAAE,SAAS,CAAC;QAC7B,iBAAiB,EAAE,SAAS,CAAC;KAC9B;IAuBK,gBAAgB,CAAC,MAAM,EAAE;QAC7B,KAAK,EAAE,SAAS,CAAC;QACjB,QAAQ,EAAE,SAAS,CAAC;QACpB,eAAe,EAAE,SAAS,CAAC;KAC5B;IAqBK,UAAU,CAAC,MAAM,EAAE;QACvB,KAAK,EAAE,SAAS,CAAC;QACjB,QAAQ,EAAE,SAAS,CAAC;KACrB;IAiBK,WAAW,IAAI,OAAO,CAAC,GAAG,CAAC;IAK3B,iBAAiB,CAAC,QAAQ,EAAE,SAAS,GAAG,OAAO,CAAC,YAAY,CAAC;IAI7D,iBAAiB,CAAC,QAAQ,EAAE,SAAS,GAAG,OAAO,CAAC,YAAY,CAAC;IAQ7D,sBAAsB,CAC1B,eAAe,EAAE,SAAS,GACzB,OAAO,CAAC,iBAAiB,CAAC;CAS9B"}
|