@agent-shield/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.
Files changed (41) hide show
  1. package/dist/accounts.d.ts +15 -0
  2. package/dist/accounts.d.ts.map +1 -0
  3. package/dist/accounts.js +59 -0
  4. package/dist/accounts.js.map +1 -0
  5. package/dist/client.d.ts +85 -0
  6. package/dist/client.d.ts.map +1 -0
  7. package/dist/client.js +233 -0
  8. package/dist/client.js.map +1 -0
  9. package/dist/composer.d.ts +21 -0
  10. package/dist/composer.d.ts.map +1 -0
  11. package/dist/composer.js +51 -0
  12. package/dist/composer.js.map +1 -0
  13. package/dist/idl-json.d.ts +1299 -0
  14. package/dist/idl-json.d.ts.map +1 -0
  15. package/dist/idl-json.js +2486 -0
  16. package/dist/idl-json.js.map +1 -0
  17. package/dist/idl.d.ts +2475 -0
  18. package/dist/idl.d.ts.map +1 -0
  19. package/dist/idl.js +3 -0
  20. package/dist/idl.js.map +1 -0
  21. package/dist/index.d.ts +9 -0
  22. package/dist/index.d.ts.map +1 -0
  23. package/dist/index.js +63 -0
  24. package/dist/index.js.map +1 -0
  25. package/dist/instructions.d.ts +1130 -0
  26. package/dist/instructions.d.ts.map +1 -0
  27. package/dist/instructions.js +127 -0
  28. package/dist/instructions.js.map +1 -0
  29. package/dist/integrations/flash-trade.d.ts +130 -0
  30. package/dist/integrations/flash-trade.d.ts.map +1 -0
  31. package/dist/integrations/flash-trade.js +170 -0
  32. package/dist/integrations/flash-trade.js.map +1 -0
  33. package/dist/integrations/jupiter.d.ts +131 -0
  34. package/dist/integrations/jupiter.d.ts.map +1 -0
  35. package/dist/integrations/jupiter.js +178 -0
  36. package/dist/integrations/jupiter.js.map +1 -0
  37. package/dist/types.d.ts +129 -0
  38. package/dist/types.d.ts.map +1 -0
  39. package/dist/types.js +6 -0
  40. package/dist/types.js.map +1 -0
  41. package/package.json +36 -0
@@ -0,0 +1,178 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.JupiterApiError = exports.JUPITER_PROGRAM_ID = exports.JUPITER_V6_API = void 0;
4
+ exports.deserializeInstruction = deserializeInstruction;
5
+ exports.fetchJupiterQuote = fetchJupiterQuote;
6
+ exports.fetchJupiterSwapInstructions = fetchJupiterSwapInstructions;
7
+ exports.fetchAddressLookupTables = fetchAddressLookupTables;
8
+ exports.composeJupiterSwap = composeJupiterSwap;
9
+ exports.composeJupiterSwapTransaction = composeJupiterSwapTransaction;
10
+ const web3_js_1 = require("@solana/web3.js");
11
+ const accounts_1 = require("../accounts");
12
+ const composer_1 = require("../composer");
13
+ // ---------------------------------------------------------------------------
14
+ // Constants
15
+ // ---------------------------------------------------------------------------
16
+ exports.JUPITER_V6_API = "https://quote-api.jup.ag/v6";
17
+ exports.JUPITER_PROGRAM_ID = new web3_js_1.PublicKey("JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4");
18
+ // ---------------------------------------------------------------------------
19
+ // Error
20
+ // ---------------------------------------------------------------------------
21
+ class JupiterApiError extends Error {
22
+ constructor(statusCode, body) {
23
+ super(`Jupiter API error (${statusCode}): ${body}`);
24
+ this.statusCode = statusCode;
25
+ this.body = body;
26
+ this.name = "JupiterApiError";
27
+ }
28
+ }
29
+ exports.JupiterApiError = JupiterApiError;
30
+ // ---------------------------------------------------------------------------
31
+ // Helpers
32
+ // ---------------------------------------------------------------------------
33
+ /**
34
+ * Deserialize a Jupiter serialized instruction into a Solana TransactionInstruction.
35
+ */
36
+ function deserializeInstruction(ix) {
37
+ return new web3_js_1.TransactionInstruction({
38
+ programId: new web3_js_1.PublicKey(ix.programId),
39
+ keys: ix.accounts.map((acc) => ({
40
+ pubkey: new web3_js_1.PublicKey(acc.pubkey),
41
+ isSigner: acc.isSigner,
42
+ isWritable: acc.isWritable,
43
+ })),
44
+ data: Buffer.from(ix.data, "base64"),
45
+ });
46
+ }
47
+ // ---------------------------------------------------------------------------
48
+ // API Functions
49
+ // ---------------------------------------------------------------------------
50
+ /**
51
+ * Fetch a swap quote from the Jupiter V6 API.
52
+ */
53
+ async function fetchJupiterQuote(params) {
54
+ const slippage = params.slippageBps ?? 50;
55
+ const qs = new URLSearchParams({
56
+ inputMint: params.inputMint.toBase58(),
57
+ outputMint: params.outputMint.toBase58(),
58
+ amount: params.amount.toString(),
59
+ slippageBps: slippage.toString(),
60
+ ...params.extraParams,
61
+ });
62
+ const url = `${exports.JUPITER_V6_API}/quote?${qs.toString()}`;
63
+ const res = await fetch(url);
64
+ if (!res.ok) {
65
+ const body = await res.text();
66
+ throw new JupiterApiError(res.status, body);
67
+ }
68
+ return (await res.json());
69
+ }
70
+ /**
71
+ * Fetch deserialized swap instructions from Jupiter V6 API.
72
+ *
73
+ * @param quote - A quote previously obtained from `fetchJupiterQuote`.
74
+ * @param userPublicKey - The account that owns the input tokens. For
75
+ * AgentShield, this should be the **vault PDA** (the vault owns the ATAs).
76
+ */
77
+ async function fetchJupiterSwapInstructions(quote, userPublicKey) {
78
+ const url = `${exports.JUPITER_V6_API}/swap-instructions`;
79
+ const res = await fetch(url, {
80
+ method: "POST",
81
+ headers: { "Content-Type": "application/json" },
82
+ body: JSON.stringify({
83
+ quoteResponse: quote,
84
+ userPublicKey: userPublicKey.toBase58(),
85
+ wrapAndUnwrapSol: true,
86
+ }),
87
+ });
88
+ if (!res.ok) {
89
+ const body = await res.text();
90
+ throw new JupiterApiError(res.status, body);
91
+ }
92
+ return (await res.json());
93
+ }
94
+ /**
95
+ * Fetch address lookup table accounts for a set of table addresses.
96
+ */
97
+ async function fetchAddressLookupTables(connection, tableAddresses) {
98
+ if (tableAddresses.length === 0)
99
+ return [];
100
+ const results = await Promise.all(tableAddresses.map((addr) => connection.getAddressLookupTable(new web3_js_1.PublicKey(addr))));
101
+ return results
102
+ .filter((r) => r.value !== null)
103
+ .map((r) => r.value);
104
+ }
105
+ // ---------------------------------------------------------------------------
106
+ // Composition
107
+ // ---------------------------------------------------------------------------
108
+ /**
109
+ * Build a full AgentShield-composed Jupiter swap transaction.
110
+ *
111
+ * Returns an array of TransactionInstructions:
112
+ * `[ComputeBudget, ValidateAndAuthorize, ...setupIxs, swapIx, cleanupIx?, FinalizeSession]`
113
+ *
114
+ * The DeFi instructions (setup + swap + cleanup) are sandwiched between
115
+ * validate and finalize, forming an atomic composed transaction.
116
+ *
117
+ * @param program - The AgentShield Anchor program instance.
118
+ * @param connection - Solana connection (needed for address lookup tables).
119
+ * @param params - Jupiter swap parameters including vault/agent info.
120
+ * @returns Instructions array + address lookup tables for VersionedTransaction.
121
+ */
122
+ async function composeJupiterSwap(program, connection, params) {
123
+ const [vault] = (0, accounts_1.getVaultPDA)(params.owner, params.vaultId, program.programId);
124
+ // 1. Get quote (use pre-fetched or fetch new)
125
+ const quote = params.quote ??
126
+ (await fetchJupiterQuote({
127
+ inputMint: params.inputMint,
128
+ outputMint: params.outputMint,
129
+ amount: params.amount,
130
+ slippageBps: params.slippageBps,
131
+ }));
132
+ // 2. Get swap instructions from Jupiter with vault PDA as the user
133
+ const swapResponse = await fetchJupiterSwapInstructions(quote, vault);
134
+ // 3. Deserialize Jupiter instructions
135
+ const defiInstructions = [];
136
+ for (const ix of swapResponse.setupInstructions) {
137
+ defiInstructions.push(deserializeInstruction(ix));
138
+ }
139
+ defiInstructions.push(deserializeInstruction(swapResponse.swapInstruction));
140
+ if (swapResponse.cleanupInstruction) {
141
+ defiInstructions.push(deserializeInstruction(swapResponse.cleanupInstruction));
142
+ }
143
+ // 4. Fetch address lookup tables
144
+ const addressLookupTables = await fetchAddressLookupTables(connection, swapResponse.addressLookupTableAddresses);
145
+ // 5. Compose with AgentShield validate/finalize sandwich
146
+ const composeParams = {
147
+ vault,
148
+ owner: params.owner,
149
+ vaultId: params.vaultId,
150
+ agent: params.agent,
151
+ actionType: { swap: {} },
152
+ tokenMint: params.inputMint,
153
+ amount: params.amount,
154
+ targetProtocol: exports.JUPITER_PROGRAM_ID,
155
+ defiInstructions,
156
+ success: true,
157
+ vaultTokenAccount: params.vaultTokenAccount,
158
+ feeDestinationTokenAccount: params.feeDestinationTokenAccount,
159
+ };
160
+ const instructions = await (0, composer_1.composePermittedAction)(program, composeParams);
161
+ return { instructions, addressLookupTables };
162
+ }
163
+ /**
164
+ * Build a complete VersionedTransaction for a Jupiter swap through AgentShield.
165
+ *
166
+ * The transaction is NOT signed — caller must sign with the agent keypair.
167
+ */
168
+ async function composeJupiterSwapTransaction(program, connection, params) {
169
+ const { instructions, addressLookupTables } = await composeJupiterSwap(program, connection, params);
170
+ const { blockhash } = await connection.getLatestBlockhash();
171
+ const messageV0 = new web3_js_1.TransactionMessage({
172
+ payerKey: params.agent,
173
+ recentBlockhash: blockhash,
174
+ instructions,
175
+ }).compileToV0Message(addressLookupTables);
176
+ return new web3_js_1.VersionedTransaction(messageV0);
177
+ }
178
+ //# sourceMappingURL=jupiter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jupiter.js","sourceRoot":"","sources":["../../src/integrations/jupiter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,129 @@
1
+ import { PublicKey } from "@solana/web3.js";
2
+ import { BN } from "@coral-xyz/anchor";
3
+ import type { AgentShield } from "./idl";
4
+ export type { AgentShield };
5
+ export declare const AGENT_SHIELD_PROGRAM_ID: PublicKey;
6
+ export type AgentVaultAccount = {
7
+ owner: PublicKey;
8
+ agent: PublicKey;
9
+ feeDestination: PublicKey;
10
+ vaultId: BN;
11
+ status: VaultStatus;
12
+ bump: number;
13
+ createdAt: BN;
14
+ totalTransactions: BN;
15
+ totalVolume: BN;
16
+ openPositions: number;
17
+ totalFeesCollected: BN;
18
+ };
19
+ export type PolicyConfigAccount = {
20
+ vault: PublicKey;
21
+ dailySpendingCap: BN;
22
+ maxTransactionSize: BN;
23
+ allowedTokens: PublicKey[];
24
+ allowedProtocols: PublicKey[];
25
+ maxLeverageBps: number;
26
+ canOpenPositions: boolean;
27
+ maxConcurrentPositions: number;
28
+ feeBps: number;
29
+ bump: number;
30
+ };
31
+ export type SpendTrackerAccount = {
32
+ vault: PublicKey;
33
+ rollingSpends: SpendEntry[];
34
+ recentTransactions: TransactionRecord[];
35
+ bump: number;
36
+ };
37
+ export type SpendEntry = {
38
+ tokenMint: PublicKey;
39
+ amountSpent: BN;
40
+ timestamp: BN;
41
+ };
42
+ export type TransactionRecord = {
43
+ timestamp: BN;
44
+ actionType: ActionType;
45
+ tokenMint: PublicKey;
46
+ amount: BN;
47
+ protocol: PublicKey;
48
+ success: boolean;
49
+ slot: BN;
50
+ };
51
+ export type SessionAuthorityAccount = {
52
+ vault: PublicKey;
53
+ agent: PublicKey;
54
+ authorized: boolean;
55
+ authorizedAmount: BN;
56
+ authorizedToken: PublicKey;
57
+ authorizedProtocol: PublicKey;
58
+ actionType: ActionType;
59
+ expiresAtSlot: BN;
60
+ bump: number;
61
+ };
62
+ export type VaultStatus = {
63
+ active: Record<string, never>;
64
+ } | {
65
+ frozen: Record<string, never>;
66
+ } | {
67
+ closed: Record<string, never>;
68
+ };
69
+ export type ActionType = {
70
+ swap: Record<string, never>;
71
+ } | {
72
+ openPosition: Record<string, never>;
73
+ } | {
74
+ closePosition: Record<string, never>;
75
+ } | {
76
+ increasePosition: Record<string, never>;
77
+ } | {
78
+ decreasePosition: Record<string, never>;
79
+ } | {
80
+ deposit: Record<string, never>;
81
+ } | {
82
+ withdraw: Record<string, never>;
83
+ };
84
+ export interface InitializeVaultParams {
85
+ vaultId: BN;
86
+ dailySpendingCap: BN;
87
+ maxTransactionSize: BN;
88
+ allowedTokens: PublicKey[];
89
+ allowedProtocols: PublicKey[];
90
+ maxLeverageBps: number;
91
+ maxConcurrentPositions: number;
92
+ feeDestination: PublicKey;
93
+ }
94
+ export interface UpdatePolicyParams {
95
+ dailySpendingCap?: BN | null;
96
+ maxTransactionSize?: BN | null;
97
+ allowedTokens?: PublicKey[] | null;
98
+ allowedProtocols?: PublicKey[] | null;
99
+ maxLeverageBps?: number | null;
100
+ canOpenPositions?: boolean | null;
101
+ maxConcurrentPositions?: number | null;
102
+ }
103
+ export interface AuthorizeParams {
104
+ actionType: ActionType;
105
+ tokenMint: PublicKey;
106
+ amount: BN;
107
+ targetProtocol: PublicKey;
108
+ leverageBps?: number | null;
109
+ }
110
+ export interface ComposeActionParams {
111
+ vault: PublicKey;
112
+ owner: PublicKey;
113
+ vaultId: BN;
114
+ agent: PublicKey;
115
+ actionType: ActionType;
116
+ tokenMint: PublicKey;
117
+ amount: BN;
118
+ targetProtocol: PublicKey;
119
+ leverageBps?: number | null;
120
+ /** The DeFi instruction(s) to sandwich between validate and finalize */
121
+ defiInstructions: import("@solana/web3.js").TransactionInstruction[];
122
+ /** Whether the finalize step should report success (default: true) */
123
+ success?: boolean;
124
+ /** Optional: vault token account for fee deduction */
125
+ vaultTokenAccount?: PublicKey | null;
126
+ /** Optional: fee destination token account */
127
+ feeDestinationTokenAccount?: PublicKey | null;
128
+ }
129
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,EAAE,EAAE,MAAM,mBAAmB,CAAC;AACvC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AAEzC,YAAY,EAAE,WAAW,EAAE,CAAC;AAE5B,eAAO,MAAM,uBAAuB,WAEnC,CAAC;AAGF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,KAAK,EAAE,SAAS,CAAC;IACjB,KAAK,EAAE,SAAS,CAAC;IACjB,cAAc,EAAE,SAAS,CAAC;IAC1B,OAAO,EAAE,EAAE,CAAC;IACZ,MAAM,EAAE,WAAW,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,EAAE,CAAC;IACd,iBAAiB,EAAE,EAAE,CAAC;IACtB,WAAW,EAAE,EAAE,CAAC;IAChB,aAAa,EAAE,MAAM,CAAC;IACtB,kBAAkB,EAAE,EAAE,CAAC;CACxB,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAChC,KAAK,EAAE,SAAS,CAAC;IACjB,gBAAgB,EAAE,EAAE,CAAC;IACrB,kBAAkB,EAAE,EAAE,CAAC;IACvB,aAAa,EAAE,SAAS,EAAE,CAAC;IAC3B,gBAAgB,EAAE,SAAS,EAAE,CAAC;IAC9B,cAAc,EAAE,MAAM,CAAC;IACvB,gBAAgB,EAAE,OAAO,CAAC;IAC1B,sBAAsB,EAAE,MAAM,CAAC;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAChC,KAAK,EAAE,SAAS,CAAC;IACjB,aAAa,EAAE,UAAU,EAAE,CAAC;IAC5B,kBAAkB,EAAE,iBAAiB,EAAE,CAAC;IACxC,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG;IACvB,SAAS,EAAE,SAAS,CAAC;IACrB,WAAW,EAAE,EAAE,CAAC;IAChB,SAAS,EAAE,EAAE,CAAC;CACf,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,SAAS,EAAE,EAAE,CAAC;IACd,UAAU,EAAE,UAAU,CAAC;IACvB,SAAS,EAAE,SAAS,CAAC;IACrB,MAAM,EAAE,EAAE,CAAC;IACX,QAAQ,EAAE,SAAS,CAAC;IACpB,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,EAAE,CAAC;CACV,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG;IACpC,KAAK,EAAE,SAAS,CAAC;IACjB,KAAK,EAAE,SAAS,CAAC;IACjB,UAAU,EAAE,OAAO,CAAC;IACpB,gBAAgB,EAAE,EAAE,CAAC;IACrB,eAAe,EAAE,SAAS,CAAC;IAC3B,kBAAkB,EAAE,SAAS,CAAC;IAC9B,UAAU,EAAE,UAAU,CAAC;IACvB,aAAa,EAAE,EAAE,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAGF,MAAM,MAAM,WAAW,GACnB;IAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAA;CAAE,GACjC;IAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAA;CAAE,GACjC;IAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAA;CAAE,CAAC;AAEtC,MAAM,MAAM,UAAU,GAClB;IAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAA;CAAE,GAC/B;IAAE,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAA;CAAE,GACvC;IAAE,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAA;CAAE,GACxC;IAAE,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAA;CAAE,GAC3C;IAAE,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAA;CAAE,GAC3C;IAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAA;CAAE,GAClC;IAAE,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAA;CAAE,CAAC;AAGxC,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,EAAE,CAAC;IACZ,gBAAgB,EAAE,EAAE,CAAC;IACrB,kBAAkB,EAAE,EAAE,CAAC;IACvB,aAAa,EAAE,SAAS,EAAE,CAAC;IAC3B,gBAAgB,EAAE,SAAS,EAAE,CAAC;IAC9B,cAAc,EAAE,MAAM,CAAC;IACvB,sBAAsB,EAAE,MAAM,CAAC;IAC/B,cAAc,EAAE,SAAS,CAAC;CAC3B;AAED,MAAM,WAAW,kBAAkB;IACjC,gBAAgB,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC;IAC7B,kBAAkB,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC;IAC/B,aAAa,CAAC,EAAE,SAAS,EAAE,GAAG,IAAI,CAAC;IACnC,gBAAgB,CAAC,EAAE,SAAS,EAAE,GAAG,IAAI,CAAC;IACtC,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,gBAAgB,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IAClC,sBAAsB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACxC;AAED,MAAM,WAAW,eAAe;IAC9B,UAAU,EAAE,UAAU,CAAC;IACvB,SAAS,EAAE,SAAS,CAAC;IACrB,MAAM,EAAE,EAAE,CAAC;IACX,cAAc,EAAE,SAAS,CAAC;IAC1B,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7B;AAED,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,SAAS,CAAC;IACjB,KAAK,EAAE,SAAS,CAAC;IACjB,OAAO,EAAE,EAAE,CAAC;IACZ,KAAK,EAAE,SAAS,CAAC;IACjB,UAAU,EAAE,UAAU,CAAC;IACvB,SAAS,EAAE,SAAS,CAAC;IACrB,MAAM,EAAE,EAAE,CAAC;IACX,cAAc,EAAE,SAAS,CAAC;IAC1B,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,wEAAwE;IACxE,gBAAgB,EAAE,OAAO,iBAAiB,EAAE,sBAAsB,EAAE,CAAC;IACrE,sEAAsE;IACtE,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,sDAAsD;IACtD,iBAAiB,CAAC,EAAE,SAAS,GAAG,IAAI,CAAC;IACrC,8CAA8C;IAC9C,0BAA0B,CAAC,EAAE,SAAS,GAAG,IAAI,CAAC;CAC/C"}
package/dist/types.js ADDED
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AGENT_SHIELD_PROGRAM_ID = void 0;
4
+ const web3_js_1 = require("@solana/web3.js");
5
+ exports.AGENT_SHIELD_PROGRAM_ID = new web3_js_1.PublicKey("4ZeVCqnjUgUtFrHHPG7jELUxvJeoVGHhGNgPrhBPwrHL");
6
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":";;;AAAA,6CAA4C;AAM/B,QAAA,uBAAuB,GAAG,IAAI,mBAAS,CAClD,8CAA8C,CAC/C,CAAC"}
package/package.json ADDED
@@ -0,0 +1,36 @@
1
+ {
2
+ "name": "@agent-shield/sdk",
3
+ "version": "0.1.0",
4
+ "description": "TypeScript SDK for AgentShield — AI Agent Financial Middleware on Solana",
5
+ "main": "dist/index.js",
6
+ "module": "dist/index.js",
7
+ "types": "dist/index.d.ts",
8
+ "files": ["dist"],
9
+ "sideEffects": false,
10
+ "scripts": {
11
+ "build": "tsc",
12
+ "clean": "rm -rf dist",
13
+ "prepublishOnly": "npm run clean && npm run build"
14
+ },
15
+ "dependencies": {
16
+ "@coral-xyz/anchor": "^0.32.1",
17
+ "@solana/web3.js": "^1.95.0",
18
+ "@solana/spl-token": "^0.4.0"
19
+ },
20
+ "peerDependencies": {
21
+ "@coral-xyz/anchor": "^0.32.1",
22
+ "@solana/web3.js": "^1.95.0"
23
+ },
24
+ "optionalDependencies": {
25
+ "flash-sdk": "^12.0.3"
26
+ },
27
+ "devDependencies": {
28
+ "@types/bn.js": "^5.1.5",
29
+ "typescript": "^5.3.3"
30
+ },
31
+ "license": "MIT",
32
+ "repository": {
33
+ "type": "git",
34
+ "url": "https://github.com/agentshield/agent-middleware"
35
+ }
36
+ }