{"version":3,"sources":["../src/tools/dex/orderbook.ts","../src/config.ts","../src/index.ts","../src/mcp/xrpl/get_wallet_address_tool.ts","../src/mcp/xrpl/get_account_info_tool.ts","../src/mcp/xrpl/get_balances_tool.ts","../src/mcp/xrpl/send_payment_tool.ts","../src/mcp/token/create_token_tool.ts","../src/mcp/token/set_trust_line_tool.ts","../src/mcp/token/mint_nftoken_tool.ts","../src/mcp/token/burn_nftoken_tool.ts","../src/mcp/transaction/create_offer_tool.ts","../src/mcp/transaction/cancel_offer_tool.ts","../src/mcp/transaction/get_transaction_tool.ts","../src/mcp/transaction/get_recent_transactions_tool.ts","../src/mcp/dex/get_order_book_tool.ts","../src/mcp/dex/get_account_offers_tool.ts","../src/mcp/index.ts","../src/agent/index.ts","../src/tools/xrpl/account.ts","../src/tools/xrpl/balance.ts","../src/tools/xrpl/payment.ts","../src/tools/token/create.ts","../src/tools/token/trustline.ts","../src/tools/token/nft.ts","../src/tools/transaction/offer.ts","../src/tools/transaction/management.ts","../src/constants.ts"],"sourcesContent":["import { Agent } from '../../agent';\n\nexport async function getOrderBook(agent: Agent, takerGets: any, takerPays: any, limit: number = 20) {\n    try {\n        const response = await agent.client.request({\n            command: 'book_offers',\n            taker_gets: takerGets,\n            taker_pays: takerPays,\n            limit: limit\n        });\n\n        return {\n            offers: response.result.offers || [],\n            ledger_current_index: response.result.ledger_current_index\n        };\n    } catch (error) {\n        throw new Error(`Failed to get order book: ${error instanceof Error ? error.message : 'Unknown error'}`);\n    }\n}\n\nexport async function getAccountOffers(agent: Agent, address: string) {\n    try {\n        const response = await agent.client.request({\n            command: 'account_offers',\n            account: address,\n            ledger_index: 'current'\n        });\n\n        return response.result.offers || [];\n    } catch (error) {\n        throw new Error(`Failed to get account offers: ${error instanceof Error ? error.message : 'Unknown error'}`);\n    }\n}\n\nexport async function getTickerInfo(agent: Agent, takerGets: any, takerPays: any) {\n    try {\n        // Get recent trades by looking at order book and recent transactions\n        const orderBook = await getOrderBook(agent, takerGets, takerPays, 10);\n        \n        return {\n            pair: `${takerGets.currency || 'XRP'}/${takerPays.currency || 'XRP'}`,\n            orderBook: orderBook.offers,\n            timestamp: new Date().toISOString()\n        };\n    } catch (error) {\n        throw new Error(`Failed to get ticker info: ${error instanceof Error ? error.message : 'Unknown error'}`);\n    }\n}\n","#!/usr/bin/env node\n\nimport { XrplConfig } from './types';\n\n\nconst getArgs = () =>\n    process.argv.reduce((args: any, arg: any) => {\n        // long arg\n        if (arg.slice(0, 2) === \"--\") {\n            const longArg = arg.split(\"=\");\n            const longArgFlag = longArg[0].slice(2);\n            const longArgValue = longArg.length > 1 ? longArg[1] : true;\n            args[longArgFlag] = longArgValue;\n        }\n        // flags\n        else if (arg[0] === \"-\") {\n            const flags = arg.slice(1).split(\"\");\n            flags.forEach((flag: any) => {\n                args[flag] = true;\n            });\n        }\n        return args;\n    }, {});\n\nexport function validateEnvironment(): void {\n    const args = getArgs();\n\n    // Check if private key is provided\n    const hasPrivateKey = !!(args?.xrpl_private_key);\n\n    if (!hasPrivateKey) {\n        throw new Error(\n            'Missing required environment variable: XRPL_PRIVATE_KEY must be provided'\n        );\n    }\n\n    // Network is required\n    const hasXrplNetwork = !!(args?.xrpl_network);\n    if (!hasXrplNetwork) {\n        throw new Error('Missing required environment variable: XRPL_NETWORK');\n    }\n}\n\nexport function getXrplConfig(): XrplConfig {\n    validateEnvironment();\n\n    const args = getArgs();\n\n    const currentEnv = {\n        XRPL_PRIVATE_KEY: args?.xrpl_private_key,\n        XRPL_NETWORK: args?.xrpl_network\n    };\n\n    return {\n        privateKey: currentEnv.XRPL_PRIVATE_KEY!,\n        network: (currentEnv.XRPL_NETWORK || 'testnet') as 'testnet' | 'mainnet' | 'devnet'\n    };\n}\n","#!/usr/bin/env node\n\nimport { validateEnvironment } from './config';\nimport { McpServer } from \"@modelcontextprotocol/sdk/server/mcp.js\";\nimport { StdioServerTransport } from \"@modelcontextprotocol/sdk/server/stdio.js\";\nimport { XrplMcpTools } from './mcp';\nimport { Agent } from './agent';\n\n/**\n * Creates an MCP server\n */\nfunction createMcpServer(agent: Agent) {\n    // Create MCP server instance\n    const server = new McpServer({\n        name: \"xrpl-mcp\",\n        version: \"0.1.0\"\n    });\n\n    for (const [_key, tool] of Object.entries(XrplMcpTools)) {\n        server.tool(tool.name, tool.description, tool.schema, async (params: any): Promise<any> => {\n            try {\n                // Execute the handler with the params directly\n                const result = await tool.handler(agent, params);\n\n                // Format the result as MCP tool response\n                return {\n                    content: [\n                        {\n                            type: \"text\",\n                            text: JSON.stringify(result, null, 2),\n                        },\n                    ],\n                };\n            } catch (error) {\n                console.error(\"error\", error);\n                // Handle errors in MCP format\n                return {\n                    isError: true,\n                    content: [\n                        {\n                            type: \"text\",\n                            text:\n                                error instanceof Error\n                                    ? error.message\n                                    : \"Unknown error occurred\",\n                        },\n                    ],\n                };\n            }\n        });\n    }\n\n    return server;\n}\n\nasync function main() {\n    try {\n        // Validate environment before proceeding\n        validateEnvironment();\n\n        const myAgent = new Agent();\n\n        const server = createMcpServer(myAgent);\n        const transport = new StdioServerTransport();\n        await server.connect(transport);\n\n        console.error(\"XRPL MCP server is running...\");\n    } catch (error) {\n        console.error('Error starting MCP server:', error);\n        process.exit(1);\n    }\n}\n\nmain();\n","import { z } from \"zod\";\nimport { Agent } from \"../../agent\";\nimport { type McpTool } from \"../../types\";\n\nexport const GetWalletAddressTool: McpTool = {\n    name: \"xrpl_get_wallet_address\",\n    description: \"Get the active wallet address\",\n    schema: {},\n    handler: async (agent: Agent, input: Record<string, any>) => {\n        const walletAddress = await agent.getWalletAddress();\n        return {\n            status: \"success\",\n            walletAddress\n        };\n    },\n};\n","import { z } from \"zod\";\nimport { Agent } from \"../../agent\";\nimport { type McpTool } from \"../../types\";\n\nexport const GetAccountInfoTool: McpTool = {\n    name: \"xrpl_get_account_info\",\n    description: \"Get account information for a given address\",\n    schema: {\n        address: z.string()\n            .regex(/^r[a-zA-Z0-9]{24,34}$/)\n            .optional()\n            .describe(\"XRPL address to get info for (optional, defaults to wallet address)\")\n    },\n    handler: async (agent: Agent, input: Record<string, any>) => {\n        try {\n            const accountInfo = await agent.getAccountInfo(input.address);\n            return {\n                status: \"success\",\n                accountInfo\n            };\n        } catch (error) {\n            return {\n                status: \"error\",\n                message: error instanceof Error ? error.message : \"Unknown error occurred\"\n            };\n        }\n    },\n};\n","import { z } from \"zod\";\nimport { Agent } from \"../../agent\";\nimport { type McpTool } from \"../../types\";\n\nexport const GetBalancesTool: McpTool = {\n    name: \"xrpl_get_balances\",\n    description: \"Get all token balances for a given address\",\n    schema: {\n        address: z.string()\n            .regex(/^r[a-zA-Z0-9]{24,34}$/)\n            .optional()\n            .describe(\"XRPL address to get balances for (optional, defaults to wallet address)\")\n    },\n    handler: async (agent: Agent, input: Record<string, any>) => {\n        try {\n            const balances = await agent.getBalances(input.address);\n            return {\n                status: \"success\",\n                balances\n            };\n        } catch (error) {\n            return {\n                status: \"error\",\n                message: error instanceof Error ? error.message : \"Unknown error occurred\"\n            };\n        }\n    },\n};\n","import { z } from \"zod\";\nimport { Agent } from \"../../agent\";\nimport { type McpTool } from \"../../types\";\n\nexport const SendPaymentTool: McpTool = {\n    name: \"xrpl_send_payment\",\n    description: \"Send XRP or tokens to another address\",\n    schema: {\n        destination: z.string()\n            .regex(/^r[a-zA-Z0-9]{24,34}$/)\n            .describe(\"Destination XRPL address\"),\n        amount: z.union([\n            z.string().describe(\"Amount of XRP to send\"),\n            z.object({\n                currency: z.string(),\n                value: z.string(),\n                issuer: z.string().regex(/^r[a-zA-Z0-9]{24,34}$/)\n            })\n        ]).describe(\"Amount to send (XRP as string or token object)\"),\n        destinationTag: z.number()\n            .int()\n            .min(0)\n            .max(4294967295)\n            .optional()\n            .describe(\"Optional destination tag\")\n    },\n    handler: async (agent: Agent, input: Record<string, any>) => {\n        try {\n            const result = await agent.sendPayment({\n                destination: input.destination,\n                amount: input.amount,\n                destinationTag: input.destinationTag\n            });\n            return result;\n        } catch (error) {\n            return {\n                status: \"error\",\n                message: error instanceof Error ? error.message : \"Unknown error occurred\"\n            };\n        }\n    },\n};\n","import { z } from \"zod\";\nimport { Agent } from \"../../agent\";\nimport { type McpTool } from \"../../types\";\n\nexport const CreateTokenTool: McpTool = {\n    name: \"xrpl_create_token\",\n    description: \"Create a new token by setting account flags\",\n    schema: {\n        currency: z.string()\n            .regex(/^[A-Z0-9]{3}$/)\n            .describe(\"Token currency code (3 characters)\"),\n        domain: z.string()\n            .max(256)\n            .optional()\n            .describe(\"Domain name for the token issuer\"),\n        emailHash: z.string()\n            .length(32)\n            .optional()\n            .describe(\"Email hash for the issuer (32 hex characters)\"),\n        transferRate: z.number()\n            .int()\n            .min(1000000000)\n            .max(2000000000)\n            .optional()\n            .describe(\"Transfer rate (fee) for the token (1000000000 = 0%, 1010000000 = 1%)\"),\n        requireAuth: z.boolean()\n            .default(false)\n            .describe(\"Require authorization for trust lines\"),\n        requireDest: z.boolean()\n            .default(false)\n            .describe(\"Require destination tag\"),\n        disallowXRP: z.boolean()\n            .default(false)\n            .describe(\"Disallow XRP payments\"),\n        globalFreeze: z.boolean()\n            .default(false)\n            .describe(\"Enable global freeze\"),\n        noFreeze: z.boolean()\n            .default(false)\n            .describe(\"Disable freeze functionality\"),\n        defaultRipple: z.boolean()\n            .default(false)\n            .describe(\"Enable default ripple\")\n    },\n    handler: async (agent: Agent, input: Record<string, any>) => {\n        try {\n            const result = await agent.createToken(input);\n            return result;\n        } catch (error) {\n            return {\n                status: \"error\",\n                message: error instanceof Error ? error.message : \"Unknown error occurred\"\n            };\n        }\n    },\n};\n","import { z } from \"zod\";\nimport { Agent } from \"../../agent\";\nimport { type McpTool } from \"../../types\";\n\nexport const SetTrustLineTool: McpTool = {\n    name: \"xrpl_set_trust_line\",\n    description: \"Set a trust line for a token\",\n    schema: {\n        currency: z.string()\n            .regex(/^[A-Z0-9]{3}$/)\n            .describe(\"Currency code for the token (3 characters)\"),\n        issuer: z.string()\n            .regex(/^r[a-zA-Z0-9]{24,34}$/)\n            .describe(\"Token issuer address\"),\n        limit: z.string()\n            .regex(/^\\d+(\\.\\d+)?$/)\n            .describe(\"Trust limit amount\")\n    },\n    handler: async (agent: Agent, input: Record<string, any>) => {\n        try {\n            const result = await agent.setTrustLine(input.currency, input.issuer, input.limit);\n            return result;\n        } catch (error) {\n            return {\n                status: \"error\",\n                message: error instanceof Error ? error.message : \"Unknown error occurred\"\n            };\n        }\n    },\n};\n","import { z } from \"zod\";\nimport { Agent } from \"../../agent\";\nimport { type McpTool } from \"../../types\";\n\nexport const MintNFTokenTool: McpTool = {\n    name: \"xrpl_mint_nftoken\",\n    description: \"Mint a new NFToken\",\n    schema: {\n        uri: z.string()\n            .url()\n            .max(512)\n            .optional()\n            .describe(\"URI for the NFToken metadata\"),\n        flags: z.number()\n            .int()\n            .min(0)\n            .max(15)\n            .optional()\n            .describe(\"NFToken flags (0-15)\"),\n        transferFee: z.number()\n            .int()\n            .min(0)\n            .max(50000)\n            .optional()\n            .describe(\"Transfer fee (0-50000, representing 0-50%)\"),\n        taxon: z.number()\n            .int()\n            .min(0)\n            .max(4294967295)\n            .optional()\n            .describe(\"NFToken taxon\")\n    },\n    handler: async (agent: Agent, input: Record<string, any>) => {\n        try {\n            const result = await agent.mintNFToken(input);\n            return result;\n        } catch (error) {\n            return {\n                status: \"error\",\n                message: error instanceof Error ? error.message : \"Unknown error occurred\"\n            };\n        }\n    },\n};\n","import { z } from \"zod\";\nimport { Agent } from \"../../agent\";\nimport { type McpTool } from \"../../types\";\n\nexport const BurnNFTokenTool: McpTool = {\n    name: \"xrpl_burn_nftoken\",\n    description: \"Burn an NFToken\",\n    schema: {\n        nftokenID: z.string()\n            .regex(/^[A-F0-9]{64}$/i)\n            .describe(\"NFToken ID to burn (64 hex characters)\")\n    },\n    handler: async (agent: Agent, input: Record<string, any>) => {\n        try {\n            const result = await agent.burnNFToken(input.nftokenID);\n            return result;\n        } catch (error) {\n            return {\n                status: \"error\",\n                message: error instanceof Error ? error.message : \"Unknown error occurred\"\n            };\n        }\n    },\n};\n","import { z } from \"zod\";\nimport { Agent } from \"../../agent\";\nimport { type McpTool } from \"../../types\";\n\nexport const CreateOfferTool: McpTool = {\n    name: \"xrpl_create_offer\",\n    description: \"Create a trading offer on the DEX\",\n    schema: {\n        takerGets: z.union([\n            z.string().describe(\"Amount of XRP in drops\"),\n            z.object({\n                currency: z.string().regex(/^[A-Z0-9]{3}$/),\n                value: z.string().regex(/^\\d+(\\.\\d+)?$/),\n                issuer: z.string().regex(/^r[a-zA-Z0-9]{24,34}$/)\n            })\n        ]).describe(\"What the taker gets\"),\n        takerPays: z.union([\n            z.string().describe(\"Amount of XRP in drops\"),\n            z.object({\n                currency: z.string().regex(/^[A-Z0-9]{3}$/),\n                value: z.string().regex(/^\\d+(\\.\\d+)?$/),\n                issuer: z.string().regex(/^r[a-zA-Z0-9]{24,34}$/)\n            })\n        ]).describe(\"What the taker pays\"),\n        expiration: z.number()\n            .int()\n            .min(0)\n            .optional()\n            .describe(\"Offer expiration time (XRPL timestamp)\")\n    },\n    handler: async (agent: Agent, input: Record<string, any>) => {\n        try {\n            const result = await agent.createOffer(input);\n            return result;\n        } catch (error) {\n            return {\n                status: \"error\",\n                message: error instanceof Error ? error.message : \"Unknown error occurred\"\n            };\n        }\n    },\n};\n","import { z } from \"zod\";\nimport { Agent } from \"../../agent\";\nimport { type McpTool } from \"../../types\";\n\nexport const CancelOfferTool: McpTool = {\n    name: \"xrpl_cancel_offer\",\n    description: \"Cancel an existing offer\",\n    schema: {\n        offerSequence: z.number()\n            .int()\n            .positive()\n            .describe(\"Sequence number of the offer to cancel\")\n    },\n    handler: async (agent: Agent, input: Record<string, any>) => {\n        try {\n            const result = await agent.cancelOffer(input.offerSequence);\n            return result;\n        } catch (error) {\n            return {\n                status: \"error\",\n                message: error instanceof Error ? error.message : \"Unknown error occurred\"\n            };\n        }\n    },\n};\n","import { z } from \"zod\";\nimport { Agent } from \"../../agent\";\nimport { type McpTool } from \"../../types\";\n\nexport const GetTransactionTool: McpTool = {\n    name: \"xrpl_get_transaction\",\n    description: \"Get transaction details by hash\",\n    schema: {\n        hash: z.string()\n            .regex(/^[A-F0-9]{64}$/i)\n            .describe(\"Transaction hash (64 hex characters)\")\n    },\n    handler: async (agent: Agent, input: Record<string, any>) => {\n        try {\n            const transaction = await agent.getTransaction(input.hash);\n            return {\n                status: \"success\",\n                transaction\n            };\n        } catch (error) {\n            return {\n                status: \"error\",\n                message: error instanceof Error ? error.message : \"Unknown error occurred\"\n            };\n        }\n    },\n};\n","import { z } from \"zod\";\nimport { Agent } from \"../../agent\";\nimport { type McpTool } from \"../../types\";\n\nexport const GetRecentTransactionsTool: McpTool = {\n    name: \"xrpl_get_recent_transactions\",\n    description: \"Get recent transactions for an account\",\n    schema: {\n        address: z.string()\n            .regex(/^r[a-zA-Z0-9]{24,34}$/)\n            .optional()\n            .describe(\"Account address (optional, defaults to wallet address)\"),\n        limit: z.number()\n            .int()\n            .min(1)\n            .max(100)\n            .default(10)\n            .describe(\"Number of transactions to retrieve (default: 10, max: 100)\")\n    },\n    handler: async (agent: Agent, input: Record<string, any>) => {\n        try {\n            const transactions = await agent.getRecentTransactions(input.address, input.limit);\n            return {\n                status: \"success\",\n                transactions\n            };\n        } catch (error) {\n            return {\n                status: \"error\",\n                message: error instanceof Error ? error.message : \"Unknown error occurred\"\n            };\n        }\n    },\n};\n","import { z } from \"zod\";\nimport { Agent } from \"../../agent\";\nimport { type McpTool } from \"../../types\";\n\nexport const GetOrderBookTool: McpTool = {\n    name: \"xrpl_get_order_book\",\n    description: \"Get order book for a trading pair\",\n    schema: {\n        takerGets: z.union([\n            z.literal(\"XRP\").describe(\"XRP currency\"),\n            z.object({\n                currency: z.string().regex(/^[A-Z0-9]{3}$/),\n                issuer: z.string().regex(/^r[a-zA-Z0-9]{24,34}$/)\n            })\n        ]).describe(\"Base currency (what taker gets)\"),\n        takerPays: z.union([\n            z.literal(\"XRP\").describe(\"XRP currency\"),\n            z.object({\n                currency: z.string().regex(/^[A-Z0-9]{3}$/),\n                issuer: z.string().regex(/^r[a-zA-Z0-9]{24,34}$/)\n            })\n        ]).describe(\"Quote currency (what taker pays)\"),\n        limit: z.number()\n            .int()\n            .min(1)\n            .max(100)\n            .default(20)\n            .describe(\"Number of offers to retrieve (default: 20, max: 100)\")\n    },\n    handler: async (agent: Agent, input: Record<string, any>) => {\n        try {\n            const { getOrderBook } = await import('../../tools/dex/orderbook');\n            \n            // Convert 'XRP' string to proper format\n            const takerGets = input.takerGets === 'XRP' ? { currency: 'XRP' } : input.takerGets;\n            const takerPays = input.takerPays === 'XRP' ? { currency: 'XRP' } : input.takerPays;\n            \n            const orderBook = await getOrderBook(agent, takerGets, takerPays, input.limit);\n            return {\n                status: \"success\",\n                orderBook\n            };\n        } catch (error) {\n            return {\n                status: \"error\",\n                message: error instanceof Error ? error.message : \"Unknown error occurred\"\n            };\n        }\n    },\n};\n","import { z } from \"zod\";\nimport { Agent } from \"../../agent\";\nimport { type McpTool } from \"../../types\";\n\nexport const GetAccountOffersTool: McpTool = {\n    name: \"xrpl_get_account_offers\",\n    description: \"Get all active offers for an account\",\n    schema: {\n        address: z.string()\n            .regex(/^r[a-zA-Z0-9]{24,34}$/)\n            .optional()\n            .describe(\"Account address (optional, defaults to wallet address)\")\n    },\n    handler: async (agent: Agent, input: Record<string, any>) => {\n        try {\n            const { getAccountOffers } = await import('../../tools/dex/orderbook');\n            const offers = await getAccountOffers(agent, input.address || agent.walletAddress);\n            return {\n                status: \"success\",\n                offers\n            };\n        } catch (error) {\n            return {\n                status: \"error\",\n                message: error instanceof Error ? error.message : \"Unknown error occurred\"\n            };\n        }\n    },\n};\n","// XRPL Core Tools\nimport { GetWalletAddressTool } from \"./xrpl/get_wallet_address_tool\";\nimport { GetAccountInfoTool } from \"./xrpl/get_account_info_tool\";\nimport { GetBalancesTool } from \"./xrpl/get_balances_tool\";\nimport { SendPaymentTool } from \"./xrpl/send_payment_tool\";\n\n// Token Tools\nimport { CreateTokenTool } from \"./token/create_token_tool\";\nimport { SetTrustLineTool } from \"./token/set_trust_line_tool\";\nimport { MintNFTokenTool } from \"./token/mint_nftoken_tool\";\nimport { BurnNFTokenTool } from \"./token/burn_nftoken_tool\";\n\n// Transaction Tools\nimport { CreateOfferTool } from \"./transaction/create_offer_tool\";\nimport { CancelOfferTool } from \"./transaction/cancel_offer_tool\";\nimport { GetTransactionTool } from \"./transaction/get_transaction_tool\";\nimport { GetRecentTransactionsTool } from \"./transaction/get_recent_transactions_tool\";\n\n// DEX Tools\nimport { GetOrderBookTool } from \"./dex/get_order_book_tool\";\nimport { GetAccountOffersTool } from \"./dex/get_account_offers_tool\";\n\nexport const XrplMcpTools = {\n    // XRPL Core\n    \"GetWalletAddressTool\": GetWalletAddressTool,\n    \"GetAccountInfoTool\": GetAccountInfoTool,\n    \"GetBalancesTool\": GetBalancesTool,\n    \"SendPaymentTool\": SendPaymentTool,\n    \n    // Token Management\n    \"CreateTokenTool\": CreateTokenTool,\n    \"SetTrustLineTool\": SetTrustLineTool,\n    \"MintNFTokenTool\": MintNFTokenTool,\n    \"BurnNFTokenTool\": BurnNFTokenTool,\n    \n    // Trading & Transactions\n    \"CreateOfferTool\": CreateOfferTool,\n    \"CancelOfferTool\": CancelOfferTool,\n    \"GetTransactionTool\": GetTransactionTool,\n    \"GetRecentTransactionsTool\": GetRecentTransactionsTool,\n    \n    // DEX & Order Book\n    \"GetOrderBookTool\": GetOrderBookTool,\n    \"GetAccountOffersTool\": GetAccountOffersTool\n};\n","import { Client, Wallet, xrpToDrops, dropsToXrp } from 'xrpl';\nimport { AccountInfo, TokenBalance, TransactionResponse, PaymentParams, TokenParams, NFTokenParams, OfferParams, TrustLine, NFToken } from '../types';\nimport { getAccountInfo } from '../tools/xrpl/account';\nimport { getBalances } from '../tools/xrpl/balance';\nimport { sendPayment } from '../tools/xrpl/payment';\nimport { createToken } from '../tools/token/create';\nimport { setTrustLine } from '../tools/token/trustline';\nimport { mintNFToken, burnNFToken } from '../tools/token/nft';\nimport { createOffer, cancelOffer } from '../tools/transaction/offer';\nimport { getTransactionInfo, getAccountTransactions } from '../tools/transaction/management';\nimport { getOrderBook, getAccountOffers } from '../tools/dex/orderbook';\nimport { getXrplConfig } from '../config';\nimport { NETWORKS } from '../constants';\n\nexport class Agent {\n    public client: Client;\n    public wallet: Wallet;\n    public walletAddress: string;\n    public network: 'testnet' | 'mainnet' | 'devnet';\n\n    constructor() {\n        const config = getXrplConfig();\n        \n        // Determine server URL\n        const serverUrl = NETWORKS[config.network];\n        \n        this.client = new Client(serverUrl);\n        this.network = config.network;\n        \n        // Initialize wallet from private key\n        this.wallet = Wallet.fromSeed(config.privateKey);\n        this.walletAddress = this.wallet.address;\n    }\n\n    async connect(): Promise<void> {\n        if (!this.client.isConnected()) {\n            await this.client.connect();\n        }\n    }\n\n    async disconnect(): Promise<void> {\n        if (this.client.isConnected()) {\n            await this.client.disconnect();\n        }\n    }\n\n    async getWalletAddress(): Promise<string> {\n        return this.walletAddress;\n    }\n\n    async getAccountInfo(address?: string): Promise<AccountInfo> {\n        await this.connect();\n        return getAccountInfo(this, address || this.walletAddress);\n    }\n\n    async getBalances(address?: string): Promise<TokenBalance[]> {\n        await this.connect();\n        return getBalances(this, address || this.walletAddress);\n    }\n\n    async sendPayment(params: PaymentParams): Promise<TransactionResponse> {\n        await this.connect();\n        return sendPayment(this, params);\n    }\n\n    async createToken(params: any): Promise<TransactionResponse> {\n        await this.connect();\n        return createToken(this, params);\n    }\n\n    async setTrustLine(currency: string, issuer: string, limit: string): Promise<TransactionResponse> {\n        await this.connect();\n        return setTrustLine(this, currency, issuer, limit);\n    }\n\n    async mintNFToken(params: NFTokenParams): Promise<TransactionResponse> {\n        await this.connect();\n        return mintNFToken(this, params);\n    }\n\n    async burnNFToken(nftokenID: string): Promise<TransactionResponse> {\n        await this.connect();\n        return burnNFToken(this, nftokenID);\n    }\n\n    async createOffer(params: any): Promise<TransactionResponse> {\n        await this.connect();\n        return createOffer(this, params);\n    }\n\n    async cancelOffer(offerSequence: number): Promise<TransactionResponse> {\n        await this.connect();\n        return cancelOffer(this, offerSequence);\n    }\n\n    async getTransaction(hash: string): Promise<any> {\n        await this.connect();\n        return getTransactionInfo(this, hash);\n    }\n\n    async getRecentTransactions(address?: string, limit?: number) {\n        await this.connect();\n        return getAccountTransactions(this, address || this.walletAddress, limit || 10);\n    }\n\n    // DEX methods\n    async getOrderBook(takerGets: any, takerPays: any, limit?: number) {\n        await this.connect();\n        return getOrderBook(this, takerGets, takerPays, limit);\n    }\n\n    async getAccountOffers(address?: string) {\n        await this.connect();\n        return getAccountOffers(this, address || this.walletAddress);\n    }\n\n    // Utility methods\n    xrpToDrops(xrp: string): string {\n        return xrpToDrops(xrp);\n    }\n\n    dropsToXrp(drops: string): string {\n        return `${dropsToXrp(drops)}`;\n    }\n}\n","import { Agent } from '../../agent';\n\nexport async function getAccountInfo(agent: Agent, address: string) {\n    try {\n        const response = await agent.client.request({\n            command: 'account_info',\n            account: address,\n            ledger_index: 'current'\n        });\n\n        return {\n            account: response.result.account_data.Account,\n            balance: response.result.account_data.Balance,\n            flags: response.result.account_data.Flags,\n            ledgerEntryType: response.result.account_data.LedgerEntryType,\n            ownerCount: response.result.account_data.OwnerCount,\n            previousTxnID: response.result.account_data.PreviousTxnID,\n            previousTxnLgrSeq: response.result.account_data.PreviousTxnLgrSeq,\n            sequence: response.result.account_data.Sequence\n        };\n    } catch (error) {\n        throw new Error(`Failed to get account info: ${error instanceof Error ? error.message : 'Unknown error'}`);\n    }\n}\n","import { Agent } from '../../agent';\nimport { TokenBalance } from '../../types';\n\nexport async function getBalances(agent: Agent, address: string): Promise<TokenBalance[]> {\n    try {\n        const balances: TokenBalance[] = [];\n\n        // Get XRP balance\n        const accountInfo = await agent.client.request({\n            command: 'account_info',\n            account: address,\n            ledger_index: 'current'\n        });\n\n        balances.push({\n            currency: 'XRP',\n            value: agent.dropsToXrp(accountInfo.result.account_data.Balance)\n        });\n\n        // Get token balances (trust lines)\n        try {\n            const trustLines = await agent.client.request({\n                command: 'account_lines',\n                account: address,\n                ledger_index: 'current'\n            });\n\n            if (trustLines.result.lines) {\n                for (const line of trustLines.result.lines) {\n                    balances.push({\n                        currency: line.currency,\n                        value: line.balance,\n                        issuer: line.account\n                    });\n                }\n            }\n        } catch (error) {\n            // Trust lines might not exist, which is fine\n        }\n\n        return balances;\n    } catch (error) {\n        throw new Error(`Failed to get balances: ${error instanceof Error ? error.message : 'Unknown error'}`);\n    }\n}\n","import { Agent } from '../../agent';\nimport { PaymentParams, TransactionResponse } from '../../types';\n\nexport async function sendPayment(agent: Agent, params: PaymentParams): Promise<TransactionResponse> {\n    try {\n        const payment: any = {\n            TransactionType: 'Payment',\n            Account: agent.walletAddress,\n            Destination: params.destination,\n            Amount: typeof params.amount === 'string' ? agent.xrpToDrops(params.amount) : params.amount,\n            ...(params.destinationTag && { DestinationTag: params.destinationTag })\n        };\n\n        const prepared = await agent.client.autofill(payment);\n        const signed = agent.wallet.sign(prepared);\n        const result: any = await agent.client.submitAndWait(signed.tx_blob);\n\n        return {\n            hash: result.result.hash,\n            status: result.result.meta?.TransactionResult || 'unknown',\n            result: result.result\n        };\n    } catch (error) {\n        return {\n            status: 'error',\n            message: error instanceof Error ? error.message : 'Unknown error occurred'\n        };\n    }\n}\n","import { Agent } from '../../agent';\nimport { TokenParams, TransactionResponse } from '../../types';\n\nexport async function createToken(agent: Agent, params: TokenParams): Promise<TransactionResponse> {\n    try {\n        const accountSet: any = {\n            TransactionType: 'AccountSet',\n            Account: agent.walletAddress,\n            ...(params.domain && { Domain: Buffer.from(params.domain).toString('hex').toUpperCase() }),\n            ...(params.emailHash && { EmailHash: params.emailHash }),\n            ...(params.messageKey && { MessageKey: params.messageKey }),\n            ...(params.transferRate && { TransferRate: params.transferRate }),\n            ...(params.tickSize && { TickSize: params.tickSize })\n        };\n\n        // Set flags for token configuration\n        let setFlag = 0;\n        let clearFlag = 0;\n\n        if (params.requireAuth) setFlag |= 0x00000002;\n        if (params.requireDest) setFlag |= 0x00000001;\n        if (params.disallowXRP) setFlag |= 0x00000008;\n        if (params.globalFreeze) setFlag |= 0x00000080;\n        if (params.noFreeze) setFlag |= 0x00000040;\n        if (params.defaultRipple) setFlag |= 0x00020000;\n\n        if (setFlag > 0) (accountSet as any).SetFlag = setFlag;\n        if (clearFlag > 0) (accountSet as any).ClearFlag = clearFlag;\n\n        const prepared = await agent.client.autofill(accountSet);\n        const signed = agent.wallet.sign(prepared);\n        const result: any = await agent.client.submitAndWait(signed.tx_blob);\n\n        return {\n            hash: result.result.hash,\n            status: result.result.meta?.TransactionResult || 'unknown',\n            result: result.result\n        };\n    } catch (error) {\n        return {\n            status: 'error',\n            message: error instanceof Error ? error.message : 'Unknown error occurred'\n        };\n    }\n}\n","import { Agent } from '../../agent';\nimport { TransactionResponse } from '../../types';\n\nexport async function setTrustLine(agent: Agent, currency: string, issuer: string, limit: string): Promise<TransactionResponse> {\n    try {\n        const trustSet: any = {\n            TransactionType: 'TrustSet',\n            Account: agent.walletAddress,\n            LimitAmount: {\n                currency: currency,\n                issuer: issuer,\n                value: limit\n            }\n        };\n\n        const prepared = await agent.client.autofill(trustSet);\n        const signed = agent.wallet.sign(prepared);\n        const result: any = await agent.client.submitAndWait(signed.tx_blob);\n\n        return {\n            hash: result.result.hash,\n            status: result.result.meta?.TransactionResult || 'unknown',\n            result: result.result\n        };\n    } catch (error) {\n        return {\n            status: 'error',\n            message: error instanceof Error ? error.message : 'Unknown error occurred'\n        };\n    }\n}\n","import { Agent } from '../../agent';\nimport { NFTokenParams, TransactionResponse } from '../../types';\n\nexport async function mintNFToken(agent: Agent, params: NFTokenParams): Promise<TransactionResponse> {\n    try {\n        const nftokenMint: any = {\n            TransactionType: 'NFTokenMint',\n            Account: agent.walletAddress,\n            ...(params.uri && { URI: Buffer.from(params.uri).toString('hex').toUpperCase() }),\n            ...(params.flags && { Flags: params.flags }),\n            ...(params.transferFee && { TransferFee: params.transferFee }),\n            ...(params.taxon && { NFTokenTaxon: params.taxon })\n        };\n\n        const prepared = await agent.client.autofill(nftokenMint);\n        const signed = agent.wallet.sign(prepared);\n        const result: any = await agent.client.submitAndWait(signed.tx_blob);\n\n        return {\n            hash: result.result.hash,\n            status: result.result.meta?.TransactionResult || 'unknown',\n            result: result.result\n        };\n    } catch (error) {\n        return {\n            status: 'error',\n            message: error instanceof Error ? error.message : 'Unknown error occurred'\n        };\n    }\n}\n\nexport async function burnNFToken(agent: Agent, nftokenID: string): Promise<TransactionResponse> {\n    try {\n        const nftokenBurn: any = {\n            TransactionType: 'NFTokenBurn',\n            Account: agent.walletAddress,\n            NFTokenID: nftokenID\n        };\n\n        const prepared = await agent.client.autofill(nftokenBurn);\n        const signed = agent.wallet.sign(prepared);\n        const result: any = await agent.client.submitAndWait(signed.tx_blob);\n\n        return {\n            hash: result.result.hash,\n            status: result.result.meta?.TransactionResult || 'unknown',\n            result: result.result\n        };\n    } catch (error) {\n        return {\n            status: 'error',\n            message: error instanceof Error ? error.message : 'Unknown error occurred'\n        };\n    }\n}\n","import { Agent } from '../../agent';\nimport { OfferParams, TransactionResponse } from '../../types';\n\nexport async function createOffer(agent: Agent, params: OfferParams): Promise<TransactionResponse> {\n    try {\n        const offerCreate: any = {\n            TransactionType: 'OfferCreate',\n            Account: agent.walletAddress,\n            TakerGets: params.takerGets,\n            TakerPays: params.takerPays,\n            ...(params.expiration && { Expiration: params.expiration }),\n            ...(params.offerSequence && { OfferSequence: params.offerSequence })\n        };\n\n        const prepared = await agent.client.autofill(offerCreate);\n        const signed = agent.wallet.sign(prepared);\n        const result: any = await agent.client.submitAndWait(signed.tx_blob);\n\n        return {\n            hash: result.result.hash,\n            status: result.result.meta?.TransactionResult || 'unknown',\n            result: result.result\n        };\n    } catch (error) {\n        return {\n            status: 'error',\n            message: error instanceof Error ? error.message : 'Unknown error occurred'\n        };\n    }\n}\n\nexport async function cancelOffer(agent: Agent, offerSequence: number): Promise<TransactionResponse> {\n    try {\n        const offerCancel: any = {\n            TransactionType: 'OfferCancel',\n            Account: agent.walletAddress,\n            OfferSequence: offerSequence\n        };\n\n        const prepared = await agent.client.autofill(offerCancel);\n        const signed = agent.wallet.sign(prepared);\n        const result: any = await agent.client.submitAndWait(signed.tx_blob);\n\n        return {\n            hash: result.result.hash,\n            status: result.result.meta?.TransactionResult || 'unknown',\n            result: result.result\n        };\n    } catch (error) {\n        return {\n            status: 'error',\n            message: error instanceof Error ? error.message : 'Unknown error occurred'\n        };\n    }\n}\n","import { Agent } from '../../agent';\n\nexport async function getTransactionInfo(agent: Agent, hash: string): Promise<any> {\n    try {\n        const response = await agent.client.request({\n            command: 'tx',\n            transaction: hash\n        });\n\n        return response.result;\n    } catch (error) {\n        throw new Error(`Failed to get transaction info: ${error instanceof Error ? error.message : 'Unknown error'}`);\n    }\n}\n\nexport async function getAccountTransactions(agent: Agent, address: string, limit: number = 10) {\n    try {\n        const response = await agent.client.request({\n            command: 'account_tx',\n            account: address,\n            ledger_index_min: -1,\n            ledger_index_max: -1,\n            limit: limit,\n            binary: false\n        });\n\n        return response.result.transactions || [];\n    } catch (error) {\n        throw new Error(`Failed to get account transactions: ${error instanceof Error ? error.message : 'Unknown error'}`);\n    }\n}\n","export const NETWORKS = {\n    testnet: 'wss://s.altnet.rippletest.net:51233',\n    mainnet: 'wss://xrplcluster.com',\n    devnet: 'wss://s.devnet.rippletest.net:51233'\n} as const;\n\nexport const MEMO_TYPES = {\n    TEXT: 'text/plain',\n    JSON: 'application/json',\n    URL: 'text/uri-list'\n} as const;\n\nexport const XRP_DECIMAL_PLACES = 6;\nexport const TOKEN_DECIMAL_PLACES = 15;\n\nexport const TRANSACTION_TYPES = {\n    PAYMENT: 'Payment',\n    OFFER_CREATE: 'OfferCreate',\n    OFFER_CANCEL: 'OfferCancel',\n    TRUST_SET: 'TrustSet',\n    ACCOUNT_SET: 'AccountSet',\n    NFTOKEN_MINT: 'NFTokenMint',\n    NFTOKEN_BURN: 'NFTokenBurn',\n    NFTOKEN_CREATE_OFFER: 'NFTokenCreateOffer',\n    NFTOKEN_ACCEPT_OFFER: 'NFTokenAcceptOffer',\n    NFTOKEN_CANCEL_OFFER: 'NFTokenCancelOffer'\n} as const;\n\nexport const FLAGS = {\n    ACCOUNT_SET: {\n        REQUIRE_DEST_TAG: 0x00000001,\n        REQUIRE_AUTH: 0x00000002,\n        DISALLOW_XRP: 0x00000008,\n        DISABLE_MASTER: 0x00000010,\n        ACCOUNT_TXN_ID: 0x00000020,\n        NO_FREEZE: 0x00000040,\n        GLOBAL_FREEZE: 0x00000080,\n        DEFAULT_RIPPLE: 0x00020000\n    },\n    TRUST_SET: {\n        SET_F_RIPPLE: 0x00020000,\n        CLEAR_NO_RIPPLE: 0x00020000,\n        SET_NO_RIPPLE: 0x00000000,\n        CLEAR_F_RIPPLE: 0x00000000\n    },\n    NFTOKEN: {\n        BURNABLE: 0x00000001,\n        ONLY_XRP: 0x00000002,\n        TRUST_LINE: 0x00000004,\n        TRANSFERABLE: 0x00000008\n    }\n} as const;\n"],"mappings":"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","names":["z","z","z","z","z","z","z","z","z","z","z","getOrderBook","z","getAccountOffers"]}