@nodiusxyz/solana-agent-kit 0.0.0-stage → 0.1.1

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) 2025 Nodius 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.
package/README.md CHANGED
@@ -1,3 +1,132 @@
1
- # Temporary Holding Version
1
+ # @nodiusxyz/solana-agent-kit
2
2
 
3
- This version is a temporary placeholder for this package. An operational version to replace this has been submitted for review and is awaiting a staged release.
3
+ An opt-in **Solana Agent Kit 2.0.10** plugin for nodius.xyz recent signals, bounded monitoring, buy/sell plans, guarded execution and persistent status recovery. Node.js **20.20.2+**, ESM. This is a library plugin, not a CLI trading pack. MIT licensed.
4
+
5
+ ## Install and drop in
6
+
7
+ ```sh
8
+ npm install @nodiusxyz/solana-agent-kit solana-agent-kit@2.0.10
9
+ ```
10
+
11
+ Use your existing `BaseWallet` implementation. No keypair files or secret-key retrieval are needed. This ten-line drop-in uses your existing `wallet`:
12
+
13
+ ```ts
14
+ import { SolanaAgentKit } from "solana-agent-kit";
15
+ import { createNodiusPlugin } from "@nodiusxyz/solana-agent-kit";
16
+ const agent = new SolanaAgentKit(wallet, "https://rpc.nodius.xyz/rpc", {});
17
+ const nodius = agent.use(
18
+ createNodiusPlugin({
19
+ apiKey: process.env.NODIUS_API_KEY,
20
+ endpoint: "https://rpc.nodius.xyz",
21
+ journalDir: "./.nodius-journal",
22
+ allowExecution: false,
23
+ ackIncompletePolicy: false,
24
+ }),
25
+ );
26
+ console.log(await nodius.methods.nodiusRecent({ limit: 5 }));
27
+ ```
28
+
29
+ `apiKey` is an optional **host** credential; pass it explicitly (the factory never reads global environment variables). Authenticated calls require it. `endpoint` defaults to `https://rpc.nodius.xyz`, must be an HTTPS origin, without path/query/credentials; HTTP is accepted only for loopback. `journalDir` is required, host-owned and persistent. Both permissions default **false**, are copied/frozen at creation, and cannot be enabled by action arguments. A plugin instance binds to exactly one agent; create a new instance for each agent. The plugin does not alter `agent.connection` or `process.env`; its separate web3 Connection sends `X-Api-Key` headers.
30
+
31
+ ## Methods and actions
32
+
33
+ All five names are registered identically in `agent.methods` and `agent.actions`:
34
+
35
+ - `nodiusRecent({ limit?: number })`: default 20, integer 1–50. Locally limits returned events even when an older server returns a larger preview; returned `count` matches those events.
36
+ - `nodiusMonitor({ maxFeeCredits: number, seconds?: number, maxEvents?: number, mint?: string, kinds?: SignalKind[] })`: defaults 30 seconds / 100 events; bounds 1–300 seconds / 1–1000 events. Kinds: `newPair`, `graduation`, `walletActivity`, `largeSwap`, no duplicates. Authenticated **paid** stream. Requires a nonnegative safe-integer admission budget: live `subscribe + maxEvents × notification + unsubscribe` estimate must fit **before WS opens**. For example `{ seconds: 3, maxEvents: 3, maxFeeCredits: 100 }`. Returns `{ state: "monitor-complete", events, subscription, notifications, estimated_stream_credits, note }`; closes/unsubscribes in finally. This never triggers trades. Duration is the stream deadline; HTTP pricing lookup can add up to its 10-second timeout and cleanup up to 500ms.
37
+ - `nodiusTrade(input)`: buy or sell; defaults a **read-only plan**, only fetching pricing. No builder, signature, funding or submission by default.
38
+ - `nodiusStatus({ operationId: string })`: reads the configured persistent journal and, if a signature exists, reconciles chain status. Never rebuilds, resumes or rebroadcasts. A missing signature is not permission to retry; inspect the billing ledger separately.
39
+ - `nodiusSend({ signedTxBase64: string, maxFeeCredits: number, execute?: boolean, operationId?: string })`: defaults a plan for an **already signed, independently reviewed** transaction. Canonical base64, packet-size limit, all signatures verified, exactly one signer/payer matching this agent wallet. Both host permissions are required to submit. No wallet signing occurs. Unlike `nodiusTrade`, this does **not** validate instruction semantics; do not expose this action to untrusted workflows even with host permissions. There is no file-path input.
40
+
41
+ All direct methods and action handlers parse strict inputs themselves, even when framework schema validation is bypassed. Unknown fields, keypair/tx-file paths, API keys, endpoint and journal overrides are rejected. Outputs are JSON-safe (bigints become decimal strings); the configured current credential is redacted recursively from string values, object keys and surfaced error messages. This does not make arbitrary third-party content safe to trust.
42
+
43
+ ### Exact trade options
44
+
45
+ ```ts
46
+ const plan = await nodius.methods.nodiusTrade({
47
+ side: "buy",
48
+ mint: "<base58 mint>",
49
+ amountSol: "0.001",
50
+ maxSol: "0.01",
51
+ maxFeeCredits: 100000,
52
+ slippageBps: 100,
53
+ priorityFee: 0,
54
+ maxPriorityFee: 0,
55
+ maxPriorityLamports: 0,
56
+ });
57
+ ```
58
+
59
+ | Field | Type / constraint |
60
+ | --------------------------- | -------------------------------------------------------------------------------------------------------------------------- |
61
+ | `side` | Required `"buy"` or `"sell"` |
62
+ | `mint` | Required valid Solana public key |
63
+ | `amountSol` | **Buy only**, required positive plain SOL decimal string, ≤9 places |
64
+ | `amountRaw` | **Sell only**, required positive raw integer string, ≤u64; never a JS number |
65
+ | `maxSol` | Required positive plain SOL decimal string, ≤9 places, safe-integer lamports; buy amount must fit |
66
+ | `maxFeeCredits` | Required nonnegative safe integer; estimated and returned builder + send credits checked |
67
+ | `slippageBps` | Required integer 0–9999 |
68
+ | `priorityFee` | Required nonnegative safe integer, requested micro-lamports per CU |
69
+ | `maxPriorityFee` | Required nonnegative safe integer, maximum micro-lamports per CU |
70
+ | `maxPriorityLamports` | Nonnegative safe integer total priority fee cap; **required** when `priorityFee > 0` |
71
+ | `execute` | Optional boolean, default false. Requires host `allowExecution: true` |
72
+ | `buildOnly` | Optional boolean, default false. Requires `execute: true`; charged unsigned construction/inspection, no signing/submission |
73
+ | `operationId` | Required for execute, 1–80 characters `[A-Za-z0-9_-]`; use durable unique IDs |
74
+ | `acceptUnquotedBuildCharge` | Optional boolean, default false; must be true for **sell execution**, including build-only |
75
+
76
+ Cross-side amount fields are rejected. No wallet override is accepted: payer is always `agent.wallet.publicKey`. There is deliberately no `ackIncompletePolicy` action field; configure that on the host factory. To execute a reviewed trade, create a fresh host-authorized plugin with both permissions true and supply `execute: true` plus an operation ID. `buildOnly` does not require the incomplete-policy acknowledgement because it does not authorize signing.
77
+
78
+ ## Signing, fees and limitations
79
+
80
+ For executed trades, billing identity must match the wallet. The SDK uses `maxRetries: 0` and `autoPay: false`: no automatic wallet funding or SDK retry. Before `wallet.signTransaction` is invoked, the client checks the builder envelope, payer, signer, unsigned bytes, packet size, supported classic/current-v2 Pump layout, instruction allowlist, v2 derived accounts/ATAs, funding/refund order, buy/sell amounts, builder-reported bounds, compute-unit and priority caps, message fees and known ATA rent against the SOL budget. Address lookup tables and unknown instruction layouts fail closed. The approved message bytes are copied **before** calling the wallet, then compared byte-for-byte after it returns; all required Ed25519 signatures are verified before submission. The plugin never calls `wallet.signAndSendTransaction`, `sendTransaction`, batch signing or `signMessage`.
81
+
82
+ This is a **partial policy**, not a complete on-chain proof: dynamic program state, fee-recipient governance, program upgrades, Token-2022 extensions and all CPI behavior/rent are not fully verified. `ackIncompletePolicy: true` explicitly accepts these limitations, not arbitrary instructions. Slippage arguments are forwarded and returned instruction bounds checked; they are not an independent market-price oracle. `maxSol` is not a guaranteed cap on every possible CPI effect.
83
+
84
+ Pricing is fetched fresh from `/pricing`. Buy build fee is estimated from **`amountSol`**, not `maxSol`, with a SOL quote no older than 15 seconds. `maxSol` is the aggregate safety ceiling; raising it does not raise the requested trade size or its fee estimate. Before charged buy construction (including `buildOnly`), live mint/curve and buyer-associated account data plus live rent prices admit the slippage-bound trade, known missing/growing account rent, and a conservative network/priority allowance. Token-2022 account sizes use SPL extension sizing, including metadata-extended mints; v2 zero/WSOL quote layouts reserve the known WSOL and volume-associated accounts. Missing/unsupported curve layouts fail before construction. Admission failures report required lamports and trade/rent/network components; unsigned results include an `admission` breakdown. This is a conservative partial check, not an exact rent multiplier or complete CPI-spend guarantee. Send admission uses the live landed **total** rather than adding the base fee twice. Builder fees are charged **before** the response arrives. The estimated buy cap is **not a server-side billing cap**; the post-build check cannot undo a builder debit. Sell construction is unquoted and requires the explicit charge acknowledgement. Send failure does not automatically refund a successful build. Signals billing may include events queued beyond the locally received count; duration/event limits are **not** hard server billing caps. Keep account credit balances bounded and review ledger/transaction details.
85
+
86
+ There is exactly one client `sendAndConfirm` invocation per submitted operation. The server can intentionally make bounded same-byte multi-leg resends; this is not an SDK retry. Journal logical economic intent is origin/wallet/side/mint/amount; changing slippage or priority cannot bypass an unresolved reservation (different amounts are different intents, not a global exactly-once guarantee). Operation/intent reservations precede charged construction, and signature reservations are permanent before submission. Transport failures produce `unknown`, never an automatic rebuild/rebroadcast. Preserve the journal across restarts; do not delete it or change directories to bypass guards. Prefer a private directory on durable local storage (created 0700, files 0600), never shared across unrelated wallets. Journal records store only allowlisted validated builder summaries, not arbitrary response fields or unsigned transaction payloads, and redact the current credential before writes. Journal records include intent/build details; protect them like financial records. Status reconciliation is observation, not an execution authorization. Reusing a transaction signature is always blocked, including after terminal outcomes.
87
+
88
+ ### Unsigned decoder and sell rent recovery
89
+
90
+ `decodeBuilderUnsigned(unsignedTxBase64)` is exported from the package root. It accepts the canonical provider zero-signature envelope and returns a `VersionedTransaction` with an empty signing placeholder. This decoding does **not** authorize signing or validate trade instruction semantics; independently inspect/review the result. Signed-send validation remains strict and does not normalize zero signatures.
91
+
92
+ Sell requests omit `closeAccount` and honor the server default: a full-balance sell can append own-base-ATA rent recovery; partial sells leave the account open. No close override is exposed. Classic and v2 signing policies permit only the expected derived base ATA, the correct token program, and exactly three close accounts (base ATA, wallet destination, wallet authority), with the close after the sell. Arbitrary accounts/destinations/authorities and reordered closes are rejected. Inventory eligibility is server/on-chain state, not an offline client proof.
93
+
94
+ `nodiusStatus` reports a missing local ID as `Operation not found`, without filesystem paths. Malformed signed wire data reports `Malformed signed transaction` rather than parser internals. Signature-bound definitive `status: failed`/transaction errors are terminal failures; explicit `status: unknown` remains uncertain regardless of diagnostic details. Status recovery recognizes on-chain `err` as failed without sending again.
95
+
96
+ ## Framework tools without hosted LLM credentials
97
+
98
+ Programmatic methods above need **no LLM API key**. If desired, convert registered actions offline using published framework helpers:
99
+
100
+ ```ts
101
+ import {
102
+ createLangchainTools,
103
+ createVercelAITools,
104
+ createOpenAITools,
105
+ } from "solana-agent-kit";
106
+ const langchain = createLangchainTools(nodius, nodius.actions);
107
+ const vercel = createVercelAITools(nodius, nodius.actions);
108
+ const openai = createOpenAITools(nodius, nodius.actions);
109
+ ```
110
+
111
+ The actual 2.0.10 converters are tested. Action schemas are Zod 3 **objects** for LangChain interoperability; the trade handler independently enforces the stricter side-discriminated schema. Select only the read-only actions for untrusted planners; host permissions are defense in depth, not a substitute for controlling tools. Calling an LLM is a separate application concern.
112
+
113
+ ## Read-only example and local development
114
+
115
+ The included `examples/readonly.ts` constructs a public-key-only wallet whose signing/sending methods throw. It does not retrieve a secret key. From the source checkout:
116
+
117
+ ```sh
118
+ npm ci --ignore-scripts
119
+ NODIUS_API_KEY='your-key' npm run example:readonly
120
+ npm run build
121
+ npm run typecheck
122
+ npm test
123
+ npm pack --dry-run
124
+ npm audit
125
+ npm audit --omit=dev
126
+ ```
127
+
128
+ `NODIUS_PUBLIC_KEY`, `NODIUS_ENDPOINT` and `NODIUS_JOURNAL` are optional example host variables. Never put API keys in prompts or checked-in files. Tests use real loopback HTTP/WS and the published framework, including current-v2 buy/sell signing and an unsigned public snapshot; they do not make mainnet calls or trades.
129
+
130
+ ### Dependency security
131
+
132
+ Dependencies and lockfile are pinned: published SDK 0.2.15 (redirect rejection), web3.js 1.99.0, Zod 3.25.76 and framework 2.0.10. Full development audit currently reports 14 advisories (7 high / 3 moderate / 4 low); `--omit=dev` reports 4 high advisories through optional SDK SPL-token/bigint-buffer dependencies. These counts describe this lockfile, not a guarantee for consumers. Solana Agent Kit 2.0.10 brings transitive framework/LLM and SPL-token dependencies with outstanding npm audit advisories; this package does **not** claim a zero-advisory install. Review both full and production audits for your own dependency tree. The development tree's `jayson` override is root-local and is **not inherited** by consumer installations. Do not run blind `npm audit fix --force` or silently downgrade the tested framework. Optional native bigint bindings may fall back to pure JS; upstream `punycode` deprecation warnings can occur.
@@ -0,0 +1,281 @@
1
+ import type { SolanaAgentKit } from "solana-agent-kit";
2
+ import { z } from "zod";
3
+ export { decodeBuilderUnsigned } from "./internal/safety.js";
4
+ export interface NodiusOptions {
5
+ apiKey?: string;
6
+ endpoint?: string;
7
+ journalDir: string;
8
+ allowExecution?: boolean;
9
+ ackIncompletePolicy?: boolean;
10
+ }
11
+ export declare const tradeSchema: z.ZodDiscriminatedUnion<"side", [z.ZodObject<{
12
+ side: z.ZodLiteral<"buy">;
13
+ amountSol: z.ZodString;
14
+ mint: z.ZodString;
15
+ maxSol: z.ZodString;
16
+ maxFeeCredits: z.ZodNumber;
17
+ slippageBps: z.ZodNumber;
18
+ priorityFee: z.ZodNumber;
19
+ maxPriorityFee: z.ZodNumber;
20
+ maxPriorityLamports: z.ZodOptional<z.ZodNumber>;
21
+ execute: z.ZodDefault<z.ZodBoolean>;
22
+ buildOnly: z.ZodDefault<z.ZodBoolean>;
23
+ operationId: z.ZodOptional<z.ZodString>;
24
+ acceptUnquotedBuildCharge: z.ZodDefault<z.ZodBoolean>;
25
+ }, "strict", z.ZodTypeAny, {
26
+ mint: string;
27
+ execute: boolean;
28
+ side: "buy";
29
+ amountSol: string;
30
+ maxSol: string;
31
+ maxFeeCredits: number;
32
+ slippageBps: number;
33
+ priorityFee: number;
34
+ maxPriorityFee: number;
35
+ buildOnly: boolean;
36
+ acceptUnquotedBuildCharge: boolean;
37
+ maxPriorityLamports?: number | undefined;
38
+ operationId?: string | undefined;
39
+ }, {
40
+ mint: string;
41
+ side: "buy";
42
+ amountSol: string;
43
+ maxSol: string;
44
+ maxFeeCredits: number;
45
+ slippageBps: number;
46
+ priorityFee: number;
47
+ maxPriorityFee: number;
48
+ execute?: boolean | undefined;
49
+ maxPriorityLamports?: number | undefined;
50
+ buildOnly?: boolean | undefined;
51
+ operationId?: string | undefined;
52
+ acceptUnquotedBuildCharge?: boolean | undefined;
53
+ }>, z.ZodObject<{
54
+ side: z.ZodLiteral<"sell">;
55
+ amountRaw: z.ZodString;
56
+ mint: z.ZodString;
57
+ maxSol: z.ZodString;
58
+ maxFeeCredits: z.ZodNumber;
59
+ slippageBps: z.ZodNumber;
60
+ priorityFee: z.ZodNumber;
61
+ maxPriorityFee: z.ZodNumber;
62
+ maxPriorityLamports: z.ZodOptional<z.ZodNumber>;
63
+ execute: z.ZodDefault<z.ZodBoolean>;
64
+ buildOnly: z.ZodDefault<z.ZodBoolean>;
65
+ operationId: z.ZodOptional<z.ZodString>;
66
+ acceptUnquotedBuildCharge: z.ZodDefault<z.ZodBoolean>;
67
+ }, "strict", z.ZodTypeAny, {
68
+ mint: string;
69
+ execute: boolean;
70
+ side: "sell";
71
+ maxSol: string;
72
+ maxFeeCredits: number;
73
+ slippageBps: number;
74
+ priorityFee: number;
75
+ maxPriorityFee: number;
76
+ buildOnly: boolean;
77
+ acceptUnquotedBuildCharge: boolean;
78
+ amountRaw: string;
79
+ maxPriorityLamports?: number | undefined;
80
+ operationId?: string | undefined;
81
+ }, {
82
+ mint: string;
83
+ side: "sell";
84
+ maxSol: string;
85
+ maxFeeCredits: number;
86
+ slippageBps: number;
87
+ priorityFee: number;
88
+ maxPriorityFee: number;
89
+ amountRaw: string;
90
+ execute?: boolean | undefined;
91
+ maxPriorityLamports?: number | undefined;
92
+ buildOnly?: boolean | undefined;
93
+ operationId?: string | undefined;
94
+ acceptUnquotedBuildCharge?: boolean | undefined;
95
+ }>]>;
96
+ export declare const monitorSchema: z.ZodObject<{
97
+ maxFeeCredits: z.ZodNumber;
98
+ seconds: z.ZodDefault<z.ZodNumber>;
99
+ maxEvents: z.ZodDefault<z.ZodNumber>;
100
+ mint: z.ZodOptional<z.ZodString>;
101
+ kinds: z.ZodOptional<z.ZodArray<z.ZodEnum<["newPair", "graduation", "walletActivity", "largeSwap"]>, "many">>;
102
+ }, "strict", z.ZodTypeAny, {
103
+ seconds: number;
104
+ maxFeeCredits: number;
105
+ maxEvents: number;
106
+ mint?: string | undefined;
107
+ kinds?: ("newPair" | "graduation" | "walletActivity" | "largeSwap")[] | undefined;
108
+ }, {
109
+ maxFeeCredits: number;
110
+ mint?: string | undefined;
111
+ seconds?: number | undefined;
112
+ kinds?: ("newPair" | "graduation" | "walletActivity" | "largeSwap")[] | undefined;
113
+ maxEvents?: number | undefined;
114
+ }>;
115
+ export declare const statusSchema: z.ZodObject<{
116
+ operationId: z.ZodString;
117
+ }, "strict", z.ZodTypeAny, {
118
+ operationId: string;
119
+ }, {
120
+ operationId: string;
121
+ }>;
122
+ export declare const sendSchema: z.ZodObject<{
123
+ signedTxBase64: z.ZodString;
124
+ maxFeeCredits: z.ZodNumber;
125
+ execute: z.ZodDefault<z.ZodBoolean>;
126
+ operationId: z.ZodOptional<z.ZodString>;
127
+ }, "strict", z.ZodTypeAny, {
128
+ execute: boolean;
129
+ maxFeeCredits: number;
130
+ signedTxBase64: string;
131
+ operationId?: string | undefined;
132
+ }, {
133
+ maxFeeCredits: number;
134
+ signedTxBase64: string;
135
+ execute?: boolean | undefined;
136
+ operationId?: string | undefined;
137
+ }>;
138
+ export type SendInput = z.input<typeof sendSchema>;
139
+ export type StatusInput = z.input<typeof statusSchema>;
140
+ export type MonitorInput = z.input<typeof monitorSchema>;
141
+ export type TradeInput = z.input<typeof tradeSchema>;
142
+ export type NodiusResult = Record<string, unknown>;
143
+ export declare function createNodiusPlugin(options: NodiusOptions): {
144
+ name: string;
145
+ methods: {
146
+ nodiusSend: (input: SendInput) => Promise<NodiusResult>;
147
+ nodiusStatus: (input: StatusInput) => Promise<NodiusResult>;
148
+ nodiusMonitor: (input: MonitorInput) => Promise<NodiusResult>;
149
+ nodiusRecent: (input?: {
150
+ limit?: number;
151
+ }) => Promise<NodiusResult>;
152
+ nodiusTrade: (input: TradeInput) => Promise<NodiusResult>;
153
+ };
154
+ actions: ({
155
+ name: string;
156
+ similes: never[];
157
+ description: string;
158
+ examples: never[];
159
+ schema: z.ZodObject<{
160
+ signedTxBase64: z.ZodString;
161
+ maxFeeCredits: z.ZodNumber;
162
+ execute: z.ZodDefault<z.ZodBoolean>;
163
+ operationId: z.ZodOptional<z.ZodString>;
164
+ }, "strict", z.ZodTypeAny, {
165
+ execute: boolean;
166
+ maxFeeCredits: number;
167
+ signedTxBase64: string;
168
+ operationId?: string | undefined;
169
+ }, {
170
+ maxFeeCredits: number;
171
+ signedTxBase64: string;
172
+ execute?: boolean | undefined;
173
+ operationId?: string | undefined;
174
+ }>;
175
+ handler: (a: SolanaAgentKit, i: unknown) => Promise<NodiusResult>;
176
+ } | {
177
+ name: string;
178
+ similes: never[];
179
+ description: string;
180
+ examples: never[];
181
+ schema: z.ZodObject<{
182
+ operationId: z.ZodString;
183
+ }, "strict", z.ZodTypeAny, {
184
+ operationId: string;
185
+ }, {
186
+ operationId: string;
187
+ }>;
188
+ handler: (a: SolanaAgentKit, i: unknown) => Promise<NodiusResult>;
189
+ } | {
190
+ name: string;
191
+ similes: never[];
192
+ description: string;
193
+ examples: never[];
194
+ schema: z.ZodObject<{
195
+ maxFeeCredits: z.ZodNumber;
196
+ seconds: z.ZodDefault<z.ZodNumber>;
197
+ maxEvents: z.ZodDefault<z.ZodNumber>;
198
+ mint: z.ZodOptional<z.ZodString>;
199
+ kinds: z.ZodOptional<z.ZodArray<z.ZodEnum<["newPair", "graduation", "walletActivity", "largeSwap"]>, "many">>;
200
+ }, "strict", z.ZodTypeAny, {
201
+ seconds: number;
202
+ maxFeeCredits: number;
203
+ maxEvents: number;
204
+ mint?: string | undefined;
205
+ kinds?: ("newPair" | "graduation" | "walletActivity" | "largeSwap")[] | undefined;
206
+ }, {
207
+ maxFeeCredits: number;
208
+ mint?: string | undefined;
209
+ seconds?: number | undefined;
210
+ kinds?: ("newPair" | "graduation" | "walletActivity" | "largeSwap")[] | undefined;
211
+ maxEvents?: number | undefined;
212
+ }>;
213
+ handler: (a: SolanaAgentKit, i: unknown) => Promise<NodiusResult>;
214
+ } | {
215
+ name: string;
216
+ similes: never[];
217
+ description: string;
218
+ examples: never[];
219
+ schema: z.ZodObject<{
220
+ limit: z.ZodDefault<z.ZodNumber>;
221
+ }, "strict", z.ZodTypeAny, {
222
+ limit: number;
223
+ }, {
224
+ limit?: number | undefined;
225
+ }>;
226
+ handler: (a: SolanaAgentKit, i: unknown) => Promise<NodiusResult>;
227
+ } | {
228
+ name: string;
229
+ similes: never[];
230
+ description: string;
231
+ examples: never[];
232
+ schema: z.ZodObject<{
233
+ side: z.ZodEnum<["buy", "sell"]>;
234
+ amountSol: z.ZodOptional<z.ZodString>;
235
+ amountRaw: z.ZodOptional<z.ZodString>;
236
+ mint: z.ZodString;
237
+ maxSol: z.ZodString;
238
+ maxFeeCredits: z.ZodNumber;
239
+ slippageBps: z.ZodNumber;
240
+ priorityFee: z.ZodNumber;
241
+ maxPriorityFee: z.ZodNumber;
242
+ maxPriorityLamports: z.ZodOptional<z.ZodNumber>;
243
+ execute: z.ZodDefault<z.ZodBoolean>;
244
+ buildOnly: z.ZodDefault<z.ZodBoolean>;
245
+ operationId: z.ZodOptional<z.ZodString>;
246
+ acceptUnquotedBuildCharge: z.ZodDefault<z.ZodBoolean>;
247
+ }, "strict", z.ZodTypeAny, {
248
+ mint: string;
249
+ execute: boolean;
250
+ side: "buy" | "sell";
251
+ maxSol: string;
252
+ maxFeeCredits: number;
253
+ slippageBps: number;
254
+ priorityFee: number;
255
+ maxPriorityFee: number;
256
+ buildOnly: boolean;
257
+ acceptUnquotedBuildCharge: boolean;
258
+ amountSol?: string | undefined;
259
+ maxPriorityLamports?: number | undefined;
260
+ operationId?: string | undefined;
261
+ amountRaw?: string | undefined;
262
+ }, {
263
+ mint: string;
264
+ side: "buy" | "sell";
265
+ maxSol: string;
266
+ maxFeeCredits: number;
267
+ slippageBps: number;
268
+ priorityFee: number;
269
+ maxPriorityFee: number;
270
+ execute?: boolean | undefined;
271
+ amountSol?: string | undefined;
272
+ maxPriorityLamports?: number | undefined;
273
+ buildOnly?: boolean | undefined;
274
+ operationId?: string | undefined;
275
+ acceptUnquotedBuildCharge?: boolean | undefined;
276
+ amountRaw?: string | undefined;
277
+ }>;
278
+ handler: (a: SolanaAgentKit, i: unknown) => Promise<NodiusResult>;
279
+ })[];
280
+ initialize(agent: SolanaAgentKit): void;
281
+ };