@axonfi/sdk 0.4.0 → 0.4.2
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 +15 -9
- package/dist/index.cjs +4325 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +3256 -0
- package/dist/index.d.ts +3256 -21
- package/dist/index.js +4261 -27
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
- package/dist/abis/AxonRegistry.d.ts +0 -294
- package/dist/abis/AxonRegistry.d.ts.map +0 -1
- package/dist/abis/AxonRegistry.js +0 -381
- package/dist/abis/AxonRegistry.js.map +0 -1
- package/dist/abis/AxonVault.d.ts +0 -1577
- package/dist/abis/AxonVault.d.ts.map +0 -1
- package/dist/abis/AxonVault.js +0 -2026
- package/dist/abis/AxonVault.js.map +0 -1
- package/dist/abis/AxonVaultFactory.d.ts +0 -207
- package/dist/abis/AxonVaultFactory.d.ts.map +0 -1
- package/dist/abis/AxonVaultFactory.js +0 -269
- package/dist/abis/AxonVaultFactory.js.map +0 -1
- package/dist/amounts.d.ts +0 -37
- package/dist/amounts.d.ts.map +0 -1
- package/dist/amounts.js +0 -72
- package/dist/amounts.js.map +0 -1
- package/dist/amounts.spec.d.ts +0 -2
- package/dist/amounts.spec.d.ts.map +0 -1
- package/dist/amounts.spec.js +0 -92
- package/dist/amounts.spec.js.map +0 -1
- package/dist/client.d.ts +0 -196
- package/dist/client.d.ts.map +0 -1
- package/dist/client.js +0 -621
- package/dist/client.js.map +0 -1
- package/dist/client.spec.d.ts +0 -2
- package/dist/client.spec.d.ts.map +0 -1
- package/dist/client.spec.js +0 -437
- package/dist/client.spec.js.map +0 -1
- package/dist/constants.d.ts +0 -110
- package/dist/constants.d.ts.map +0 -1
- package/dist/constants.js +0 -172
- package/dist/constants.js.map +0 -1
- package/dist/constants.spec.d.ts +0 -2
- package/dist/constants.spec.d.ts.map +0 -1
- package/dist/constants.spec.js +0 -95
- package/dist/constants.spec.js.map +0 -1
- package/dist/eip3009.d.ts +0 -45
- package/dist/eip3009.d.ts.map +0 -1
- package/dist/eip3009.js +0 -85
- package/dist/eip3009.js.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/keystore.d.ts +0 -60
- package/dist/keystore.d.ts.map +0 -1
- package/dist/keystore.js +0 -182
- package/dist/keystore.js.map +0 -1
- package/dist/keystore.spec.d.ts +0 -2
- package/dist/keystore.spec.d.ts.map +0 -1
- package/dist/keystore.spec.js +0 -71
- package/dist/keystore.spec.js.map +0 -1
- package/dist/permit2.d.ts +0 -45
- package/dist/permit2.d.ts.map +0 -1
- package/dist/permit2.js +0 -81
- package/dist/permit2.js.map +0 -1
- package/dist/signer.d.ts +0 -35
- package/dist/signer.d.ts.map +0 -1
- package/dist/signer.js +0 -132
- package/dist/signer.js.map +0 -1
- package/dist/signer.spec.d.ts +0 -2
- package/dist/signer.spec.d.ts.map +0 -1
- package/dist/signer.spec.js +0 -94
- package/dist/signer.spec.js.map +0 -1
- package/dist/tokens.d.ts +0 -215
- package/dist/tokens.d.ts.map +0 -1
- package/dist/tokens.js +0 -247
- package/dist/tokens.js.map +0 -1
- package/dist/types.d.ts +0 -302
- package/dist/types.d.ts.map +0 -1
- package/dist/types.js +0 -2
- package/dist/types.js.map +0 -1
- package/dist/utils.d.ts +0 -8
- package/dist/utils.d.ts.map +0 -1
- package/dist/utils.js +0 -29
- package/dist/utils.js.map +0 -1
- package/dist/vault.d.ts +0 -60
- package/dist/vault.d.ts.map +0 -1
- package/dist/vault.js +0 -267
- package/dist/vault.js.map +0 -1
- package/dist/vault.spec.d.ts +0 -2
- package/dist/vault.spec.d.ts.map +0 -1
- package/dist/vault.spec.js +0 -162
- package/dist/vault.spec.js.map +0 -1
- package/dist/x402.d.ts +0 -88
- package/dist/x402.d.ts.map +0 -1
- package/dist/x402.js +0 -124
- package/dist/x402.js.map +0 -1
- package/dist/x402.spec.d.ts +0 -2
- package/dist/x402.spec.d.ts.map +0 -1
- package/dist/x402.spec.js +0 -411
- package/dist/x402.spec.js.map +0 -1
package/dist/constants.js
DELETED
|
@@ -1,172 +0,0 @@
|
|
|
1
|
-
import { keccak256, stringToBytes } from 'viem';
|
|
2
|
-
// ============================================================================
|
|
3
|
-
// EIP-712 type hashes
|
|
4
|
-
// ============================================================================
|
|
5
|
-
/**
|
|
6
|
-
* keccak256 of the PaymentIntent type string — used for manual digest
|
|
7
|
-
* verification. viem's signTypedData computes this internally; you don't
|
|
8
|
-
* need this value for signing, only for low-level verification.
|
|
9
|
-
*/
|
|
10
|
-
export const PAYMENT_INTENT_TYPEHASH = keccak256(stringToBytes('PaymentIntent(address bot,address to,address token,uint256 amount,uint256 deadline,bytes32 ref)'));
|
|
11
|
-
/** keccak256 of the ExecuteIntent type string for DeFi protocol interactions. */
|
|
12
|
-
export const EXECUTE_INTENT_TYPEHASH = keccak256(stringToBytes('ExecuteIntent(address bot,address protocol,bytes32 calldataHash,address token,uint256 amount,uint256 deadline,bytes32 ref)'));
|
|
13
|
-
/** keccak256 of the SwapIntent type string for in-vault token rebalancing. */
|
|
14
|
-
export const SWAP_INTENT_TYPEHASH = keccak256(stringToBytes('SwapIntent(address bot,address toToken,uint256 minToAmount,uint256 deadline,bytes32 ref)'));
|
|
15
|
-
/** EIP-712 domain name and version for AxonVault. Matches the constructor. */
|
|
16
|
-
export const EIP712_DOMAIN_NAME = 'AxonVault';
|
|
17
|
-
export const EIP712_DOMAIN_VERSION = '1';
|
|
18
|
-
// ============================================================================
|
|
19
|
-
// Native ETH sentinel
|
|
20
|
-
// ============================================================================
|
|
21
|
-
/** Sentinel address representing native ETH in PaymentIntents and deposits. */
|
|
22
|
-
export const NATIVE_ETH = '0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE';
|
|
23
|
-
// ============================================================================
|
|
24
|
-
// USDC addresses per chain
|
|
25
|
-
// ============================================================================
|
|
26
|
-
export const USDC = {
|
|
27
|
-
// Base mainnet
|
|
28
|
-
8453: '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913',
|
|
29
|
-
// Base Sepolia
|
|
30
|
-
84532: '0x036CbD53842c5426634e7929541eC2318f3dCF7e',
|
|
31
|
-
// Arbitrum One
|
|
32
|
-
42161: '0xaf88d065e77c8cC2239327C5EDb3A432268e5831',
|
|
33
|
-
// Arbitrum Sepolia
|
|
34
|
-
421614: '0x75faf114eafb1BDbe2F0316DF893fd58CE46AA4d',
|
|
35
|
-
};
|
|
36
|
-
// ============================================================================
|
|
37
|
-
// Chain enum & supported chain IDs
|
|
38
|
-
// ============================================================================
|
|
39
|
-
export var Chain;
|
|
40
|
-
(function (Chain) {
|
|
41
|
-
Chain[Chain["Base"] = 8453] = "Base";
|
|
42
|
-
Chain[Chain["BaseSepolia"] = 84532] = "BaseSepolia";
|
|
43
|
-
Chain[Chain["Arbitrum"] = 42161] = "Arbitrum";
|
|
44
|
-
Chain[Chain["ArbitrumSepolia"] = 421614] = "ArbitrumSepolia";
|
|
45
|
-
})(Chain || (Chain = {}));
|
|
46
|
-
export const SUPPORTED_CHAIN_IDS = [8453, 84532, 42161, 421614];
|
|
47
|
-
// ============================================================================
|
|
48
|
-
// Chain metadata (names & block explorers)
|
|
49
|
-
// ============================================================================
|
|
50
|
-
/** Human-readable chain names. */
|
|
51
|
-
export const CHAIN_NAMES = {
|
|
52
|
-
[Chain.Base]: 'Base',
|
|
53
|
-
[Chain.BaseSepolia]: 'Base Sepolia',
|
|
54
|
-
[Chain.Arbitrum]: 'Arbitrum One',
|
|
55
|
-
[Chain.ArbitrumSepolia]: 'Arbitrum Sepolia',
|
|
56
|
-
// Future v1 chains (metadata only — not in SUPPORTED_CHAIN_IDS yet)
|
|
57
|
-
10: 'Optimism',
|
|
58
|
-
11155420: 'OP Sepolia',
|
|
59
|
-
137: 'Polygon',
|
|
60
|
-
80002: 'Polygon Amoy',
|
|
61
|
-
};
|
|
62
|
-
/** Block explorer TX URL prefix per chain. */
|
|
63
|
-
export const EXPLORER_TX = {
|
|
64
|
-
[Chain.Base]: 'https://basescan.org/tx/',
|
|
65
|
-
[Chain.BaseSepolia]: 'https://sepolia.basescan.org/tx/',
|
|
66
|
-
[Chain.Arbitrum]: 'https://arbiscan.io/tx/',
|
|
67
|
-
[Chain.ArbitrumSepolia]: 'https://sepolia.arbiscan.io/tx/',
|
|
68
|
-
10: 'https://optimistic.etherscan.io/tx/',
|
|
69
|
-
11155420: 'https://sepolia-optimism.etherscan.io/tx/',
|
|
70
|
-
137: 'https://polygonscan.com/tx/',
|
|
71
|
-
80002: 'https://amoy.polygonscan.com/tx/',
|
|
72
|
-
};
|
|
73
|
-
/** Block explorer address URL prefix per chain. */
|
|
74
|
-
export const EXPLORER_ADDR = {
|
|
75
|
-
[Chain.Base]: 'https://basescan.org/address/',
|
|
76
|
-
[Chain.BaseSepolia]: 'https://sepolia.basescan.org/address/',
|
|
77
|
-
[Chain.Arbitrum]: 'https://arbiscan.io/address/',
|
|
78
|
-
[Chain.ArbitrumSepolia]: 'https://sepolia.arbiscan.io/address/',
|
|
79
|
-
10: 'https://optimistic.etherscan.io/address/',
|
|
80
|
-
11155420: 'https://sepolia-optimism.etherscan.io/address/',
|
|
81
|
-
137: 'https://polygonscan.com/address/',
|
|
82
|
-
80002: 'https://amoy.polygonscan.com/address/',
|
|
83
|
-
};
|
|
84
|
-
// ============================================================================
|
|
85
|
-
// Time constants (seconds)
|
|
86
|
-
// ============================================================================
|
|
87
|
-
/** Default intent validity window when no deadline is specified. */
|
|
88
|
-
export const DEFAULT_DEADLINE_SECONDS = 300; // 5 minutes
|
|
89
|
-
/** Window presets for SpendingLimit.windowSeconds. */
|
|
90
|
-
export const WINDOW = {
|
|
91
|
-
ONE_HOUR: 3600n,
|
|
92
|
-
ONE_DAY: 86400n,
|
|
93
|
-
ONE_WEEK: 604800n,
|
|
94
|
-
THIRTY_DAYS: 2592000n,
|
|
95
|
-
};
|
|
96
|
-
// ============================================================================
|
|
97
|
-
// Payment rejection error codes
|
|
98
|
-
// ============================================================================
|
|
99
|
-
/**
|
|
100
|
-
* Structured error codes returned by the relayer when a payment is rejected.
|
|
101
|
-
* Bots should import these to programmatically handle failures.
|
|
102
|
-
*/
|
|
103
|
-
export const PaymentErrorCode = {
|
|
104
|
-
/** Payment destination is the vault itself */
|
|
105
|
-
SELF_PAYMENT: 'SELF_PAYMENT',
|
|
106
|
-
/** Payment destination is the zero address */
|
|
107
|
-
ZERO_ADDRESS: 'ZERO_ADDRESS',
|
|
108
|
-
/** Payment amount is zero */
|
|
109
|
-
ZERO_AMOUNT: 'ZERO_AMOUNT',
|
|
110
|
-
/** Vault does not hold enough of the requested token */
|
|
111
|
-
INSUFFICIENT_BALANCE: 'INSUFFICIENT_BALANCE',
|
|
112
|
-
/** EIP-712 signature verification failed */
|
|
113
|
-
INVALID_SIGNATURE: 'INVALID_SIGNATURE',
|
|
114
|
-
/** Payment intent deadline has passed */
|
|
115
|
-
DEADLINE_EXPIRED: 'DEADLINE_EXPIRED',
|
|
116
|
-
/** Bot is temporarily paused by the operator */
|
|
117
|
-
BOT_PAUSED: 'BOT_PAUSED',
|
|
118
|
-
/** Bot address is not registered/active in the vault */
|
|
119
|
-
BOT_NOT_ACTIVE: 'BOT_NOT_ACTIVE',
|
|
120
|
-
/** Destination address is on the global or vault blacklist */
|
|
121
|
-
BLACKLISTED: 'BLACKLISTED',
|
|
122
|
-
/** Rolling-window spending limit (USD amount) exceeded */
|
|
123
|
-
SPENDING_LIMIT_EXCEEDED: 'SPENDING_LIMIT_EXCEEDED',
|
|
124
|
-
/** Rolling-window transaction count limit exceeded */
|
|
125
|
-
TX_COUNT_EXCEEDED: 'TX_COUNT_EXCEEDED',
|
|
126
|
-
/** Single transaction exceeds the bot's on-chain maxPerTxAmount */
|
|
127
|
-
MAX_PER_TX_EXCEEDED: 'MAX_PER_TX_EXCEEDED',
|
|
128
|
-
/** Vault-level daily aggregate spending limit exceeded */
|
|
129
|
-
VAULT_AGGREGATE_EXCEEDED: 'VAULT_AGGREGATE_EXCEEDED',
|
|
130
|
-
/** eth_call simulation of the on-chain transaction reverted */
|
|
131
|
-
SIMULATION_FAILED: 'SIMULATION_FAILED',
|
|
132
|
-
/** Routed to human review (AI scan flagged or no consensus) */
|
|
133
|
-
PENDING_REVIEW: 'PENDING_REVIEW',
|
|
134
|
-
/** Relayer wallet has insufficient gas to submit the transaction */
|
|
135
|
-
RELAYER_OUT_OF_GAS: 'RELAYER_OUT_OF_GAS',
|
|
136
|
-
/** On-chain transaction submission failed */
|
|
137
|
-
SUBMISSION_FAILED: 'SUBMISSION_FAILED',
|
|
138
|
-
/** Destination not in the vault/bot whitelist */
|
|
139
|
-
DESTINATION_NOT_WHITELISTED: 'DESTINATION_NOT_WHITELISTED',
|
|
140
|
-
/** Vault address is not a valid AxonVault or was not deployed by a known factory */
|
|
141
|
-
INVALID_VAULT: 'INVALID_VAULT',
|
|
142
|
-
/** Rebalance output token is not in the whitelist (on-chain or relayer default) */
|
|
143
|
-
REBALANCE_TOKEN_NOT_ALLOWED: 'REBALANCE_TOKEN_NOT_ALLOWED',
|
|
144
|
-
/** Rebalance input amount exceeds the bot's maxRebalanceAmount cap */
|
|
145
|
-
MAX_REBALANCE_AMOUNT_EXCEEDED: 'MAX_REBALANCE_AMOUNT_EXCEEDED',
|
|
146
|
-
/** Unknown or internal error */
|
|
147
|
-
INTERNAL_ERROR: 'INTERNAL_ERROR',
|
|
148
|
-
};
|
|
149
|
-
// ============================================================================
|
|
150
|
-
// Relayer API paths
|
|
151
|
-
// ============================================================================
|
|
152
|
-
export const RELAYER_API = {
|
|
153
|
-
PAYMENTS: '/v1/payments',
|
|
154
|
-
payment: (requestId) => `/v1/payments/${requestId}`,
|
|
155
|
-
EXECUTE: '/v1/execute',
|
|
156
|
-
execute: (requestId) => `/v1/execute/${requestId}`,
|
|
157
|
-
SWAP: '/v1/swap',
|
|
158
|
-
swap: (requestId) => `/v1/swap/${requestId}`,
|
|
159
|
-
// Vault read endpoints (relayer reads chain on behalf of bots)
|
|
160
|
-
vaultBalance: (vault, token, chainId) => `/v1/vault/${vault}/balance/${token}?chainId=${chainId}`,
|
|
161
|
-
vaultBalances: (vault, chainId) => `/v1/vault/${vault}/balances`,
|
|
162
|
-
vaultInfo: (vault, chainId) => `/v1/vault/${vault}/info?chainId=${chainId}`,
|
|
163
|
-
botStatus: (vault, bot, chainId) => `/v1/vault/${vault}/bot/${bot}/status?chainId=${chainId}`,
|
|
164
|
-
destinationCheck: (vault, bot, destination, chainId) => `/v1/vault/${vault}/bot/${bot}/destination/${destination}?chainId=${chainId}`,
|
|
165
|
-
protocolCheck: (vault, protocol, chainId) => `/v1/vault/${vault}/protocol/${protocol}?chainId=${chainId}`,
|
|
166
|
-
rebalanceTokens: (vault, chainId) => `/v1/vault/${vault}/rebalance-tokens?chainId=${chainId}`,
|
|
167
|
-
rebalanceTokenCheck: (vault, token, chainId) => `/v1/vault/${vault}/rebalance-token/${token}?chainId=${chainId}`,
|
|
168
|
-
// TOS endpoints
|
|
169
|
-
tosStatus: (wallet) => `/v1/tos/status?wallet=${wallet}`,
|
|
170
|
-
TOS_ACCEPT: '/v1/tos/accept',
|
|
171
|
-
};
|
|
172
|
-
//# sourceMappingURL=constants.js.map
|
package/dist/constants.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,MAAM,CAAC;AAGhD,+EAA+E;AAC/E,sBAAsB;AACtB,+EAA+E;AAE/E;;;;GAIG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAkB,SAAS,CAC7D,aAAa,CAAC,iGAAiG,CAAC,CACjH,CAAC;AAEF,iFAAiF;AACjF,MAAM,CAAC,MAAM,uBAAuB,GAAkB,SAAS,CAC7D,aAAa,CACX,4HAA4H,CAC7H,CACF,CAAC;AAEF,8EAA8E;AAC9E,MAAM,CAAC,MAAM,oBAAoB,GAAkB,SAAS,CAC1D,aAAa,CAAC,0FAA0F,CAAC,CAC1G,CAAC;AAEF,8EAA8E;AAC9E,MAAM,CAAC,MAAM,kBAAkB,GAAG,WAAoB,CAAC;AACvD,MAAM,CAAC,MAAM,qBAAqB,GAAG,GAAY,CAAC;AAElD,+EAA+E;AAC/E,sBAAsB;AACtB,+EAA+E;AAE/E,+EAA+E;AAC/E,MAAM,CAAC,MAAM,UAAU,GAAY,4CAA4C,CAAC;AAEhF,+EAA+E;AAC/E,2BAA2B;AAC3B,+EAA+E;AAE/E,MAAM,CAAC,MAAM,IAAI,GAA4B;IAC3C,eAAe;IACf,IAAI,EAAE,4CAA4C;IAClD,eAAe;IACf,KAAK,EAAE,4CAA4C;IACnD,eAAe;IACf,KAAK,EAAE,4CAA4C;IACnD,mBAAmB;IACnB,MAAM,EAAE,4CAA4C;CACrD,CAAC;AAEF,+EAA+E;AAC/E,mCAAmC;AACnC,+EAA+E;AAE/E,MAAM,CAAN,IAAY,KAKX;AALD,WAAY,KAAK;IACf,oCAAW,CAAA;IACX,mDAAmB,CAAA;IACnB,6CAAgB,CAAA;IAChB,4DAAwB,CAAA;AAC1B,CAAC,EALW,KAAK,KAAL,KAAK,QAKhB;AAED,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,CAAU,CAAC;AAGzE,+EAA+E;AAC/E,2CAA2C;AAC3C,+EAA+E;AAE/E,kCAAkC;AAClC,MAAM,CAAC,MAAM,WAAW,GAA2B;IACjD,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM;IACpB,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,cAAc;IACnC,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,cAAc;IAChC,CAAC,KAAK,CAAC,eAAe,CAAC,EAAE,kBAAkB;IAC3C,oEAAoE;IACpE,EAAE,EAAE,UAAU;IACd,QAAQ,EAAE,YAAY;IACtB,GAAG,EAAE,SAAS;IACd,KAAK,EAAE,cAAc;CACtB,CAAC;AAEF,8CAA8C;AAC9C,MAAM,CAAC,MAAM,WAAW,GAA2B;IACjD,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,0BAA0B;IACxC,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,kCAAkC;IACvD,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,yBAAyB;IAC3C,CAAC,KAAK,CAAC,eAAe,CAAC,EAAE,iCAAiC;IAC1D,EAAE,EAAE,qCAAqC;IACzC,QAAQ,EAAE,2CAA2C;IACrD,GAAG,EAAE,6BAA6B;IAClC,KAAK,EAAE,kCAAkC;CAC1C,CAAC;AAEF,mDAAmD;AACnD,MAAM,CAAC,MAAM,aAAa,GAA2B;IACnD,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,+BAA+B;IAC7C,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,uCAAuC;IAC5D,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,8BAA8B;IAChD,CAAC,KAAK,CAAC,eAAe,CAAC,EAAE,sCAAsC;IAC/D,EAAE,EAAE,0CAA0C;IAC9C,QAAQ,EAAE,gDAAgD;IAC1D,GAAG,EAAE,kCAAkC;IACvC,KAAK,EAAE,uCAAuC;CAC/C,CAAC;AAEF,+EAA+E;AAC/E,2BAA2B;AAC3B,+EAA+E;AAE/E,oEAAoE;AACpE,MAAM,CAAC,MAAM,wBAAwB,GAAG,GAAG,CAAC,CAAC,YAAY;AAEzD,sDAAsD;AACtD,MAAM,CAAC,MAAM,MAAM,GAAG;IACpB,QAAQ,EAAE,KAAK;IACf,OAAO,EAAE,MAAM;IACf,QAAQ,EAAE,OAAO;IACjB,WAAW,EAAE,QAAQ;CACb,CAAC;AAEX,+EAA+E;AAC/E,gCAAgC;AAChC,+EAA+E;AAE/E;;;GAGG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC9B,8CAA8C;IAC9C,YAAY,EAAE,cAAc;IAC5B,8CAA8C;IAC9C,YAAY,EAAE,cAAc;IAC5B,6BAA6B;IAC7B,WAAW,EAAE,aAAa;IAC1B,wDAAwD;IACxD,oBAAoB,EAAE,sBAAsB;IAC5C,4CAA4C;IAC5C,iBAAiB,EAAE,mBAAmB;IACtC,yCAAyC;IACzC,gBAAgB,EAAE,kBAAkB;IACpC,gDAAgD;IAChD,UAAU,EAAE,YAAY;IACxB,wDAAwD;IACxD,cAAc,EAAE,gBAAgB;IAChC,8DAA8D;IAC9D,WAAW,EAAE,aAAa;IAC1B,0DAA0D;IAC1D,uBAAuB,EAAE,yBAAyB;IAClD,sDAAsD;IACtD,iBAAiB,EAAE,mBAAmB;IACtC,mEAAmE;IACnE,mBAAmB,EAAE,qBAAqB;IAC1C,0DAA0D;IAC1D,wBAAwB,EAAE,0BAA0B;IACpD,+DAA+D;IAC/D,iBAAiB,EAAE,mBAAmB;IACtC,+DAA+D;IAC/D,cAAc,EAAE,gBAAgB;IAChC,oEAAoE;IACpE,kBAAkB,EAAE,oBAAoB;IACxC,6CAA6C;IAC7C,iBAAiB,EAAE,mBAAmB;IACtC,iDAAiD;IACjD,2BAA2B,EAAE,6BAA6B;IAC1D,oFAAoF;IACpF,aAAa,EAAE,eAAe;IAC9B,mFAAmF;IACnF,2BAA2B,EAAE,6BAA6B;IAC1D,sEAAsE;IACtE,6BAA6B,EAAE,+BAA+B;IAC9D,gCAAgC;IAChC,cAAc,EAAE,gBAAgB;CACxB,CAAC;AAIX,+EAA+E;AAC/E,oBAAoB;AACpB,+EAA+E;AAE/E,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,QAAQ,EAAE,cAAc;IACxB,OAAO,EAAE,CAAC,SAAiB,EAAE,EAAE,CAAC,gBAAgB,SAAS,EAAE;IAC3D,OAAO,EAAE,aAAa;IACtB,OAAO,EAAE,CAAC,SAAiB,EAAE,EAAE,CAAC,eAAe,SAAS,EAAE;IAC1D,IAAI,EAAE,UAAU;IAChB,IAAI,EAAE,CAAC,SAAiB,EAAE,EAAE,CAAC,YAAY,SAAS,EAAE;IAEpD,+DAA+D;IAC/D,YAAY,EAAE,CAAC,KAAa,EAAE,KAAa,EAAE,OAAe,EAAE,EAAE,CAC9D,aAAa,KAAK,YAAY,KAAK,YAAY,OAAO,EAAE;IAC1D,aAAa,EAAE,CAAC,KAAa,EAAE,OAAe,EAAE,EAAE,CAAC,aAAa,KAAK,WAAW;IAChF,SAAS,EAAE,CAAC,KAAa,EAAE,OAAe,EAAE,EAAE,CAAC,aAAa,KAAK,iBAAiB,OAAO,EAAE;IAC3F,SAAS,EAAE,CAAC,KAAa,EAAE,GAAW,EAAE,OAAe,EAAE,EAAE,CAAC,aAAa,KAAK,QAAQ,GAAG,mBAAmB,OAAO,EAAE;IACrH,gBAAgB,EAAE,CAAC,KAAa,EAAE,GAAW,EAAE,WAAmB,EAAE,OAAe,EAAE,EAAE,CACrF,aAAa,KAAK,QAAQ,GAAG,gBAAgB,WAAW,YAAY,OAAO,EAAE;IAC/E,aAAa,EAAE,CAAC,KAAa,EAAE,QAAgB,EAAE,OAAe,EAAE,EAAE,CAClE,aAAa,KAAK,aAAa,QAAQ,YAAY,OAAO,EAAE;IAC9D,eAAe,EAAE,CAAC,KAAa,EAAE,OAAe,EAAE,EAAE,CAAC,aAAa,KAAK,6BAA6B,OAAO,EAAE;IAC7G,mBAAmB,EAAE,CAAC,KAAa,EAAE,KAAa,EAAE,OAAe,EAAE,EAAE,CACrE,aAAa,KAAK,oBAAoB,KAAK,YAAY,OAAO,EAAE;IAElE,gBAAgB;IAChB,SAAS,EAAE,CAAC,MAAc,EAAE,EAAE,CAAC,yBAAyB,MAAM,EAAE;IAChE,UAAU,EAAE,gBAAgB;CACpB,CAAC"}
|
package/dist/constants.spec.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"constants.spec.d.ts","sourceRoot":"","sources":["../src/constants.spec.ts"],"names":[],"mappings":""}
|
package/dist/constants.spec.js
DELETED
|
@@ -1,95 +0,0 @@
|
|
|
1
|
-
import { describe, it, expect } from '@jest/globals';
|
|
2
|
-
import { isAddress } from 'viem';
|
|
3
|
-
import { USDC, NATIVE_ETH, SUPPORTED_CHAIN_IDS, WINDOW, DEFAULT_DEADLINE_SECONDS, PAYMENT_INTENT_TYPEHASH, EXECUTE_INTENT_TYPEHASH, SWAP_INTENT_TYPEHASH, EIP712_DOMAIN_NAME, EIP712_DOMAIN_VERSION, PaymentErrorCode, RELAYER_API, } from './constants.js';
|
|
4
|
-
describe('USDC addresses', () => {
|
|
5
|
-
it('has entries for all supported chain IDs', () => {
|
|
6
|
-
for (const chainId of SUPPORTED_CHAIN_IDS) {
|
|
7
|
-
expect(USDC[chainId]).toBeDefined();
|
|
8
|
-
}
|
|
9
|
-
});
|
|
10
|
-
it('all addresses are valid checksummed addresses', () => {
|
|
11
|
-
for (const addr of Object.values(USDC)) {
|
|
12
|
-
expect(isAddress(addr, { strict: true })).toBe(true);
|
|
13
|
-
}
|
|
14
|
-
});
|
|
15
|
-
});
|
|
16
|
-
describe('NATIVE_ETH', () => {
|
|
17
|
-
it('is the standard sentinel address', () => {
|
|
18
|
-
expect(NATIVE_ETH.toLowerCase()).toBe('0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee');
|
|
19
|
-
});
|
|
20
|
-
});
|
|
21
|
-
describe('SUPPORTED_CHAIN_IDS', () => {
|
|
22
|
-
it('contains Base mainnet and Sepolia', () => {
|
|
23
|
-
expect(SUPPORTED_CHAIN_IDS).toContain(8453);
|
|
24
|
-
expect(SUPPORTED_CHAIN_IDS).toContain(84532);
|
|
25
|
-
});
|
|
26
|
-
it('contains Arbitrum mainnet and Sepolia', () => {
|
|
27
|
-
expect(SUPPORTED_CHAIN_IDS).toContain(42161);
|
|
28
|
-
expect(SUPPORTED_CHAIN_IDS).toContain(421614);
|
|
29
|
-
});
|
|
30
|
-
});
|
|
31
|
-
describe('WINDOW constants', () => {
|
|
32
|
-
it('ONE_HOUR is 3600 seconds', () => {
|
|
33
|
-
expect(WINDOW.ONE_HOUR).toBe(3600n);
|
|
34
|
-
});
|
|
35
|
-
it('ONE_DAY is 86400 seconds', () => {
|
|
36
|
-
expect(WINDOW.ONE_DAY).toBe(86400n);
|
|
37
|
-
});
|
|
38
|
-
it('ONE_WEEK is 604800 seconds', () => {
|
|
39
|
-
expect(WINDOW.ONE_WEEK).toBe(604800n);
|
|
40
|
-
});
|
|
41
|
-
it('THIRTY_DAYS is 2592000 seconds', () => {
|
|
42
|
-
expect(WINDOW.THIRTY_DAYS).toBe(2592000n);
|
|
43
|
-
});
|
|
44
|
-
});
|
|
45
|
-
describe('DEFAULT_DEADLINE_SECONDS', () => {
|
|
46
|
-
it('is 5 minutes (300 seconds)', () => {
|
|
47
|
-
expect(DEFAULT_DEADLINE_SECONDS).toBe(300);
|
|
48
|
-
});
|
|
49
|
-
});
|
|
50
|
-
describe('EIP-712 type hashes', () => {
|
|
51
|
-
it('PAYMENT_INTENT_TYPEHASH is a 0x-prefixed 66-char hex string', () => {
|
|
52
|
-
expect(PAYMENT_INTENT_TYPEHASH).toMatch(/^0x[0-9a-f]{64}$/);
|
|
53
|
-
});
|
|
54
|
-
it('EXECUTE_INTENT_TYPEHASH is a 0x-prefixed 66-char hex string', () => {
|
|
55
|
-
expect(EXECUTE_INTENT_TYPEHASH).toMatch(/^0x[0-9a-f]{64}$/);
|
|
56
|
-
});
|
|
57
|
-
it('SWAP_INTENT_TYPEHASH is a 0x-prefixed 66-char hex string', () => {
|
|
58
|
-
expect(SWAP_INTENT_TYPEHASH).toMatch(/^0x[0-9a-f]{64}$/);
|
|
59
|
-
});
|
|
60
|
-
it('all three type hashes are distinct', () => {
|
|
61
|
-
expect(new Set([PAYMENT_INTENT_TYPEHASH, EXECUTE_INTENT_TYPEHASH, SWAP_INTENT_TYPEHASH]).size).toBe(3);
|
|
62
|
-
});
|
|
63
|
-
});
|
|
64
|
-
describe('EIP-712 domain', () => {
|
|
65
|
-
it('name is AxonVault', () => {
|
|
66
|
-
expect(EIP712_DOMAIN_NAME).toBe('AxonVault');
|
|
67
|
-
});
|
|
68
|
-
it('version is 1', () => {
|
|
69
|
-
expect(EIP712_DOMAIN_VERSION).toBe('1');
|
|
70
|
-
});
|
|
71
|
-
});
|
|
72
|
-
describe('PaymentErrorCode', () => {
|
|
73
|
-
it('contains expected error codes', () => {
|
|
74
|
-
expect(PaymentErrorCode.SELF_PAYMENT).toBe('SELF_PAYMENT');
|
|
75
|
-
expect(PaymentErrorCode.BLACKLISTED).toBe('BLACKLISTED');
|
|
76
|
-
expect(PaymentErrorCode.INSUFFICIENT_BALANCE).toBe('INSUFFICIENT_BALANCE');
|
|
77
|
-
expect(PaymentErrorCode.SIMULATION_FAILED).toBe('SIMULATION_FAILED');
|
|
78
|
-
});
|
|
79
|
-
it('has at least 15 error codes', () => {
|
|
80
|
-
expect(Object.keys(PaymentErrorCode).length).toBeGreaterThanOrEqual(15);
|
|
81
|
-
});
|
|
82
|
-
});
|
|
83
|
-
describe('RELAYER_API', () => {
|
|
84
|
-
it('static paths start with /v1/', () => {
|
|
85
|
-
expect(RELAYER_API.PAYMENTS).toBe('/v1/payments');
|
|
86
|
-
expect(RELAYER_API.EXECUTE).toBe('/v1/execute');
|
|
87
|
-
expect(RELAYER_API.SWAP).toBe('/v1/swap');
|
|
88
|
-
});
|
|
89
|
-
it('dynamic paths include the request ID', () => {
|
|
90
|
-
expect(RELAYER_API.payment('abc-123')).toBe('/v1/payments/abc-123');
|
|
91
|
-
expect(RELAYER_API.execute('abc-123')).toBe('/v1/execute/abc-123');
|
|
92
|
-
expect(RELAYER_API.swap('abc-123')).toBe('/v1/swap/abc-123');
|
|
93
|
-
});
|
|
94
|
-
});
|
|
95
|
-
//# sourceMappingURL=constants.spec.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"constants.spec.js","sourceRoot":"","sources":["../src/constants.spec.ts"],"names":[],"mappings":"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"}
|
package/dist/eip3009.d.ts
DELETED
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
import { type Address, type Hex } from 'viem';
|
|
2
|
-
/**
|
|
3
|
-
* Per-chain EIP-712 domain parameters for USDC's EIP-3009 implementation.
|
|
4
|
-
* These differ between testnets and mainnets (Circle uses different `name` values).
|
|
5
|
-
*
|
|
6
|
-
* Verified on-chain via `cast call <usdc> "name()(string)"` and
|
|
7
|
-
* `cast call <usdc> "version()(string)"`.
|
|
8
|
-
*/
|
|
9
|
-
export declare const USDC_EIP712_DOMAIN: Record<number, {
|
|
10
|
-
name: string;
|
|
11
|
-
version: string;
|
|
12
|
-
}>;
|
|
13
|
-
/** Parameters for EIP-3009 TransferWithAuthorization. */
|
|
14
|
-
export interface TransferAuthorization {
|
|
15
|
-
/** Token holder (sender). */
|
|
16
|
-
from: Address;
|
|
17
|
-
/** Recipient of the transfer. */
|
|
18
|
-
to: Address;
|
|
19
|
-
/** Amount in token base units (USDC: 6 decimals). */
|
|
20
|
-
value: bigint;
|
|
21
|
-
/** Unix timestamp — transfer is invalid before this time. Usually 0. */
|
|
22
|
-
validAfter: bigint;
|
|
23
|
-
/** Unix timestamp — transfer is invalid after this time. */
|
|
24
|
-
validBefore: bigint;
|
|
25
|
-
/** Random bytes32 nonce (must not have been used before for this sender). */
|
|
26
|
-
nonce: Hex;
|
|
27
|
-
}
|
|
28
|
-
/**
|
|
29
|
-
* Generate a random bytes32 nonce for EIP-3009.
|
|
30
|
-
* Uses crypto.getRandomValues for cryptographic randomness.
|
|
31
|
-
*/
|
|
32
|
-
export declare function randomNonce(): Hex;
|
|
33
|
-
/**
|
|
34
|
-
* Sign an EIP-3009 TransferWithAuthorization for USDC.
|
|
35
|
-
*
|
|
36
|
-
* The resulting signature can be submitted to a facilitator contract that calls
|
|
37
|
-
* `USDC.transferWithAuthorization(from, to, value, validAfter, validBefore, nonce, v, r, s)`.
|
|
38
|
-
*
|
|
39
|
-
* @param privateKey - Signer's private key (must match auth.from)
|
|
40
|
-
* @param chainId - Chain ID (determines USDC domain name/version)
|
|
41
|
-
* @param auth - Transfer authorization parameters
|
|
42
|
-
* @returns EIP-712 signature (65 bytes, 0x-prefixed)
|
|
43
|
-
*/
|
|
44
|
-
export declare function signTransferWithAuthorization(privateKey: Hex, chainId: number, auth: TransferAuthorization): Promise<Hex>;
|
|
45
|
-
//# sourceMappingURL=eip3009.d.ts.map
|
package/dist/eip3009.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"eip3009.d.ts","sourceRoot":"","sources":["../src/eip3009.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,OAAO,EAAE,KAAK,GAAG,EAA2B,MAAM,MAAM,CAAC;AAQvE;;;;;;GAMG;AACH,eAAO,MAAM,kBAAkB,EAAE,MAAM,CAAC,MAAM,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAShF,CAAC;AAcF,yDAAyD;AACzD,MAAM,WAAW,qBAAqB;IACpC,6BAA6B;IAC7B,IAAI,EAAE,OAAO,CAAC;IACd,iCAAiC;IACjC,EAAE,EAAE,OAAO,CAAC;IACZ,qDAAqD;IACrD,KAAK,EAAE,MAAM,CAAC;IACd,wEAAwE;IACxE,UAAU,EAAE,MAAM,CAAC;IACnB,4DAA4D;IAC5D,WAAW,EAAE,MAAM,CAAC;IACpB,6EAA6E;IAC7E,KAAK,EAAE,GAAG,CAAC;CACZ;AAED;;;GAGG;AACH,wBAAgB,WAAW,IAAI,GAAG,CAMjC;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,6BAA6B,CACjD,UAAU,EAAE,GAAG,EACf,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,qBAAqB,GAC1B,OAAO,CAAC,GAAG,CAAC,CA+Bd"}
|
package/dist/eip3009.js
DELETED
|
@@ -1,85 +0,0 @@
|
|
|
1
|
-
import { privateKeyToAccount } from 'viem/accounts';
|
|
2
|
-
import { USDC } from './constants.js';
|
|
3
|
-
// ============================================================================
|
|
4
|
-
// EIP-3009 TransferWithAuthorization — USDC only
|
|
5
|
-
// ============================================================================
|
|
6
|
-
/**
|
|
7
|
-
* Per-chain EIP-712 domain parameters for USDC's EIP-3009 implementation.
|
|
8
|
-
* These differ between testnets and mainnets (Circle uses different `name` values).
|
|
9
|
-
*
|
|
10
|
-
* Verified on-chain via `cast call <usdc> "name()(string)"` and
|
|
11
|
-
* `cast call <usdc> "version()(string)"`.
|
|
12
|
-
*/
|
|
13
|
-
export const USDC_EIP712_DOMAIN = {
|
|
14
|
-
// Base mainnet
|
|
15
|
-
8453: { name: 'USD Coin', version: '2' },
|
|
16
|
-
// Base Sepolia
|
|
17
|
-
84532: { name: 'USDC', version: '2' },
|
|
18
|
-
// Arbitrum One
|
|
19
|
-
42161: { name: 'USD Coin', version: '2' },
|
|
20
|
-
// Arbitrum Sepolia (same as mainnet convention)
|
|
21
|
-
421614: { name: 'USDC', version: '2' },
|
|
22
|
-
};
|
|
23
|
-
/** EIP-712 types for TransferWithAuthorization (EIP-3009). */
|
|
24
|
-
const TRANSFER_WITH_AUTHORIZATION_TYPES = {
|
|
25
|
-
TransferWithAuthorization: [
|
|
26
|
-
{ name: 'from', type: 'address' },
|
|
27
|
-
{ name: 'to', type: 'address' },
|
|
28
|
-
{ name: 'value', type: 'uint256' },
|
|
29
|
-
{ name: 'validAfter', type: 'uint256' },
|
|
30
|
-
{ name: 'validBefore', type: 'uint256' },
|
|
31
|
-
{ name: 'nonce', type: 'bytes32' },
|
|
32
|
-
],
|
|
33
|
-
};
|
|
34
|
-
/**
|
|
35
|
-
* Generate a random bytes32 nonce for EIP-3009.
|
|
36
|
-
* Uses crypto.getRandomValues for cryptographic randomness.
|
|
37
|
-
*/
|
|
38
|
-
export function randomNonce() {
|
|
39
|
-
const bytes = new Uint8Array(32);
|
|
40
|
-
crypto.getRandomValues(bytes);
|
|
41
|
-
return `0x${Array.from(bytes)
|
|
42
|
-
.map((b) => b.toString(16).padStart(2, '0'))
|
|
43
|
-
.join('')}`;
|
|
44
|
-
}
|
|
45
|
-
/**
|
|
46
|
-
* Sign an EIP-3009 TransferWithAuthorization for USDC.
|
|
47
|
-
*
|
|
48
|
-
* The resulting signature can be submitted to a facilitator contract that calls
|
|
49
|
-
* `USDC.transferWithAuthorization(from, to, value, validAfter, validBefore, nonce, v, r, s)`.
|
|
50
|
-
*
|
|
51
|
-
* @param privateKey - Signer's private key (must match auth.from)
|
|
52
|
-
* @param chainId - Chain ID (determines USDC domain name/version)
|
|
53
|
-
* @param auth - Transfer authorization parameters
|
|
54
|
-
* @returns EIP-712 signature (65 bytes, 0x-prefixed)
|
|
55
|
-
*/
|
|
56
|
-
export async function signTransferWithAuthorization(privateKey, chainId, auth) {
|
|
57
|
-
const domainConfig = USDC_EIP712_DOMAIN[chainId];
|
|
58
|
-
if (!domainConfig) {
|
|
59
|
-
throw new Error(`EIP-3009 not configured for chain ${chainId}`);
|
|
60
|
-
}
|
|
61
|
-
const usdcAddress = USDC[chainId];
|
|
62
|
-
if (!usdcAddress) {
|
|
63
|
-
throw new Error(`USDC address not known for chain ${chainId}`);
|
|
64
|
-
}
|
|
65
|
-
const account = privateKeyToAccount(privateKey);
|
|
66
|
-
return account.signTypedData({
|
|
67
|
-
domain: {
|
|
68
|
-
name: domainConfig.name,
|
|
69
|
-
version: domainConfig.version,
|
|
70
|
-
chainId,
|
|
71
|
-
verifyingContract: usdcAddress,
|
|
72
|
-
},
|
|
73
|
-
types: TRANSFER_WITH_AUTHORIZATION_TYPES,
|
|
74
|
-
primaryType: 'TransferWithAuthorization',
|
|
75
|
-
message: {
|
|
76
|
-
from: auth.from,
|
|
77
|
-
to: auth.to,
|
|
78
|
-
value: auth.value,
|
|
79
|
-
validAfter: auth.validAfter,
|
|
80
|
-
validBefore: auth.validBefore,
|
|
81
|
-
nonce: auth.nonce,
|
|
82
|
-
},
|
|
83
|
-
});
|
|
84
|
-
}
|
|
85
|
-
//# sourceMappingURL=eip3009.js.map
|
package/dist/eip3009.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"eip3009.js","sourceRoot":"","sources":["../src/eip3009.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAGzC,YAAY,EACV,aAAa,EACb,SAAS,EACT,eAAe,EACf,gBAAgB,EAChB,aAAa,EACb,aAAa,EACb,UAAU,EACV,QAAQ,EACR,YAAY,EACZ,SAAS,EACT,aAAa,EACb,aAAa,EACb,gBAAgB,EAChB,SAAS,EACT,sBAAsB,EACtB,qBAAqB,EACrB,SAAS,EACT,UAAU,EACV,WAAW,GACZ,MAAM,YAAY,CAAC;AAGpB,OAAO,EACL,KAAK,EACL,UAAU,EACV,IAAI,EACJ,MAAM,EACN,WAAW,EACX,WAAW,EACX,aAAa,EACb,uBAAuB,EACvB,uBAAuB,EACvB,oBAAoB,EACpB,kBAAkB,EAClB,qBAAqB,EACrB,mBAAmB,EACnB,wBAAwB,EACxB,gBAAgB,EAChB,WAAW,GACZ,MAAM,gBAAgB,CAAC;AACxB,YAAY,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAGvD,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAGxF,OAAO,EACL,WAAW,EACX,YAAY,EACZ,mBAAmB,EACnB,sBAAsB,EACtB,aAAa,EACb,kBAAkB,EAClB,eAAe,EACf,aAAa,EACb,gBAAgB,EAChB,oBAAoB,EACpB,sBAAsB,EACtB,2BAA2B,EAC3B,WAAW,EACX,sBAAsB,EACtB,sBAAsB,EACtB,QAAQ,GACT,MAAM,YAAY,CAAC;AAGpB,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AACjE,YAAY,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAGhD,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,sBAAsB,EAAE,uBAAuB,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AACjH,YAAY,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAGhE,OAAO,EAAE,WAAW,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AAGjE,OAAO,EAAE,6BAA6B,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAC9F,YAAY,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AAG1D,OAAO,EACL,0BAA0B,EAC1B,kBAAkB,EAClB,eAAe,EACf,kBAAkB,EAClB,mBAAmB,GACpB,MAAM,cAAc,CAAC;AACtB,YAAY,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AAGzD,OAAO,EACL,oBAAoB,EACpB,YAAY,EACZ,kBAAkB,EAClB,mBAAmB,EACnB,sBAAsB,GACvB,MAAM,WAAW,CAAC;AACnB,YAAY,EAAE,YAAY,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAGxG,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC"}
|
package/dist/keystore.d.ts
DELETED
|
@@ -1,60 +0,0 @@
|
|
|
1
|
-
import type { Hex } from 'viem';
|
|
2
|
-
export interface KeystoreV3 {
|
|
3
|
-
version: 3;
|
|
4
|
-
id: string;
|
|
5
|
-
address: string;
|
|
6
|
-
crypto: {
|
|
7
|
-
ciphertext: string;
|
|
8
|
-
cipherparams: {
|
|
9
|
-
iv: string;
|
|
10
|
-
};
|
|
11
|
-
cipher: 'aes-128-ctr';
|
|
12
|
-
kdf: 'scrypt';
|
|
13
|
-
kdfparams: {
|
|
14
|
-
dklen: number;
|
|
15
|
-
salt: string;
|
|
16
|
-
n: number;
|
|
17
|
-
r: number;
|
|
18
|
-
p: number;
|
|
19
|
-
};
|
|
20
|
-
mac: string;
|
|
21
|
-
};
|
|
22
|
-
}
|
|
23
|
-
/**
|
|
24
|
-
* Encrypt a raw private key into a V3 keystore JSON object.
|
|
25
|
-
*
|
|
26
|
-
* Uses scrypt KDF (n=262144, r=8, p=1) and AES-128-CTR cipher —
|
|
27
|
-
* the same format as MetaMask and Geth.
|
|
28
|
-
*
|
|
29
|
-
* @param privateKey - Raw private key as 0x-prefixed hex string
|
|
30
|
-
* @param passphrase - Passphrase to encrypt with (min 1 character)
|
|
31
|
-
* @returns V3 keystore object ready to serialize as JSON
|
|
32
|
-
*
|
|
33
|
-
* @example
|
|
34
|
-
* ```ts
|
|
35
|
-
* import { encryptKeystore } from '@axonfi/sdk';
|
|
36
|
-
*
|
|
37
|
-
* const keystore = await encryptKeystore('0xabc...', 'my-strong-passphrase');
|
|
38
|
-
* fs.writeFileSync('bot-keystore.json', JSON.stringify(keystore, null, 2));
|
|
39
|
-
* ```
|
|
40
|
-
*/
|
|
41
|
-
export declare function encryptKeystore(privateKey: Hex, passphrase: string): Promise<KeystoreV3>;
|
|
42
|
-
/**
|
|
43
|
-
* Decrypt a V3 keystore back to a raw private key.
|
|
44
|
-
*
|
|
45
|
-
* @param keystore - V3 keystore object or JSON string
|
|
46
|
-
* @param passphrase - Passphrase used during encryption
|
|
47
|
-
* @returns Raw private key as 0x-prefixed hex string
|
|
48
|
-
* @throws Error if passphrase is wrong (MAC mismatch) or keystore is invalid
|
|
49
|
-
*
|
|
50
|
-
* @example
|
|
51
|
-
* ```ts
|
|
52
|
-
* import { AxonClient, decryptKeystore } from '@axonfi/sdk';
|
|
53
|
-
*
|
|
54
|
-
* const keystore = JSON.parse(fs.readFileSync('bot-keystore.json', 'utf8'));
|
|
55
|
-
* const privateKey = await decryptKeystore(keystore, process.env.BOT_PASSPHRASE!);
|
|
56
|
-
* const client = new AxonClient({ botPrivateKey: privateKey, ... });
|
|
57
|
-
* ```
|
|
58
|
-
*/
|
|
59
|
-
export declare function decryptKeystore(keystore: KeystoreV3 | string, passphrase: string): Promise<Hex>;
|
|
60
|
-
//# sourceMappingURL=keystore.d.ts.map
|
package/dist/keystore.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"keystore.d.ts","sourceRoot":"","sources":["../src/keystore.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,MAAM,CAAC;AAOhC,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,CAAC,CAAC;IACX,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE;QACN,UAAU,EAAE,MAAM,CAAC;QACnB,YAAY,EAAE;YAAE,EAAE,EAAE,MAAM,CAAA;SAAE,CAAC;QAC7B,MAAM,EAAE,aAAa,CAAC;QACtB,GAAG,EAAE,QAAQ,CAAC;QACd,SAAS,EAAE;YACT,KAAK,EAAE,MAAM,CAAC;YACd,IAAI,EAAE,MAAM,CAAC;YACb,CAAC,EAAE,MAAM,CAAC;YACV,CAAC,EAAE,MAAM,CAAC;YACV,CAAC,EAAE,MAAM,CAAC;SACX,CAAC;QACF,GAAG,EAAE,MAAM,CAAC;KACb,CAAC;CACH;AA8CD;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAsB,eAAe,CAAC,UAAU,EAAE,GAAG,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAiD9F;AAMD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAsB,eAAe,CAAC,QAAQ,EAAE,UAAU,GAAG,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAgDrG"}
|