zano-mcp 0.1.0

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.
Files changed (113) hide show
  1. package/README.md +195 -0
  2. package/dist/clients/daemon.d.ts +6 -0
  3. package/dist/clients/daemon.d.ts.map +1 -0
  4. package/dist/clients/daemon.js +30 -0
  5. package/dist/clients/daemon.js.map +1 -0
  6. package/dist/clients/trade.d.ts +8 -0
  7. package/dist/clients/trade.d.ts.map +1 -0
  8. package/dist/clients/trade.js +33 -0
  9. package/dist/clients/trade.js.map +1 -0
  10. package/dist/clients/wallet.d.ts +8 -0
  11. package/dist/clients/wallet.d.ts.map +1 -0
  12. package/dist/clients/wallet.js +45 -0
  13. package/dist/clients/wallet.js.map +1 -0
  14. package/dist/config.d.ts +30 -0
  15. package/dist/config.d.ts.map +1 -0
  16. package/dist/config.js +42 -0
  17. package/dist/config.js.map +1 -0
  18. package/dist/index.d.ts +3 -0
  19. package/dist/index.d.ts.map +1 -0
  20. package/dist/index.js +15 -0
  21. package/dist/index.js.map +1 -0
  22. package/dist/logger.d.ts +9 -0
  23. package/dist/logger.d.ts.map +1 -0
  24. package/dist/logger.js +28 -0
  25. package/dist/logger.js.map +1 -0
  26. package/dist/prompts/index.d.ts +4 -0
  27. package/dist/prompts/index.d.ts.map +1 -0
  28. package/dist/prompts/index.js +54 -0
  29. package/dist/prompts/index.js.map +1 -0
  30. package/dist/resources/index.d.ts +4 -0
  31. package/dist/resources/index.d.ts.map +1 -0
  32. package/dist/resources/index.js +60 -0
  33. package/dist/resources/index.js.map +1 -0
  34. package/dist/server.d.ts +4 -0
  35. package/dist/server.d.ts.map +1 -0
  36. package/dist/server.js +22 -0
  37. package/dist/server.js.map +1 -0
  38. package/dist/tools/assets/definitions.d.ts +127 -0
  39. package/dist/tools/assets/definitions.d.ts.map +1 -0
  40. package/dist/tools/assets/definitions.js +43 -0
  41. package/dist/tools/assets/definitions.js.map +1 -0
  42. package/dist/tools/assets/handlers.d.ts +21 -0
  43. package/dist/tools/assets/handlers.d.ts.map +1 -0
  44. package/dist/tools/assets/handlers.js +115 -0
  45. package/dist/tools/assets/handlers.js.map +1 -0
  46. package/dist/tools/daemon/definitions.d.ts +139 -0
  47. package/dist/tools/daemon/definitions.d.ts.map +1 -0
  48. package/dist/tools/daemon/definitions.js +55 -0
  49. package/dist/tools/daemon/definitions.js.map +1 -0
  50. package/dist/tools/daemon/handlers.d.ts +30 -0
  51. package/dist/tools/daemon/handlers.d.ts.map +1 -0
  52. package/dist/tools/daemon/handlers.js +274 -0
  53. package/dist/tools/daemon/handlers.js.map +1 -0
  54. package/dist/tools/register.d.ts +4 -0
  55. package/dist/tools/register.d.ts.map +1 -0
  56. package/dist/tools/register.js +93 -0
  57. package/dist/tools/register.js.map +1 -0
  58. package/dist/tools/swap/definitions.d.ts +103 -0
  59. package/dist/tools/swap/definitions.d.ts.map +1 -0
  60. package/dist/tools/swap/definitions.js +28 -0
  61. package/dist/tools/swap/definitions.js.map +1 -0
  62. package/dist/tools/swap/handlers.d.ts +17 -0
  63. package/dist/tools/swap/handlers.d.ts.map +1 -0
  64. package/dist/tools/swap/handlers.js +98 -0
  65. package/dist/tools/swap/handlers.js.map +1 -0
  66. package/dist/tools/trade/definitions.d.ts +137 -0
  67. package/dist/tools/trade/definitions.d.ts.map +1 -0
  68. package/dist/tools/trade/definitions.js +48 -0
  69. package/dist/tools/trade/definitions.js.map +1 -0
  70. package/dist/tools/trade/handlers.d.ts +23 -0
  71. package/dist/tools/trade/handlers.d.ts.map +1 -0
  72. package/dist/tools/trade/handlers.js +196 -0
  73. package/dist/tools/trade/handlers.js.map +1 -0
  74. package/dist/tools/wallet/definitions.d.ts +158 -0
  75. package/dist/tools/wallet/definitions.d.ts.map +1 -0
  76. package/dist/tools/wallet/definitions.js +73 -0
  77. package/dist/tools/wallet/definitions.js.map +1 -0
  78. package/dist/tools/wallet/handlers.d.ts +28 -0
  79. package/dist/tools/wallet/handlers.d.ts.map +1 -0
  80. package/dist/tools/wallet/handlers.js +214 -0
  81. package/dist/tools/wallet/handlers.js.map +1 -0
  82. package/dist/utils/constants.d.ts +25 -0
  83. package/dist/utils/constants.d.ts.map +1 -0
  84. package/dist/utils/constants.js +19 -0
  85. package/dist/utils/constants.js.map +1 -0
  86. package/dist/utils/formatting.d.ts +14 -0
  87. package/dist/utils/formatting.d.ts.map +1 -0
  88. package/dist/utils/formatting.js +68 -0
  89. package/dist/utils/formatting.js.map +1 -0
  90. package/package.json +43 -0
  91. package/src/clients/daemon.ts +41 -0
  92. package/src/clients/trade.ts +51 -0
  93. package/src/clients/wallet.ts +59 -0
  94. package/src/config.ts +56 -0
  95. package/src/index.ts +20 -0
  96. package/src/logger.ts +33 -0
  97. package/src/prompts/index.ts +80 -0
  98. package/src/resources/index.ts +73 -0
  99. package/src/server.ts +26 -0
  100. package/src/tools/assets/definitions.ts +58 -0
  101. package/src/tools/assets/handlers.ts +140 -0
  102. package/src/tools/daemon/definitions.ts +86 -0
  103. package/src/tools/daemon/handlers.ts +349 -0
  104. package/src/tools/register.ts +194 -0
  105. package/src/tools/swap/definitions.ts +36 -0
  106. package/src/tools/swap/handlers.ts +139 -0
  107. package/src/tools/trade/definitions.ts +67 -0
  108. package/src/tools/trade/handlers.ts +264 -0
  109. package/src/tools/wallet/definitions.ts +92 -0
  110. package/src/tools/wallet/handlers.ts +268 -0
  111. package/src/utils/constants.ts +24 -0
  112. package/src/utils/formatting.ts +78 -0
  113. package/tsconfig.json +19 -0
@@ -0,0 +1,98 @@
1
+ import { humanToAtomic, atomicToHuman, formatAssetAmount, getAssetInfo, } from "../../utils/formatting.js";
2
+ import { ZANO_DECIMALS, DEFAULT_FEE } from "../../utils/constants.js";
3
+ function textResult(text) {
4
+ return { content: [{ type: "text", text }] };
5
+ }
6
+ function errorResult(error) {
7
+ const msg = error instanceof Error ? error.message : String(error);
8
+ return textResult(`Error: ${msg}`);
9
+ }
10
+ export class SwapHandlers {
11
+ client;
12
+ constructor(client) {
13
+ this.client = client;
14
+ }
15
+ async createSwapProposal(input) {
16
+ try {
17
+ const toFinalizer = input.to_finalizer.map((a) => {
18
+ const info = getAssetInfo(a.asset_id);
19
+ const decimals = info?.decimals ?? ZANO_DECIMALS;
20
+ return {
21
+ asset_id: a.asset_id,
22
+ amount: humanToAtomic(a.amount, decimals),
23
+ };
24
+ });
25
+ const toInitiator = input.to_initiator.map((a) => {
26
+ const info = getAssetInfo(a.asset_id);
27
+ const decimals = info?.decimals ?? ZANO_DECIMALS;
28
+ return {
29
+ asset_id: a.asset_id,
30
+ amount: humanToAtomic(a.amount, decimals),
31
+ };
32
+ });
33
+ const fee = input.fee
34
+ ? humanToAtomic(input.fee, ZANO_DECIMALS)
35
+ : String(DEFAULT_FEE);
36
+ const res = await this.client.call("ionic_swap_generate_proposal", {
37
+ proposal: {
38
+ to_finalizer: toFinalizer,
39
+ to_initiator: toInitiator,
40
+ mixins: input.mixins,
41
+ fee_paid_by_a: Number(fee),
42
+ expiration_time: input.expiration_time,
43
+ },
44
+ destination_address: input.destination_address,
45
+ });
46
+ const lines = [
47
+ "Swap Proposal Created",
48
+ "",
49
+ "You send (to finalizer):",
50
+ ];
51
+ for (const a of input.to_finalizer) {
52
+ lines.push(` ${a.amount} ${getAssetInfo(a.asset_id)?.ticker || a.asset_id.slice(0, 12)}`);
53
+ }
54
+ lines.push("", "You receive (from finalizer):");
55
+ for (const a of input.to_initiator) {
56
+ lines.push(` ${a.amount} ${getAssetInfo(a.asset_id)?.ticker || a.asset_id.slice(0, 12)}`);
57
+ }
58
+ lines.push("", `Hex proposal: ${res.hex_raw_proposal.slice(0, 40)}...`);
59
+ lines.push(`Full hex length: ${res.hex_raw_proposal.length} chars`);
60
+ return textResult(lines.join("\n"));
61
+ }
62
+ catch (e) {
63
+ return errorResult(e);
64
+ }
65
+ }
66
+ async getSwapInfo(input) {
67
+ try {
68
+ const res = await this.client.call("ionic_swap_get_proposal_info", { hex_raw_proposal: input.hex_raw_proposal });
69
+ const proposal = res.proposal;
70
+ const lines = ["Swap Proposal Details"];
71
+ const toFinalizer = (proposal.to_finalizer || []);
72
+ const toInitiator = (proposal.to_initiator || []);
73
+ lines.push("", "Initiator sends (to finalizer):");
74
+ for (const a of toFinalizer) {
75
+ lines.push(` ${formatAssetAmount(a.amount, a.asset_id)}`);
76
+ }
77
+ lines.push("", "Finalizer sends (to initiator):");
78
+ for (const a of toInitiator) {
79
+ lines.push(` ${formatAssetAmount(a.amount, a.asset_id)}`);
80
+ }
81
+ lines.push("", `Fee: ${proposal.fee_paid_by_a ? atomicToHuman(BigInt(String(proposal.fee_paid_by_a)), ZANO_DECIMALS) + " ZANO" : "N/A"}`, `Mixins: ${proposal.mixins || "N/A"}`, `Expiration: ${proposal.expiration_time === 0 ? "None" : String(proposal.expiration_time)}`);
82
+ return textResult(lines.join("\n"));
83
+ }
84
+ catch (e) {
85
+ return errorResult(e);
86
+ }
87
+ }
88
+ async acceptSwap(input) {
89
+ try {
90
+ const res = await this.client.call("ionic_swap_accept_proposal", { hex_raw_proposal: input.hex_raw_proposal });
91
+ return textResult(`Swap accepted and executed!\nTransaction ID: ${res.result_tx_id}`);
92
+ }
93
+ catch (e) {
94
+ return errorResult(e);
95
+ }
96
+ }
97
+ }
98
+ //# sourceMappingURL=handlers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"handlers.js","sourceRoot":"","sources":["../../../src/tools/swap/handlers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,137 @@
1
+ import { z } from "zod";
2
+ export declare const GetTradingPairShape: {
3
+ id: z.ZodNumber;
4
+ };
5
+ export declare const GetOrderBookShape: {
6
+ pairId: z.ZodNumber;
7
+ };
8
+ export declare const DexAuthenticateShape: {
9
+ address: z.ZodString;
10
+ alias: z.ZodOptional<z.ZodString>;
11
+ message: z.ZodString;
12
+ signature: z.ZodString;
13
+ };
14
+ export declare const CreateOrderShape: {
15
+ type: z.ZodEnum<["buy", "sell"]>;
16
+ price: z.ZodString;
17
+ amount: z.ZodString;
18
+ pairId: z.ZodNumber;
19
+ };
20
+ export declare const CancelOrderShape: {
21
+ orderId: z.ZodNumber;
22
+ };
23
+ export declare const GetMyOrdersShape: {
24
+ pairId: z.ZodNumber;
25
+ };
26
+ export declare const ApplyOrderShape: {
27
+ id: z.ZodString;
28
+ connected_order_id: z.ZodString;
29
+ hex_raw_proposal: z.ZodString;
30
+ };
31
+ export declare const ConfirmTradeShape: {
32
+ transactionId: z.ZodNumber;
33
+ };
34
+ export declare const GetActiveTradeShape: {
35
+ firstOrderId: z.ZodNumber;
36
+ secondOrderId: z.ZodNumber;
37
+ };
38
+ export declare const GetTradingPairSchema: z.ZodObject<{
39
+ id: z.ZodNumber;
40
+ }, "strip", z.ZodTypeAny, {
41
+ id: number;
42
+ }, {
43
+ id: number;
44
+ }>;
45
+ export declare const GetOrderBookSchema: z.ZodObject<{
46
+ pairId: z.ZodNumber;
47
+ }, "strip", z.ZodTypeAny, {
48
+ pairId: number;
49
+ }, {
50
+ pairId: number;
51
+ }>;
52
+ export declare const DexAuthenticateSchema: z.ZodObject<{
53
+ address: z.ZodString;
54
+ alias: z.ZodOptional<z.ZodString>;
55
+ message: z.ZodString;
56
+ signature: z.ZodString;
57
+ }, "strip", z.ZodTypeAny, {
58
+ message: string;
59
+ address: string;
60
+ signature: string;
61
+ alias?: string | undefined;
62
+ }, {
63
+ message: string;
64
+ address: string;
65
+ signature: string;
66
+ alias?: string | undefined;
67
+ }>;
68
+ export declare const CreateOrderSchema: z.ZodObject<{
69
+ type: z.ZodEnum<["buy", "sell"]>;
70
+ price: z.ZodString;
71
+ amount: z.ZodString;
72
+ pairId: z.ZodNumber;
73
+ }, "strip", z.ZodTypeAny, {
74
+ type: "buy" | "sell";
75
+ amount: string;
76
+ pairId: number;
77
+ price: string;
78
+ }, {
79
+ type: "buy" | "sell";
80
+ amount: string;
81
+ pairId: number;
82
+ price: string;
83
+ }>;
84
+ export declare const CancelOrderSchema: z.ZodObject<{
85
+ orderId: z.ZodNumber;
86
+ }, "strip", z.ZodTypeAny, {
87
+ orderId: number;
88
+ }, {
89
+ orderId: number;
90
+ }>;
91
+ export declare const GetMyOrdersSchema: z.ZodObject<{
92
+ pairId: z.ZodNumber;
93
+ }, "strip", z.ZodTypeAny, {
94
+ pairId: number;
95
+ }, {
96
+ pairId: number;
97
+ }>;
98
+ export declare const ApplyOrderSchema: z.ZodObject<{
99
+ id: z.ZodString;
100
+ connected_order_id: z.ZodString;
101
+ hex_raw_proposal: z.ZodString;
102
+ }, "strip", z.ZodTypeAny, {
103
+ id: string;
104
+ hex_raw_proposal: string;
105
+ connected_order_id: string;
106
+ }, {
107
+ id: string;
108
+ hex_raw_proposal: string;
109
+ connected_order_id: string;
110
+ }>;
111
+ export declare const ConfirmTradeSchema: z.ZodObject<{
112
+ transactionId: z.ZodNumber;
113
+ }, "strip", z.ZodTypeAny, {
114
+ transactionId: number;
115
+ }, {
116
+ transactionId: number;
117
+ }>;
118
+ export declare const GetActiveTradeSchema: z.ZodObject<{
119
+ firstOrderId: z.ZodNumber;
120
+ secondOrderId: z.ZodNumber;
121
+ }, "strip", z.ZodTypeAny, {
122
+ firstOrderId: number;
123
+ secondOrderId: number;
124
+ }, {
125
+ firstOrderId: number;
126
+ secondOrderId: number;
127
+ }>;
128
+ export type GetTradingPairInput = z.infer<typeof GetTradingPairSchema>;
129
+ export type GetOrderBookInput = z.infer<typeof GetOrderBookSchema>;
130
+ export type DexAuthenticateInput = z.infer<typeof DexAuthenticateSchema>;
131
+ export type CreateOrderInput = z.infer<typeof CreateOrderSchema>;
132
+ export type CancelOrderInput = z.infer<typeof CancelOrderSchema>;
133
+ export type GetMyOrdersInput = z.infer<typeof GetMyOrdersSchema>;
134
+ export type ApplyOrderInput = z.infer<typeof ApplyOrderSchema>;
135
+ export type ConfirmTradeInput = z.infer<typeof ConfirmTradeSchema>;
136
+ export type GetActiveTradeInput = z.infer<typeof GetActiveTradeSchema>;
137
+ //# sourceMappingURL=definitions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"definitions.d.ts","sourceRoot":"","sources":["../../../src/tools/trade/definitions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,mBAAmB;;CAE/B,CAAC;AAEF,eAAO,MAAM,iBAAiB;;CAE7B,CAAC;AAEF,eAAO,MAAM,oBAAoB;;;;;CAKhC,CAAC;AAEF,eAAO,MAAM,gBAAgB;;;;;CAK5B,CAAC;AAEF,eAAO,MAAM,gBAAgB;;CAE5B,CAAC;AAEF,eAAO,MAAM,gBAAgB;;CAE5B,CAAC;AAEF,eAAO,MAAM,eAAe;;;;CAI3B,CAAC;AAEF,eAAO,MAAM,iBAAiB;;CAE7B,CAAC;AAEF,eAAO,MAAM,mBAAmB;;;CAG/B,CAAC;AAGF,eAAO,MAAM,oBAAoB;;;;;;EAAgC,CAAC;AAClE,eAAO,MAAM,kBAAkB;;;;;;EAA8B,CAAC;AAC9D,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;EAAiC,CAAC;AACpE,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;EAA6B,CAAC;AAC5D,eAAO,MAAM,iBAAiB;;;;;;EAA6B,CAAC;AAC5D,eAAO,MAAM,iBAAiB;;;;;;EAA6B,CAAC;AAC5D,eAAO,MAAM,gBAAgB;;;;;;;;;;;;EAA4B,CAAC;AAC1D,eAAO,MAAM,kBAAkB;;;;;;EAA8B,CAAC;AAC9D,eAAO,MAAM,oBAAoB;;;;;;;;;EAAgC,CAAC;AAElE,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AACvE,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AACnE,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AACzE,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AACjE,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AACjE,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AACjE,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAC/D,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AACnE,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC"}
@@ -0,0 +1,48 @@
1
+ import { z } from "zod";
2
+ export const GetTradingPairShape = {
3
+ id: z.number().int().describe("Trading pair ID"),
4
+ };
5
+ export const GetOrderBookShape = {
6
+ pairId: z.number().int().describe("Trading pair ID"),
7
+ };
8
+ export const DexAuthenticateShape = {
9
+ address: z.string().describe("Zano wallet address"),
10
+ alias: z.string().optional().describe("Zano alias (optional)"),
11
+ message: z.string().describe("Message that was signed"),
12
+ signature: z.string().describe("Signature from wallet sign_message"),
13
+ };
14
+ export const CreateOrderShape = {
15
+ type: z.enum(["buy", "sell"]).describe("Order type"),
16
+ price: z.string().describe("Price per unit"),
17
+ amount: z.string().describe("Amount of asset"),
18
+ pairId: z.number().int().describe("Trading pair ID"),
19
+ };
20
+ export const CancelOrderShape = {
21
+ orderId: z.number().int().describe("Order ID to cancel"),
22
+ };
23
+ export const GetMyOrdersShape = {
24
+ pairId: z.number().int().describe("Trading pair ID"),
25
+ };
26
+ export const ApplyOrderShape = {
27
+ id: z.string().describe("Tip ID (from applyTips)"),
28
+ connected_order_id: z.string().describe("Your order ID that the tip matches"),
29
+ hex_raw_proposal: z.string().describe("Encrypted ionic swap proposal hex"),
30
+ };
31
+ export const ConfirmTradeShape = {
32
+ transactionId: z.number().int().describe("Transaction ID to confirm"),
33
+ };
34
+ export const GetActiveTradeShape = {
35
+ firstOrderId: z.number().int().describe("First order ID"),
36
+ secondOrderId: z.number().int().describe("Second order ID"),
37
+ };
38
+ // Schemas and types
39
+ export const GetTradingPairSchema = z.object(GetTradingPairShape);
40
+ export const GetOrderBookSchema = z.object(GetOrderBookShape);
41
+ export const DexAuthenticateSchema = z.object(DexAuthenticateShape);
42
+ export const CreateOrderSchema = z.object(CreateOrderShape);
43
+ export const CancelOrderSchema = z.object(CancelOrderShape);
44
+ export const GetMyOrdersSchema = z.object(GetMyOrdersShape);
45
+ export const ApplyOrderSchema = z.object(ApplyOrderShape);
46
+ export const ConfirmTradeSchema = z.object(ConfirmTradeShape);
47
+ export const GetActiveTradeSchema = z.object(GetActiveTradeShape);
48
+ //# sourceMappingURL=definitions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"definitions.js","sourceRoot":"","sources":["../../../src/tools/trade/definitions.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ import { TradeClient } from "../../clients/trade.js";
2
+ import type { GetTradingPairInput, GetOrderBookInput, DexAuthenticateInput, CreateOrderInput, CancelOrderInput, GetMyOrdersInput, ApplyOrderInput, ConfirmTradeInput, GetActiveTradeInput } from "./definitions.js";
3
+ type ToolResult = {
4
+ content: Array<{
5
+ type: "text";
6
+ text: string;
7
+ }>;
8
+ };
9
+ export declare class TradeHandlers {
10
+ private client;
11
+ constructor(client: TradeClient);
12
+ getTradingPair(input: GetTradingPairInput): Promise<ToolResult>;
13
+ getOrderBook(input: GetOrderBookInput): Promise<ToolResult>;
14
+ dexAuthenticate(input: DexAuthenticateInput): Promise<ToolResult>;
15
+ createOrder(input: CreateOrderInput): Promise<ToolResult>;
16
+ cancelOrder(input: CancelOrderInput): Promise<ToolResult>;
17
+ getMyOrders(input: GetMyOrdersInput): Promise<ToolResult>;
18
+ applyOrder(input: ApplyOrderInput): Promise<ToolResult>;
19
+ confirmTrade(input: ConfirmTradeInput): Promise<ToolResult>;
20
+ getActiveTrade(input: GetActiveTradeInput): Promise<ToolResult>;
21
+ }
22
+ export {};
23
+ //# sourceMappingURL=handlers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"handlers.d.ts","sourceRoot":"","sources":["../../../src/tools/trade/handlers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,KAAK,EACV,mBAAmB,EACnB,iBAAiB,EACjB,oBAAoB,EACpB,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,EAChB,eAAe,EACf,iBAAiB,EACjB,mBAAmB,EACpB,MAAM,kBAAkB,CAAC;AAE1B,KAAK,UAAU,GAAG;IAAE,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAAE,CAAC;AASrE,qBAAa,aAAa;IACxB,OAAO,CAAC,MAAM,CAAc;gBAEhB,MAAM,EAAE,WAAW;IAIzB,cAAc,CAAC,KAAK,EAAE,mBAAmB,GAAG,OAAO,CAAC,UAAU,CAAC;IAuB/D,YAAY,CAAC,KAAK,EAAE,iBAAiB,GAAG,OAAO,CAAC,UAAU,CAAC;IAqD3D,eAAe,CAAC,KAAK,EAAE,oBAAoB,GAAG,OAAO,CAAC,UAAU,CAAC;IAwBjE,WAAW,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAAC,UAAU,CAAC;IAuBzD,WAAW,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAAC,UAAU,CAAC;IAazD,WAAW,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAAC,UAAU,CAAC;IAwCzD,UAAU,CAAC,KAAK,EAAE,eAAe,GAAG,OAAO,CAAC,UAAU,CAAC;IAmBvD,YAAY,CAAC,KAAK,EAAE,iBAAiB,GAAG,OAAO,CAAC,UAAU,CAAC;IAa3D,cAAc,CAAC,KAAK,EAAE,mBAAmB,GAAG,OAAO,CAAC,UAAU,CAAC;CA0BtE"}
@@ -0,0 +1,196 @@
1
+ function textResult(text) {
2
+ return { content: [{ type: "text", text }] };
3
+ }
4
+ function errorResult(error) {
5
+ const msg = error instanceof Error ? error.message : String(error);
6
+ return textResult(`Error: ${msg}`);
7
+ }
8
+ export class TradeHandlers {
9
+ client;
10
+ constructor(client) {
11
+ this.client = client;
12
+ }
13
+ async getTradingPair(input) {
14
+ try {
15
+ const data = await this.client.post("/api/dex/get-pair", { id: input.id });
16
+ const pair = data;
17
+ const first = pair.first_currency || {};
18
+ const second = pair.second_currency || {};
19
+ const lines = [
20
+ `Trading Pair #${pair.id}`,
21
+ ` ${first.code || first.name || "?"} / ${second.code || second.name || "?"}`,
22
+ ` Rate: ${pair.rate}`,
23
+ ` 24h High: ${pair.high}`,
24
+ ` 24h Low: ${pair.low}`,
25
+ ` Volume: ${pair.volume}`,
26
+ ];
27
+ return textResult(lines.join("\n"));
28
+ }
29
+ catch (e) {
30
+ return errorResult(e);
31
+ }
32
+ }
33
+ async getOrderBook(input) {
34
+ try {
35
+ const orders = await this.client.post("/api/orders/get-page", { pairId: input.pairId });
36
+ if (!orders || orders.length === 0) {
37
+ return textResult(`No orders found for pair ${input.pairId}.`);
38
+ }
39
+ const buys = orders.filter((o) => o.type === "buy").sort((a, b) => parseFloat(String(b.price)) - parseFloat(String(a.price)));
40
+ const sells = orders.filter((o) => o.type === "sell").sort((a, b) => parseFloat(String(a.price)) - parseFloat(String(b.price)));
41
+ const lines = [`Order Book for Pair ${input.pairId} (${orders.length} orders):`];
42
+ if (sells.length > 0) {
43
+ lines.push("", " SELLS (asks):");
44
+ for (const o of sells) {
45
+ const user = o.user || {};
46
+ const instant = o.isInstant ? " [INSTANT]" : "";
47
+ lines.push(` ${o.price} | ${o.left} remaining (of ${o.amount}) | ${user.alias || "anon"}${instant}`);
48
+ }
49
+ }
50
+ if (buys.length > 0) {
51
+ lines.push("", " BUYS (bids):");
52
+ for (const o of buys) {
53
+ const user = o.user || {};
54
+ const instant = o.isInstant ? " [INSTANT]" : "";
55
+ lines.push(` ${o.price} | ${o.left} remaining (of ${o.amount}) | ${user.alias || "anon"}${instant}`);
56
+ }
57
+ }
58
+ if (buys.length > 0 && sells.length > 0) {
59
+ const bestBid = parseFloat(String(buys[0].price));
60
+ const bestAsk = parseFloat(String(sells[0].price));
61
+ const spread = bestAsk - bestBid;
62
+ const spreadPct = ((spread / bestAsk) * 100).toFixed(2);
63
+ lines.push("", ` Spread: ${spread.toFixed(8)} (${spreadPct}%)`);
64
+ lines.push(` Best bid: ${bestBid} | Best ask: ${bestAsk}`);
65
+ }
66
+ return textResult(lines.join("\n"));
67
+ }
68
+ catch (e) {
69
+ return errorResult(e);
70
+ }
71
+ }
72
+ async dexAuthenticate(input) {
73
+ try {
74
+ const data = await this.client.post("/api/auth", {
75
+ data: {
76
+ address: input.address,
77
+ alias: input.alias || "",
78
+ message: input.message,
79
+ signature: input.signature,
80
+ },
81
+ neverExpires: true,
82
+ });
83
+ if (data && typeof data === "string") {
84
+ this.client.setToken(data);
85
+ return textResult(`Authenticated with Trade API. Token stored.`);
86
+ }
87
+ return textResult(`Authentication response: ${JSON.stringify(data)}`);
88
+ }
89
+ catch (e) {
90
+ return errorResult(e);
91
+ }
92
+ }
93
+ async createOrder(input) {
94
+ try {
95
+ const data = await this.client.post("/api/orders/create", {
96
+ orderData: {
97
+ type: input.type,
98
+ side: "limit",
99
+ price: input.price,
100
+ amount: input.amount,
101
+ pairId: input.pairId,
102
+ },
103
+ }, true);
104
+ return textResult(`Order created!\n ID: ${data.id}\n Type: ${data.type}\n Price: ${data.price}\n Amount: ${data.amount}\n Status: ${data.status}`);
105
+ }
106
+ catch (e) {
107
+ return errorResult(e);
108
+ }
109
+ }
110
+ async cancelOrder(input) {
111
+ try {
112
+ await this.client.post("/api/orders/cancel", { orderId: input.orderId }, true);
113
+ return textResult(`Order ${input.orderId} cancelled.`);
114
+ }
115
+ catch (e) {
116
+ return errorResult(e);
117
+ }
118
+ }
119
+ async getMyOrders(input) {
120
+ try {
121
+ const data = await this.client.post("/api/orders/get-user-page", { pairId: input.pairId }, true);
122
+ const orders = (data.orders || []);
123
+ const tips = (data.applyTips || []);
124
+ const lines = [`Your Orders for Pair ${input.pairId}:`];
125
+ if (orders.length === 0) {
126
+ lines.push(" No active orders.");
127
+ }
128
+ else {
129
+ for (const o of orders) {
130
+ const instant = o.isInstant ? " [INSTANT]" : "";
131
+ lines.push(` #${o.id} ${o.type} ${o.left}/${o.amount} @ ${o.price}${instant}`);
132
+ }
133
+ }
134
+ if (tips.length > 0) {
135
+ lines.push("", ` Pending Tips (${tips.length}):`);
136
+ for (const t of tips) {
137
+ const user = t.user || {};
138
+ const hasTx = t.transaction ? " [HAS TX]" : "";
139
+ lines.push(` Tip #${t.id} for order #${t.connected_order_id} | ${t.left} @ ${t.price} | ${user.alias || "anon"}${hasTx}`);
140
+ }
141
+ }
142
+ return textResult(lines.join("\n"));
143
+ }
144
+ catch (e) {
145
+ return errorResult(e);
146
+ }
147
+ }
148
+ async applyOrder(input) {
149
+ try {
150
+ await this.client.post("/api/orders/apply-order", {
151
+ orderData: {
152
+ id: input.id,
153
+ connected_order_id: input.connected_order_id,
154
+ hex_raw_proposal: input.hex_raw_proposal,
155
+ },
156
+ }, true);
157
+ return textResult(`Applied to order. Tip ID: ${input.id}, connected to order: ${input.connected_order_id}`);
158
+ }
159
+ catch (e) {
160
+ return errorResult(e);
161
+ }
162
+ }
163
+ async confirmTrade(input) {
164
+ try {
165
+ await this.client.post("/api/transactions/confirm", { transactionId: input.transactionId }, true);
166
+ return textResult(`Trade ${input.transactionId} confirmed.`);
167
+ }
168
+ catch (e) {
169
+ return errorResult(e);
170
+ }
171
+ }
172
+ async getActiveTrade(input) {
173
+ try {
174
+ const data = await this.client.post("/api/transactions/get-active-tx-by-orders-ids", {
175
+ firstOrderId: input.firstOrderId,
176
+ secondOrderId: input.secondOrderId,
177
+ }, true);
178
+ const lines = [
179
+ `Active Trade:`,
180
+ ` Buy order: ${data.buy_order_id}`,
181
+ ` Sell order: ${data.sell_order_id}`,
182
+ ` Amount: ${data.amount}`,
183
+ ` Status: ${data.status}`,
184
+ ` Creator: ${data.creator || "N/A"}`,
185
+ ];
186
+ if (data.hex_raw_proposal) {
187
+ lines.push(` Has proposal hex: Yes (${String(data.hex_raw_proposal).length} chars)`);
188
+ }
189
+ return textResult(lines.join("\n"));
190
+ }
191
+ catch (e) {
192
+ return errorResult(e);
193
+ }
194
+ }
195
+ }
196
+ //# sourceMappingURL=handlers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"handlers.js","sourceRoot":"","sources":["../../../src/tools/trade/handlers.ts"],"names":[],"mappings":"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"}