@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 @@
1
+ {"version":3,"file":"instructions.d.ts","sourceRoot":"","sources":["../src/instructions.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,127 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.buildInitializeVault = buildInitializeVault;
4
+ exports.buildDepositFunds = buildDepositFunds;
5
+ exports.buildRegisterAgent = buildRegisterAgent;
6
+ exports.buildUpdatePolicy = buildUpdatePolicy;
7
+ exports.buildValidateAndAuthorize = buildValidateAndAuthorize;
8
+ exports.buildFinalizeSession = buildFinalizeSession;
9
+ exports.buildRevokeAgent = buildRevokeAgent;
10
+ exports.buildReactivateVault = buildReactivateVault;
11
+ exports.buildWithdrawFunds = buildWithdrawFunds;
12
+ exports.buildCloseVault = buildCloseVault;
13
+ const web3_js_1 = require("@solana/web3.js");
14
+ const spl_token_1 = require("@solana/spl-token");
15
+ const accounts_1 = require("./accounts");
16
+ function buildInitializeVault(program, owner, params) {
17
+ const [vault] = (0, accounts_1.getVaultPDA)(owner, params.vaultId, program.programId);
18
+ const [policy] = (0, accounts_1.getPolicyPDA)(vault, program.programId);
19
+ const [tracker] = (0, accounts_1.getTrackerPDA)(vault, program.programId);
20
+ return program.methods
21
+ .initializeVault(params.vaultId, params.dailySpendingCap, params.maxTransactionSize, params.allowedTokens, params.allowedProtocols, params.maxLeverageBps, params.maxConcurrentPositions)
22
+ .accounts({
23
+ owner,
24
+ vault,
25
+ policy,
26
+ tracker,
27
+ feeDestination: params.feeDestination,
28
+ systemProgram: web3_js_1.SystemProgram.programId,
29
+ });
30
+ }
31
+ function buildDepositFunds(program, owner, vault, mint, amount) {
32
+ const ownerTokenAccount = (0, spl_token_1.getAssociatedTokenAddressSync)(mint, owner);
33
+ const vaultTokenAccount = (0, spl_token_1.getAssociatedTokenAddressSync)(mint, vault, true);
34
+ return program.methods.depositFunds(amount).accounts({
35
+ owner,
36
+ vault,
37
+ mint,
38
+ ownerTokenAccount,
39
+ vaultTokenAccount,
40
+ tokenProgram: spl_token_1.TOKEN_PROGRAM_ID,
41
+ associatedTokenProgram: spl_token_1.ASSOCIATED_TOKEN_PROGRAM_ID,
42
+ systemProgram: web3_js_1.SystemProgram.programId,
43
+ });
44
+ }
45
+ function buildRegisterAgent(program, owner, vault, agent) {
46
+ return program.methods.registerAgent(agent).accounts({
47
+ owner,
48
+ vault,
49
+ });
50
+ }
51
+ function buildUpdatePolicy(program, owner, vault, params) {
52
+ const [policy] = (0, accounts_1.getPolicyPDA)(vault, program.programId);
53
+ return program.methods
54
+ .updatePolicy(params.dailySpendingCap ?? null, params.maxTransactionSize ?? null, params.allowedTokens ?? null, params.allowedProtocols ?? null, params.maxLeverageBps ?? null, params.canOpenPositions ?? null, params.maxConcurrentPositions ?? null)
55
+ .accounts({
56
+ owner,
57
+ vault,
58
+ policy,
59
+ });
60
+ }
61
+ function buildValidateAndAuthorize(program, agent, vault, params) {
62
+ const [policy] = (0, accounts_1.getPolicyPDA)(vault, program.programId);
63
+ const [tracker] = (0, accounts_1.getTrackerPDA)(vault, program.programId);
64
+ const [session] = (0, accounts_1.getSessionPDA)(vault, agent, program.programId);
65
+ return program.methods
66
+ .validateAndAuthorize(params.actionType, params.tokenMint, params.amount, params.targetProtocol, params.leverageBps ?? null)
67
+ .accounts({
68
+ agent,
69
+ vault,
70
+ policy,
71
+ tracker,
72
+ session,
73
+ systemProgram: web3_js_1.SystemProgram.programId,
74
+ });
75
+ }
76
+ function buildFinalizeSession(program, payer, vault, agent, success, vaultTokenAccount, feeDestinationTokenAccount) {
77
+ const [policy] = (0, accounts_1.getPolicyPDA)(vault, program.programId);
78
+ const [tracker] = (0, accounts_1.getTrackerPDA)(vault, program.programId);
79
+ const [session] = (0, accounts_1.getSessionPDA)(vault, agent, program.programId);
80
+ return program.methods.finalizeSession(success).accounts({
81
+ payer,
82
+ vault,
83
+ policy,
84
+ tracker,
85
+ session,
86
+ vaultTokenAccount: vaultTokenAccount ?? null,
87
+ feeDestinationTokenAccount: feeDestinationTokenAccount ?? null,
88
+ tokenProgram: spl_token_1.TOKEN_PROGRAM_ID,
89
+ systemProgram: web3_js_1.SystemProgram.programId,
90
+ });
91
+ }
92
+ function buildRevokeAgent(program, owner, vault) {
93
+ return program.methods.revokeAgent().accounts({
94
+ owner,
95
+ vault,
96
+ });
97
+ }
98
+ function buildReactivateVault(program, owner, vault, newAgent) {
99
+ return program.methods.reactivateVault(newAgent ?? null).accounts({
100
+ owner,
101
+ vault,
102
+ });
103
+ }
104
+ function buildWithdrawFunds(program, owner, vault, mint, amount) {
105
+ const vaultTokenAccount = (0, spl_token_1.getAssociatedTokenAddressSync)(mint, vault, true);
106
+ const ownerTokenAccount = (0, spl_token_1.getAssociatedTokenAddressSync)(mint, owner);
107
+ return program.methods.withdrawFunds(amount).accounts({
108
+ owner,
109
+ vault,
110
+ mint,
111
+ vaultTokenAccount,
112
+ ownerTokenAccount,
113
+ tokenProgram: spl_token_1.TOKEN_PROGRAM_ID,
114
+ });
115
+ }
116
+ function buildCloseVault(program, owner, vault) {
117
+ const [policy] = (0, accounts_1.getPolicyPDA)(vault, program.programId);
118
+ const [tracker] = (0, accounts_1.getTrackerPDA)(vault, program.programId);
119
+ return program.methods.closeVault().accounts({
120
+ owner,
121
+ vault,
122
+ policy,
123
+ tracker,
124
+ systemProgram: web3_js_1.SystemProgram.programId,
125
+ });
126
+ }
127
+ //# sourceMappingURL=instructions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"instructions.js","sourceRoot":"","sources":["../src/instructions.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,130 @@
1
+ import { PublicKey, TransactionInstruction, VersionedTransaction, Connection, Signer } from "@solana/web3.js";
2
+ import { AnchorProvider, BN, Program } from "@coral-xyz/anchor";
3
+ import { PerpetualsClient, PoolConfig } from "flash-sdk";
4
+ import type { AgentShield } from "../types";
5
+ export declare const FLASH_TRADE_PROGRAM_ID: PublicKey;
6
+ export declare const FLASH_COMPOSABILITY_PROGRAM_ID: PublicKey;
7
+ export declare const FLASH_FB_NFT_REWARD_PROGRAM_ID: PublicKey;
8
+ export declare const FLASH_REWARD_DISTRIBUTION_PROGRAM_ID: PublicKey;
9
+ export { Side, Privilege } from "flash-sdk";
10
+ export interface FlashTradeConfig {
11
+ /** Pool name, e.g. "Crypto.1" */
12
+ poolName: string;
13
+ /** Cluster for PoolConfig lookup */
14
+ cluster: "mainnet-beta" | "devnet";
15
+ }
16
+ export interface ContractOraclePrice {
17
+ price: BN;
18
+ exponent: number;
19
+ }
20
+ export interface FlashOpenPositionParams {
21
+ owner: PublicKey;
22
+ vaultId: BN;
23
+ agent: PublicKey;
24
+ targetSymbol: string;
25
+ collateralSymbol: string;
26
+ collateralAmount: BN;
27
+ sizeAmount: BN;
28
+ side: {
29
+ long: Record<string, never>;
30
+ } | {
31
+ short: Record<string, never>;
32
+ };
33
+ priceWithSlippage: ContractOraclePrice;
34
+ leverageBps: number;
35
+ vaultTokenAccount?: PublicKey | null;
36
+ feeDestinationTokenAccount?: PublicKey | null;
37
+ }
38
+ export interface FlashClosePositionParams {
39
+ owner: PublicKey;
40
+ vaultId: BN;
41
+ agent: PublicKey;
42
+ targetSymbol: string;
43
+ collateralSymbol: string;
44
+ collateralAmount: BN;
45
+ side: {
46
+ long: Record<string, never>;
47
+ } | {
48
+ short: Record<string, never>;
49
+ };
50
+ priceWithSlippage: ContractOraclePrice;
51
+ vaultTokenAccount?: PublicKey | null;
52
+ feeDestinationTokenAccount?: PublicKey | null;
53
+ }
54
+ export interface FlashIncreasePositionParams {
55
+ owner: PublicKey;
56
+ vaultId: BN;
57
+ agent: PublicKey;
58
+ targetSymbol: string;
59
+ collateralSymbol: string;
60
+ positionPubKey: PublicKey;
61
+ side: {
62
+ long: Record<string, never>;
63
+ } | {
64
+ short: Record<string, never>;
65
+ };
66
+ priceWithSlippage: ContractOraclePrice;
67
+ sizeDelta: BN;
68
+ collateralAmount: BN;
69
+ leverageBps: number;
70
+ vaultTokenAccount?: PublicKey | null;
71
+ feeDestinationTokenAccount?: PublicKey | null;
72
+ }
73
+ export interface FlashDecreasePositionParams {
74
+ owner: PublicKey;
75
+ vaultId: BN;
76
+ agent: PublicKey;
77
+ targetSymbol: string;
78
+ collateralSymbol: string;
79
+ positionPubKey: PublicKey;
80
+ side: {
81
+ long: Record<string, never>;
82
+ } | {
83
+ short: Record<string, never>;
84
+ };
85
+ priceWithSlippage: ContractOraclePrice;
86
+ sizeDelta: BN;
87
+ collateralAmount: BN;
88
+ vaultTokenAccount?: PublicKey | null;
89
+ feeDestinationTokenAccount?: PublicKey | null;
90
+ }
91
+ export interface FlashTradeResult {
92
+ instructions: TransactionInstruction[];
93
+ additionalSigners: Signer[];
94
+ }
95
+ /**
96
+ * Create a PerpetualsClient from flash-sdk configured for a specific pool.
97
+ *
98
+ * The `provider` should use the vault PDA as the wallet (since the vault
99
+ * owns the token accounts and positions in instruction composition mode).
100
+ */
101
+ export declare function createFlashTradeClient(provider: AnchorProvider, config?: Partial<FlashTradeConfig>): PerpetualsClient;
102
+ /**
103
+ * Load pool config for a given pool name and cluster.
104
+ */
105
+ export declare function getPoolConfig(poolName: string, cluster?: "mainnet-beta" | "devnet"): PoolConfig;
106
+ /**
107
+ * Compose a Flash Trade open position through AgentShield.
108
+ *
109
+ * Returns: [ComputeBudget, ValidateAndAuthorize, ...flashIxs, FinalizeSession]
110
+ */
111
+ export declare function composeFlashTradeOpen(program: Program<AgentShield>, perpClient: PerpetualsClient, poolConfig: PoolConfig, params: FlashOpenPositionParams): Promise<FlashTradeResult>;
112
+ /**
113
+ * Compose a Flash Trade close position through AgentShield.
114
+ */
115
+ export declare function composeFlashTradeClose(program: Program<AgentShield>, perpClient: PerpetualsClient, poolConfig: PoolConfig, params: FlashClosePositionParams): Promise<FlashTradeResult>;
116
+ /**
117
+ * Compose a Flash Trade increase position through AgentShield.
118
+ */
119
+ export declare function composeFlashTradeIncrease(program: Program<AgentShield>, perpClient: PerpetualsClient, poolConfig: PoolConfig, params: FlashIncreasePositionParams): Promise<FlashTradeResult>;
120
+ /**
121
+ * Compose a Flash Trade decrease position through AgentShield.
122
+ */
123
+ export declare function composeFlashTradeDecrease(program: Program<AgentShield>, perpClient: PerpetualsClient, poolConfig: PoolConfig, params: FlashDecreasePositionParams): Promise<FlashTradeResult>;
124
+ /**
125
+ * Build a complete VersionedTransaction for a Flash Trade operation.
126
+ * The transaction is NOT signed — caller must sign with the agent keypair
127
+ * and any additionalSigners.
128
+ */
129
+ export declare function composeFlashTradeTransaction(connection: Connection, payer: PublicKey, result: FlashTradeResult): Promise<VersionedTransaction>;
130
+ //# sourceMappingURL=flash-trade.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"flash-trade.d.ts","sourceRoot":"","sources":["../../src/integrations/flash-trade.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,170 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Privilege = exports.Side = exports.FLASH_REWARD_DISTRIBUTION_PROGRAM_ID = exports.FLASH_FB_NFT_REWARD_PROGRAM_ID = exports.FLASH_COMPOSABILITY_PROGRAM_ID = exports.FLASH_TRADE_PROGRAM_ID = void 0;
4
+ exports.createFlashTradeClient = createFlashTradeClient;
5
+ exports.getPoolConfig = getPoolConfig;
6
+ exports.composeFlashTradeOpen = composeFlashTradeOpen;
7
+ exports.composeFlashTradeClose = composeFlashTradeClose;
8
+ exports.composeFlashTradeIncrease = composeFlashTradeIncrease;
9
+ exports.composeFlashTradeDecrease = composeFlashTradeDecrease;
10
+ exports.composeFlashTradeTransaction = composeFlashTradeTransaction;
11
+ const web3_js_1 = require("@solana/web3.js");
12
+ const flash_sdk_1 = require("flash-sdk");
13
+ const accounts_1 = require("../accounts");
14
+ const composer_1 = require("../composer");
15
+ // ---------------------------------------------------------------------------
16
+ // Constants
17
+ // ---------------------------------------------------------------------------
18
+ exports.FLASH_TRADE_PROGRAM_ID = new web3_js_1.PublicKey("PERPHjGBqRHArX4DySjwM6UJHiR3sWAatqfdBS2qQJu");
19
+ exports.FLASH_COMPOSABILITY_PROGRAM_ID = new web3_js_1.PublicKey("FLCPaG22cpZBSdbmk6kBhHsGDfkJGHsSRhgSt9kPV7sG");
20
+ exports.FLASH_FB_NFT_REWARD_PROGRAM_ID = new web3_js_1.PublicKey("FBnftwLhsQJPHkGEjVVgPXnxFjTsePDqQnmzixiJbsAV");
21
+ exports.FLASH_REWARD_DISTRIBUTION_PROGRAM_ID = new web3_js_1.PublicKey("FLRDaTyVhUFJwdwtBjCKMDGNbMFrHm5GVXE1aVjMCaH1");
22
+ // Re-export flash-sdk types for consumers
23
+ var flash_sdk_2 = require("flash-sdk");
24
+ Object.defineProperty(exports, "Side", { enumerable: true, get: function () { return flash_sdk_2.Side; } });
25
+ Object.defineProperty(exports, "Privilege", { enumerable: true, get: function () { return flash_sdk_2.Privilege; } });
26
+ // ---------------------------------------------------------------------------
27
+ // Client Factory
28
+ // ---------------------------------------------------------------------------
29
+ /**
30
+ * Create a PerpetualsClient from flash-sdk configured for a specific pool.
31
+ *
32
+ * The `provider` should use the vault PDA as the wallet (since the vault
33
+ * owns the token accounts and positions in instruction composition mode).
34
+ */
35
+ function createFlashTradeClient(provider, config) {
36
+ return new flash_sdk_1.PerpetualsClient(provider, exports.FLASH_TRADE_PROGRAM_ID, exports.FLASH_COMPOSABILITY_PROGRAM_ID, exports.FLASH_FB_NFT_REWARD_PROGRAM_ID, exports.FLASH_REWARD_DISTRIBUTION_PROGRAM_ID, {}, false);
37
+ }
38
+ /**
39
+ * Load pool config for a given pool name and cluster.
40
+ */
41
+ function getPoolConfig(poolName, cluster = "mainnet-beta") {
42
+ return flash_sdk_1.PoolConfig.fromIdsByName(poolName, cluster);
43
+ }
44
+ // ---------------------------------------------------------------------------
45
+ // Composition Functions
46
+ // ---------------------------------------------------------------------------
47
+ /**
48
+ * Compose a Flash Trade open position through AgentShield.
49
+ *
50
+ * Returns: [ComputeBudget, ValidateAndAuthorize, ...flashIxs, FinalizeSession]
51
+ */
52
+ async function composeFlashTradeOpen(program, perpClient, poolConfig, params) {
53
+ const [vault] = (0, accounts_1.getVaultPDA)(params.owner, params.vaultId, program.programId);
54
+ // Get raw Flash Trade instructions
55
+ const { instructions: flashIxs, additionalSigners } = await perpClient.openPosition(params.targetSymbol, params.collateralSymbol, params.priceWithSlippage, params.collateralAmount, params.sizeAmount, params.side, poolConfig, flash_sdk_1.Privilege.None, undefined, // tokenStakeAccount
56
+ undefined, // userReferralAccount
57
+ true // skipBalanceChecks
58
+ );
59
+ // Get collateral token mint from pool config
60
+ const collateralToken = poolConfig.getTokenFromSymbol(params.collateralSymbol);
61
+ const tokenMint = collateralToken.mintKey;
62
+ const composeParams = {
63
+ vault,
64
+ owner: params.owner,
65
+ vaultId: params.vaultId,
66
+ agent: params.agent,
67
+ actionType: { openPosition: {} },
68
+ tokenMint,
69
+ amount: params.collateralAmount,
70
+ targetProtocol: exports.FLASH_TRADE_PROGRAM_ID,
71
+ leverageBps: params.leverageBps,
72
+ defiInstructions: flashIxs,
73
+ success: true,
74
+ vaultTokenAccount: params.vaultTokenAccount,
75
+ feeDestinationTokenAccount: params.feeDestinationTokenAccount,
76
+ };
77
+ const instructions = await (0, composer_1.composePermittedAction)(program, composeParams);
78
+ return { instructions, additionalSigners };
79
+ }
80
+ /**
81
+ * Compose a Flash Trade close position through AgentShield.
82
+ */
83
+ async function composeFlashTradeClose(program, perpClient, poolConfig, params) {
84
+ const [vault] = (0, accounts_1.getVaultPDA)(params.owner, params.vaultId, program.programId);
85
+ const { instructions: flashIxs, additionalSigners } = await perpClient.closePosition(params.targetSymbol, params.collateralSymbol, params.priceWithSlippage, params.side, poolConfig, flash_sdk_1.Privilege.None);
86
+ const collateralToken = poolConfig.getTokenFromSymbol(params.collateralSymbol);
87
+ const tokenMint = collateralToken.mintKey;
88
+ const composeParams = {
89
+ vault,
90
+ owner: params.owner,
91
+ vaultId: params.vaultId,
92
+ agent: params.agent,
93
+ actionType: { closePosition: {} },
94
+ tokenMint,
95
+ amount: params.collateralAmount,
96
+ targetProtocol: exports.FLASH_TRADE_PROGRAM_ID,
97
+ defiInstructions: flashIxs,
98
+ success: true,
99
+ vaultTokenAccount: params.vaultTokenAccount,
100
+ feeDestinationTokenAccount: params.feeDestinationTokenAccount,
101
+ };
102
+ const instructions = await (0, composer_1.composePermittedAction)(program, composeParams);
103
+ return { instructions, additionalSigners };
104
+ }
105
+ /**
106
+ * Compose a Flash Trade increase position through AgentShield.
107
+ */
108
+ async function composeFlashTradeIncrease(program, perpClient, poolConfig, params) {
109
+ const [vault] = (0, accounts_1.getVaultPDA)(params.owner, params.vaultId, program.programId);
110
+ const { instructions: flashIxs, additionalSigners } = await perpClient.increaseSize(params.targetSymbol, params.collateralSymbol, params.positionPubKey, params.side, poolConfig, params.priceWithSlippage, params.sizeDelta, flash_sdk_1.Privilege.None);
111
+ const collateralToken = poolConfig.getTokenFromSymbol(params.collateralSymbol);
112
+ const tokenMint = collateralToken.mintKey;
113
+ const composeParams = {
114
+ vault,
115
+ owner: params.owner,
116
+ vaultId: params.vaultId,
117
+ agent: params.agent,
118
+ actionType: { increasePosition: {} },
119
+ tokenMint,
120
+ amount: params.collateralAmount,
121
+ targetProtocol: exports.FLASH_TRADE_PROGRAM_ID,
122
+ leverageBps: params.leverageBps,
123
+ defiInstructions: flashIxs,
124
+ success: true,
125
+ vaultTokenAccount: params.vaultTokenAccount,
126
+ feeDestinationTokenAccount: params.feeDestinationTokenAccount,
127
+ };
128
+ const instructions = await (0, composer_1.composePermittedAction)(program, composeParams);
129
+ return { instructions, additionalSigners };
130
+ }
131
+ /**
132
+ * Compose a Flash Trade decrease position through AgentShield.
133
+ */
134
+ async function composeFlashTradeDecrease(program, perpClient, poolConfig, params) {
135
+ const [vault] = (0, accounts_1.getVaultPDA)(params.owner, params.vaultId, program.programId);
136
+ const { instructions: flashIxs, additionalSigners } = await perpClient.decreaseSize(params.targetSymbol, params.collateralSymbol, params.side, params.positionPubKey, poolConfig, params.priceWithSlippage, params.sizeDelta, flash_sdk_1.Privilege.None);
137
+ const collateralToken = poolConfig.getTokenFromSymbol(params.collateralSymbol);
138
+ const tokenMint = collateralToken.mintKey;
139
+ const composeParams = {
140
+ vault,
141
+ owner: params.owner,
142
+ vaultId: params.vaultId,
143
+ agent: params.agent,
144
+ actionType: { decreasePosition: {} },
145
+ tokenMint,
146
+ amount: params.collateralAmount,
147
+ targetProtocol: exports.FLASH_TRADE_PROGRAM_ID,
148
+ defiInstructions: flashIxs,
149
+ success: true,
150
+ vaultTokenAccount: params.vaultTokenAccount,
151
+ feeDestinationTokenAccount: params.feeDestinationTokenAccount,
152
+ };
153
+ const instructions = await (0, composer_1.composePermittedAction)(program, composeParams);
154
+ return { instructions, additionalSigners };
155
+ }
156
+ /**
157
+ * Build a complete VersionedTransaction for a Flash Trade operation.
158
+ * The transaction is NOT signed — caller must sign with the agent keypair
159
+ * and any additionalSigners.
160
+ */
161
+ async function composeFlashTradeTransaction(connection, payer, result) {
162
+ const { blockhash } = await connection.getLatestBlockhash();
163
+ const messageV0 = new web3_js_1.TransactionMessage({
164
+ payerKey: payer,
165
+ recentBlockhash: blockhash,
166
+ instructions: result.instructions,
167
+ }).compileToV0Message();
168
+ return new web3_js_1.VersionedTransaction(messageV0);
169
+ }
170
+ //# sourceMappingURL=flash-trade.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"flash-trade.js","sourceRoot":"","sources":["../../src/integrations/flash-trade.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,131 @@
1
+ import { PublicKey, TransactionInstruction, VersionedTransaction, Connection, AddressLookupTableAccount } from "@solana/web3.js";
2
+ import { BN, Program } from "@coral-xyz/anchor";
3
+ import type { AgentShield } from "../types";
4
+ export declare const JUPITER_V6_API = "https://quote-api.jup.ag/v6";
5
+ export declare const JUPITER_PROGRAM_ID: PublicKey;
6
+ export declare class JupiterApiError extends Error {
7
+ readonly statusCode: number;
8
+ readonly body: string;
9
+ constructor(statusCode: number, body: string);
10
+ }
11
+ export interface JupiterQuoteParams {
12
+ inputMint: PublicKey;
13
+ outputMint: PublicKey;
14
+ /** Raw token amount (lamports / smallest unit) */
15
+ amount: BN;
16
+ /** Slippage in basis points. Default 50 (0.5%) */
17
+ slippageBps?: number;
18
+ /** Additional query params forwarded to the Jupiter quote API */
19
+ extraParams?: Record<string, string>;
20
+ }
21
+ export interface JupiterRoutePlanStep {
22
+ swapInfo: {
23
+ ammKey: string;
24
+ label: string;
25
+ inputMint: string;
26
+ outputMint: string;
27
+ inAmount: string;
28
+ outAmount: string;
29
+ feeAmount: string;
30
+ feeMint: string;
31
+ };
32
+ percent: number;
33
+ }
34
+ export interface JupiterQuoteResponse {
35
+ inputMint: string;
36
+ inAmount: string;
37
+ outputMint: string;
38
+ outAmount: string;
39
+ otherAmountThreshold: string;
40
+ swapMode: string;
41
+ slippageBps: number;
42
+ priceImpactPct: string;
43
+ routePlan: JupiterRoutePlanStep[];
44
+ contextSlot: number;
45
+ timeTaken: number;
46
+ }
47
+ /** Serialized instruction format returned by Jupiter swap-instructions API */
48
+ export interface JupiterSerializedInstruction {
49
+ programId: string;
50
+ accounts: {
51
+ pubkey: string;
52
+ isSigner: boolean;
53
+ isWritable: boolean;
54
+ }[];
55
+ data: string;
56
+ }
57
+ export interface JupiterSwapInstructionsResponse {
58
+ tokenLedgerInstruction?: JupiterSerializedInstruction;
59
+ computeBudgetInstructions: JupiterSerializedInstruction[];
60
+ setupInstructions: JupiterSerializedInstruction[];
61
+ swapInstruction: JupiterSerializedInstruction;
62
+ cleanupInstruction?: JupiterSerializedInstruction;
63
+ addressLookupTableAddresses: string[];
64
+ }
65
+ export interface JupiterSwapParams {
66
+ /** Vault owner pubkey */
67
+ owner: PublicKey;
68
+ /** Vault ID (BN) */
69
+ vaultId: BN;
70
+ /** Agent signing key */
71
+ agent: PublicKey;
72
+ /** Input token mint */
73
+ inputMint: PublicKey;
74
+ /** Output token mint */
75
+ outputMint: PublicKey;
76
+ /** Amount in smallest units */
77
+ amount: BN;
78
+ /** Slippage in bps (default 50) */
79
+ slippageBps?: number;
80
+ /** Pre-fetched quote — skips the quote API call if provided */
81
+ quote?: JupiterQuoteResponse;
82
+ /** Optional: vault token account for fee deduction */
83
+ vaultTokenAccount?: PublicKey | null;
84
+ /** Optional: fee destination token account */
85
+ feeDestinationTokenAccount?: PublicKey | null;
86
+ }
87
+ /**
88
+ * Deserialize a Jupiter serialized instruction into a Solana TransactionInstruction.
89
+ */
90
+ export declare function deserializeInstruction(ix: JupiterSerializedInstruction): TransactionInstruction;
91
+ /**
92
+ * Fetch a swap quote from the Jupiter V6 API.
93
+ */
94
+ export declare function fetchJupiterQuote(params: JupiterQuoteParams): Promise<JupiterQuoteResponse>;
95
+ /**
96
+ * Fetch deserialized swap instructions from Jupiter V6 API.
97
+ *
98
+ * @param quote - A quote previously obtained from `fetchJupiterQuote`.
99
+ * @param userPublicKey - The account that owns the input tokens. For
100
+ * AgentShield, this should be the **vault PDA** (the vault owns the ATAs).
101
+ */
102
+ export declare function fetchJupiterSwapInstructions(quote: JupiterQuoteResponse, userPublicKey: PublicKey): Promise<JupiterSwapInstructionsResponse>;
103
+ /**
104
+ * Fetch address lookup table accounts for a set of table addresses.
105
+ */
106
+ export declare function fetchAddressLookupTables(connection: Connection, tableAddresses: string[]): Promise<AddressLookupTableAccount[]>;
107
+ /**
108
+ * Build a full AgentShield-composed Jupiter swap transaction.
109
+ *
110
+ * Returns an array of TransactionInstructions:
111
+ * `[ComputeBudget, ValidateAndAuthorize, ...setupIxs, swapIx, cleanupIx?, FinalizeSession]`
112
+ *
113
+ * The DeFi instructions (setup + swap + cleanup) are sandwiched between
114
+ * validate and finalize, forming an atomic composed transaction.
115
+ *
116
+ * @param program - The AgentShield Anchor program instance.
117
+ * @param connection - Solana connection (needed for address lookup tables).
118
+ * @param params - Jupiter swap parameters including vault/agent info.
119
+ * @returns Instructions array + address lookup tables for VersionedTransaction.
120
+ */
121
+ export declare function composeJupiterSwap(program: Program<AgentShield>, connection: Connection, params: JupiterSwapParams): Promise<{
122
+ instructions: TransactionInstruction[];
123
+ addressLookupTables: AddressLookupTableAccount[];
124
+ }>;
125
+ /**
126
+ * Build a complete VersionedTransaction for a Jupiter swap through AgentShield.
127
+ *
128
+ * The transaction is NOT signed — caller must sign with the agent keypair.
129
+ */
130
+ export declare function composeJupiterSwapTransaction(program: Program<AgentShield>, connection: Connection, params: JupiterSwapParams): Promise<VersionedTransaction>;
131
+ //# sourceMappingURL=jupiter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jupiter.d.ts","sourceRoot":"","sources":["../../src/integrations/jupiter.ts"],"names":[],"mappings":"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"}