@keelcodes/sdk 2.0.0 → 2.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.
@@ -0,0 +1,74 @@
1
+ export type WalletType = 'waas' | 'mpc' | 'safe' | 'aa';
2
+ export interface CreateWalletParams {
3
+ type: WalletType;
4
+ chain?: string;
5
+ /** 幂等键(同 reference 不重复建钱包)。 */
6
+ reference?: string;
7
+ }
8
+ export interface ImportWalletParams {
9
+ type: WalletType;
10
+ seed?: string;
11
+ privateKey?: string;
12
+ }
13
+ export interface WalletCreated {
14
+ walletId: string;
15
+ address: string;
16
+ }
17
+ export interface SignParams {
18
+ walletId: string;
19
+ message?: string;
20
+ typedData?: Record<string, unknown>;
21
+ digest?: string;
22
+ chain?: string;
23
+ }
24
+ export interface SignResult {
25
+ signature: string;
26
+ address: string;
27
+ }
28
+ export interface SendParams {
29
+ walletId: string;
30
+ to: string;
31
+ amount: string;
32
+ chain: string;
33
+ tokenAddress?: string;
34
+ /** 幂等键(防重复转账)。 */
35
+ reference?: string;
36
+ }
37
+ export interface SendResult {
38
+ txHash: string;
39
+ status: string;
40
+ }
41
+ export interface ChainParams {
42
+ chain: string;
43
+ method: string;
44
+ params?: unknown[];
45
+ rawTransaction?: string;
46
+ }
47
+ export interface ChainResult {
48
+ result?: unknown;
49
+ txHash?: string;
50
+ }
51
+ export interface WalletBalanceParams {
52
+ address: string;
53
+ chain?: string;
54
+ token?: string;
55
+ }
56
+ export interface WalletChainBalance {
57
+ chain: string;
58
+ address: string;
59
+ balances: Array<{
60
+ token: string;
61
+ token_address: string;
62
+ /** 人类可读金额:EVM 为原生币小数(18 位),Solana 为 SOL 小数(9 位) */
63
+ balance: string;
64
+ /** 仅 Solana:原始 lamports(十进制字符串) */
65
+ balance_lamports?: string;
66
+ usd_value: string;
67
+ }>;
68
+ usdTotal: string;
69
+ error?: string;
70
+ }
71
+ export interface WalletBalanceResult {
72
+ chainBalances: WalletChainBalance[];
73
+ totalUsd: string;
74
+ }
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ // ---------------------------------------------------------------------------
3
+ // @keelcodes/sdk — wallet 模块:核心类型
4
+ // ---------------------------------------------------------------------------
5
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,186 @@
1
+ import { HttpClient } from '../http';
2
+ import type { CreateWalletParams, WalletCreated, ImportWalletParams, SignParams, SignResult, SendParams, SendResult, ChainParams, ChainResult, WalletBalanceParams, WalletBalanceResult } from './types';
3
+ import type { SolanaDeriveAccountParams, SolanaDerivedAccount, SolanaCreateAccountParams, SolanaInstallPolicyParams, SolanaCreatePolicyTransactionParams, SolanaCreateProposalParams, SolanaApproveProposalParams, SolanaExecutePolicyTransactionParams, SolanaRemovePolicyParams } from './solana-account-types';
4
+ import type { SolanaExecutePolicyPayloadParams, SolanaCloseSettingsParams, SolanaCloseTransactionParams, SolanaExecutePolicyParams, SolanaExecuteParams, SolanaRemoveSignerParams, SolanaSubmitParams, SolanaUnsignedTransaction, SolanaSubmitResult } from './solana-execution-types';
5
+ import type { MpcSendCodeParams, MpcVerifyParams, MpcBalanceParams, MpcSignMessageParams, MpcSignTypedDataParams, MpcSendTransactionParams, MpcContractCallParams, MpcContractWriteParams, MpcGasEstimateParams } from './mpc-types';
6
+ export declare class WalletAPI {
7
+ private http;
8
+ constructor(http: HttpClient);
9
+ create(params: CreateWalletParams): Promise<WalletCreated>;
10
+ import(params: ImportWalletParams): Promise<WalletCreated>;
11
+ sign(params: SignParams): Promise<SignResult>;
12
+ send(params: SendParams): Promise<SendResult>;
13
+ /** 预估交易 gas(不耗资金)。 */
14
+ estimateGas(params: {
15
+ walletId: string;
16
+ toAddress: string;
17
+ amount: string;
18
+ chain: string;
19
+ tokenAddress?: string;
20
+ }): Promise<Record<string, unknown>>;
21
+ /** 清空钱包原生余额到指定地址(sweep)。 */
22
+ sweep(params: {
23
+ walletId: string;
24
+ toAddress: string;
25
+ chain: string;
26
+ paymentPassword: string;
27
+ }): Promise<Record<string, unknown>>;
28
+ /** 按 txHash 查交易状态(链上回执)。 */
29
+ txStatus(txHash: string): Promise<Record<string, unknown>>;
30
+ /** 链上读写(读 + 广播统一,走 chain-rpc 聚合层)。 */
31
+ chain(params: ChainParams): Promise<ChainResult>;
32
+ balance(params: WalletBalanceParams): Promise<WalletBalanceResult>;
33
+ /** 查询当前钱包在指定链的充值地址。 */
34
+ address(chain: string): Promise<Record<string, unknown>>;
35
+ /** 交易流水(托管查库;`nc=true` 时直接扫链)。 */
36
+ transactions(p?: {
37
+ page?: number;
38
+ limit?: number;
39
+ chain?: string;
40
+ type?: string;
41
+ nc?: boolean;
42
+ }): Promise<Record<string, unknown>>;
43
+ /** 批量转账(需 admin 权限,B 端钱包签名不可用;建议用 `request` 直连或逐笔 `send`)。 */
44
+ batch(p: {
45
+ walletId: string;
46
+ transfers: Array<{
47
+ to: string;
48
+ amount: string;
49
+ }>;
50
+ paymentPassword: string;
51
+ }): Promise<Record<string, unknown>>;
52
+ /** 查询批量转账进度。 */
53
+ batchProgress(batchId: string): Promise<Record<string, unknown>>;
54
+ /** Chain-RPC 子域:池状态 / 读套餐订阅面(canonical `/v1/wallet/chain/*`)。 */
55
+ chainRpc: {
56
+ /** chain-rpc 网关池状态(各链健康 / 活跃端点,脱敏)。 */
57
+ status: () => Promise<unknown>;
58
+ /** chain-rpc 网关健康检查。 */
59
+ health: () => Promise<unknown>;
60
+ /** RPC 读套餐订阅面。 */
61
+ subscription: {
62
+ /** 套餐目录 + 完整链表(公开,无需 key)。 */
63
+ plans: () => Promise<unknown>;
64
+ /** 发起订阅支付(rx_ key 鉴权):免费即时激活,付费返回支付意图。 */
65
+ checkout: (p: {
66
+ rpcKey: string;
67
+ planId: string;
68
+ rail?: string;
69
+ subscriber?: string;
70
+ }) => Promise<unknown>;
71
+ /** 轮询订阅支付状态(chain rail 链上确认)。 */
72
+ paymentCheck: (p: {
73
+ rpcKey: string;
74
+ subscriber?: string;
75
+ }) => Promise<unknown>;
76
+ /** 确认 x402 rail 支付(提交 base64 PAYMENT-SIGNATURE)以激活订阅。 */
77
+ verify: (p: {
78
+ rpcKey: string;
79
+ paymentSignature: string;
80
+ }) => Promise<unknown>;
81
+ /** 查询订阅用量(套餐 / 月配额 / 当前用量 / 日聚合)。 */
82
+ usage: (rpcKey: string) => Promise<unknown>;
83
+ };
84
+ };
85
+ safe: {
86
+ /** Vault 概览:Safe 总数 / 待签 / 启用风控规则数。 */
87
+ dashboard: () => Promise<unknown>;
88
+ /** 列出多签 Safe(按 userId 过滤)。 */
89
+ list: (userId?: string) => Promise<unknown>;
90
+ /** 单个 Safe 详情(含交易历史)。 */
91
+ info: (address: string) => Promise<unknown>;
92
+ /** 创建并链上部署多签 Safe。 */
93
+ create: (p: {
94
+ chainId: string;
95
+ owners: string[];
96
+ threshold: number;
97
+ name?: string;
98
+ userId?: string;
99
+ }) => Promise<unknown>;
100
+ propose: (p: {
101
+ safeAddress: string;
102
+ to: string;
103
+ value?: string;
104
+ data?: string;
105
+ }) => Promise<unknown>;
106
+ confirm: (p: {
107
+ safeAddress: string;
108
+ safeTxHash: string;
109
+ signature: string;
110
+ }) => Promise<unknown>;
111
+ execute: (p: {
112
+ safeTxHash: string;
113
+ }) => Promise<unknown>;
114
+ /** 更新 owner 集合与阈值(走链上多签提案)。 */
115
+ updateOwners: (address: string, p: {
116
+ owners: string[];
117
+ threshold: number;
118
+ signature?: string;
119
+ userId?: string;
120
+ }) => Promise<unknown>;
121
+ /** 重试待部署 Safe(可按 chainId)。 */
122
+ retry: (chainId?: string) => Promise<unknown>;
123
+ /** 执行所有已达阈值的交易。 */
124
+ executeReady: (safeAddress?: string) => Promise<unknown>;
125
+ /** 同步 Safe 链上状态到库。 */
126
+ sync: (safeAddress: string) => Promise<unknown>;
127
+ /** Safe 状态(enabled / count)。 */
128
+ status: (walletAddress?: string) => Promise<unknown>;
129
+ /** 风控检查(按链规则判定单笔是否超限)。 */
130
+ riskCheck: (p: {
131
+ amount: string;
132
+ chain: string;
133
+ }) => Promise<unknown>;
134
+ };
135
+ session: {
136
+ create: (p: Record<string, unknown>) => Promise<unknown>;
137
+ revoke: (sessionId: string) => Promise<unknown>;
138
+ execute: (p: Record<string, unknown>) => Promise<unknown>;
139
+ /** Solana(Squads Smart Account):构建未签名交易 + 广播已签名交易。 */
140
+ solana: {
141
+ deriveAccount: (p: SolanaDeriveAccountParams) => Promise<SolanaDerivedAccount>;
142
+ createAccount: (p: SolanaCreateAccountParams) => Promise<SolanaUnsignedTransaction>;
143
+ installPolicy: (p: SolanaInstallPolicyParams) => Promise<SolanaUnsignedTransaction>;
144
+ executePolicy: (p: SolanaExecutePolicyParams) => Promise<SolanaUnsignedTransaction>;
145
+ /** 新口径:创建 spending limit policy 交易(待多签审批)。 */
146
+ createPolicyTransaction: (p: SolanaCreatePolicyTransactionParams) => Promise<SolanaUnsignedTransaction>;
147
+ /** settings / policy 交易提案:创建。 */
148
+ createProposal: (p: SolanaCreateProposalParams) => Promise<SolanaUnsignedTransaction>;
149
+ /** settings / policy 交易提案:审批(threshold 达成即 Approved)。 */
150
+ approveProposal: (p: SolanaApproveProposalParams) => Promise<SolanaUnsignedTransaction>;
151
+ /** 新口径:异步执行已批准的 policy 交易。 */
152
+ executePolicyTransaction: (p: SolanaExecutePolicyTransactionParams) => Promise<SolanaUnsignedTransaction>;
153
+ /** 新口径:删除 policy(PolicyRemove)并回收其 rent。 */
154
+ removePolicy: (p: SolanaRemovePolicyParams) => Promise<SolanaUnsignedTransaction>;
155
+ /** 新口径:同步执行 spending limit policy。 */
156
+ executePolicyPayload: (p: SolanaExecutePolicyPayloadParams) => Promise<SolanaUnsignedTransaction>;
157
+ /** 关闭废弃 settings 交易并回收 rent。 */
158
+ closeSettings: (p: SolanaCloseSettingsParams) => Promise<SolanaUnsignedTransaction>;
159
+ /** 关闭 policy 交易并回收 transaction/proposal rent。 */
160
+ closeTransaction: (p: SolanaCloseTransactionParams) => Promise<SolanaUnsignedTransaction>;
161
+ execute: (p: SolanaExecuteParams) => Promise<SolanaUnsignedTransaction>;
162
+ removeSigner: (p: SolanaRemoveSignerParams) => Promise<SolanaUnsignedTransaction>;
163
+ submit: (p: SolanaSubmitParams) => Promise<SolanaSubmitResult>;
164
+ };
165
+ };
166
+ /** MPC(email 分片钱包)子域:canonical `/v1/wallet/mpc/*`。 */
167
+ mpc: {
168
+ sendCode: (p: MpcSendCodeParams) => Promise<unknown>;
169
+ register: (p: MpcVerifyParams) => Promise<unknown>;
170
+ recover: (p: MpcVerifyParams) => Promise<unknown>;
171
+ status: (email: string) => Promise<unknown>;
172
+ wallets: (email?: string) => Promise<unknown>;
173
+ sessionUnlock: (p: MpcVerifyParams) => Promise<unknown>;
174
+ sessionLock: (p: {
175
+ token: string;
176
+ }) => Promise<unknown>;
177
+ sessionStatus: (token: string) => Promise<unknown>;
178
+ balance: (p: MpcBalanceParams) => Promise<unknown>;
179
+ signMessage: (p: MpcSignMessageParams) => Promise<unknown>;
180
+ signTypedData: (p: MpcSignTypedDataParams) => Promise<unknown>;
181
+ sendTransaction: (p: MpcSendTransactionParams) => Promise<unknown>;
182
+ contractRead: (p: MpcContractCallParams) => Promise<unknown>;
183
+ contractWrite: (p: MpcContractWriteParams) => Promise<unknown>;
184
+ gasEstimate: (p: MpcGasEstimateParams) => Promise<unknown>;
185
+ };
186
+ }
@@ -1,7 +1,4 @@
1
1
  "use strict";
2
- // ---------------------------------------------------------------------------
3
- // @keelcodes/sdk — wallet 模块
4
- // ---------------------------------------------------------------------------
5
2
  Object.defineProperty(exports, "__esModule", { value: true });
6
3
  exports.WalletAPI = void 0;
7
4
  class WalletAPI {
@@ -138,5 +135,33 @@ class WalletAPI {
138
135
  q.set('token', params.token);
139
136
  return this.http.get('/v1/wallet/balance?' + q.toString());
140
137
  }
138
+ /** 查询当前钱包在指定链的充值地址。 */
139
+ address(chain) {
140
+ return this.http.get('/v1/wallet/address?chain=' + encodeURIComponent(chain));
141
+ }
142
+ /** 交易流水(托管查库;`nc=true` 时直接扫链)。 */
143
+ transactions(p = {}) {
144
+ const q = new URLSearchParams();
145
+ if (p.page)
146
+ q.set('page', String(p.page));
147
+ if (p.limit)
148
+ q.set('limit', String(p.limit));
149
+ if (p.chain)
150
+ q.set('chain', p.chain);
151
+ if (p.type)
152
+ q.set('type', p.type);
153
+ if (p.nc)
154
+ q.set('nc', 'true');
155
+ const qs = q.toString();
156
+ return this.http.get('/v1/wallet/transactions' + (qs ? '?' + qs : ''));
157
+ }
158
+ /** 批量转账(需 admin 权限,B 端钱包签名不可用;建议用 `request` 直连或逐笔 `send`)。 */
159
+ batch(p) {
160
+ return this.http.post('/v1/wallet/batch', p);
161
+ }
162
+ /** 查询批量转账进度。 */
163
+ batchProgress(batchId) {
164
+ return this.http.get('/v1/wallet/batch/' + encodeURIComponent(batchId) + '/progress');
165
+ }
141
166
  }
142
167
  exports.WalletAPI = WalletAPI;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@keelcodes/sdk",
3
- "version": "2.0.0",
3
+ "version": "2.1.0",
4
4
  "description": "Keel SDK — unified access to payment / wallet / data / account modules over https://keel.codes",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -14,8 +14,8 @@
14
14
  "default": "./dist/payment.js"
15
15
  },
16
16
  "./wallet": {
17
- "types": "./dist/wallet.d.ts",
18
- "default": "./dist/wallet.js"
17
+ "types": "./dist/wallet/index.d.ts",
18
+ "default": "./dist/wallet/index.js"
19
19
  },
20
20
  "./data": {
21
21
  "types": "./dist/data.d.ts",