@aibtc/mcp-server 1.0.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.
- package/README.md +340 -0
- package/dist/api.d.ts +9 -0
- package/dist/api.d.ts.map +1 -0
- package/dist/api.js +79 -0
- package/dist/api.js.map +1 -0
- package/dist/config/contracts.d.ts +169 -0
- package/dist/config/contracts.d.ts.map +1 -0
- package/dist/config/contracts.js +250 -0
- package/dist/config/contracts.js.map +1 -0
- package/dist/config/index.d.ts +3 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/index.js +3 -0
- package/dist/config/index.js.map +1 -0
- package/dist/config/networks.d.ts +11 -0
- package/dist/config/networks.d.ts.map +1 -0
- package/dist/config/networks.js +21 -0
- package/dist/config/networks.js.map +1 -0
- package/dist/endpoints/index.d.ts +2 -0
- package/dist/endpoints/index.d.ts.map +1 -0
- package/dist/endpoints/index.js +2 -0
- package/dist/endpoints/index.js.map +1 -0
- package/dist/endpoints/registry.d.ts +38 -0
- package/dist/endpoints/registry.d.ts.map +1 -0
- package/dist/endpoints/registry.js +935 -0
- package/dist/endpoints/registry.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +79 -0
- package/dist/index.js.map +1 -0
- package/dist/services/bitflow.service.d.ts +159 -0
- package/dist/services/bitflow.service.d.ts.map +1 -0
- package/dist/services/bitflow.service.js +325 -0
- package/dist/services/bitflow.service.js.map +1 -0
- package/dist/services/bns.service.d.ts +87 -0
- package/dist/services/bns.service.d.ts.map +1 -0
- package/dist/services/bns.service.js +312 -0
- package/dist/services/bns.service.js.map +1 -0
- package/dist/services/defi.service.d.ts +146 -0
- package/dist/services/defi.service.d.ts.map +1 -0
- package/dist/services/defi.service.js +461 -0
- package/dist/services/defi.service.js.map +1 -0
- package/dist/services/hiro-api.d.ts +438 -0
- package/dist/services/hiro-api.d.ts.map +1 -0
- package/dist/services/hiro-api.js +376 -0
- package/dist/services/hiro-api.js.map +1 -0
- package/dist/services/nft.service.d.ts +70 -0
- package/dist/services/nft.service.d.ts.map +1 -0
- package/dist/services/nft.service.js +148 -0
- package/dist/services/nft.service.js.map +1 -0
- package/dist/services/sbtc.service.d.ts +44 -0
- package/dist/services/sbtc.service.d.ts.map +1 -0
- package/dist/services/sbtc.service.js +100 -0
- package/dist/services/sbtc.service.js.map +1 -0
- package/dist/services/scaffold.service.d.ts +41 -0
- package/dist/services/scaffold.service.d.ts.map +1 -0
- package/dist/services/scaffold.service.js +1055 -0
- package/dist/services/scaffold.service.js.map +1 -0
- package/dist/services/stacking.service.d.ts +58 -0
- package/dist/services/stacking.service.d.ts.map +1 -0
- package/dist/services/stacking.service.js +153 -0
- package/dist/services/stacking.service.js.map +1 -0
- package/dist/services/tokens.service.d.ts +62 -0
- package/dist/services/tokens.service.d.ts.map +1 -0
- package/dist/services/tokens.service.js +119 -0
- package/dist/services/tokens.service.js.map +1 -0
- package/dist/services/wallet-manager.d.ts +107 -0
- package/dist/services/wallet-manager.d.ts.map +1 -0
- package/dist/services/wallet-manager.js +389 -0
- package/dist/services/wallet-manager.js.map +1 -0
- package/dist/services/x402.service.d.ts +26 -0
- package/dist/services/x402.service.d.ts.map +1 -0
- package/dist/services/x402.service.js +125 -0
- package/dist/services/x402.service.js.map +1 -0
- package/dist/tools/bitflow.tools.d.ts +3 -0
- package/dist/tools/bitflow.tools.d.ts.map +1 -0
- package/dist/tools/bitflow.tools.js +501 -0
- package/dist/tools/bitflow.tools.js.map +1 -0
- package/dist/tools/bns.tools.d.ts +3 -0
- package/dist/tools/bns.tools.d.ts.map +1 -0
- package/dist/tools/bns.tools.js +164 -0
- package/dist/tools/bns.tools.js.map +1 -0
- package/dist/tools/contract.tools.d.ts +3 -0
- package/dist/tools/contract.tools.d.ts.map +1 -0
- package/dist/tools/contract.tools.js +126 -0
- package/dist/tools/contract.tools.js.map +1 -0
- package/dist/tools/defi.tools.d.ts +3 -0
- package/dist/tools/defi.tools.d.ts.map +1 -0
- package/dist/tools/defi.tools.js +425 -0
- package/dist/tools/defi.tools.js.map +1 -0
- package/dist/tools/endpoint.tools.d.ts +3 -0
- package/dist/tools/endpoint.tools.d.ts.map +1 -0
- package/dist/tools/endpoint.tools.js +157 -0
- package/dist/tools/endpoint.tools.js.map +1 -0
- package/dist/tools/index.d.ts +6 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +52 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/tools/nft.tools.d.ts +3 -0
- package/dist/tools/nft.tools.d.ts.map +1 -0
- package/dist/tools/nft.tools.js +154 -0
- package/dist/tools/nft.tools.js.map +1 -0
- package/dist/tools/openrouter.tools.d.ts +3 -0
- package/dist/tools/openrouter.tools.d.ts.map +1 -0
- package/dist/tools/openrouter.tools.js +664 -0
- package/dist/tools/openrouter.tools.js.map +1 -0
- package/dist/tools/query.tools.d.ts +3 -0
- package/dist/tools/query.tools.d.ts.map +1 -0
- package/dist/tools/query.tools.js +209 -0
- package/dist/tools/query.tools.js.map +1 -0
- package/dist/tools/sbtc.tools.d.ts +3 -0
- package/dist/tools/sbtc.tools.d.ts.map +1 -0
- package/dist/tools/sbtc.tools.js +103 -0
- package/dist/tools/sbtc.tools.js.map +1 -0
- package/dist/tools/scaffold.tools.d.ts +3 -0
- package/dist/tools/scaffold.tools.d.ts.map +1 -0
- package/dist/tools/scaffold.tools.js +216 -0
- package/dist/tools/scaffold.tools.js.map +1 -0
- package/dist/tools/stacking.tools.d.ts +3 -0
- package/dist/tools/stacking.tools.d.ts.map +1 -0
- package/dist/tools/stacking.tools.js +112 -0
- package/dist/tools/stacking.tools.js.map +1 -0
- package/dist/tools/tokens.tools.d.ts +3 -0
- package/dist/tools/tokens.tools.d.ts.map +1 -0
- package/dist/tools/tokens.tools.js +154 -0
- package/dist/tools/tokens.tools.js.map +1 -0
- package/dist/tools/transfer.tools.d.ts +3 -0
- package/dist/tools/transfer.tools.d.ts.map +1 -0
- package/dist/tools/transfer.tools.js +62 -0
- package/dist/tools/transfer.tools.js.map +1 -0
- package/dist/tools/wallet-management.tools.d.ts +6 -0
- package/dist/tools/wallet-management.tools.d.ts.map +1 -0
- package/dist/tools/wallet-management.tools.js +390 -0
- package/dist/tools/wallet-management.tools.js.map +1 -0
- package/dist/tools/wallet.tools.d.ts +3 -0
- package/dist/tools/wallet.tools.d.ts.map +1 -0
- package/dist/tools/wallet.tools.js +105 -0
- package/dist/tools/wallet.tools.js.map +1 -0
- package/dist/transactions/builder.d.ts +56 -0
- package/dist/transactions/builder.d.ts.map +1 -0
- package/dist/transactions/builder.js +134 -0
- package/dist/transactions/builder.js.map +1 -0
- package/dist/transactions/clarity-values.d.ts +67 -0
- package/dist/transactions/clarity-values.d.ts.map +1 -0
- package/dist/transactions/clarity-values.js +169 -0
- package/dist/transactions/clarity-values.js.map +1 -0
- package/dist/transactions/post-conditions.d.ts +27 -0
- package/dist/transactions/post-conditions.d.ts.map +1 -0
- package/dist/transactions/post-conditions.js +101 -0
- package/dist/transactions/post-conditions.js.map +1 -0
- package/dist/utils/encryption.d.ts +33 -0
- package/dist/utils/encryption.d.ts.map +1 -0
- package/dist/utils/encryption.js +110 -0
- package/dist/utils/encryption.js.map +1 -0
- package/dist/utils/errors.d.ts +84 -0
- package/dist/utils/errors.d.ts.map +1 -0
- package/dist/utils/errors.js +132 -0
- package/dist/utils/errors.js.map +1 -0
- package/dist/utils/formatting.d.ts +51 -0
- package/dist/utils/formatting.d.ts.map +1 -0
- package/dist/utils/formatting.js +114 -0
- package/dist/utils/formatting.js.map +1 -0
- package/dist/utils/index.d.ts +6 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +6 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/storage.d.ts +90 -0
- package/dist/utils/storage.d.ts.map +1 -0
- package/dist/utils/storage.js +196 -0
- package/dist/utils/storage.js.map +1 -0
- package/dist/utils/validation.d.ts +67 -0
- package/dist/utils/validation.d.ts.map +1 -0
- package/dist/utils/validation.js +74 -0
- package/dist/utils/validation.js.map +1 -0
- package/dist/wallet.d.ts +86 -0
- package/dist/wallet.d.ts.map +1 -0
- package/dist/wallet.js +279 -0
- package/dist/wallet.js.map +1 -0
- package/package.json +58 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scaffold.service.js","sourceRoot":"","sources":["../../src/services/scaffold.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { PoxInfo } from "./hiro-api.js";
|
|
2
|
+
import { type Network } from "../config/index.js";
|
|
3
|
+
import { type Account, type TransferResult } from "../transactions/builder.js";
|
|
4
|
+
export interface StackingStatus {
|
|
5
|
+
stacked: boolean;
|
|
6
|
+
amountMicroStx: string;
|
|
7
|
+
amountStx: string;
|
|
8
|
+
firstRewardCycle: number;
|
|
9
|
+
lockPeriod: number;
|
|
10
|
+
unlockHeight: number;
|
|
11
|
+
poxAddress?: string;
|
|
12
|
+
}
|
|
13
|
+
export declare class StackingService {
|
|
14
|
+
private network;
|
|
15
|
+
private hiro;
|
|
16
|
+
private contracts;
|
|
17
|
+
constructor(network: Network);
|
|
18
|
+
/**
|
|
19
|
+
* Get current PoX (Proof of Transfer) info
|
|
20
|
+
*/
|
|
21
|
+
getPoxInfo(): Promise<PoxInfo>;
|
|
22
|
+
/**
|
|
23
|
+
* Get stacking status for an address
|
|
24
|
+
* Note: Returns whether the address is stacking, but detailed amounts require proper CV parsing
|
|
25
|
+
*/
|
|
26
|
+
getStackingStatus(address: string): Promise<StackingStatus>;
|
|
27
|
+
/**
|
|
28
|
+
* Stack STX tokens
|
|
29
|
+
*/
|
|
30
|
+
stack(account: Account, amount: bigint, poxAddress: {
|
|
31
|
+
version: number;
|
|
32
|
+
hashbytes: string;
|
|
33
|
+
}, startBurnHeight: number, lockPeriod: number): Promise<TransferResult>;
|
|
34
|
+
/**
|
|
35
|
+
* Extend stacking period
|
|
36
|
+
*/
|
|
37
|
+
extendStacking(account: Account, extendCount: number, poxAddress: {
|
|
38
|
+
version: number;
|
|
39
|
+
hashbytes: string;
|
|
40
|
+
}): Promise<TransferResult>;
|
|
41
|
+
/**
|
|
42
|
+
* Increase stacking amount
|
|
43
|
+
*/
|
|
44
|
+
increaseStacking(account: Account, increaseAmount: bigint): Promise<TransferResult>;
|
|
45
|
+
/**
|
|
46
|
+
* Delegate STX to a stacking pool
|
|
47
|
+
*/
|
|
48
|
+
delegateStx(account: Account, amount: bigint, delegateTo: string, untilBurnHeight?: number, poxAddress?: {
|
|
49
|
+
version: number;
|
|
50
|
+
hashbytes: string;
|
|
51
|
+
}): Promise<TransferResult>;
|
|
52
|
+
/**
|
|
53
|
+
* Revoke delegation
|
|
54
|
+
*/
|
|
55
|
+
revokeDelegation(account: Account): Promise<TransferResult>;
|
|
56
|
+
}
|
|
57
|
+
export declare function getStackingService(network: Network): StackingService;
|
|
58
|
+
//# sourceMappingURL=stacking.service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stacking.service.d.ts","sourceRoot":"","sources":["../../src/services/stacking.service.ts"],"names":[],"mappings":"AACA,OAAO,EAA8B,OAAO,EAAE,MAAM,eAAe,CAAC;AACpE,OAAO,EAAiC,KAAK,OAAO,EAAE,MAAM,oBAAoB,CAAC;AACjF,OAAO,EAAgB,KAAK,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAM7F,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,OAAO,CAAC;IACjB,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,gBAAgB,EAAE,MAAM,CAAC;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAMD,qBAAa,eAAe;IAId,OAAO,CAAC,OAAO;IAH3B,OAAO,CAAC,IAAI,CAAiB;IAC7B,OAAO,CAAC,SAAS,CAAkC;gBAE/B,OAAO,EAAE,OAAO;IAKpC;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,OAAO,CAAC;IAIpC;;;OAGG;IACG,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;IAmCjE;;OAEG;IACG,KAAK,CACT,OAAO,EAAE,OAAO,EAChB,MAAM,EAAE,MAAM,EACd,UAAU,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,EAClD,eAAe,EAAE,MAAM,EACvB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,cAAc,CAAC;IAqB1B;;OAEG;IACG,cAAc,CAClB,OAAO,EAAE,OAAO,EAChB,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,GACjD,OAAO,CAAC,cAAc,CAAC;IAmB1B;;OAEG;IACG,gBAAgB,CACpB,OAAO,EAAE,OAAO,EAChB,cAAc,EAAE,MAAM,GACrB,OAAO,CAAC,cAAc,CAAC;IAa1B;;OAEG;IACG,WAAW,CACf,OAAO,EAAE,OAAO,EAChB,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,EAClB,eAAe,CAAC,EAAE,MAAM,EACxB,UAAU,CAAC,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,GAClD,OAAO,CAAC,cAAc,CAAC;IAuB1B;;OAEG;IACG,gBAAgB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,cAAc,CAAC;CAWlE;AAQD,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,OAAO,GAAG,eAAe,CAKpE"}
|
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
import { uintCV, tupleCV, bufferCV, noneCV, someCV } from "@stacks/transactions";
|
|
2
|
+
import { getHiroApi } from "./hiro-api.js";
|
|
3
|
+
import { getContracts, parseContractId } from "../config/index.js";
|
|
4
|
+
import { callContract } from "../transactions/builder.js";
|
|
5
|
+
// ============================================================================
|
|
6
|
+
// Stacking Service
|
|
7
|
+
// ============================================================================
|
|
8
|
+
export class StackingService {
|
|
9
|
+
network;
|
|
10
|
+
hiro;
|
|
11
|
+
contracts;
|
|
12
|
+
constructor(network) {
|
|
13
|
+
this.network = network;
|
|
14
|
+
this.hiro = getHiroApi(network);
|
|
15
|
+
this.contracts = getContracts(network);
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Get current PoX (Proof of Transfer) info
|
|
19
|
+
*/
|
|
20
|
+
async getPoxInfo() {
|
|
21
|
+
return this.hiro.getPoxInfo();
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Get stacking status for an address
|
|
25
|
+
* Note: Returns whether the address is stacking, but detailed amounts require proper CV parsing
|
|
26
|
+
*/
|
|
27
|
+
async getStackingStatus(address) {
|
|
28
|
+
try {
|
|
29
|
+
const result = await this.hiro.callReadOnlyFunction(this.contracts.POX_4, "get-stacker-info", [{ type: "principal", value: address }], address);
|
|
30
|
+
if (result.okay && result.result) {
|
|
31
|
+
const isStacked = result.result.includes("some");
|
|
32
|
+
return {
|
|
33
|
+
stacked: isStacked,
|
|
34
|
+
amountMicroStx: "0", // Requires CV parsing
|
|
35
|
+
amountStx: "0",
|
|
36
|
+
firstRewardCycle: 0,
|
|
37
|
+
lockPeriod: 0,
|
|
38
|
+
unlockHeight: 0,
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
catch {
|
|
43
|
+
// Stacker info not found
|
|
44
|
+
}
|
|
45
|
+
return {
|
|
46
|
+
stacked: false,
|
|
47
|
+
amountMicroStx: "0",
|
|
48
|
+
amountStx: "0",
|
|
49
|
+
firstRewardCycle: 0,
|
|
50
|
+
lockPeriod: 0,
|
|
51
|
+
unlockHeight: 0,
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Stack STX tokens
|
|
56
|
+
*/
|
|
57
|
+
async stack(account, amount, poxAddress, startBurnHeight, lockPeriod) {
|
|
58
|
+
const { address: contractAddress, name: contractName } = parseContractId(this.contracts.POX_4);
|
|
59
|
+
const functionArgs = [
|
|
60
|
+
uintCV(amount),
|
|
61
|
+
tupleCV({
|
|
62
|
+
version: bufferCV(Buffer.from([poxAddress.version])),
|
|
63
|
+
hashbytes: bufferCV(Buffer.from(poxAddress.hashbytes, "hex")),
|
|
64
|
+
}),
|
|
65
|
+
uintCV(startBurnHeight),
|
|
66
|
+
uintCV(lockPeriod),
|
|
67
|
+
];
|
|
68
|
+
return callContract(account, {
|
|
69
|
+
contractAddress,
|
|
70
|
+
contractName,
|
|
71
|
+
functionName: "stack-stx",
|
|
72
|
+
functionArgs,
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Extend stacking period
|
|
77
|
+
*/
|
|
78
|
+
async extendStacking(account, extendCount, poxAddress) {
|
|
79
|
+
const { address: contractAddress, name: contractName } = parseContractId(this.contracts.POX_4);
|
|
80
|
+
const functionArgs = [
|
|
81
|
+
uintCV(extendCount),
|
|
82
|
+
tupleCV({
|
|
83
|
+
version: bufferCV(Buffer.from([poxAddress.version])),
|
|
84
|
+
hashbytes: bufferCV(Buffer.from(poxAddress.hashbytes, "hex")),
|
|
85
|
+
}),
|
|
86
|
+
];
|
|
87
|
+
return callContract(account, {
|
|
88
|
+
contractAddress,
|
|
89
|
+
contractName,
|
|
90
|
+
functionName: "stack-extend",
|
|
91
|
+
functionArgs,
|
|
92
|
+
});
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Increase stacking amount
|
|
96
|
+
*/
|
|
97
|
+
async increaseStacking(account, increaseAmount) {
|
|
98
|
+
const { address: contractAddress, name: contractName } = parseContractId(this.contracts.POX_4);
|
|
99
|
+
const functionArgs = [uintCV(increaseAmount)];
|
|
100
|
+
return callContract(account, {
|
|
101
|
+
contractAddress,
|
|
102
|
+
contractName,
|
|
103
|
+
functionName: "stack-increase",
|
|
104
|
+
functionArgs,
|
|
105
|
+
});
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* Delegate STX to a stacking pool
|
|
109
|
+
*/
|
|
110
|
+
async delegateStx(account, amount, delegateTo, untilBurnHeight, poxAddress) {
|
|
111
|
+
const { address: contractAddress, name: contractName } = parseContractId(this.contracts.POX_4);
|
|
112
|
+
const functionArgs = [
|
|
113
|
+
uintCV(amount),
|
|
114
|
+
{ type: "principal", value: delegateTo },
|
|
115
|
+
untilBurnHeight ? someCV(uintCV(untilBurnHeight)) : noneCV(),
|
|
116
|
+
poxAddress
|
|
117
|
+
? someCV(tupleCV({
|
|
118
|
+
version: bufferCV(Buffer.from([poxAddress.version])),
|
|
119
|
+
hashbytes: bufferCV(Buffer.from(poxAddress.hashbytes, "hex")),
|
|
120
|
+
}))
|
|
121
|
+
: noneCV(),
|
|
122
|
+
];
|
|
123
|
+
return callContract(account, {
|
|
124
|
+
contractAddress,
|
|
125
|
+
contractName,
|
|
126
|
+
functionName: "delegate-stx",
|
|
127
|
+
functionArgs,
|
|
128
|
+
});
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* Revoke delegation
|
|
132
|
+
*/
|
|
133
|
+
async revokeDelegation(account) {
|
|
134
|
+
const { address: contractAddress, name: contractName } = parseContractId(this.contracts.POX_4);
|
|
135
|
+
return callContract(account, {
|
|
136
|
+
contractAddress,
|
|
137
|
+
contractName,
|
|
138
|
+
functionName: "revoke-delegate-stx",
|
|
139
|
+
functionArgs: [],
|
|
140
|
+
});
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
// ============================================================================
|
|
144
|
+
// Helper Functions
|
|
145
|
+
// ============================================================================
|
|
146
|
+
let _stackingServiceInstance = null;
|
|
147
|
+
export function getStackingService(network) {
|
|
148
|
+
if (!_stackingServiceInstance || _stackingServiceInstance["network"] !== network) {
|
|
149
|
+
_stackingServiceInstance = new StackingService(network);
|
|
150
|
+
}
|
|
151
|
+
return _stackingServiceInstance;
|
|
152
|
+
}
|
|
153
|
+
//# sourceMappingURL=stacking.service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stacking.service.js","sourceRoot":"","sources":["../../src/services/stacking.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { FungibleTokenHolding } from "./hiro-api.js";
|
|
2
|
+
import { type Network } from "../config/index.js";
|
|
3
|
+
import { type Account, type TransferResult } from "../transactions/builder.js";
|
|
4
|
+
export interface TokenBalance {
|
|
5
|
+
contractId: string;
|
|
6
|
+
balance: string;
|
|
7
|
+
decimals: number;
|
|
8
|
+
symbol?: string;
|
|
9
|
+
name?: string;
|
|
10
|
+
formattedBalance: string;
|
|
11
|
+
}
|
|
12
|
+
export interface TokenInfo {
|
|
13
|
+
contractId: string;
|
|
14
|
+
name: string;
|
|
15
|
+
symbol: string;
|
|
16
|
+
decimals: number;
|
|
17
|
+
totalSupply: string;
|
|
18
|
+
tokenUri?: string;
|
|
19
|
+
description?: string;
|
|
20
|
+
imageUri?: string;
|
|
21
|
+
}
|
|
22
|
+
export declare class TokensService {
|
|
23
|
+
private network;
|
|
24
|
+
private hiro;
|
|
25
|
+
private wellKnownTokens;
|
|
26
|
+
constructor(network: Network);
|
|
27
|
+
/**
|
|
28
|
+
* Resolve a token symbol or contract ID to a contract ID
|
|
29
|
+
*/
|
|
30
|
+
resolveToken(tokenIdentifier: string): string;
|
|
31
|
+
/**
|
|
32
|
+
* Get token balance for an address
|
|
33
|
+
*/
|
|
34
|
+
getBalance(tokenContractOrSymbol: string, address: string): Promise<TokenBalance>;
|
|
35
|
+
/**
|
|
36
|
+
* Get token information
|
|
37
|
+
*/
|
|
38
|
+
getTokenInfo(tokenContractOrSymbol: string): Promise<TokenInfo | null>;
|
|
39
|
+
/**
|
|
40
|
+
* Transfer tokens to a recipient (SIP-010 standard)
|
|
41
|
+
*/
|
|
42
|
+
transfer(account: Account, tokenContractOrSymbol: string, recipient: string, amount: bigint, memo?: string): Promise<TransferResult>;
|
|
43
|
+
/**
|
|
44
|
+
* Get all tokens owned by an address
|
|
45
|
+
*/
|
|
46
|
+
getUserTokens(address: string): Promise<FungibleTokenHolding[]>;
|
|
47
|
+
/**
|
|
48
|
+
* Get token holders
|
|
49
|
+
*/
|
|
50
|
+
getTokenHolders(tokenContractOrSymbol: string, options?: {
|
|
51
|
+
limit?: number;
|
|
52
|
+
offset?: number;
|
|
53
|
+
}): Promise<{
|
|
54
|
+
total: number;
|
|
55
|
+
results: Array<{
|
|
56
|
+
address: string;
|
|
57
|
+
balance: string;
|
|
58
|
+
}>;
|
|
59
|
+
}>;
|
|
60
|
+
}
|
|
61
|
+
export declare function getTokensService(network: Network): TokensService;
|
|
62
|
+
//# sourceMappingURL=tokens.service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tokens.service.d.ts","sourceRoot":"","sources":["../../src/services/tokens.service.ts"],"names":[],"mappings":"AACA,OAAO,EAA8B,oBAAoB,EAAE,MAAM,eAAe,CAAC;AACjF,OAAO,EAAuC,KAAK,OAAO,EAAE,MAAM,oBAAoB,CAAC;AACvF,OAAO,EAAgB,KAAK,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAM7F,MAAM,WAAW,YAAY;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,SAAS;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAMD,qBAAa,aAAa;IAIZ,OAAO,CAAC,OAAO;IAH3B,OAAO,CAAC,IAAI,CAAiB;IAC7B,OAAO,CAAC,eAAe,CAAwC;gBAE3C,OAAO,EAAE,OAAO;IAKpC;;OAEG;IACH,YAAY,CAAC,eAAe,EAAE,MAAM,GAAG,MAAM;IAe7C;;OAEG;IACG,UAAU,CACd,qBAAqB,EAAE,MAAM,EAC7B,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,YAAY,CAAC;IAsBxB;;OAEG;IACG,YAAY,CAAC,qBAAqB,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC;IAoB5E;;OAEG;IACG,QAAQ,CACZ,OAAO,EAAE,OAAO,EAChB,qBAAqB,EAAE,MAAM,EAC7B,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EACd,IAAI,CAAC,EAAE,MAAM,GACZ,OAAO,CAAC,cAAc,CAAC;IAqB1B;;OAEG;IACG,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,EAAE,CAAC;IAIrE;;OAEG;IACG,eAAe,CACnB,qBAAqB,EAAE,MAAM,EAC7B,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,GAC5C,OAAO,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,KAAK,CAAC;YAAE,OAAO,EAAE,MAAM,CAAC;YAAC,OAAO,EAAE,MAAM,CAAA;SAAE,CAAC,CAAA;KAAE,CAAC;CAIpF;AAQD,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,OAAO,GAAG,aAAa,CAKhE"}
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
import { uintCV, principalCV, noneCV, someCV, bufferCV } from "@stacks/transactions";
|
|
2
|
+
import { getHiroApi } from "./hiro-api.js";
|
|
3
|
+
import { parseContractId, getWellKnownTokens } from "../config/index.js";
|
|
4
|
+
import { callContract } from "../transactions/builder.js";
|
|
5
|
+
// ============================================================================
|
|
6
|
+
// Tokens Service (SIP-010)
|
|
7
|
+
// ============================================================================
|
|
8
|
+
export class TokensService {
|
|
9
|
+
network;
|
|
10
|
+
hiro;
|
|
11
|
+
wellKnownTokens;
|
|
12
|
+
constructor(network) {
|
|
13
|
+
this.network = network;
|
|
14
|
+
this.hiro = getHiroApi(network);
|
|
15
|
+
this.wellKnownTokens = getWellKnownTokens(network);
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Resolve a token symbol or contract ID to a contract ID
|
|
19
|
+
*/
|
|
20
|
+
resolveToken(tokenIdentifier) {
|
|
21
|
+
// Check if it's a well-known token symbol (case-insensitive)
|
|
22
|
+
const upperToken = tokenIdentifier.toUpperCase();
|
|
23
|
+
// Look up in wellKnownTokens by iterating keys (handles case differences like sBTC vs SBTC)
|
|
24
|
+
for (const [symbol, contractId] of Object.entries(this.wellKnownTokens)) {
|
|
25
|
+
if (symbol.toUpperCase() === upperToken && contractId !== "native") {
|
|
26
|
+
return contractId;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
// Not a known symbol - treat as contract ID
|
|
30
|
+
return tokenIdentifier;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Get token balance for an address
|
|
34
|
+
*/
|
|
35
|
+
async getBalance(tokenContractOrSymbol, address) {
|
|
36
|
+
const contractId = this.resolveToken(tokenContractOrSymbol);
|
|
37
|
+
const balance = await this.hiro.getTokenBalance(address, contractId);
|
|
38
|
+
const metadata = await this.hiro.getTokenMetadata(contractId);
|
|
39
|
+
const decimals = metadata?.decimals || 6;
|
|
40
|
+
const divisor = BigInt(10 ** decimals);
|
|
41
|
+
const balanceBigInt = BigInt(balance);
|
|
42
|
+
const wholePart = balanceBigInt / divisor;
|
|
43
|
+
const fractionalPart = balanceBigInt % divisor;
|
|
44
|
+
const formattedBalance = `${wholePart}.${fractionalPart.toString().padStart(decimals, "0")}`;
|
|
45
|
+
return {
|
|
46
|
+
contractId,
|
|
47
|
+
balance,
|
|
48
|
+
decimals,
|
|
49
|
+
symbol: metadata?.symbol,
|
|
50
|
+
name: metadata?.name,
|
|
51
|
+
formattedBalance,
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Get token information
|
|
56
|
+
*/
|
|
57
|
+
async getTokenInfo(tokenContractOrSymbol) {
|
|
58
|
+
const contractId = this.resolveToken(tokenContractOrSymbol);
|
|
59
|
+
const metadata = await this.hiro.getTokenMetadata(contractId);
|
|
60
|
+
if (!metadata) {
|
|
61
|
+
return null;
|
|
62
|
+
}
|
|
63
|
+
return {
|
|
64
|
+
contractId,
|
|
65
|
+
name: metadata.name,
|
|
66
|
+
symbol: metadata.symbol,
|
|
67
|
+
decimals: metadata.decimals,
|
|
68
|
+
totalSupply: metadata.total_supply,
|
|
69
|
+
tokenUri: metadata.token_uri,
|
|
70
|
+
description: metadata.description,
|
|
71
|
+
imageUri: metadata.image_uri,
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Transfer tokens to a recipient (SIP-010 standard)
|
|
76
|
+
*/
|
|
77
|
+
async transfer(account, tokenContractOrSymbol, recipient, amount, memo) {
|
|
78
|
+
const contractId = this.resolveToken(tokenContractOrSymbol);
|
|
79
|
+
const { address: contractAddress, name: contractName } = parseContractId(contractId);
|
|
80
|
+
// SIP-010 transfer function signature:
|
|
81
|
+
// (transfer (amount uint) (sender principal) (recipient principal) (memo (optional (buff 34))))
|
|
82
|
+
const functionArgs = [
|
|
83
|
+
uintCV(amount),
|
|
84
|
+
principalCV(account.address),
|
|
85
|
+
principalCV(recipient),
|
|
86
|
+
memo ? someCV(bufferCV(Buffer.from(memo).subarray(0, 34))) : noneCV(),
|
|
87
|
+
];
|
|
88
|
+
return callContract(account, {
|
|
89
|
+
contractAddress,
|
|
90
|
+
contractName,
|
|
91
|
+
functionName: "transfer",
|
|
92
|
+
functionArgs,
|
|
93
|
+
});
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Get all tokens owned by an address
|
|
97
|
+
*/
|
|
98
|
+
async getUserTokens(address) {
|
|
99
|
+
return this.hiro.getUserTokens(address);
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Get token holders
|
|
103
|
+
*/
|
|
104
|
+
async getTokenHolders(tokenContractOrSymbol, options) {
|
|
105
|
+
const contractId = this.resolveToken(tokenContractOrSymbol);
|
|
106
|
+
return this.hiro.getTokenHolders(contractId, options);
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
// ============================================================================
|
|
110
|
+
// Helper Functions
|
|
111
|
+
// ============================================================================
|
|
112
|
+
let _tokensServiceInstance = null;
|
|
113
|
+
export function getTokensService(network) {
|
|
114
|
+
if (!_tokensServiceInstance || _tokensServiceInstance["network"] !== network) {
|
|
115
|
+
_tokensServiceInstance = new TokensService(network);
|
|
116
|
+
}
|
|
117
|
+
return _tokensServiceInstance;
|
|
118
|
+
}
|
|
119
|
+
//# sourceMappingURL=tokens.service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tokens.service.js","sourceRoot":"","sources":["../../src/services/tokens.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
import { type WalletMetadata } from "../utils/index.js";
|
|
2
|
+
import { type Network } from "../config/networks.js";
|
|
3
|
+
import type { Account } from "../transactions/builder.js";
|
|
4
|
+
/**
|
|
5
|
+
* Result from creating a new wallet
|
|
6
|
+
*/
|
|
7
|
+
export interface WalletCreateResult {
|
|
8
|
+
walletId: string;
|
|
9
|
+
address: string;
|
|
10
|
+
mnemonic: string;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Result from importing a wallet
|
|
14
|
+
*/
|
|
15
|
+
export interface WalletImportResult {
|
|
16
|
+
walletId: string;
|
|
17
|
+
address: string;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Wallet manager singleton - handles wallet creation, encryption, and session management
|
|
21
|
+
*/
|
|
22
|
+
declare class WalletManager {
|
|
23
|
+
private static instance;
|
|
24
|
+
private session;
|
|
25
|
+
private lockTimer;
|
|
26
|
+
private initialized;
|
|
27
|
+
private constructor();
|
|
28
|
+
/**
|
|
29
|
+
* Get singleton instance
|
|
30
|
+
*/
|
|
31
|
+
static getInstance(): WalletManager;
|
|
32
|
+
/**
|
|
33
|
+
* Ensure storage is initialized
|
|
34
|
+
*/
|
|
35
|
+
private ensureInitialized;
|
|
36
|
+
/**
|
|
37
|
+
* Create a new wallet with BIP39 mnemonic
|
|
38
|
+
*/
|
|
39
|
+
createWallet(name: string, password: string, network?: Network): Promise<WalletCreateResult>;
|
|
40
|
+
/**
|
|
41
|
+
* Import an existing wallet from mnemonic
|
|
42
|
+
*/
|
|
43
|
+
importWallet(name: string, mnemonic: string, password: string, network?: Network): Promise<WalletImportResult>;
|
|
44
|
+
/**
|
|
45
|
+
* Unlock a wallet for use
|
|
46
|
+
*/
|
|
47
|
+
unlock(walletId: string, password: string): Promise<Account>;
|
|
48
|
+
/**
|
|
49
|
+
* Lock the wallet (clear session)
|
|
50
|
+
*/
|
|
51
|
+
lock(): void;
|
|
52
|
+
/**
|
|
53
|
+
* Get the active account if unlocked
|
|
54
|
+
*/
|
|
55
|
+
getActiveAccount(): Account | null;
|
|
56
|
+
/**
|
|
57
|
+
* Check if a wallet is unlocked
|
|
58
|
+
*/
|
|
59
|
+
isUnlocked(): boolean;
|
|
60
|
+
/**
|
|
61
|
+
* Get session info (without sensitive data)
|
|
62
|
+
*/
|
|
63
|
+
getSessionInfo(): {
|
|
64
|
+
walletId: string;
|
|
65
|
+
address: string;
|
|
66
|
+
expiresAt: Date | null;
|
|
67
|
+
} | null;
|
|
68
|
+
/**
|
|
69
|
+
* List all wallets (metadata only)
|
|
70
|
+
*/
|
|
71
|
+
listWallets(): Promise<WalletMetadata[]>;
|
|
72
|
+
/**
|
|
73
|
+
* Check if any wallets exist
|
|
74
|
+
*/
|
|
75
|
+
hasWallets(): Promise<boolean>;
|
|
76
|
+
/**
|
|
77
|
+
* Get active wallet ID from config
|
|
78
|
+
*/
|
|
79
|
+
getActiveWalletId(): Promise<string | null>;
|
|
80
|
+
/**
|
|
81
|
+
* Switch active wallet (note: requires unlock after switching)
|
|
82
|
+
*/
|
|
83
|
+
switchWallet(walletId: string): Promise<void>;
|
|
84
|
+
/**
|
|
85
|
+
* Delete a wallet (requires password confirmation)
|
|
86
|
+
*/
|
|
87
|
+
deleteWallet(walletId: string, password: string): Promise<void>;
|
|
88
|
+
/**
|
|
89
|
+
* Export mnemonic (requires password verification)
|
|
90
|
+
*/
|
|
91
|
+
exportMnemonic(walletId: string, password: string): Promise<string>;
|
|
92
|
+
/**
|
|
93
|
+
* Set auto-lock timeout
|
|
94
|
+
*/
|
|
95
|
+
setAutoLockTimeout(minutes: number): Promise<void>;
|
|
96
|
+
/**
|
|
97
|
+
* Start auto-lock timer
|
|
98
|
+
*/
|
|
99
|
+
private startAutoLockTimer;
|
|
100
|
+
/**
|
|
101
|
+
* Clear auto-lock timer
|
|
102
|
+
*/
|
|
103
|
+
private clearAutoLockTimer;
|
|
104
|
+
}
|
|
105
|
+
export declare function getWalletManager(): WalletManager;
|
|
106
|
+
export {};
|
|
107
|
+
//# sourceMappingURL=wallet-manager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wallet-manager.d.ts","sourceRoot":"","sources":["../../src/services/wallet-manager.ts"],"names":[],"mappings":"AAGA,OAAO,EAcL,KAAK,cAAc,EAEpB,MAAM,mBAAmB,CAAC;AAM3B,OAAO,EAAW,KAAK,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAC;AAY1D;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,cAAM,aAAa;IACjB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAgB;IACvC,OAAO,CAAC,OAAO,CAAwB;IACvC,OAAO,CAAC,SAAS,CAA+B;IAChD,OAAO,CAAC,WAAW,CAAS;IAE5B,OAAO;IAEP;;OAEG;IACH,MAAM,CAAC,WAAW,IAAI,aAAa;IAOnC;;OAEG;YACW,iBAAiB;IAO/B;;OAEG;IACG,YAAY,CAChB,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE,OAAO,GAChB,OAAO,CAAC,kBAAkB,CAAC;IAuD9B;;OAEG;IACG,YAAY,CAChB,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE,OAAO,GAChB,OAAO,CAAC,kBAAkB,CAAC;IAyD9B;;OAEG;IACG,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAuElE;;OAEG;IACH,IAAI,IAAI,IAAI;IAKZ;;OAEG;IACH,gBAAgB,IAAI,OAAO,GAAG,IAAI;IAclC;;OAEG;IACH,UAAU,IAAI,OAAO;IAIrB;;OAEG;IACH,cAAc,IAAI;QAChB,QAAQ,EAAE,MAAM,CAAC;QACjB,OAAO,EAAE,MAAM,CAAC;QAChB,SAAS,EAAE,IAAI,GAAG,IAAI,CAAC;KACxB,GAAG,IAAI;IAkBR;;OAEG;IACG,WAAW,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;IAM9C;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,OAAO,CAAC;IAMpC;;OAEG;IACG,iBAAiB,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAMjD;;OAEG;IACG,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAmBnD;;OAEG;IACG,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA6CrE;;OAEG;IACG,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IA0BzE;;OAEG;IACG,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAgBxD;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAY1B;;OAEG;IACH,OAAO,CAAC,kBAAkB;CAM3B;AAGD,wBAAgB,gBAAgB,IAAI,aAAa,CAEhD"}
|