@3rd-eye-labs/openmm 0.1.1 → 0.1.3
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/dist/cli/cli.js +4 -0
- package/dist/cli/cli.js.map +1 -1
- package/dist/cli/commands/ohlcv.d.ts +3 -0
- package/dist/cli/commands/ohlcv.d.ts.map +1 -0
- package/dist/cli/commands/ohlcv.js +115 -0
- package/dist/cli/commands/ohlcv.js.map +1 -0
- package/dist/cli/commands/wallet.d.ts +7 -0
- package/dist/cli/commands/wallet.d.ts.map +1 -0
- package/dist/cli/commands/wallet.js +271 -0
- package/dist/cli/commands/wallet.js.map +1 -0
- package/dist/core/exchange/base-exchange-connector.d.ts +2 -1
- package/dist/core/exchange/base-exchange-connector.d.ts.map +1 -1
- package/dist/core/exchange/base-exchange-connector.js.map +1 -1
- package/dist/exchanges/bitget/bitget-connector.d.ts +11 -1
- package/dist/exchanges/bitget/bitget-connector.d.ts.map +1 -1
- package/dist/exchanges/bitget/bitget-connector.js +52 -0
- package/dist/exchanges/bitget/bitget-connector.js.map +1 -1
- package/dist/exchanges/gateio/gateio-connector.d.ts +11 -1
- package/dist/exchanges/gateio/gateio-connector.d.ts.map +1 -1
- package/dist/exchanges/gateio/gateio-connector.js +54 -0
- package/dist/exchanges/gateio/gateio-connector.js.map +1 -1
- package/dist/exchanges/kraken/kraken-connector.d.ts +6 -1
- package/dist/exchanges/kraken/kraken-connector.d.ts.map +1 -1
- package/dist/exchanges/kraken/kraken-connector.js +44 -0
- package/dist/exchanges/kraken/kraken-connector.js.map +1 -1
- package/dist/exchanges/mexc/mexc-auth.d.ts +1 -0
- package/dist/exchanges/mexc/mexc-auth.d.ts.map +1 -1
- package/dist/exchanges/mexc/mexc-auth.js +4 -1
- package/dist/exchanges/mexc/mexc-auth.js.map +1 -1
- package/dist/exchanges/mexc/mexc-connector.d.ts +6 -1
- package/dist/exchanges/mexc/mexc-connector.d.ts.map +1 -1
- package/dist/exchanges/mexc/mexc-connector.js +37 -0
- package/dist/exchanges/mexc/mexc-connector.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +25 -1
- package/dist/index.js.map +1 -1
- package/dist/types/market.d.ts +15 -0
- package/dist/types/market.d.ts.map +1 -1
- package/dist/x402/crypto.d.ts +79 -0
- package/dist/x402/crypto.d.ts.map +1 -0
- package/dist/x402/crypto.js +300 -0
- package/dist/x402/crypto.js.map +1 -0
- package/dist/x402/evm.d.ts +41 -0
- package/dist/x402/evm.d.ts.map +1 -0
- package/dist/x402/evm.js +229 -0
- package/dist/x402/evm.js.map +1 -0
- package/dist/x402/handler.d.ts +53 -0
- package/dist/x402/handler.d.ts.map +1 -0
- package/dist/x402/handler.js +233 -0
- package/dist/x402/handler.js.map +1 -0
- package/dist/x402/index.d.ts +29 -0
- package/dist/x402/index.d.ts.map +1 -0
- package/dist/x402/index.js +67 -0
- package/dist/x402/index.js.map +1 -0
- package/dist/x402/types.d.ts +185 -0
- package/dist/x402/types.d.ts.map +1 -0
- package/dist/x402/types.js +7 -0
- package/dist/x402/types.js.map +1 -0
- package/dist/x402/wallet.d.ts +65 -0
- package/dist/x402/wallet.d.ts.map +1 -0
- package/dist/x402/wallet.js +282 -0
- package/dist/x402/wallet.js.map +1 -0
- package/package.json +1 -1
- package/dist/cli/commands/grid.d.ts +0 -3
- package/dist/cli/commands/grid.d.ts.map +0 -1
- package/dist/cli/commands/grid.js +0 -103
- package/dist/cli/commands/grid.js.map +0 -1
- package/dist/cli/commands/multi-trade.d.ts +0 -3
- package/dist/cli/commands/multi-trade.d.ts.map +0 -1
- package/dist/cli/commands/multi-trade.js +0 -175
- package/dist/cli/commands/multi-trade.js.map +0 -1
- package/dist/cli/pool-discovery.d.ts +0 -56
- package/dist/cli/pool-discovery.d.ts.map +0 -1
- package/dist/cli/pool-discovery.js +0 -283
- package/dist/cli/pool-discovery.js.map +0 -1
- package/dist/core/price-aggregation/price-cache.d.ts +0 -55
- package/dist/core/price-aggregation/price-cache.d.ts.map +0 -1
- package/dist/core/price-aggregation/price-cache.js +0 -152
- package/dist/core/price-aggregation/price-cache.js.map +0 -1
- package/dist/examples/mexc-connector-comprehensive-test.d.ts +0 -15
- package/dist/examples/mexc-connector-comprehensive-test.d.ts.map +0 -1
- package/dist/examples/mexc-connector-comprehensive-test.js +0 -514
- package/dist/examples/mexc-connector-comprehensive-test.js.map +0 -1
- package/dist/examples/mexc-order-update-test.d.ts +0 -4
- package/dist/examples/mexc-order-update-test.d.ts.map +0 -1
- package/dist/examples/mexc-order-update-test.js +0 -186
- package/dist/examples/mexc-order-update-test.js.map +0 -1
- package/dist/examples/mexc-test.d.ts +0 -9
- package/dist/examples/mexc-test.d.ts.map +0 -1
- package/dist/examples/mexc-test.js +0 -218
- package/dist/examples/mexc-test.js.map +0 -1
- package/dist/examples/mexc-trades-debug.d.ts +0 -2
- package/dist/examples/mexc-trades-debug.d.ts.map +0 -1
- package/dist/examples/mexc-trades-debug.js +0 -101
- package/dist/examples/mexc-trades-debug.js.map +0 -1
- package/dist/examples/mexc-trades-subscription-debug.d.ts +0 -2
- package/dist/examples/mexc-trades-subscription-debug.d.ts.map +0 -1
- package/dist/examples/mexc-trades-subscription-debug.js +0 -150
- package/dist/examples/mexc-trades-subscription-debug.js.map +0 -1
- package/dist/examples/mexc-websocket-test.d.ts +0 -8
- package/dist/examples/mexc-websocket-test.d.ts.map +0 -1
- package/dist/examples/mexc-websocket-test.js +0 -115
- package/dist/examples/mexc-websocket-test.js.map +0 -1
- package/dist/examples/test-protobuf-status-detection.d.ts +0 -9
- package/dist/examples/test-protobuf-status-detection.d.ts.map +0 -1
- package/dist/examples/test-protobuf-status-detection.js +0 -83
- package/dist/examples/test-protobuf-status-detection.js.map +0 -1
- package/dist/exchanges/base-exchange-connector.d.ts +0 -33
- package/dist/exchanges/base-exchange-connector.d.ts.map +0 -1
- package/dist/exchanges/base-exchange-connector.js +0 -55
- package/dist/exchanges/base-exchange-connector.js.map +0 -1
- package/dist/exchanges/kraken/test-kraken-websocket.d.ts +0 -19
- package/dist/exchanges/kraken/test-kraken-websocket.d.ts.map +0 -1
- package/dist/exchanges/kraken/test-kraken-websocket.js +0 -413
- package/dist/exchanges/kraken/test-kraken-websocket.js.map +0 -1
- package/dist/mcp/resources/index.d.ts +0 -3
- package/dist/mcp/resources/index.d.ts.map +0 -1
- package/dist/mcp/resources/index.js +0 -11
- package/dist/mcp/resources/index.js.map +0 -1
- package/dist/mcp/server.d.ts +0 -4
- package/dist/mcp/server.d.ts.map +0 -1
- package/dist/mcp/server.js +0 -29
- package/dist/mcp/server.js.map +0 -1
- package/dist/mcp/tools/index.d.ts +0 -3
- package/dist/mcp/tools/index.d.ts.map +0 -1
- package/dist/mcp/tools/index.js +0 -12
- package/dist/mcp/tools/index.js.map +0 -1
- package/dist/tests/fixtures/test-helpers.d.ts +0 -5
- package/dist/tests/fixtures/test-helpers.d.ts.map +0 -1
- package/dist/tests/fixtures/test-helpers.js +0 -8
- package/dist/tests/fixtures/test-helpers.js.map +0 -1
- package/dist/tests/integration/exchanges/mexc/mexc-integration.test.d.ts +0 -2
- package/dist/tests/integration/exchanges/mexc/mexc-integration.test.d.ts.map +0 -1
- package/dist/tests/integration/exchanges/mexc/mexc-integration.test.js +0 -237
- package/dist/tests/integration/exchanges/mexc/mexc-integration.test.js.map +0 -1
- package/dist/tests/integration/price-aggregation/cardano-price-service.test.d.ts +0 -2
- package/dist/tests/integration/price-aggregation/cardano-price-service.test.d.ts.map +0 -1
- package/dist/tests/integration/price-aggregation/cardano-price-service.test.js +0 -57
- package/dist/tests/integration/price-aggregation/cardano-price-service.test.js.map +0 -1
- package/dist/tests/integration/price-aggregation/price-aggregation-integration.test.d.ts +0 -2
- package/dist/tests/integration/price-aggregation/price-aggregation-integration.test.d.ts.map +0 -1
- package/dist/tests/integration/price-aggregation/price-aggregation-integration.test.js +0 -141
- package/dist/tests/integration/price-aggregation/price-aggregation-integration.test.js.map +0 -1
- package/dist/tests/integration/strategies/grid/grid-strategy-e2e.test.d.ts +0 -2
- package/dist/tests/integration/strategies/grid/grid-strategy-e2e.test.d.ts.map +0 -1
- package/dist/tests/integration/strategies/grid/grid-strategy-e2e.test.js +0 -375
- package/dist/tests/integration/strategies/grid/grid-strategy-e2e.test.js.map +0 -1
- package/dist/tests/unit/cli/exchange-factory.test.d.ts +0 -2
- package/dist/tests/unit/cli/exchange-factory.test.d.ts.map +0 -1
- package/dist/tests/unit/cli/exchange-factory.test.js +0 -148
- package/dist/tests/unit/cli/exchange-factory.test.js.map +0 -1
- package/dist/tests/unit/config/environment.test.d.ts +0 -2
- package/dist/tests/unit/config/environment.test.d.ts.map +0 -1
- package/dist/tests/unit/config/environment.test.js +0 -158
- package/dist/tests/unit/config/environment.test.js.map +0 -1
- package/dist/tests/unit/config/launcher-config.test.d.ts +0 -2
- package/dist/tests/unit/config/launcher-config.test.d.ts.map +0 -1
- package/dist/tests/unit/config/launcher-config.test.js +0 -117
- package/dist/tests/unit/config/launcher-config.test.js.map +0 -1
- package/dist/tests/unit/config/price-aggregation.test.d.ts +0 -2
- package/dist/tests/unit/config/price-aggregation.test.d.ts.map +0 -1
- package/dist/tests/unit/config/price-aggregation.test.js +0 -144
- package/dist/tests/unit/config/price-aggregation.test.js.map +0 -1
- package/dist/tests/unit/core/exchange/base-exchange-connector.test.d.ts +0 -2
- package/dist/tests/unit/core/exchange/base-exchange-connector.test.d.ts.map +0 -1
- package/dist/tests/unit/core/exchange/base-exchange-connector.test.js +0 -191
- package/dist/tests/unit/core/exchange/base-exchange-connector.test.js.map +0 -1
- package/dist/tests/unit/core/exchange/base-exchange-data-mapper.test.d.ts +0 -2
- package/dist/tests/unit/core/exchange/base-exchange-data-mapper.test.d.ts.map +0 -1
- package/dist/tests/unit/core/exchange/base-exchange-data-mapper.test.js +0 -324
- package/dist/tests/unit/core/exchange/base-exchange-data-mapper.test.js.map +0 -1
- package/dist/tests/unit/core/price-aggregation/cardano-price-service.test.d.ts +0 -2
- package/dist/tests/unit/core/price-aggregation/cardano-price-service.test.d.ts.map +0 -1
- package/dist/tests/unit/core/price-aggregation/cardano-price-service.test.js +0 -177
- package/dist/tests/unit/core/price-aggregation/cardano-price-service.test.js.map +0 -1
- package/dist/tests/unit/core/price-aggregation/iris-api-client.test.d.ts +0 -2
- package/dist/tests/unit/core/price-aggregation/iris-api-client.test.d.ts.map +0 -1
- package/dist/tests/unit/core/price-aggregation/iris-api-client.test.js +0 -168
- package/dist/tests/unit/core/price-aggregation/iris-api-client.test.js.map +0 -1
- package/dist/tests/unit/core/price-aggregation/iris-pool-discovery.test.d.ts +0 -2
- package/dist/tests/unit/core/price-aggregation/iris-pool-discovery.test.d.ts.map +0 -1
- package/dist/tests/unit/core/price-aggregation/iris-pool-discovery.test.js +0 -217
- package/dist/tests/unit/core/price-aggregation/iris-pool-discovery.test.js.map +0 -1
- package/dist/tests/unit/core/price-aggregation/price-calculator.test.d.ts +0 -2
- package/dist/tests/unit/core/price-aggregation/price-calculator.test.d.ts.map +0 -1
- package/dist/tests/unit/core/price-aggregation/price-calculator.test.js +0 -229
- package/dist/tests/unit/core/price-aggregation/price-calculator.test.js.map +0 -1
- package/dist/tests/unit/core/risk-management/risk-manager.test.d.ts +0 -2
- package/dist/tests/unit/core/risk-management/risk-manager.test.d.ts.map +0 -1
- package/dist/tests/unit/core/risk-management/risk-manager.test.js +0 -194
- package/dist/tests/unit/core/risk-management/risk-manager.test.js.map +0 -1
- package/dist/tests/unit/core/strategy/base-strategy.test.d.ts +0 -2
- package/dist/tests/unit/core/strategy/base-strategy.test.d.ts.map +0 -1
- package/dist/tests/unit/core/strategy/base-strategy.test.js +0 -254
- package/dist/tests/unit/core/strategy/base-strategy.test.js.map +0 -1
- package/dist/tests/unit/core/strategy/strategy-factory.test.d.ts +0 -2
- package/dist/tests/unit/core/strategy/strategy-factory.test.d.ts.map +0 -1
- package/dist/tests/unit/core/strategy/strategy-factory.test.js +0 -213
- package/dist/tests/unit/core/strategy/strategy-factory.test.js.map +0 -1
- package/dist/tests/unit/exchanges/mexc/mexc-auth.test.d.ts +0 -2
- package/dist/tests/unit/exchanges/mexc/mexc-auth.test.d.ts.map +0 -1
- package/dist/tests/unit/exchanges/mexc/mexc-auth.test.js +0 -452
- package/dist/tests/unit/exchanges/mexc/mexc-auth.test.js.map +0 -1
- package/dist/tests/unit/exchanges/mexc/mexc-connector.test.d.ts +0 -2
- package/dist/tests/unit/exchanges/mexc/mexc-connector.test.d.ts.map +0 -1
- package/dist/tests/unit/exchanges/mexc/mexc-connector.test.js +0 -1419
- package/dist/tests/unit/exchanges/mexc/mexc-connector.test.js.map +0 -1
- package/dist/tests/unit/exchanges/mexc/mexc-data-mapper.test.d.ts +0 -2
- package/dist/tests/unit/exchanges/mexc/mexc-data-mapper.test.d.ts.map +0 -1
- package/dist/tests/unit/exchanges/mexc/mexc-data-mapper.test.js +0 -435
- package/dist/tests/unit/exchanges/mexc/mexc-data-mapper.test.js.map +0 -1
- package/dist/tests/unit/exchanges/mexc/mexc-protobuf-decoder.test.d.ts +0 -2
- package/dist/tests/unit/exchanges/mexc/mexc-protobuf-decoder.test.d.ts.map +0 -1
- package/dist/tests/unit/exchanges/mexc/mexc-protobuf-decoder.test.js +0 -314
- package/dist/tests/unit/exchanges/mexc/mexc-protobuf-decoder.test.js.map +0 -1
- package/dist/tests/unit/exchanges/mexc/mexc-protobuf-status-detection.test.d.ts +0 -2
- package/dist/tests/unit/exchanges/mexc/mexc-protobuf-status-detection.test.d.ts.map +0 -1
- package/dist/tests/unit/exchanges/mexc/mexc-protobuf-status-detection.test.js +0 -178
- package/dist/tests/unit/exchanges/mexc/mexc-protobuf-status-detection.test.js.map +0 -1
- package/dist/tests/unit/exchanges/mexc/mexc-user-stream.test.d.ts +0 -2
- package/dist/tests/unit/exchanges/mexc/mexc-user-stream.test.d.ts.map +0 -1
- package/dist/tests/unit/exchanges/mexc/mexc-user-stream.test.js +0 -502
- package/dist/tests/unit/exchanges/mexc/mexc-user-stream.test.js.map +0 -1
- package/dist/tests/unit/exchanges/mexc/mexc-utils.test.d.ts +0 -2
- package/dist/tests/unit/exchanges/mexc/mexc-utils.test.d.ts.map +0 -1
- package/dist/tests/unit/exchanges/mexc/mexc-utils.test.js +0 -317
- package/dist/tests/unit/exchanges/mexc/mexc-utils.test.js.map +0 -1
- package/dist/tests/unit/exchanges/mexc/mexc-websocket.test.d.ts +0 -2
- package/dist/tests/unit/exchanges/mexc/mexc-websocket.test.d.ts.map +0 -1
- package/dist/tests/unit/exchanges/mexc/mexc-websocket.test.js +0 -843
- package/dist/tests/unit/exchanges/mexc/mexc-websocket.test.js.map +0 -1
- package/dist/tests/unit/strategies/grid/grid-calculator.test.d.ts +0 -2
- package/dist/tests/unit/strategies/grid/grid-calculator.test.d.ts.map +0 -1
- package/dist/tests/unit/strategies/grid/grid-calculator.test.js +0 -67
- package/dist/tests/unit/strategies/grid/grid-calculator.test.js.map +0 -1
- package/dist/tests/unit/strategies/grid/grid-order-manager.test.d.ts +0 -2
- package/dist/tests/unit/strategies/grid/grid-order-manager.test.d.ts.map +0 -1
- package/dist/tests/unit/strategies/grid/grid-order-manager.test.js +0 -211
- package/dist/tests/unit/strategies/grid/grid-order-manager.test.js.map +0 -1
- package/dist/tests/unit/strategies/grid/grid-strategy-simple.test.d.ts +0 -2
- package/dist/tests/unit/strategies/grid/grid-strategy-simple.test.d.ts.map +0 -1
- package/dist/tests/unit/strategies/grid/grid-strategy-simple.test.js +0 -197
- package/dist/tests/unit/strategies/grid/grid-strategy-simple.test.js.map +0 -1
- package/dist/tests/unit/strategies/grid/grid-strategy.test.d.ts +0 -2
- package/dist/tests/unit/strategies/grid/grid-strategy.test.d.ts.map +0 -1
- package/dist/tests/unit/strategies/grid/grid-strategy.test.js +0 -429
- package/dist/tests/unit/strategies/grid/grid-strategy.test.js.map +0 -1
- package/dist/tests/unit/utils/logger.test.d.ts +0 -2
- package/dist/tests/unit/utils/logger.test.d.ts.map +0 -1
- package/dist/tests/unit/utils/logger.test.js +0 -260
- package/dist/tests/unit/utils/logger.test.js.map +0 -1
- package/dist/tests/unit/utils/symbol-utils.test.d.ts +0 -2
- package/dist/tests/unit/utils/symbol-utils.test.d.ts.map +0 -1
- package/dist/tests/unit/utils/symbol-utils.test.js +0 -178
- package/dist/tests/unit/utils/symbol-utils.test.js.map +0 -1
- package/dist/types/price-aggregation.d.ts +0 -31
- package/dist/types/price-aggregation.d.ts.map +0 -1
- package/dist/types/price-aggregation.js +0 -6
- package/dist/types/price-aggregation.js.map +0 -1
- package/dist/utils/crypto.d.ts +0 -15
- package/dist/utils/crypto.d.ts.map +0 -1
- package/dist/utils/crypto.js +0 -50
- package/dist/utils/crypto.js.map +0 -1
- package/dist/utils/validation.d.ts +0 -36
- package/dist/utils/validation.d.ts.map +0 -1
- package/dist/utils/validation.js +0 -174
- package/dist/utils/validation.js.map +0 -1
|
@@ -0,0 +1,185 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* OpenMM x402 Payment Types
|
|
3
|
+
* Type definitions for x402 payment protocol support.
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Payment requirement from 402 response header.
|
|
7
|
+
*/
|
|
8
|
+
export interface PaymentRequirement {
|
|
9
|
+
/** CAIP-2 network identifier (e.g., "eip155:8453" for Base) */
|
|
10
|
+
network: string;
|
|
11
|
+
/** Token contract address */
|
|
12
|
+
asset: string;
|
|
13
|
+
/** Amount in smallest unit (e.g., USDC with 6 decimals: 1000000 = $1) */
|
|
14
|
+
amount: string;
|
|
15
|
+
/** Recipient address */
|
|
16
|
+
payTo?: string;
|
|
17
|
+
pay_to?: string;
|
|
18
|
+
/** Additional requirements (e.g., EIP-712 domain info) */
|
|
19
|
+
extra?: {
|
|
20
|
+
name?: string;
|
|
21
|
+
version?: string;
|
|
22
|
+
[key: string]: unknown;
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Parsed 402 response with payment requirements.
|
|
27
|
+
*/
|
|
28
|
+
export interface PaymentRequiredResponse {
|
|
29
|
+
accepts: PaymentRequirement[];
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* EVM wallet keypair.
|
|
33
|
+
*/
|
|
34
|
+
export interface EvmWallet {
|
|
35
|
+
address: string;
|
|
36
|
+
privateKey: string;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Solana wallet keypair.
|
|
40
|
+
*/
|
|
41
|
+
export interface SolanaWallet {
|
|
42
|
+
address: string;
|
|
43
|
+
privateKey: string;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Encrypted key storage format.
|
|
47
|
+
*/
|
|
48
|
+
export interface EncryptedKey {
|
|
49
|
+
/** Unencrypted storage */
|
|
50
|
+
data?: string;
|
|
51
|
+
encrypted?: boolean;
|
|
52
|
+
/** Encrypted storage */
|
|
53
|
+
cipher?: string;
|
|
54
|
+
kdf?: string;
|
|
55
|
+
kdfParams?: {
|
|
56
|
+
N: number;
|
|
57
|
+
r: number;
|
|
58
|
+
p: number;
|
|
59
|
+
};
|
|
60
|
+
salt?: string;
|
|
61
|
+
iv?: string;
|
|
62
|
+
authTag?: string;
|
|
63
|
+
ciphertext?: string;
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Stored wallet format.
|
|
67
|
+
*/
|
|
68
|
+
export interface StoredWallet {
|
|
69
|
+
name: string;
|
|
70
|
+
createdAt: string;
|
|
71
|
+
evm: {
|
|
72
|
+
address: string;
|
|
73
|
+
encrypted: EncryptedKey;
|
|
74
|
+
};
|
|
75
|
+
solana?: {
|
|
76
|
+
address: string;
|
|
77
|
+
encrypted: EncryptedKey;
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Wallet configuration.
|
|
82
|
+
*/
|
|
83
|
+
export interface WalletConfig {
|
|
84
|
+
defaultWallet: string | null;
|
|
85
|
+
passwordHash: {
|
|
86
|
+
salt: string;
|
|
87
|
+
hash: string;
|
|
88
|
+
} | null;
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Exported wallet with decrypted keys.
|
|
92
|
+
*/
|
|
93
|
+
export interface ExportedWallet {
|
|
94
|
+
name: string;
|
|
95
|
+
evm: {
|
|
96
|
+
address: string;
|
|
97
|
+
privateKey: string;
|
|
98
|
+
};
|
|
99
|
+
solana?: {
|
|
100
|
+
address: string;
|
|
101
|
+
privateKey: string;
|
|
102
|
+
};
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Wallet list entry (public info only).
|
|
106
|
+
*/
|
|
107
|
+
export interface WalletListEntry {
|
|
108
|
+
name: string;
|
|
109
|
+
evm: string | null;
|
|
110
|
+
solana: string | null;
|
|
111
|
+
createdAt: string;
|
|
112
|
+
isDefault: boolean;
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* EIP-712 domain for typed data signing.
|
|
116
|
+
*/
|
|
117
|
+
export interface EIP712Domain {
|
|
118
|
+
name: string;
|
|
119
|
+
version: string;
|
|
120
|
+
chainId: number;
|
|
121
|
+
verifyingContract: string;
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* EIP-3009 TransferWithAuthorization message.
|
|
125
|
+
*/
|
|
126
|
+
export interface TransferAuthorization {
|
|
127
|
+
from: string;
|
|
128
|
+
to: string;
|
|
129
|
+
value: bigint;
|
|
130
|
+
validAfter: bigint;
|
|
131
|
+
validBefore: bigint;
|
|
132
|
+
nonce: string;
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* ECDSA signature components.
|
|
136
|
+
*/
|
|
137
|
+
export interface ECDSASignature {
|
|
138
|
+
r: Buffer;
|
|
139
|
+
s: Buffer;
|
|
140
|
+
v: number;
|
|
141
|
+
}
|
|
142
|
+
/**
|
|
143
|
+
* x402 payment payload for Payment-Signature header.
|
|
144
|
+
*/
|
|
145
|
+
export interface X402PaymentPayload {
|
|
146
|
+
x402Version: number;
|
|
147
|
+
payload: {
|
|
148
|
+
authorization: {
|
|
149
|
+
from: string;
|
|
150
|
+
to: string;
|
|
151
|
+
value: string;
|
|
152
|
+
validAfter: string;
|
|
153
|
+
validBefore: string;
|
|
154
|
+
nonce: string;
|
|
155
|
+
};
|
|
156
|
+
signature: string;
|
|
157
|
+
};
|
|
158
|
+
accepted: PaymentRequirement;
|
|
159
|
+
resource?: {
|
|
160
|
+
url: string;
|
|
161
|
+
};
|
|
162
|
+
}
|
|
163
|
+
/**
|
|
164
|
+
* Options for x402 fetch wrapper.
|
|
165
|
+
*/
|
|
166
|
+
export interface X402FetchOptions extends RequestInit {
|
|
167
|
+
/** Wallet name to use (defaults to default wallet) */
|
|
168
|
+
walletName?: string;
|
|
169
|
+
/** Wallet password (defaults to env var OPENMM_WALLET_PASSWORD) */
|
|
170
|
+
password?: string;
|
|
171
|
+
/** Skip auto-payment, just return 402 response */
|
|
172
|
+
skipPayment?: boolean;
|
|
173
|
+
/** Maximum retries after payment */
|
|
174
|
+
maxRetries?: number;
|
|
175
|
+
}
|
|
176
|
+
/**
|
|
177
|
+
* Result of checking x402 balance.
|
|
178
|
+
*/
|
|
179
|
+
export interface X402BalanceResult {
|
|
180
|
+
network: string;
|
|
181
|
+
address: string;
|
|
182
|
+
balance: number;
|
|
183
|
+
symbol: string;
|
|
184
|
+
}
|
|
185
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/x402/types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,+DAA+D;IAC/D,OAAO,EAAE,MAAM,CAAC;IAChB,6BAA6B;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,yEAAyE;IACzE,MAAM,EAAE,MAAM,CAAC;IACf,wBAAwB;IACxB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,0DAA0D;IAC1D,KAAK,CAAC,EAAE;QACN,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;KACxB,CAAC;CACH;AAED;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC,OAAO,EAAE,kBAAkB,EAAE,CAAC;CAC/B;AAED;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,0BAA0B;IAC1B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,wBAAwB;IACxB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE;QACV,CAAC,EAAE,MAAM,CAAC;QACV,CAAC,EAAE,MAAM,CAAC;QACV,CAAC,EAAE,MAAM,CAAC;KACX,CAAC;IACF,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,GAAG,EAAE;QACH,OAAO,EAAE,MAAM,CAAC;QAChB,SAAS,EAAE,YAAY,CAAC;KACzB,CAAC;IACF,MAAM,CAAC,EAAE;QACP,OAAO,EAAE,MAAM,CAAC;QAChB,SAAS,EAAE,YAAY,CAAC;KACzB,CAAC;CACH;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,YAAY,EAAE;QACZ,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;KACd,GAAG,IAAI,CAAC;CACV;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE;QACH,OAAO,EAAE,MAAM,CAAC;QAChB,UAAU,EAAE,MAAM,CAAC;KACpB,CAAC;IACF,MAAM,CAAC,EAAE;QACP,OAAO,EAAE,MAAM,CAAC;QAChB,UAAU,EAAE,MAAM,CAAC;KACpB,CAAC;CACH;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACnB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,OAAO,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,iBAAiB,EAAE,MAAM,CAAC;CAC3B;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;CACX;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE;QACP,aAAa,EAAE;YACb,IAAI,EAAE,MAAM,CAAC;YACb,EAAE,EAAE,MAAM,CAAC;YACX,KAAK,EAAE,MAAM,CAAC;YACd,UAAU,EAAE,MAAM,CAAC;YACnB,WAAW,EAAE,MAAM,CAAC;YACpB,KAAK,EAAE,MAAM,CAAC;SACf,CAAC;QACF,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;IACF,QAAQ,EAAE,kBAAkB,CAAC;IAC7B,QAAQ,CAAC,EAAE;QACT,GAAG,EAAE,MAAM,CAAC;KACb,CAAC;CACH;AAED;;GAEG;AACH,MAAM,WAAW,gBAAiB,SAAQ,WAAW;IACnD,sDAAsD;IACtD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,mEAAmE;IACnE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,kDAAkD;IAClD,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,oCAAoC;IACpC,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;CAChB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/x402/types.ts"],"names":[],"mappings":";AAAA;;;GAGG"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* OpenMM x402 Wallet Management
|
|
3
|
+
* Local key generation and storage for EVM and Solana chains.
|
|
4
|
+
*/
|
|
5
|
+
import type { WalletConfig, ExportedWallet, WalletListEntry } from './types';
|
|
6
|
+
/**
|
|
7
|
+
* Resolve wallet password from environment variable.
|
|
8
|
+
*/
|
|
9
|
+
export declare function resolvePassword(): string | null;
|
|
10
|
+
/**
|
|
11
|
+
* Get wallet configuration.
|
|
12
|
+
*/
|
|
13
|
+
export declare function getWalletConfig(): WalletConfig;
|
|
14
|
+
/**
|
|
15
|
+
* List all wallets.
|
|
16
|
+
*/
|
|
17
|
+
export declare function listWallets(): {
|
|
18
|
+
wallets: WalletListEntry[];
|
|
19
|
+
defaultWallet: string | null;
|
|
20
|
+
};
|
|
21
|
+
/**
|
|
22
|
+
* Create a new wallet pair (EVM + Solana).
|
|
23
|
+
*/
|
|
24
|
+
export declare function createWallet(name: string, password: string | null): {
|
|
25
|
+
name: string;
|
|
26
|
+
evm: string;
|
|
27
|
+
solana: string;
|
|
28
|
+
isDefault: boolean;
|
|
29
|
+
};
|
|
30
|
+
/**
|
|
31
|
+
* Show wallet details (addresses only, no keys).
|
|
32
|
+
*/
|
|
33
|
+
export declare function showWallet(name: string): {
|
|
34
|
+
name: string;
|
|
35
|
+
evm: string | null;
|
|
36
|
+
solana: string | null;
|
|
37
|
+
createdAt: string;
|
|
38
|
+
isDefault: boolean;
|
|
39
|
+
};
|
|
40
|
+
/**
|
|
41
|
+
* Export private keys for a wallet (requires password).
|
|
42
|
+
*/
|
|
43
|
+
export declare function exportWallet(name: string, password: string | null): ExportedWallet;
|
|
44
|
+
/**
|
|
45
|
+
* Set the default wallet.
|
|
46
|
+
*/
|
|
47
|
+
export declare function setDefaultWallet(name: string): {
|
|
48
|
+
defaultWallet: string;
|
|
49
|
+
};
|
|
50
|
+
/**
|
|
51
|
+
* Delete a wallet.
|
|
52
|
+
*/
|
|
53
|
+
export declare function deleteWallet(name: string, password: string | null): {
|
|
54
|
+
deleted: string;
|
|
55
|
+
newDefault: string | null;
|
|
56
|
+
};
|
|
57
|
+
/**
|
|
58
|
+
* Get the default wallet's addresses without requiring password.
|
|
59
|
+
*/
|
|
60
|
+
export declare function getDefaultWalletAddresses(): {
|
|
61
|
+
name: string;
|
|
62
|
+
evm: string | null;
|
|
63
|
+
solana: string | null;
|
|
64
|
+
} | null;
|
|
65
|
+
//# sourceMappingURL=wallet.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wallet.d.ts","sourceRoot":"","sources":["../../src/x402/wallet.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAcH,OAAO,KAAK,EAEV,YAAY,EACZ,cAAc,EACd,eAAe,EAEhB,MAAM,SAAS,CAAC;AAuCjB;;GAEG;AACH,wBAAgB,eAAe,IAAI,MAAM,GAAG,IAAI,CAE/C;AAID;;GAEG;AACH,wBAAgB,eAAe,IAAI,YAAY,CAM9C;AAqCD;;GAEG;AACH,wBAAgB,WAAW,IAAI;IAAE,OAAO,EAAE,eAAe,EAAE,CAAC;IAAC,aAAa,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,CAmB1F;AAED;;GAEG;AACH,wBAAgB,YAAY,CAC1B,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,GAAG,IAAI,GACtB;IACD,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,OAAO,CAAC;CACpB,CAsEA;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG;IACxC,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACnB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,OAAO,CAAC;CACpB,CAgBA;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,cAAc,CA0BlF;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG;IAAE,aAAa,EAAE,MAAM,CAAA;CAAE,CAWxE;AAED;;GAEG;AACH,wBAAgB,YAAY,CAC1B,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,GAAG,IAAI,GACtB;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,CA2BhD;AAED;;GAEG;AACH,wBAAgB,yBAAyB,IAAI;IAC3C,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACnB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;CACvB,GAAG,IAAI,CAcP"}
|
|
@@ -0,0 +1,282 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* OpenMM x402 Wallet Management
|
|
4
|
+
* Local key generation and storage for EVM and Solana chains.
|
|
5
|
+
*/
|
|
6
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
7
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
8
|
+
};
|
|
9
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
|
+
exports.resolvePassword = resolvePassword;
|
|
11
|
+
exports.getWalletConfig = getWalletConfig;
|
|
12
|
+
exports.listWallets = listWallets;
|
|
13
|
+
exports.createWallet = createWallet;
|
|
14
|
+
exports.showWallet = showWallet;
|
|
15
|
+
exports.exportWallet = exportWallet;
|
|
16
|
+
exports.setDefaultWallet = setDefaultWallet;
|
|
17
|
+
exports.deleteWallet = deleteWallet;
|
|
18
|
+
exports.getDefaultWalletAddresses = getDefaultWalletAddresses;
|
|
19
|
+
const fs_1 = __importDefault(require("fs"));
|
|
20
|
+
const path_1 = __importDefault(require("path"));
|
|
21
|
+
const crypto_1 = require("./crypto");
|
|
22
|
+
// ============= Constants =============
|
|
23
|
+
function getWalletsDir() {
|
|
24
|
+
const configDir = path_1.default.join(process.env.HOME || process.env.USERPROFILE || '', '.openmm');
|
|
25
|
+
return path_1.default.join(configDir, 'wallets');
|
|
26
|
+
}
|
|
27
|
+
function getWalletConfigPath() {
|
|
28
|
+
return path_1.default.join(getWalletsDir(), 'config.json');
|
|
29
|
+
}
|
|
30
|
+
const WALLET_NAME_RE = /^[a-zA-Z0-9_-]{1,64}$/;
|
|
31
|
+
// ============= Helpers =============
|
|
32
|
+
function ensureWalletsDir() {
|
|
33
|
+
const dir = getWalletsDir();
|
|
34
|
+
if (!fs_1.default.existsSync(dir)) {
|
|
35
|
+
fs_1.default.mkdirSync(dir, { mode: 0o700, recursive: true });
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
function validateWalletName(name) {
|
|
39
|
+
if (!name || !WALLET_NAME_RE.test(name)) {
|
|
40
|
+
throw new Error('Wallet name must be 1-64 characters: letters, numbers, hyphens, underscores only');
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
function getWalletFile(name) {
|
|
44
|
+
validateWalletName(name);
|
|
45
|
+
return path_1.default.join(getWalletsDir(), `${name}.json`);
|
|
46
|
+
}
|
|
47
|
+
// ============= Password Resolution =============
|
|
48
|
+
/**
|
|
49
|
+
* Resolve wallet password from environment variable.
|
|
50
|
+
*/
|
|
51
|
+
function resolvePassword() {
|
|
52
|
+
return process.env.OPENMM_WALLET_PASSWORD || null;
|
|
53
|
+
}
|
|
54
|
+
// ============= Configuration =============
|
|
55
|
+
/**
|
|
56
|
+
* Get wallet configuration.
|
|
57
|
+
*/
|
|
58
|
+
function getWalletConfig() {
|
|
59
|
+
const configPath = getWalletConfigPath();
|
|
60
|
+
if (!fs_1.default.existsSync(configPath)) {
|
|
61
|
+
return { defaultWallet: null, passwordHash: null };
|
|
62
|
+
}
|
|
63
|
+
return JSON.parse(fs_1.default.readFileSync(configPath, 'utf8'));
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Save wallet configuration.
|
|
67
|
+
*/
|
|
68
|
+
function saveWalletConfig(config) {
|
|
69
|
+
ensureWalletsDir();
|
|
70
|
+
fs_1.default.writeFileSync(getWalletConfigPath(), JSON.stringify(config, null, 2), { mode: 0o600 });
|
|
71
|
+
}
|
|
72
|
+
// ============= Wallet Operations =============
|
|
73
|
+
/**
|
|
74
|
+
* Generate an EVM wallet (secp256k1).
|
|
75
|
+
*/
|
|
76
|
+
function generateEvmWallet() {
|
|
77
|
+
const privateKey = (0, crypto_1.generatePrivateKey)();
|
|
78
|
+
const address = (0, crypto_1.privateKeyToEvmAddress)(privateKey);
|
|
79
|
+
const privateKeyHex = privateKey.toString('hex');
|
|
80
|
+
// Zero sensitive buffer
|
|
81
|
+
privateKey.fill(0);
|
|
82
|
+
return { privateKey: privateKeyHex, address };
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Generate a Solana wallet (Ed25519).
|
|
86
|
+
*/
|
|
87
|
+
function generateSolanaWallet() {
|
|
88
|
+
const { privateKey, publicKey } = (0, crypto_1.generateSolanaKeypair)();
|
|
89
|
+
return {
|
|
90
|
+
privateKey: privateKey.toString('hex'),
|
|
91
|
+
address: (0, crypto_1.base58Encode)(publicKey),
|
|
92
|
+
};
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* List all wallets.
|
|
96
|
+
*/
|
|
97
|
+
function listWallets() {
|
|
98
|
+
ensureWalletsDir();
|
|
99
|
+
const config = getWalletConfig();
|
|
100
|
+
const walletsDir = getWalletsDir();
|
|
101
|
+
const files = fs_1.default.readdirSync(walletsDir).filter(f => f.endsWith('.json') && f !== 'config.json');
|
|
102
|
+
const wallets = files.map(f => {
|
|
103
|
+
const data = JSON.parse(fs_1.default.readFileSync(path_1.default.join(walletsDir, f), 'utf8'));
|
|
104
|
+
return {
|
|
105
|
+
name: data.name,
|
|
106
|
+
evm: data.evm?.address || null,
|
|
107
|
+
solana: data.solana?.address || null,
|
|
108
|
+
createdAt: data.createdAt,
|
|
109
|
+
isDefault: data.name === config.defaultWallet,
|
|
110
|
+
};
|
|
111
|
+
});
|
|
112
|
+
return { wallets, defaultWallet: config.defaultWallet };
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Create a new wallet pair (EVM + Solana).
|
|
116
|
+
*/
|
|
117
|
+
function createWallet(name, password) {
|
|
118
|
+
ensureWalletsDir();
|
|
119
|
+
const config = getWalletConfig();
|
|
120
|
+
const walletFile = getWalletFile(name);
|
|
121
|
+
if (fs_1.default.existsSync(walletFile)) {
|
|
122
|
+
throw new Error(`Wallet "${name}" already exists`);
|
|
123
|
+
}
|
|
124
|
+
// Validate password requirements
|
|
125
|
+
if (password === null) {
|
|
126
|
+
// Passwordless mode: reject if existing wallets are encrypted
|
|
127
|
+
if (config.passwordHash) {
|
|
128
|
+
throw new Error('Existing wallets are password-protected. Set OPENMM_WALLET_PASSWORD.');
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
else {
|
|
132
|
+
// Encrypted mode
|
|
133
|
+
if (password.length < 12) {
|
|
134
|
+
throw new Error('Password must be at least 12 characters');
|
|
135
|
+
}
|
|
136
|
+
if (!config.passwordHash) {
|
|
137
|
+
// First encrypted wallet: reject if passwordless local wallets exist
|
|
138
|
+
const walletsDir = getWalletsDir();
|
|
139
|
+
const existingWallets = fs_1.default
|
|
140
|
+
.readdirSync(walletsDir)
|
|
141
|
+
.filter(f => f.endsWith('.json') && f !== 'config.json');
|
|
142
|
+
if (existingWallets.length > 0) {
|
|
143
|
+
throw new Error('Existing wallets are passwordless. Cannot mix encrypted and unencrypted wallets.');
|
|
144
|
+
}
|
|
145
|
+
config.passwordHash = (0, crypto_1.hashPassword)(password);
|
|
146
|
+
}
|
|
147
|
+
else if (!(0, crypto_1.verifyPassword)(password, config.passwordHash)) {
|
|
148
|
+
throw new Error('Incorrect password');
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
// Generate wallets
|
|
152
|
+
const evm = generateEvmWallet();
|
|
153
|
+
const solana = generateSolanaWallet();
|
|
154
|
+
const wallet = {
|
|
155
|
+
name,
|
|
156
|
+
createdAt: new Date().toISOString(),
|
|
157
|
+
evm: {
|
|
158
|
+
address: evm.address,
|
|
159
|
+
encrypted: (0, crypto_1.encryptKey)(evm.privateKey, password),
|
|
160
|
+
},
|
|
161
|
+
solana: {
|
|
162
|
+
address: solana.address,
|
|
163
|
+
encrypted: (0, crypto_1.encryptKey)(solana.privateKey, password),
|
|
164
|
+
},
|
|
165
|
+
};
|
|
166
|
+
fs_1.default.writeFileSync(walletFile, JSON.stringify(wallet, null, 2), { mode: 0o600 });
|
|
167
|
+
// Set as default if it's the first wallet
|
|
168
|
+
if (!config.defaultWallet) {
|
|
169
|
+
config.defaultWallet = name;
|
|
170
|
+
}
|
|
171
|
+
saveWalletConfig(config);
|
|
172
|
+
return {
|
|
173
|
+
name,
|
|
174
|
+
evm: evm.address,
|
|
175
|
+
solana: solana.address,
|
|
176
|
+
isDefault: config.defaultWallet === name,
|
|
177
|
+
};
|
|
178
|
+
}
|
|
179
|
+
/**
|
|
180
|
+
* Show wallet details (addresses only, no keys).
|
|
181
|
+
*/
|
|
182
|
+
function showWallet(name) {
|
|
183
|
+
const walletFile = getWalletFile(name);
|
|
184
|
+
if (!fs_1.default.existsSync(walletFile)) {
|
|
185
|
+
throw new Error(`Wallet "${name}" not found`);
|
|
186
|
+
}
|
|
187
|
+
const data = JSON.parse(fs_1.default.readFileSync(walletFile, 'utf8'));
|
|
188
|
+
const config = getWalletConfig();
|
|
189
|
+
return {
|
|
190
|
+
name: data.name,
|
|
191
|
+
evm: data.evm?.address || null,
|
|
192
|
+
solana: data.solana?.address || null,
|
|
193
|
+
createdAt: data.createdAt,
|
|
194
|
+
isDefault: data.name === config.defaultWallet,
|
|
195
|
+
};
|
|
196
|
+
}
|
|
197
|
+
/**
|
|
198
|
+
* Export private keys for a wallet (requires password).
|
|
199
|
+
*/
|
|
200
|
+
function exportWallet(name, password) {
|
|
201
|
+
const walletFile = getWalletFile(name);
|
|
202
|
+
if (!fs_1.default.existsSync(walletFile)) {
|
|
203
|
+
throw new Error(`Wallet "${name}" not found`);
|
|
204
|
+
}
|
|
205
|
+
const data = JSON.parse(fs_1.default.readFileSync(walletFile, 'utf8'));
|
|
206
|
+
const config = getWalletConfig();
|
|
207
|
+
if (config.passwordHash && !(0, crypto_1.verifyPassword)(password || '', config.passwordHash)) {
|
|
208
|
+
throw new Error('Incorrect password');
|
|
209
|
+
}
|
|
210
|
+
return {
|
|
211
|
+
name: data.name,
|
|
212
|
+
evm: {
|
|
213
|
+
address: data.evm?.address || '',
|
|
214
|
+
privateKey: data.evm ? (0, crypto_1.decryptKey)(data.evm.encrypted, password) : '',
|
|
215
|
+
},
|
|
216
|
+
solana: data.solana
|
|
217
|
+
? {
|
|
218
|
+
address: data.solana.address,
|
|
219
|
+
privateKey: (0, crypto_1.decryptKey)(data.solana.encrypted, password),
|
|
220
|
+
}
|
|
221
|
+
: undefined,
|
|
222
|
+
};
|
|
223
|
+
}
|
|
224
|
+
/**
|
|
225
|
+
* Set the default wallet.
|
|
226
|
+
*/
|
|
227
|
+
function setDefaultWallet(name) {
|
|
228
|
+
const walletFile = getWalletFile(name);
|
|
229
|
+
if (!fs_1.default.existsSync(walletFile)) {
|
|
230
|
+
throw new Error(`Wallet "${name}" not found`);
|
|
231
|
+
}
|
|
232
|
+
const config = getWalletConfig();
|
|
233
|
+
config.defaultWallet = name;
|
|
234
|
+
saveWalletConfig(config);
|
|
235
|
+
return { defaultWallet: name };
|
|
236
|
+
}
|
|
237
|
+
/**
|
|
238
|
+
* Delete a wallet.
|
|
239
|
+
*/
|
|
240
|
+
function deleteWallet(name, password) {
|
|
241
|
+
const walletFile = getWalletFile(name);
|
|
242
|
+
if (!fs_1.default.existsSync(walletFile)) {
|
|
243
|
+
throw new Error(`Wallet "${name}" not found`);
|
|
244
|
+
}
|
|
245
|
+
const config = getWalletConfig();
|
|
246
|
+
if (config.passwordHash && !(0, crypto_1.verifyPassword)(password || '', config.passwordHash)) {
|
|
247
|
+
throw new Error('Incorrect password');
|
|
248
|
+
}
|
|
249
|
+
fs_1.default.unlinkSync(walletFile);
|
|
250
|
+
const remaining = fs_1.default
|
|
251
|
+
.readdirSync(getWalletsDir())
|
|
252
|
+
.filter(f => f.endsWith('.json') && f !== 'config.json');
|
|
253
|
+
if (remaining.length === 0) {
|
|
254
|
+
config.defaultWallet = null;
|
|
255
|
+
config.passwordHash = null;
|
|
256
|
+
}
|
|
257
|
+
else if (config.defaultWallet === name) {
|
|
258
|
+
config.defaultWallet = remaining[0].replace('.json', '');
|
|
259
|
+
}
|
|
260
|
+
saveWalletConfig(config);
|
|
261
|
+
return { deleted: name, newDefault: config.defaultWallet };
|
|
262
|
+
}
|
|
263
|
+
/**
|
|
264
|
+
* Get the default wallet's addresses without requiring password.
|
|
265
|
+
*/
|
|
266
|
+
function getDefaultWalletAddresses() {
|
|
267
|
+
const config = getWalletConfig();
|
|
268
|
+
if (!config.defaultWallet)
|
|
269
|
+
return null;
|
|
270
|
+
try {
|
|
271
|
+
const wallet = showWallet(config.defaultWallet);
|
|
272
|
+
return {
|
|
273
|
+
name: wallet.name,
|
|
274
|
+
evm: wallet.evm,
|
|
275
|
+
solana: wallet.solana,
|
|
276
|
+
};
|
|
277
|
+
}
|
|
278
|
+
catch {
|
|
279
|
+
return null;
|
|
280
|
+
}
|
|
281
|
+
}
|
|
282
|
+
//# sourceMappingURL=wallet.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wallet.js","sourceRoot":"","sources":["../../src/x402/wallet.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"grid.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/grid.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAQpC,eAAO,MAAM,WAAW,SAiFpB,CAAC"}
|