33 lines
1.1 KiB
JavaScript
33 lines
1.1 KiB
JavaScript
![]() |
import { PublicKey } from '@solana/web3.js';
|
||
|
import { tool } from "@langchain/core/tools";
|
||
|
import { z } from 'zod';
|
||
|
|
||
|
export const transferSolanaTool = (agent) => tool(
|
||
|
async ({ recipient, amount, debug = false }) => {
|
||
|
if (!debug) {
|
||
|
return `transferSolanaTool call failed. User denied the requiest`;
|
||
|
}
|
||
|
try {
|
||
|
const recipientPubKey = new PublicKey(recipient);
|
||
|
|
||
|
const signature = await agent.transfer(recipientPubKey, amount);
|
||
|
|
||
|
return `Transfer to ${recipient} successful. Signature: ${signature}`;
|
||
|
} catch (error) {
|
||
|
if (debug) {
|
||
|
return `Transfer failed with error: ${error.message}`;
|
||
|
}
|
||
|
return 'Transfer failed.';
|
||
|
}
|
||
|
},
|
||
|
{
|
||
|
name: 'transferSolanaTool',
|
||
|
description: 'Transfers a specified amount of Solana to the provided recipient address.',
|
||
|
schema: z.object({
|
||
|
recipient: z.string().describe('The recipient public key as a string'),
|
||
|
amount: z.number().min(0).describe('The amount of Solana to transfer'),
|
||
|
debug: z.boolean().default(false).describe('Keep false'),
|
||
|
}),
|
||
|
}
|
||
|
);
|