@stellar-agent/defi 0.4.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/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 stellar-agent-bridge contributors
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,123 @@
1
+ import { NetworkProfile } from "@stellar-agent/core";
2
+ export type BlendNetworkName = "testnet" | "mainnet";
3
+ export type BlendPoolVersion = "v1" | "v2";
4
+ export type BlendActionType = "supply" | "withdraw" | "supply_collateral" | "withdraw_collateral" | "borrow" | "repay";
5
+ export interface BlendAssetDeployment {
6
+ symbol: string;
7
+ contractId: string;
8
+ issuer?: string;
9
+ classicAsset?: string;
10
+ }
11
+ export interface BlendPoolDeployment {
12
+ name: string;
13
+ contractId: string;
14
+ version: BlendPoolVersion;
15
+ blocked?: boolean;
16
+ }
17
+ export interface BlendDeployment {
18
+ network: BlendNetworkName;
19
+ source: {
20
+ contractsUrl: string;
21
+ envUrl: string;
22
+ };
23
+ ids: Record<string, string>;
24
+ hashes: Record<string, string>;
25
+ assets: BlendAssetDeployment[];
26
+ pools: BlendPoolDeployment[];
27
+ contracts: {
28
+ backstop?: string;
29
+ backstopV2?: string;
30
+ poolFactory?: string;
31
+ poolFactoryV2?: string;
32
+ emitter?: string;
33
+ };
34
+ blockedPools: string[];
35
+ }
36
+ export interface BlendAction {
37
+ type: BlendActionType;
38
+ asset: string;
39
+ amount: string;
40
+ }
41
+ export interface BlendPreflightInput {
42
+ profile: NetworkProfile;
43
+ poolId: string;
44
+ userId: string;
45
+ actions: BlendAction[];
46
+ poolVersion?: BlendPoolVersion;
47
+ }
48
+ export interface SubmittedBlendTransaction {
49
+ hash: string;
50
+ ledger?: number;
51
+ successful: boolean;
52
+ feeCharged?: string;
53
+ status: string;
54
+ preflight: BlendPreflight;
55
+ simulation: {
56
+ successful: true;
57
+ minResourceFee?: string;
58
+ transactionData?: string;
59
+ events: unknown[];
60
+ };
61
+ decodedEvents: unknown[];
62
+ }
63
+ export interface BlendPreflight {
64
+ pool: {
65
+ id: string;
66
+ version: BlendPoolVersion;
67
+ };
68
+ user: string;
69
+ actions: Array<BlendAction & {
70
+ assetId: string;
71
+ amountRaw: string;
72
+ requestType: number;
73
+ expectedTokens?: {
74
+ bTokens?: string;
75
+ dTokens?: string;
76
+ };
77
+ value?: number;
78
+ }>;
79
+ before?: BlendPositionEstimate;
80
+ after?: BlendPositionEstimate;
81
+ fees: {
82
+ simulated: false;
83
+ transactionFee: null;
84
+ resourceFee: null;
85
+ };
86
+ decodedEvents: [];
87
+ }
88
+ export interface BlendPositionEstimate {
89
+ totalBorrowed: number;
90
+ totalSupplied: number;
91
+ totalEffectiveLiabilities: number;
92
+ totalEffectiveCollateral: number;
93
+ borrowCap: number;
94
+ borrowLimit: number;
95
+ healthFactor: number | null;
96
+ netApy: number;
97
+ supplyApy: number;
98
+ borrowApy: number;
99
+ }
100
+ export declare function blendDeployment(network: BlendNetworkName): BlendDeployment;
101
+ export declare function fetchBlendDeployment(network: BlendNetworkName, fetchImpl?: typeof fetch): Promise<BlendDeployment>;
102
+ export declare function resolveBlendPool(deployment: BlendDeployment, pool: string): BlendPoolDeployment;
103
+ export declare function resolveBlendAsset(deployment: BlendDeployment, asset: string): BlendAssetDeployment;
104
+ export declare function inspectBlendPool(args: {
105
+ profile: NetworkProfile;
106
+ poolId: string;
107
+ poolVersion?: BlendPoolVersion;
108
+ }): Promise<unknown>;
109
+ export declare function inspectBlendPosition(args: {
110
+ profile: NetworkProfile;
111
+ poolId: string;
112
+ userId: string;
113
+ poolVersion?: BlendPoolVersion;
114
+ }): Promise<unknown>;
115
+ export declare function preflightBlendActions(args: BlendPreflightInput): Promise<BlendPreflight>;
116
+ export declare function submitBlendActions(args: BlendPreflightInput & {
117
+ sourceSecretKey: string;
118
+ }): Promise<SubmittedBlendTransaction>;
119
+ export declare function parseBlendRequest(input: string): BlendAction;
120
+ export declare function normalizeBlendActionType(input: string): BlendActionType;
121
+ export declare function blendHealthFactor(estimate: Pick<BlendPositionEstimate, "totalEffectiveCollateral" | "totalEffectiveLiabilities">): number | null;
122
+ export declare function blendNetworkForProfile(profile: NetworkProfile): BlendNetworkName;
123
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js ADDED
@@ -0,0 +1,785 @@
1
+ import { StellarAgentError } from "@stellar-agent/core";
2
+ const BLEND_UTILS_BASE = "https://raw.githubusercontent.com/blend-capital/blend-utils/main";
3
+ const BLEND_UI_BASE = "https://raw.githubusercontent.com/blend-capital/blend-ui/main";
4
+ const STATIC_DEPLOYMENTS = {
5
+ testnet: {
6
+ network: "testnet",
7
+ source: {
8
+ contractsUrl: `${BLEND_UTILS_BASE}/testnet.contracts.json`,
9
+ envUrl: `${BLEND_UI_BASE}/.env.testnet`
10
+ },
11
+ ids: {
12
+ XLM: "CDLZFC3SYJYDZT7K67VZ75HPJVIEUVNIXF47ZG2FB2RMQQVU2HHGCYSC",
13
+ BLND: "CB22KRA3YZVCNCQI64JQ5WE7UY2VAV7WFLK6A2JN3HEX56T2EDAFO7QF",
14
+ USDC: "CAQCFVLOBK5GIULPNZRGATJJMIZL5BSP7X5YJVMGCPTUEPFM4AVSRCJU",
15
+ wETH: "CAZAQB3D7KSLSNOSQKYD2V4JP5V2Y3B4RDJZRLBFCCIXDCTE3WHSY3UE",
16
+ wBTC: "CAP5AMC2OHNVREO66DFIN6DHJMPOBAJ2KCDDIMFBR7WWJH5RZBFM3UEI",
17
+ cometFactory: "CDX2TKELFKHP2MWISDCXWWZ73CL7F57GHYRJAWJWNOTLNJNNM7XLT4JY",
18
+ comet: "CA5UTUUPHYL5K22UBRUVC37EARZUGYOSGK3IKIXG2JLCC5ZZLI4BDWDM",
19
+ oraclemock: "CAZOKR2Y5E2OSWSIBRVZMJ47RUTQPIGVWSAQ2UISGAVC46XKPGDG5PKI",
20
+ emitter: "CC3WJVJINN4E3LPMNTWKK7LQZLYDQMZHZA7EZGXATPHHBPKNZRIO3KZ6",
21
+ poolFactoryV2: "CDV6RX4CGPCOKGTBFS52V3LMWQGZN3LCQTXF5RVPOOCG4XVMHXQ4NTF6",
22
+ backstopV2: "CBDVWXT433PRVTUNM56C3JREF3HIZHRBA64NB2C3B2UNCKIS65ZYCLZA",
23
+ TestnetV2: "CCEBVDYM32YNYCVNRXQKDFFPISJJCV557CDZEIRBEE4NCV4KHPQ44HGF"
24
+ },
25
+ hashes: {
26
+ comet: "8abc28913035c07411ed5d134e6bfeab4723d97ddd4d1a22a0605d35c94d1a36",
27
+ cometFactory: "bf7adb09076853eb3aa569278754111d86e161e35e7dc6a984ecde2b9d6700ae",
28
+ oraclemock: "66c0b87b5eb481be594175d59e66ec9a9ac8945be0fec4e09f6c28bf7a1708be",
29
+ poolFactoryV2: "31328050548831f63d2b72e37bcfd0bb7371b7907135755dbe09ed434d755ca9",
30
+ backstopV2: "c1f4502a757e25c611f5a159bc1ab0eef64085adac6c68123dca66e87faffbc2",
31
+ lendingPoolV2: "a41fc53d6753b6c04eb15b021c55052366a4c8e0e21bc72700f461264ec1350e",
32
+ emitter: "438a5528cff17ede6fe515f095c43c5f15727af17d006971485e52462e7e7b89"
33
+ },
34
+ assets: [
35
+ { symbol: "XLM", contractId: "CDLZFC3SYJYDZT7K67VZ75HPJVIEUVNIXF47ZG2FB2RMQQVU2HHGCYSC" },
36
+ {
37
+ symbol: "USDC",
38
+ contractId: "CAQCFVLOBK5GIULPNZRGATJJMIZL5BSP7X5YJVMGCPTUEPFM4AVSRCJU",
39
+ issuer: "GATALTGTWIOT6BUDBCZM3Q4OQ4BO2COLOAZ7IYSKPLC2PMSOPPGF5V56",
40
+ classicAsset: "USDC:GATALTGTWIOT6BUDBCZM3Q4OQ4BO2COLOAZ7IYSKPLC2PMSOPPGF5V56"
41
+ },
42
+ {
43
+ symbol: "BLND",
44
+ contractId: "CB22KRA3YZVCNCQI64JQ5WE7UY2VAV7WFLK6A2JN3HEX56T2EDAFO7QF",
45
+ issuer: "GATALTGTWIOT6BUDBCZM3Q4OQ4BO2COLOAZ7IYSKPLC2PMSOPPGF5V56",
46
+ classicAsset: "BLND:GATALTGTWIOT6BUDBCZM3Q4OQ4BO2COLOAZ7IYSKPLC2PMSOPPGF5V56"
47
+ }
48
+ ],
49
+ pools: [
50
+ {
51
+ name: "TestnetV2",
52
+ contractId: "CCEBVDYM32YNYCVNRXQKDFFPISJJCV557CDZEIRBEE4NCV4KHPQ44HGF",
53
+ version: "v2"
54
+ }
55
+ ],
56
+ contracts: {
57
+ backstopV2: "CBDVWXT433PRVTUNM56C3JREF3HIZHRBA64NB2C3B2UNCKIS65ZYCLZA",
58
+ poolFactoryV2: "CDV6RX4CGPCOKGTBFS52V3LMWQGZN3LCQTXF5RVPOOCG4XVMHXQ4NTF6",
59
+ emitter: "CC3WJVJINN4E3LPMNTWKK7LQZLYDQMZHZA7EZGXATPHHBPKNZRIO3KZ6"
60
+ },
61
+ blockedPools: []
62
+ },
63
+ mainnet: {
64
+ network: "mainnet",
65
+ source: {
66
+ contractsUrl: `${BLEND_UTILS_BASE}/mainnet.contracts.json`,
67
+ envUrl: `${BLEND_UI_BASE}/.env.production`
68
+ },
69
+ ids: {
70
+ bootstrapper: "CBUTN4KJSULJAUZYTYIGSMYAOO7PBJSAQ5OP6UTGYHOXA6UQYBAEOBB3",
71
+ emitter: "CCOQM6S7ICIUWA225O5PSJWUBEMXGFSSW2PQFO6FP4DQEKMS5DASRGRR",
72
+ poolFactory: "CCZD6ESMOGMPWH2KRO4O7RGTAPGTUPFWFQBELQSS7ZUK63V3TZWETGAG",
73
+ backstop: "CAO3AGAMZVRMHITL36EJ2VZQWKYRPWMQAPDQD5YEOF3GIF7T44U4JAL3",
74
+ BLND: "CD25MNVTZDL4Y3XBCPCJXGXATV5WUHHOWMYFF4YBEGU5FCPGMYTVG5JY",
75
+ USDC: "CCW67TSZV3SSS2HXMBQ5JFGCKJNXKZM7UQUWUZPUTHXSTZLEO7SJMI75",
76
+ XLM: "CAS3J7GYLGXMF6TDJBBYYSE3HQ6BBSMLNUQ34T6TZMYMW2EVH34XOWMA",
77
+ cometFactory: "CA2LVIPU6HJHHPPD6EDDYJTV2QEUBPGOAVJ4VIYNTMFUCRM4LFK3TJKF",
78
+ comet: "CAS3FL6TLZKDGGSISDBWGGPXT3NRR4DYTZD7YOD3HMYO6LTJUVGRVEAM",
79
+ Fixed: "CDVQVKOY2YSXS2IC7KN6MNASSHPAO7UN2UR2ON4OI2SKMFJNVAMDX6DP",
80
+ YieldBlox: "CBP7NO6F7FRDHSOFQBT2L2UWYIZ2PU76JKVRYAQTG3KZSQLYAOKIF2WB",
81
+ backstopV2: "CAQQR5SWBXKIGZKPBZDH3KM5GQ5GUTPKB7JAFCINLZBC5WXPJKRG3IM7",
82
+ poolFactoryV2: "CDSYOAVXFY7SM5S64IZPPPYB4GVGGLMQVFREPSQQEZVIWXX5R23G4QSU",
83
+ FixedV2: "CAJJZSGMMM3PD7N33TAPHGBUGTB43OC73HVIK2L2G6BNGGGYOSSYBXBD",
84
+ YieldBloxV2: "CCCCIQSDILITHMM7PBSLVDT5MISSY7R26MNZXCX4H7J5JQ5FPIYOGYFS"
85
+ },
86
+ hashes: {
87
+ bootstrapper: "8d954489999199e21e677281cc03bc7882764d6c208fb60cdd552e823c224018",
88
+ emitter: "438a5528cff17ede6fe515f095c43c5f15727af17d006971485e52462e7e7b89",
89
+ poolFactory: "0287f4ad7350935b83d94e046c0bcabc960b233dbce1531008c021b71d406a1d",
90
+ backstop: "62f61b32fff99f7eec052a8e573c367759f161c481a5caf0e76a10ae4617c3b4",
91
+ lendingPool: "baf978f10efdbcd85747868bef8832845ea6809f7643b67a4ac0cd669327fc2c",
92
+ comet: "8abc28913035c07411ed5d134e6bfeab4723d97ddd4d1a22a0605d35c94d1a36",
93
+ cometFactory: "bf7adb09076853eb3aa569278754111d86e161e35e7dc6a984ecde2b9d6700ae"
94
+ },
95
+ assets: [
96
+ { symbol: "XLM", contractId: "CAS3J7GYLGXMF6TDJBBYYSE3HQ6BBSMLNUQ34T6TZMYMW2EVH34XOWMA" },
97
+ {
98
+ symbol: "USDC",
99
+ contractId: "CCW67TSZV3SSS2HXMBQ5JFGCKJNXKZM7UQUWUZPUTHXSTZLEO7SJMI75",
100
+ issuer: "GA5ZSEJYB37JRC5AVCIA5MOP4RHTM335X2KGX3IHOJAPP5RE34K4KZVN",
101
+ classicAsset: "USDC:GA5ZSEJYB37JRC5AVCIA5MOP4RHTM335X2KGX3IHOJAPP5RE34K4KZVN"
102
+ },
103
+ {
104
+ symbol: "BLND",
105
+ contractId: "CD25MNVTZDL4Y3XBCPCJXGXATV5WUHHOWMYFF4YBEGU5FCPGMYTVG5JY",
106
+ issuer: "GDJEHTBE6ZHUXSWFI642DCGLUOECLHPF3KSXHPXTSTJ7E3JF6MQ5EZYY",
107
+ classicAsset: "BLND:GDJEHTBE6ZHUXSWFI642DCGLUOECLHPF3KSXHPXTSTJ7E3JF6MQ5EZYY"
108
+ }
109
+ ],
110
+ pools: [
111
+ {
112
+ name: "FixedV2",
113
+ contractId: "CAJJZSGMMM3PD7N33TAPHGBUGTB43OC73HVIK2L2G6BNGGGYOSSYBXBD",
114
+ version: "v2"
115
+ },
116
+ {
117
+ name: "YieldBloxV2",
118
+ contractId: "CCCCIQSDILITHMM7PBSLVDT5MISSY7R26MNZXCX4H7J5JQ5FPIYOGYFS",
119
+ version: "v2"
120
+ },
121
+ {
122
+ name: "Fixed",
123
+ contractId: "CDVQVKOY2YSXS2IC7KN6MNASSHPAO7UN2UR2ON4OI2SKMFJNVAMDX6DP",
124
+ version: "v1"
125
+ },
126
+ {
127
+ name: "YieldBlox",
128
+ contractId: "CBP7NO6F7FRDHSOFQBT2L2UWYIZ2PU76JKVRYAQTG3KZSQLYAOKIF2WB",
129
+ version: "v1"
130
+ }
131
+ ],
132
+ contracts: {
133
+ backstop: "CAO3AGAMZVRMHITL36EJ2VZQWKYRPWMQAPDQD5YEOF3GIF7T44U4JAL3",
134
+ backstopV2: "CAQQR5SWBXKIGZKPBZDH3KM5GQ5GUTPKB7JAFCINLZBC5WXPJKRG3IM7",
135
+ poolFactory: "CCZD6ESMOGMPWH2KRO4O7RGTAPGTUPFWFQBELQSS7ZUK63V3TZWETGAG",
136
+ poolFactoryV2: "CDSYOAVXFY7SM5S64IZPPPYB4GVGGLMQVFREPSQQEZVIWXX5R23G4QSU",
137
+ emitter: "CCOQM6S7ICIUWA225O5PSJWUBEMXGFSSW2PQFO6FP4DQEKMS5DASRGRR"
138
+ },
139
+ blockedPools: ["CBVOPI6QC6OWVCOEZDCFELAGQNAOHUS4CWOKAVADKQZXVSWR2R5IAKO7"]
140
+ }
141
+ };
142
+ const REQUEST_TYPE_BY_ACTION = {
143
+ supply: 0,
144
+ withdraw: 1,
145
+ supply_collateral: 2,
146
+ withdraw_collateral: 3,
147
+ borrow: 4,
148
+ repay: 5
149
+ };
150
+ export function blendDeployment(network) {
151
+ return structuredClone(STATIC_DEPLOYMENTS[network]);
152
+ }
153
+ export async function fetchBlendDeployment(network, fetchImpl = fetch) {
154
+ const base = blendDeployment(network);
155
+ const [contractsResponse, envResponse] = await Promise.all([
156
+ fetchImpl(base.source.contractsUrl),
157
+ fetchImpl(base.source.envUrl)
158
+ ]);
159
+ if (!contractsResponse.ok) {
160
+ throw new StellarAgentError({
161
+ code: "RPC_UNAVAILABLE",
162
+ message: "Could not fetch Blend contract deployment map.",
163
+ details: { url: base.source.contractsUrl, status: contractsResponse.status }
164
+ });
165
+ }
166
+ if (!envResponse.ok) {
167
+ throw new StellarAgentError({
168
+ code: "RPC_UNAVAILABLE",
169
+ message: "Could not fetch Blend UI environment map.",
170
+ details: { url: base.source.envUrl, status: envResponse.status }
171
+ });
172
+ }
173
+ const contracts = (await contractsResponse.json());
174
+ const env = parseEnv(await envResponse.text());
175
+ return buildDeployment(network, base.source, contracts.ids ?? {}, contracts.hashes ?? {}, env);
176
+ }
177
+ export function resolveBlendPool(deployment, pool) {
178
+ const found = deployment.pools.find((candidate) => candidate.name.toLowerCase() === pool.toLowerCase() || candidate.contractId === pool);
179
+ if (found)
180
+ return found;
181
+ if (/^C[A-Z2-7]{55}$/.test(pool))
182
+ return { name: pool, contractId: pool, version: "v2" };
183
+ throw new StellarAgentError({
184
+ code: "INVALID_INPUT",
185
+ message: `Blend pool '${pool}' was not found in the ${deployment.network} deployment map.`,
186
+ hint: "Run stellar-agent defi blend deployments --json to list known pools.",
187
+ docs: "docs/defi-blend.md"
188
+ });
189
+ }
190
+ export function resolveBlendAsset(deployment, asset) {
191
+ const found = deployment.assets.find((candidate) => candidate.symbol.toLowerCase() === asset.toLowerCase() || candidate.contractId === asset);
192
+ if (found)
193
+ return found;
194
+ if (/^C[A-Z2-7]{55}$/.test(asset))
195
+ return { symbol: asset, contractId: asset };
196
+ throw new StellarAgentError({
197
+ code: "INVALID_INPUT",
198
+ message: `Blend asset '${asset}' was not found in the ${deployment.network} deployment map.`,
199
+ hint: "Use a contract id or one of the assets listed by stellar-agent defi blend deployments --json.",
200
+ docs: "docs/defi-blend.md"
201
+ });
202
+ }
203
+ export async function inspectBlendPool(args) {
204
+ const pool = await loadPool(args.profile, args.poolId, args.poolVersion);
205
+ const oracle = await tryLoadOracle(pool);
206
+ const estimate = oracle ? await tryBuildPoolEstimate(pool, oracle) : undefined;
207
+ return toPlainJson({
208
+ pool: {
209
+ id: pool.id,
210
+ version: normalizeLoadedPoolVersion(pool.version),
211
+ metadata: pool.metadata,
212
+ timestamp: pool.timestamp
213
+ },
214
+ reserves: Array.from(pool.reserves.values()).map((reserve) => reserveSummary(reserve, oracle)),
215
+ ...(estimate === undefined ? {} : { estimate })
216
+ });
217
+ }
218
+ export async function inspectBlendPosition(args) {
219
+ const pool = await loadPool(args.profile, args.poolId, args.poolVersion);
220
+ const user = await pool.loadUser(args.userId);
221
+ const oracle = await tryLoadOracle(pool);
222
+ const estimate = oracle ? await tryBuildPositionEstimate(pool, oracle, user.positions) : undefined;
223
+ return toPlainJson({
224
+ pool: { id: pool.id, version: normalizeLoadedPoolVersion(pool.version) },
225
+ user: args.userId,
226
+ reserves: Array.from(pool.reserves.values()).map((reserve) => ({
227
+ assetId: reserve.assetId,
228
+ index: reserve.config?.index,
229
+ supply: user.getSupplyFloat(reserve),
230
+ collateral: user.getCollateralFloat(reserve),
231
+ liabilities: user.getLiabilitiesFloat(reserve),
232
+ supplyBTokens: user.getSupplyBTokens(reserve),
233
+ collateralBTokens: user.getCollateralBTokens(reserve),
234
+ liabilityDTokens: user.getLiabilityDTokens(reserve)
235
+ })),
236
+ ...(estimate === undefined ? {} : { estimate })
237
+ });
238
+ }
239
+ export async function preflightBlendActions(args) {
240
+ const pool = await loadPool(args.profile, args.poolId, args.poolVersion);
241
+ const user = await pool.loadUser(args.userId);
242
+ const oracle = await tryLoadOracle(pool);
243
+ const before = oracle ? await tryBuildPositionEstimate(pool, oracle, user.positions) : undefined;
244
+ const actions = args.actions.map((action) => preflightAction(pool, oracle, action));
245
+ const after = before ? projectPositionEstimate(before, actions) : undefined;
246
+ return {
247
+ pool: {
248
+ id: pool.id,
249
+ version: normalizeLoadedPoolVersion(pool.version)
250
+ },
251
+ user: args.userId,
252
+ actions,
253
+ ...(before === undefined ? {} : { before }),
254
+ ...(after === undefined ? {} : { after }),
255
+ fees: {
256
+ simulated: false,
257
+ transactionFee: null,
258
+ resourceFee: null
259
+ },
260
+ decodedEvents: []
261
+ };
262
+ }
263
+ export async function submitBlendActions(args) {
264
+ if (args.profile.realFunds) {
265
+ throw new StellarAgentError({
266
+ code: "MAINNET_NOT_ENABLED",
267
+ message: "Mainnet Blend auto-signing is blocked.",
268
+ hint: "Use an external signer or browser-wallet flow for Mainnet DeFi.",
269
+ docs: "docs/mainnet-safety.md#mainnet-defi"
270
+ });
271
+ }
272
+ if (!args.profile.rpcUrl) {
273
+ throw new StellarAgentError({
274
+ code: "RPC_UNAVAILABLE",
275
+ message: "Soroban RPC is not configured for the selected profile.",
276
+ docs: "docs/defi-blend.md"
277
+ });
278
+ }
279
+ const stellar = await import("@stellar/stellar-sdk");
280
+ const blend = await import("@blend-capital/blend-sdk");
281
+ const preflight = await preflightBlendActions(args);
282
+ const keypair = stellar.Keypair.fromSecret(args.sourceSecretKey);
283
+ const sourcePublicKey = keypair.publicKey();
284
+ if (sourcePublicKey !== args.userId) {
285
+ throw new StellarAgentError({
286
+ code: "INVALID_INPUT",
287
+ message: "Blend source secret key does not match the requested user account.",
288
+ docs: "docs/defi-blend.md"
289
+ });
290
+ }
291
+ const contract = preflight.pool.version === "v1" ? new blend.PoolContractV1(args.poolId) : new blend.PoolContractV2(args.poolId);
292
+ const operationXdr = contract.submit({
293
+ from: sourcePublicKey,
294
+ spender: sourcePublicKey,
295
+ to: sourcePublicKey,
296
+ requests: preflight.actions.map((action) => ({
297
+ request_type: action.requestType,
298
+ address: action.assetId,
299
+ amount: BigInt(action.amountRaw)
300
+ }))
301
+ });
302
+ const server = new stellar.rpc.Server(args.profile.rpcUrl, { allowHttp: args.profile.name === "local" });
303
+ const account = await server.getAccount(sourcePublicKey);
304
+ const operation = stellar.xdr.Operation.fromXDR(operationXdr, "base64");
305
+ const rawTransaction = new stellar.TransactionBuilder(account, {
306
+ fee: stellar.BASE_FEE,
307
+ networkPassphrase: args.profile.networkPassphrase
308
+ })
309
+ .addOperation(operation)
310
+ .setTimeout(60)
311
+ .build();
312
+ const simulation = await server.simulateTransaction(rawTransaction);
313
+ if (!stellar.rpc.Api.isSimulationSuccess(simulation)) {
314
+ throw new StellarAgentError({
315
+ code: "TRANSACTION_BUILD_FAILED",
316
+ message: "Blend transaction simulation failed.",
317
+ hint: "Check balances, trustlines, Blend pool status, and policy preflight output.",
318
+ docs: "docs/defi-blend.md",
319
+ details: toPlainJson(simulation)
320
+ });
321
+ }
322
+ const assembled = stellar.rpc.assembleTransaction(rawTransaction, simulation).build();
323
+ assembled.sign(keypair);
324
+ const sent = await server.sendTransaction(assembled);
325
+ if (sent.status === "ERROR") {
326
+ throw new StellarAgentError({
327
+ code: "TRANSACTION_SUBMIT_FAILED",
328
+ message: "Blend transaction submission failed.",
329
+ docs: "docs/defi-blend.md",
330
+ details: toPlainJson(sent)
331
+ });
332
+ }
333
+ const result = await pollRpcTransaction(server, sent.hash);
334
+ const successful = result.status === "SUCCESS";
335
+ if (!successful) {
336
+ throw new StellarAgentError({
337
+ code: "TRANSACTION_SUBMIT_FAILED",
338
+ message: "Blend transaction did not complete successfully.",
339
+ docs: "docs/defi-blend.md",
340
+ details: toPlainJson(result)
341
+ });
342
+ }
343
+ const decodedEvents = decodeRpcEvents(result);
344
+ const transactionData = xdrLikeToString(simulation.transactionData);
345
+ return {
346
+ hash: sent.hash,
347
+ ...(result.ledger === undefined ? {} : { ledger: Number(result.ledger) }),
348
+ successful: true,
349
+ ...(result.resultMeta?.feeCharged === undefined ? {} : { feeCharged: String(result.resultMeta.feeCharged) }),
350
+ status: result.status,
351
+ preflight,
352
+ simulation: {
353
+ successful: true,
354
+ ...(simulation.minResourceFee === undefined ? {} : { minResourceFee: String(simulation.minResourceFee) }),
355
+ ...(transactionData === undefined ? {} : { transactionData }),
356
+ events: summarizeEvents(simulation.events ?? [])
357
+ },
358
+ decodedEvents
359
+ };
360
+ }
361
+ export function parseBlendRequest(input) {
362
+ const [rawType, asset, amount, extra] = input.split(":");
363
+ if (!rawType || !asset || !amount || extra !== undefined) {
364
+ throw new StellarAgentError({
365
+ code: "INVALID_INPUT",
366
+ message: "Blend requests must use type:asset:amount format.",
367
+ hint: "Example: --request supply_collateral:USDC:1",
368
+ docs: "docs/defi-blend.md"
369
+ });
370
+ }
371
+ const type = normalizeBlendActionType(rawType);
372
+ return { type, asset, amount };
373
+ }
374
+ export function normalizeBlendActionType(input) {
375
+ const normalized = input.trim().toLowerCase().replaceAll("-", "_");
376
+ if (isBlendActionType(normalized))
377
+ return normalized;
378
+ throw new StellarAgentError({
379
+ code: "INVALID_INPUT",
380
+ message: `Unsupported Blend request type '${input}'.`,
381
+ hint: "Use supply, withdraw, supply_collateral, withdraw_collateral, borrow, or repay.",
382
+ docs: "docs/defi-blend.md"
383
+ });
384
+ }
385
+ export function blendHealthFactor(estimate) {
386
+ if (estimate.totalEffectiveLiabilities <= 0)
387
+ return null;
388
+ return estimate.totalEffectiveCollateral / estimate.totalEffectiveLiabilities;
389
+ }
390
+ function isBlendActionType(input) {
391
+ return Object.hasOwn(REQUEST_TYPE_BY_ACTION, input);
392
+ }
393
+ function networkForProfile(profile) {
394
+ if (profile.realFunds || profile.name === "mainnet")
395
+ return "mainnet";
396
+ return "testnet";
397
+ }
398
+ function buildDeployment(network, source, ids, hashes, env) {
399
+ const usdcIssuer = env.NEXT_PUBLIC_USDC_ISSUER;
400
+ const blndIssuer = env.NEXT_PUBLIC_BLND_ISSUER;
401
+ const blockedPools = parseBlockedPools(env.NEXT_PUBLIC_BLOCKED_POOLS);
402
+ const assets = ["XLM", "USDC", "BLND"]
403
+ .filter((symbol) => ids[symbol])
404
+ .map((symbol) => {
405
+ const issuer = symbol === "USDC" ? usdcIssuer : symbol === "BLND" ? blndIssuer : undefined;
406
+ return {
407
+ symbol,
408
+ contractId: ids[symbol],
409
+ ...(issuer === undefined ? {} : { issuer, classicAsset: `${symbol}:${issuer}` })
410
+ };
411
+ });
412
+ const pools = Object.entries(ids)
413
+ .filter(([name]) => isDeploymentPoolName(name))
414
+ .map(([name, contractId]) => ({
415
+ name,
416
+ contractId,
417
+ version: name.endsWith("V2") ? "v2" : "v1",
418
+ ...(blockedPools.includes(contractId) ? { blocked: true } : {})
419
+ }));
420
+ return {
421
+ network,
422
+ source,
423
+ ids,
424
+ hashes,
425
+ assets,
426
+ pools,
427
+ contracts: {
428
+ ...(ids.backstop === undefined ? {} : { backstop: ids.backstop }),
429
+ ...(ids.backstopV2 === undefined ? {} : { backstopV2: ids.backstopV2 }),
430
+ ...(ids.poolFactory === undefined ? {} : { poolFactory: ids.poolFactory }),
431
+ ...(ids.poolFactoryV2 === undefined ? {} : { poolFactoryV2: ids.poolFactoryV2 }),
432
+ ...(ids.emitter === undefined ? {} : { emitter: ids.emitter })
433
+ },
434
+ blockedPools
435
+ };
436
+ }
437
+ function isDeploymentPoolName(name) {
438
+ const reserved = new Set([
439
+ "XLM",
440
+ "BLND",
441
+ "USDC",
442
+ "wETH",
443
+ "wBTC",
444
+ "bootstrapper",
445
+ "emitter",
446
+ "poolFactory",
447
+ "poolFactoryV2",
448
+ "backstop",
449
+ "backstopV2",
450
+ "comet",
451
+ "cometFactory",
452
+ "oraclemock"
453
+ ]);
454
+ return !reserved.has(name) && /^[A-Z][A-Za-z0-9]+(V2)?$/.test(name);
455
+ }
456
+ function parseEnv(raw) {
457
+ const values = {};
458
+ for (const line of raw.split(/\r?\n/)) {
459
+ const trimmed = line.trim();
460
+ if (!trimmed || trimmed.startsWith("#"))
461
+ continue;
462
+ const match = /^([A-Z0-9_]+)=(.*)$/.exec(trimmed);
463
+ if (!match)
464
+ continue;
465
+ values[match[1]] = match[2].replace(/^['"]|['"]$/g, "");
466
+ }
467
+ return values;
468
+ }
469
+ function parseBlockedPools(value) {
470
+ if (!value)
471
+ return [];
472
+ return value
473
+ .replace(/^['"]|['"]$/g, "")
474
+ .split(",")
475
+ .map((entry) => entry.trim())
476
+ .filter(Boolean);
477
+ }
478
+ async function loadPool(profile, poolId, version) {
479
+ const blend = await import("@blend-capital/blend-sdk");
480
+ const network = {
481
+ rpc: profile.rpcUrl,
482
+ passphrase: profile.networkPassphrase,
483
+ opts: { allowHttp: profile.name === "local" }
484
+ };
485
+ if (!profile.rpcUrl) {
486
+ throw new StellarAgentError({
487
+ code: "RPC_UNAVAILABLE",
488
+ message: "Soroban RPC is not configured for the selected profile.",
489
+ docs: "docs/defi-blend.md"
490
+ });
491
+ }
492
+ if (version === "v1")
493
+ return blend.PoolV1.load(network, poolId);
494
+ if (version === "v2")
495
+ return blend.PoolV2.load(network, poolId);
496
+ try {
497
+ return await blend.PoolV2.load(network, poolId);
498
+ }
499
+ catch {
500
+ return blend.PoolV1.load(network, poolId);
501
+ }
502
+ }
503
+ async function tryLoadOracle(pool) {
504
+ try {
505
+ return await pool.loadOracle();
506
+ }
507
+ catch {
508
+ return undefined;
509
+ }
510
+ }
511
+ async function tryBuildPoolEstimate(pool, oracle) {
512
+ try {
513
+ const blend = await import("@blend-capital/blend-sdk");
514
+ return toPlainJson(blend.PoolEstimate.build(pool.reserves, oracle));
515
+ }
516
+ catch {
517
+ return undefined;
518
+ }
519
+ }
520
+ async function tryBuildPositionEstimate(pool, oracle, positions) {
521
+ try {
522
+ const blend = await import("@blend-capital/blend-sdk");
523
+ const estimate = blend.PositionsEstimate.build(pool, oracle, positions);
524
+ const result = {
525
+ totalBorrowed: estimate.totalBorrowed,
526
+ totalSupplied: estimate.totalSupplied,
527
+ totalEffectiveLiabilities: estimate.totalEffectiveLiabilities,
528
+ totalEffectiveCollateral: estimate.totalEffectiveCollateral,
529
+ borrowCap: estimate.borrowCap,
530
+ borrowLimit: estimate.borrowLimit,
531
+ healthFactor: blendHealthFactor(estimate),
532
+ netApy: estimate.netApy,
533
+ supplyApy: estimate.supplyApy,
534
+ borrowApy: estimate.borrowApy
535
+ };
536
+ return result;
537
+ }
538
+ catch {
539
+ return undefined;
540
+ }
541
+ }
542
+ function reserveSummary(reserve, oracle) {
543
+ return toPlainJson({
544
+ assetId: reserve.assetId,
545
+ index: reserve.config?.index,
546
+ decimals: reserve.config?.decimals,
547
+ enabled: reserve.config?.enabled,
548
+ supplyCap: reserve.config?.supply_cap,
549
+ totalSupply: reserve.totalSupplyFloat(),
550
+ totalLiabilities: reserve.totalLiabilitiesFloat(),
551
+ utilization: reserve.getUtilizationFloat(),
552
+ collateralFactor: reserve.getCollateralFactor(),
553
+ liabilityFactor: reserve.getLiabilityFactor(),
554
+ supplyApr: reserve.supplyApr,
555
+ estSupplyApy: reserve.estSupplyApy,
556
+ borrowApr: reserve.borrowApr,
557
+ estBorrowApy: reserve.estBorrowApy,
558
+ price: oracle?.getPriceFloat(reserve.assetId),
559
+ latestLedger: reserve.latestLedger
560
+ });
561
+ }
562
+ function normalizeLoadedPoolVersion(version) {
563
+ return String(version).toLowerCase() === "v1" ? "v1" : "v2";
564
+ }
565
+ function preflightAction(pool, oracle, action) {
566
+ const reserve = reserveForAction(pool, action);
567
+ const decimals = reserve.config?.decimals ?? 7;
568
+ const amountRaw = decimalToFixed(action.amount, decimals);
569
+ const value = Number(action.amount) * (oracle?.getPriceFloat(reserve.assetId) ?? 1);
570
+ const expectedTokens = expectedTokensForAction(reserve, action.type, amountRaw);
571
+ return {
572
+ ...action,
573
+ assetId: reserve.assetId,
574
+ amountRaw: amountRaw.toString(),
575
+ requestType: REQUEST_TYPE_BY_ACTION[action.type],
576
+ ...(expectedTokens === undefined ? {} : { expectedTokens }),
577
+ value
578
+ };
579
+ }
580
+ function reserveForAction(pool, action) {
581
+ const reserve = Array.from(pool.reserves.values()).find((candidate) => {
582
+ return candidate.assetId === action.asset || String(candidate.assetId).toLowerCase() === action.asset.toLowerCase();
583
+ });
584
+ if (!reserve) {
585
+ throw new StellarAgentError({
586
+ code: "INVALID_INPUT",
587
+ message: `Pool ${pool.id} does not include reserve ${action.asset}.`,
588
+ docs: "docs/defi-blend.md"
589
+ });
590
+ }
591
+ return reserve;
592
+ }
593
+ function expectedTokensForAction(reserve, type, amountRaw) {
594
+ if (type === "supply" || type === "supply_collateral" || type === "withdraw" || type === "withdraw_collateral") {
595
+ return { bTokens: reserve.toBTokensFromAssetCeil(amountRaw).toString() };
596
+ }
597
+ if (type === "borrow" || type === "repay") {
598
+ return { dTokens: reserve.toDTokensFromAssetCeil(amountRaw).toString() };
599
+ }
600
+ return undefined;
601
+ }
602
+ function projectPositionEstimate(before, actions) {
603
+ let totalSupplied = before.totalSupplied;
604
+ let totalBorrowed = before.totalBorrowed;
605
+ let totalEffectiveCollateral = before.totalEffectiveCollateral;
606
+ let totalEffectiveLiabilities = before.totalEffectiveLiabilities;
607
+ for (const action of actions) {
608
+ const value = action.value ?? 0;
609
+ if (action.type === "supply")
610
+ totalSupplied += value;
611
+ if (action.type === "withdraw")
612
+ totalSupplied = Math.max(0, totalSupplied - value);
613
+ if (action.type === "supply_collateral") {
614
+ totalSupplied += value;
615
+ totalEffectiveCollateral += value;
616
+ }
617
+ if (action.type === "withdraw_collateral") {
618
+ totalSupplied = Math.max(0, totalSupplied - value);
619
+ totalEffectiveCollateral = Math.max(0, totalEffectiveCollateral - value);
620
+ }
621
+ if (action.type === "borrow") {
622
+ totalBorrowed += value;
623
+ totalEffectiveLiabilities += value;
624
+ }
625
+ if (action.type === "repay") {
626
+ totalBorrowed = Math.max(0, totalBorrowed - value);
627
+ totalEffectiveLiabilities = Math.max(0, totalEffectiveLiabilities - value);
628
+ }
629
+ }
630
+ return {
631
+ ...before,
632
+ totalSupplied,
633
+ totalBorrowed,
634
+ totalEffectiveCollateral,
635
+ totalEffectiveLiabilities,
636
+ healthFactor: blendHealthFactor({ totalEffectiveCollateral, totalEffectiveLiabilities })
637
+ };
638
+ }
639
+ function decimalToFixed(input, decimals) {
640
+ if (!/^\d+(\.\d+)?$/.test(input)) {
641
+ throw new StellarAgentError({
642
+ code: "INVALID_AMOUNT",
643
+ message: "Blend amount must be a positive decimal number.",
644
+ docs: "docs/defi-blend.md"
645
+ });
646
+ }
647
+ const [whole = "0", fraction = ""] = input.split(".");
648
+ if (fraction.length > decimals) {
649
+ throw new StellarAgentError({
650
+ code: "INVALID_AMOUNT",
651
+ message: `Blend amount exceeds reserve precision of ${decimals} decimals.`,
652
+ docs: "docs/defi-blend.md"
653
+ });
654
+ }
655
+ const raw = BigInt(whole) * 10n ** BigInt(decimals) + BigInt((fraction + "0".repeat(decimals)).slice(0, decimals) || "0");
656
+ if (raw <= 0n) {
657
+ throw new StellarAgentError({
658
+ code: "INVALID_AMOUNT",
659
+ message: "Blend amount must be greater than zero.",
660
+ docs: "docs/defi-blend.md"
661
+ });
662
+ }
663
+ return raw;
664
+ }
665
+ function toPlainJson(value) {
666
+ if (typeof value === "bigint")
667
+ return value.toString();
668
+ if (value instanceof Map) {
669
+ return Array.from(value.entries()).map(([key, entry]) => ({ key: toPlainJson(key), value: toPlainJson(entry) }));
670
+ }
671
+ if (Array.isArray(value))
672
+ return value.map((entry) => toPlainJson(entry));
673
+ if (value && typeof value === "object") {
674
+ const output = {};
675
+ for (const [key, entry] of Object.entries(value)) {
676
+ if (typeof entry === "function" || entry === undefined)
677
+ continue;
678
+ output[key] = toPlainJson(entry);
679
+ }
680
+ return output;
681
+ }
682
+ if (typeof value === "number" && !Number.isFinite(value))
683
+ return null;
684
+ return value;
685
+ }
686
+ async function pollRpcTransaction(server, hash) {
687
+ let last;
688
+ for (let attempt = 0; attempt < 12; attempt += 1) {
689
+ last = await server.getTransaction(hash);
690
+ if (last.status === "SUCCESS" || last.status === "FAILED")
691
+ return last;
692
+ await new Promise((resolve) => setTimeout(resolve, 1000));
693
+ }
694
+ throw new StellarAgentError({
695
+ code: "TRANSACTION_TIMEOUT",
696
+ message: "Timed out waiting for Blend transaction confirmation.",
697
+ docs: "docs/defi-blend.md",
698
+ details: toPlainJson(last)
699
+ });
700
+ }
701
+ function decodeRpcEvents(transaction) {
702
+ const events = transaction.events ?? transaction.resultMeta?.events ?? [];
703
+ return summarizeEvents(events);
704
+ }
705
+ function xdrLikeToString(value) {
706
+ if (value === undefined || value === null)
707
+ return undefined;
708
+ if (typeof value === "string")
709
+ return value;
710
+ if (value && typeof value.toXDR === "function")
711
+ return value.toXDR("base64");
712
+ return undefined;
713
+ }
714
+ function summarizeEvents(events) {
715
+ if (!Array.isArray(events))
716
+ return [];
717
+ return events.slice(0, 25).map((event) => summarizeEvent(event));
718
+ }
719
+ function summarizeEvent(input) {
720
+ const event = input?._attributes?.event ?? input?.event ?? input;
721
+ const eventAttributes = event?._attributes ?? event;
722
+ const body = eventAttributes?.body?._value?._attributes ?? eventAttributes?.body?.v0?._attributes;
723
+ const topics = body?.topics ?? [];
724
+ return {
725
+ ...(input?._attributes?.inSuccessfulContractCall === undefined
726
+ ? {}
727
+ : { inSuccessfulContractCall: Boolean(input._attributes.inSuccessfulContractCall) }),
728
+ ...(eventAttributes?.type === undefined ? {} : { type: eventAttributes.type.name ?? eventAttributes.type.value ?? eventAttributes.type }),
729
+ topics: Array.isArray(topics) ? topics.map((topic) => summarizeScVal(topic)) : [],
730
+ data: summarizeScVal(body?.data)
731
+ };
732
+ }
733
+ function summarizeScVal(value) {
734
+ if (value === undefined || value === null)
735
+ return undefined;
736
+ const arm = value._arm ?? value.arm;
737
+ const raw = value._value ?? value.value;
738
+ if (arm === "sym" || arm === "str" || value._switch?.name === "scvSymbol" || value._switch?.name === "scvString") {
739
+ return bytesToAscii(raw);
740
+ }
741
+ if (arm === "i128" || value._switch?.name === "scvI128") {
742
+ return {
743
+ i128: {
744
+ hi: String(raw?._attributes?.hi?._value ?? raw?.hi ?? "0"),
745
+ lo: String(raw?._attributes?.lo?._value ?? raw?.lo ?? "0")
746
+ }
747
+ };
748
+ }
749
+ if (arm === "u32" || value._switch?.name === "scvU32")
750
+ return raw;
751
+ if (arm === "vec" && Array.isArray(raw))
752
+ return raw.map((entry) => summarizeScVal(entry));
753
+ if (arm === "map" && Array.isArray(raw)) {
754
+ return raw.map((entry) => ({
755
+ key: summarizeScVal(entry?._attributes?.key),
756
+ value: summarizeScVal(entry?._attributes?.val)
757
+ }));
758
+ }
759
+ if (arm === "address" || value._switch?.name === "scvAddress")
760
+ return "address";
761
+ if (arm === "bytes" || value._switch?.name === "scvBytes")
762
+ return "bytes";
763
+ if (value._switch?.name)
764
+ return value._switch.name;
765
+ return undefined;
766
+ }
767
+ function bytesToAscii(value) {
768
+ if (typeof value === "string")
769
+ return value;
770
+ if (value instanceof Uint8Array || Buffer.isBuffer(value))
771
+ return Buffer.from(value).toString("utf8");
772
+ if (value && typeof value === "object") {
773
+ const bytes = Object.keys(value)
774
+ .filter((key) => /^\d+$/.test(key))
775
+ .sort((a, b) => Number(a) - Number(b))
776
+ .map((key) => Number(value[key]));
777
+ if (bytes.length > 0)
778
+ return Buffer.from(bytes).toString("utf8");
779
+ }
780
+ return undefined;
781
+ }
782
+ export function blendNetworkForProfile(profile) {
783
+ return networkForProfile(profile);
784
+ }
785
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,39 @@
1
+ {
2
+ "name": "@stellar-agent/defi",
3
+ "version": "0.4.0",
4
+ "description": "Blend DeFi adapters for safe Stellar Agent inspection, preflight, and guarded request construction.",
5
+ "type": "module",
6
+ "license": "MIT",
7
+ "repository": {
8
+ "type": "git",
9
+ "url": "git+ssh://git@github.com/someone-in-texas/Stellar-Agent.git",
10
+ "directory": "packages/defi"
11
+ },
12
+ "bugs": {
13
+ "url": "https://github.com/someone-in-texas/Stellar-Agent/issues"
14
+ },
15
+ "homepage": "https://github.com/someone-in-texas/Stellar-Agent#readme",
16
+ "engines": {
17
+ "node": ">=22"
18
+ },
19
+ "main": "./dist/index.js",
20
+ "types": "./dist/index.d.ts",
21
+ "exports": {
22
+ ".": {
23
+ "types": "./dist/index.d.ts",
24
+ "import": "./dist/index.js"
25
+ }
26
+ },
27
+ "files": [
28
+ "dist"
29
+ ],
30
+ "scripts": {
31
+ "build": "tsc -b",
32
+ "test": "vitest run"
33
+ },
34
+ "dependencies": {
35
+ "@blend-capital/blend-sdk": "3.2.2",
36
+ "@stellar-agent/core": "0.4.0",
37
+ "@stellar/stellar-sdk": "14.4.3"
38
+ }
39
+ }