@waiaas/actions 2.6.0-rc.10
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 +21 -0
- package/README.md +158 -0
- package/dist/common/action-api-client.d.ts +14 -0
- package/dist/common/action-api-client.d.ts.map +1 -0
- package/dist/common/action-api-client.js +78 -0
- package/dist/common/action-api-client.js.map +1 -0
- package/dist/common/async-status-tracker.d.ts +62 -0
- package/dist/common/async-status-tracker.d.ts.map +1 -0
- package/dist/common/async-status-tracker.js +30 -0
- package/dist/common/async-status-tracker.js.map +1 -0
- package/dist/common/slippage.d.ts +15 -0
- package/dist/common/slippage.d.ts.map +1 -0
- package/dist/common/slippage.js +26 -0
- package/dist/common/slippage.js.map +1 -0
- package/dist/index.d.ts +41 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +98 -0
- package/dist/index.js.map +1 -0
- package/dist/providers/jupiter-swap/config.d.ts +16 -0
- package/dist/providers/jupiter-swap/config.d.ts.map +1 -0
- package/dist/providers/jupiter-swap/config.js +15 -0
- package/dist/providers/jupiter-swap/config.js.map +1 -0
- package/dist/providers/jupiter-swap/index.d.ts +11 -0
- package/dist/providers/jupiter-swap/index.d.ts.map +1 -0
- package/dist/providers/jupiter-swap/index.js +102 -0
- package/dist/providers/jupiter-swap/index.js.map +1 -0
- package/dist/providers/jupiter-swap/jupiter-api-client.d.ts +23 -0
- package/dist/providers/jupiter-swap/jupiter-api-client.d.ts.map +1 -0
- package/dist/providers/jupiter-swap/jupiter-api-client.js +37 -0
- package/dist/providers/jupiter-swap/jupiter-api-client.js.map +1 -0
- package/dist/providers/jupiter-swap/schemas.d.ts +743 -0
- package/dist/providers/jupiter-swap/schemas.d.ts.map +1 -0
- package/dist/providers/jupiter-swap/schemas.js +57 -0
- package/dist/providers/jupiter-swap/schemas.js.map +1 -0
- package/dist/providers/lifi/bridge-status-tracker.d.ts +37 -0
- package/dist/providers/lifi/bridge-status-tracker.d.ts.map +1 -0
- package/dist/providers/lifi/bridge-status-tracker.js +111 -0
- package/dist/providers/lifi/bridge-status-tracker.js.map +1 -0
- package/dist/providers/lifi/config.d.ts +27 -0
- package/dist/providers/lifi/config.d.ts.map +1 -0
- package/dist/providers/lifi/config.js +50 -0
- package/dist/providers/lifi/config.js.map +1 -0
- package/dist/providers/lifi/index.d.ts +16 -0
- package/dist/providers/lifi/index.d.ts.map +1 -0
- package/dist/providers/lifi/index.js +121 -0
- package/dist/providers/lifi/index.js.map +1 -0
- package/dist/providers/lifi/lifi-api-client.d.ts +29 -0
- package/dist/providers/lifi/lifi-api-client.d.ts.map +1 -0
- package/dist/providers/lifi/lifi-api-client.js +42 -0
- package/dist/providers/lifi/lifi-api-client.js.map +1 -0
- package/dist/providers/lifi/schemas.d.ts +713 -0
- package/dist/providers/lifi/schemas.d.ts.map +1 -0
- package/dist/providers/lifi/schemas.js +91 -0
- package/dist/providers/lifi/schemas.js.map +1 -0
- package/dist/providers/zerox-swap/config.d.ts +31 -0
- package/dist/providers/zerox-swap/config.d.ts.map +1 -0
- package/dist/providers/zerox-swap/config.js +70 -0
- package/dist/providers/zerox-swap/config.js.map +1 -0
- package/dist/providers/zerox-swap/index.d.ts +10 -0
- package/dist/providers/zerox-swap/index.d.ts.map +1 -0
- package/dist/providers/zerox-swap/index.js +131 -0
- package/dist/providers/zerox-swap/index.js.map +1 -0
- package/dist/providers/zerox-swap/schemas.d.ts +641 -0
- package/dist/providers/zerox-swap/schemas.d.ts.map +1 -0
- package/dist/providers/zerox-swap/schemas.js +59 -0
- package/dist/providers/zerox-swap/schemas.js.map +1 -0
- package/dist/providers/zerox-swap/zerox-api-client.d.ts +29 -0
- package/dist/providers/zerox-swap/zerox-api-client.d.ts.map +1 -0
- package/dist/providers/zerox-swap/zerox-api-client.js +43 -0
- package/dist/providers/zerox-swap/zerox-api-client.js.map +1 -0
- package/package.json +46 -0
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { IActionProvider, ActionProviderMetadata, ActionDefinition, ActionContext, ContractCallRequest } from '@waiaas/core';
|
|
2
|
+
import { type JupiterSwapConfig } from './config.js';
|
|
3
|
+
export declare class JupiterSwapActionProvider implements IActionProvider {
|
|
4
|
+
readonly metadata: ActionProviderMetadata;
|
|
5
|
+
readonly actions: readonly ActionDefinition[];
|
|
6
|
+
private readonly config;
|
|
7
|
+
private readonly apiClient;
|
|
8
|
+
constructor(config?: Partial<JupiterSwapConfig>);
|
|
9
|
+
resolve(actionName: string, params: Record<string, unknown>, context: ActionContext): Promise<ContractCallRequest>;
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/providers/jupiter-swap/index.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EACV,eAAe,EACf,sBAAsB,EACtB,gBAAgB,EAChB,aAAa,EACb,mBAAmB,EACpB,MAAM,cAAc,CAAC;AAEtB,OAAO,EAAE,KAAK,iBAAiB,EAA6C,MAAM,aAAa,CAAC;AAkBhG,qBAAa,yBAA0B,YAAW,eAAe;IAC/D,QAAQ,CAAC,QAAQ,EAAE,sBAAsB,CAAC;IAC1C,QAAQ,CAAC,OAAO,EAAE,SAAS,gBAAgB,EAAE,CAAC;IAE9C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAoB;IAC3C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAmB;gBAEjC,MAAM,CAAC,EAAE,OAAO,CAAC,iBAAiB,CAAC;IA0BzC,OAAO,CACX,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,OAAO,EAAE,aAAa,GACrB,OAAO,CAAC,mBAAmB,CAAC;CAsEhC"}
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Jupiter Swap Action Provider.
|
|
3
|
+
*
|
|
4
|
+
* Implements IActionProvider to resolve Jupiter DEX swap requests
|
|
5
|
+
* into ContractCallRequest objects for the 6-stage pipeline.
|
|
6
|
+
*/
|
|
7
|
+
import { z } from 'zod';
|
|
8
|
+
import { ChainError } from '@waiaas/core';
|
|
9
|
+
import { JupiterApiClient } from './jupiter-api-client.js';
|
|
10
|
+
import { JUPITER_SWAP_DEFAULTS, JUPITER_PROGRAM_ID } from './config.js';
|
|
11
|
+
import { clampSlippageBps, asBps } from '../../common/slippage.js';
|
|
12
|
+
// ---------------------------------------------------------------------------
|
|
13
|
+
// Input schema for the swap action
|
|
14
|
+
// ---------------------------------------------------------------------------
|
|
15
|
+
const SwapInputSchema = z.object({
|
|
16
|
+
inputMint: z.string().min(1, 'inputMint is required'),
|
|
17
|
+
outputMint: z.string().min(1, 'outputMint is required'),
|
|
18
|
+
amount: z.string().min(1, 'amount is required (in smallest units)'),
|
|
19
|
+
slippageBps: z.number().int().optional(),
|
|
20
|
+
});
|
|
21
|
+
// ---------------------------------------------------------------------------
|
|
22
|
+
// Provider implementation
|
|
23
|
+
// ---------------------------------------------------------------------------
|
|
24
|
+
export class JupiterSwapActionProvider {
|
|
25
|
+
metadata;
|
|
26
|
+
actions;
|
|
27
|
+
config;
|
|
28
|
+
apiClient;
|
|
29
|
+
constructor(config) {
|
|
30
|
+
this.config = { ...JUPITER_SWAP_DEFAULTS, ...config };
|
|
31
|
+
this.apiClient = new JupiterApiClient(this.config);
|
|
32
|
+
this.metadata = {
|
|
33
|
+
name: 'jupiter_swap',
|
|
34
|
+
description: 'Jupiter DEX aggregator for Solana token swaps with MEV protection',
|
|
35
|
+
version: '1.0.0',
|
|
36
|
+
chains: ['solana'],
|
|
37
|
+
mcpExpose: true,
|
|
38
|
+
requiresApiKey: false,
|
|
39
|
+
requiredApis: ['jupiter'],
|
|
40
|
+
};
|
|
41
|
+
this.actions = [
|
|
42
|
+
{
|
|
43
|
+
name: 'swap',
|
|
44
|
+
description: 'Swap tokens on Solana via Jupiter aggregator with slippage protection and Jito MEV tips',
|
|
45
|
+
chain: 'solana',
|
|
46
|
+
inputSchema: SwapInputSchema,
|
|
47
|
+
riskLevel: 'medium',
|
|
48
|
+
defaultTier: 'DELAY',
|
|
49
|
+
},
|
|
50
|
+
];
|
|
51
|
+
}
|
|
52
|
+
async resolve(actionName, params, context) {
|
|
53
|
+
if (actionName !== 'swap') {
|
|
54
|
+
throw new ChainError('INVALID_INSTRUCTION', 'solana', { message: `Unknown action: ${actionName}` });
|
|
55
|
+
}
|
|
56
|
+
const input = SwapInputSchema.parse(params);
|
|
57
|
+
// SAFE-05: Block same-token swap
|
|
58
|
+
if (input.inputMint === input.outputMint) {
|
|
59
|
+
throw new ChainError('INVALID_INSTRUCTION', 'solana', { message: 'Cannot swap a token for itself' });
|
|
60
|
+
}
|
|
61
|
+
// SAFE-01/02: Clamp slippage
|
|
62
|
+
const slippageBps = clampSlippageBps(input.slippageBps ?? 0, asBps(this.config.defaultSlippageBps), asBps(this.config.maxSlippageBps));
|
|
63
|
+
// SWAP-01/06: Get quote with restrictIntermediateTokens=true
|
|
64
|
+
const quote = await this.apiClient.getQuote({
|
|
65
|
+
inputMint: input.inputMint,
|
|
66
|
+
outputMint: input.outputMint,
|
|
67
|
+
amount: input.amount,
|
|
68
|
+
slippageBps,
|
|
69
|
+
restrictIntermediateTokens: true,
|
|
70
|
+
});
|
|
71
|
+
// SAFE-03: Price impact check
|
|
72
|
+
const priceImpact = parseFloat(quote.priceImpactPct);
|
|
73
|
+
if (priceImpact > this.config.maxPriceImpactPct) {
|
|
74
|
+
throw new ChainError('PRICE_IMPACT_TOO_HIGH', 'solana', { message: `Price impact ${priceImpact}% exceeds max ${this.config.maxPriceImpactPct}%` });
|
|
75
|
+
}
|
|
76
|
+
// SWAP-02/SAFE-04: Get swap instructions with Jito MEV tip
|
|
77
|
+
const instructions = await this.apiClient.getSwapInstructions({
|
|
78
|
+
quoteResponse: quote,
|
|
79
|
+
userPublicKey: context.walletAddress,
|
|
80
|
+
jitoTipLamports: this.config.jitoTipLamports,
|
|
81
|
+
});
|
|
82
|
+
// SWAP-05: Verify program ID
|
|
83
|
+
if (instructions.swapInstruction.programId !== JUPITER_PROGRAM_ID) {
|
|
84
|
+
throw new ChainError('INVALID_INSTRUCTION', 'solana', { message: `Unexpected program ID: ${instructions.swapInstruction.programId} (expected ${JUPITER_PROGRAM_ID})` });
|
|
85
|
+
}
|
|
86
|
+
// SWAP-03: Convert to ContractCallRequest
|
|
87
|
+
const request = {
|
|
88
|
+
type: 'CONTRACT_CALL',
|
|
89
|
+
to: JUPITER_PROGRAM_ID,
|
|
90
|
+
programId: instructions.swapInstruction.programId,
|
|
91
|
+
instructionData: instructions.swapInstruction.data,
|
|
92
|
+
accounts: instructions.swapInstruction.accounts.map((a) => ({
|
|
93
|
+
pubkey: a.pubkey,
|
|
94
|
+
isSigner: a.isSigner,
|
|
95
|
+
isWritable: a.isWritable,
|
|
96
|
+
})),
|
|
97
|
+
network: context.chain === 'solana' ? undefined : undefined,
|
|
98
|
+
};
|
|
99
|
+
return request;
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/providers/jupiter-swap/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Jupiter REST API client (v1).
|
|
3
|
+
* Wraps /swap/v1/quote and /swap/v1/swap-instructions endpoints.
|
|
4
|
+
*/
|
|
5
|
+
import { ActionApiClient } from '../../common/action-api-client.js';
|
|
6
|
+
import type { QuoteResponse, SwapInstructionsResponse } from './schemas.js';
|
|
7
|
+
import type { JupiterSwapConfig } from './config.js';
|
|
8
|
+
export declare class JupiterApiClient extends ActionApiClient {
|
|
9
|
+
constructor(config: JupiterSwapConfig);
|
|
10
|
+
getQuote(params: {
|
|
11
|
+
inputMint: string;
|
|
12
|
+
outputMint: string;
|
|
13
|
+
amount: string;
|
|
14
|
+
slippageBps: number;
|
|
15
|
+
restrictIntermediateTokens?: boolean;
|
|
16
|
+
}): Promise<QuoteResponse>;
|
|
17
|
+
getSwapInstructions(params: {
|
|
18
|
+
quoteResponse: QuoteResponse;
|
|
19
|
+
userPublicKey: string;
|
|
20
|
+
jitoTipLamports?: number;
|
|
21
|
+
}): Promise<SwapInstructionsResponse>;
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=jupiter-api-client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"jupiter-api-client.d.ts","sourceRoot":"","sources":["../../../src/providers/jupiter-swap/jupiter-api-client.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAC;AAEpE,OAAO,KAAK,EAAE,aAAa,EAAE,wBAAwB,EAAE,MAAM,cAAc,CAAC;AAC5E,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAErD,qBAAa,gBAAiB,SAAQ,eAAe;gBACvC,MAAM,EAAE,iBAAiB;IAQ/B,QAAQ,CAAC,MAAM,EAAE;QACrB,SAAS,EAAE,MAAM,CAAC;QAClB,UAAU,EAAE,MAAM,CAAC;QACnB,MAAM,EAAE,MAAM,CAAC;QACf,WAAW,EAAE,MAAM,CAAC;QACpB,0BAA0B,CAAC,EAAE,OAAO,CAAC;KACtC,GAAG,OAAO,CAAC,aAAa,CAAC;IAUpB,mBAAmB,CAAC,MAAM,EAAE;QAChC,aAAa,EAAE,aAAa,CAAC;QAC7B,aAAa,EAAE,MAAM,CAAC;QACtB,eAAe,CAAC,EAAE,MAAM,CAAC;KAC1B,GAAG,OAAO,CAAC,wBAAwB,CAAC;CAYtC"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Jupiter REST API client (v1).
|
|
3
|
+
* Wraps /swap/v1/quote and /swap/v1/swap-instructions endpoints.
|
|
4
|
+
*/
|
|
5
|
+
import { ActionApiClient } from '../../common/action-api-client.js';
|
|
6
|
+
import { QuoteResponseSchema, SwapInstructionsResponseSchema } from './schemas.js';
|
|
7
|
+
export class JupiterApiClient extends ActionApiClient {
|
|
8
|
+
constructor(config) {
|
|
9
|
+
const headers = {};
|
|
10
|
+
if (config.apiKey) {
|
|
11
|
+
headers['x-api-key'] = config.apiKey;
|
|
12
|
+
}
|
|
13
|
+
super(config.apiBaseUrl, config.requestTimeoutMs, headers);
|
|
14
|
+
}
|
|
15
|
+
async getQuote(params) {
|
|
16
|
+
return this.get('quote', QuoteResponseSchema, {
|
|
17
|
+
inputMint: params.inputMint,
|
|
18
|
+
outputMint: params.outputMint,
|
|
19
|
+
amount: params.amount,
|
|
20
|
+
slippageBps: String(params.slippageBps),
|
|
21
|
+
restrictIntermediateTokens: String(params.restrictIntermediateTokens ?? true),
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
async getSwapInstructions(params) {
|
|
25
|
+
const body = {
|
|
26
|
+
quoteResponse: params.quoteResponse,
|
|
27
|
+
userPublicKey: params.userPublicKey,
|
|
28
|
+
};
|
|
29
|
+
if (params.jitoTipLamports && params.jitoTipLamports > 0) {
|
|
30
|
+
body.prioritizationFeeLamports = {
|
|
31
|
+
jitoTipLamports: params.jitoTipLamports,
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
return this.post('swap-instructions', body, SwapInstructionsResponseSchema);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=jupiter-api-client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"jupiter-api-client.js","sourceRoot":"","sources":["../../../src/providers/jupiter-swap/jupiter-api-client.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAC;AACpE,OAAO,EAAE,mBAAmB,EAAE,8BAA8B,EAAE,MAAM,cAAc,CAAC;AAInF,MAAM,OAAO,gBAAiB,SAAQ,eAAe;IACnD,YAAY,MAAyB;QACnC,MAAM,OAAO,GAA2B,EAAE,CAAC;QAC3C,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;YAClB,OAAO,CAAC,WAAW,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC;QACvC,CAAC;QACD,KAAK,CAAC,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,gBAAgB,EAAE,OAAO,CAAC,CAAC;IAC7D,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,MAMd;QACC,OAAO,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,mBAAmB,EAAE;YAC5C,SAAS,EAAE,MAAM,CAAC,SAAS;YAC3B,UAAU,EAAE,MAAM,CAAC,UAAU;YAC7B,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,WAAW,EAAE,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC;YACvC,0BAA0B,EAAE,MAAM,CAAC,MAAM,CAAC,0BAA0B,IAAI,IAAI,CAAC;SAC9E,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,mBAAmB,CAAC,MAIzB;QACC,MAAM,IAAI,GAA4B;YACpC,aAAa,EAAE,MAAM,CAAC,aAAa;YACnC,aAAa,EAAE,MAAM,CAAC,aAAa;SACpC,CAAC;QACF,IAAI,MAAM,CAAC,eAAe,IAAI,MAAM,CAAC,eAAe,GAAG,CAAC,EAAE,CAAC;YACzD,IAAI,CAAC,yBAAyB,GAAG;gBAC/B,eAAe,EAAE,MAAM,CAAC,eAAe;aACxC,CAAC;QACJ,CAAC;QACD,OAAO,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE,IAAI,EAAE,8BAA8B,CAAC,CAAC;IAC9E,CAAC;CACF"}
|