UNPKG

@agentix/plugin-solana-switchboard

Version:
103 lines (97 loc) 2.88 kB
// src/index.ts import { PluginBase, SolanaWalletBase } from "agentix"; // src/actions/simulateFeed.ts import { z } from "zod"; // src/constants.ts var SWITCHBOARD_DEFAULT_CROSSBAR = "https://crossbar.switchboard.xyz"; // src/tools/simulate_feed.ts import { CrossbarClient } from "@switchboard-xyz/common"; async function simulate_switchboard_feed(feed, crossbarUrl = SWITCHBOARD_DEFAULT_CROSSBAR) { try { const crossbar = new CrossbarClient(crossbarUrl, true); const results = await crossbar.simulateSolanaFeeds("mainnet", [feed]); if (results.length === 0) { throw new Error( `Error simulating feed ${feed}. Did you provide the right mainnet feed hash?` ); } return results[0].results.toString(); } catch (error) { throw new Error(`Error: ${error.message}`); } } // src/actions/simulateFeed.ts var switchboardSimulateFeedAction = { name: "SWITCHBOARD_SIMULATE_FEED", similes: [ "simulate switchboard price feed", "simulate switchboard feed", "switchboard oracle feed", "get switchboard price", "check switchboard price", "switchboard price", "switchbaord feed" ], description: "Simulates a given switchboard price feed and returns the value.", examples: [ [ { input: { feed: "6qmsMwtMmeqMgZEhyLv1Pe4wcqT5iKwJAWnmzmnKjf83" // BTC/USDT price feed }, output: { status: "success", value: "104097.59", message: "Simulation result: 104097.59" }, explanation: "Get the current BTC/USDT price by simulating a Switchbaord feed" } ] ], schema: z.object({ feed: z.string().describe("The address of the Switchboard feed to simulate"), crossbarUrl: z.string().default(SWITCHBOARD_DEFAULT_CROSSBAR).describe("The url of the crossbar server to use") }), handler: async (_agent, input) => { try { const { feedAddress, crossbarUrl } = input; const result = await simulate_switchboard_feed(feedAddress, crossbarUrl); return { status: "success", feed: feedAddress, message: `Simulation result: ${result}` }; } catch (error) { return { status: "error", message: `Failed to simulate Switchboard feed: ${error.message}` }; } } }; var simulateFeed_default = switchboardSimulateFeedAction; // src/index.ts var SwitchboardPlugin = class extends PluginBase { constructor() { const methods = { simulate_switchboard_feed }; const actions = [ simulateFeed_default ]; const supportedChains = [ { type: "solana" } ]; super("switchboard", methods, actions, supportedChains); } supportsWallet(wallet) { return wallet instanceof SolanaWalletBase; } }; var index_default = SwitchboardPlugin; export { index_default as default };