@armory-sh/client-ethers 0.2.25-beta.20260216.68 → 0.2.26-alpha.23.73

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/index.d.ts CHANGED
@@ -32,10 +32,6 @@ declare function parsePaymentRequired(response: Response): ParsedPaymentRequirem
32
32
  * Create x402 payment payload (V2-only wrapper)
33
33
  */
34
34
  declare function createX402Payment(signer: Signer, parsed: ParsedPaymentRequirements, fromAddress: Address, nonce?: `0x${string}`, validBefore?: number, domainName?: string, domainVersion?: string): Promise<PaymentPayloadV2>;
35
- /**
36
- * Encode x402 payment payload to Base64 for transport
37
- */
38
- declare function encodeX402Payment(payload: PaymentPayloadV2): string;
39
35
 
40
36
  declare class X402ClientError extends Error {
41
37
  readonly cause?: unknown;
@@ -310,4 +306,4 @@ interface ArmoryInstance {
310
306
  }
311
307
  declare const createArmory: (config: ArmoryConfig) => ArmoryInstance;
312
308
 
313
- export { type ArmoryConfig, type ArmoryInstance, AuthorizationError, type ClientConfig, type HttpMethod, type NormalizedWallet, type ParsedPaymentRequirements, PaymentError, type PaymentOptions, ProviderRequiredError, SignerRequiredError, SigningError, type SimpleWalletInput, type X402Client, type X402ClientConfig, X402ClientError, type X402RequestInit, type X402Transport, type X402TransportConfig, armoryDelete, armoryGet, armoryPatch, armoryPay, armoryPost, armoryPut, createArmory, createX402Client, createX402Payment, createX402Transport, detectX402Version, encodeX402Payment, getNetworks, getPaymentHeaderName, getTokens, getWalletAddress, normalizeWallet, parsePaymentRequired, recoverEIP3009Signer, signEIP3009, signEIP3009WithDomain, signPayment, validateNetwork, validateToken };
309
+ export { type ArmoryConfig, type ArmoryInstance, AuthorizationError, type ClientConfig, type HttpMethod, type NormalizedWallet, type ParsedPaymentRequirements, PaymentError, type PaymentOptions, ProviderRequiredError, SignerRequiredError, SigningError, type SimpleWalletInput, type X402Client, type X402ClientConfig, X402ClientError, type X402RequestInit, type X402Transport, type X402TransportConfig, armoryDelete, armoryGet, armoryPatch, armoryPay, armoryPost, armoryPut, createArmory, createX402Client, createX402Payment, createX402Transport, detectX402Version, getNetworks, getPaymentHeaderName, getTokens, getWalletAddress, normalizeWallet, parsePaymentRequired, recoverEIP3009Signer, signEIP3009, signEIP3009WithDomain, signPayment, validateNetwork, validateToken };
package/dist/index.js CHANGED
@@ -1,4 +1,4 @@
1
- import { createEIP712Domain, V2_HEADERS, isX402V2PaymentRequired, validatePaymentConfig, isValidationError, resolveNetwork, resolveToken, getNetworkConfig, normalizeNetworkName, decodeSettlementV2 } from '@armory-sh/base';
1
+ import { createEIP712Domain, V2_HEADERS, isX402V2PaymentRequired, validatePaymentConfig, isValidationError, resolveNetwork, resolveToken, getNetworkConfig, normalizeNetworkName, encodePaymentV2, decodeSettlementV2 } from '@armory-sh/base';
2
2
  export { EIP712_TYPES, ERC20_ABI, NETWORKS, V2_HEADERS, createEIP712Domain, createTransferWithAuthorization, decodePayment, decodePaymentV2, decodeSettlementV2, detectPaymentVersion, encodePaymentV2, encodeSettlementV2, getMainnets, getNetworkByChainId, getNetworkConfig, getTestnets, getTxHash, isCAIP2ChainId, isCAIPAssetId, isPaymentV2, isSettlementSuccessful, isSettlementV2, isX402V2PaymentRequired, safeBase64Decode, validateTransferWithAuthorization } from '@armory-sh/base';
3
3
  import { ethers } from 'ethers';
4
4
 
@@ -117,7 +117,7 @@ async function recoverEIP3009Signer(params, signature, domain) {
117
117
  }
118
118
 
119
119
  // src/bytes.ts
120
- var textEncoder = new TextEncoder();
120
+ new TextEncoder();
121
121
  var textDecoder = new TextDecoder();
122
122
  function getNodeBuffer() {
123
123
  if ("Buffer" in globalThis) {
@@ -125,20 +125,6 @@ function getNodeBuffer() {
125
125
  }
126
126
  return void 0;
127
127
  }
128
- function toBase64(bytes) {
129
- if (typeof btoa === "function") {
130
- let binary = "";
131
- for (let index = 0; index < bytes.length; index += 1) {
132
- binary += String.fromCharCode(bytes[index]);
133
- }
134
- return btoa(binary);
135
- }
136
- const nodeBuffer = getNodeBuffer();
137
- if (nodeBuffer) {
138
- return nodeBuffer.from(bytes).toString("base64");
139
- }
140
- throw new Error("No base64 encoder available in this runtime");
141
- }
142
128
  function fromBase64(base64) {
143
129
  if (typeof atob === "function") {
144
130
  const binary = atob(base64);
@@ -154,10 +140,6 @@ function fromBase64(base64) {
154
140
  }
155
141
  throw new Error("No base64 decoder available in this runtime");
156
142
  }
157
- function encodeUtf8ToBase64(value) {
158
- const bytes = textEncoder.encode(value);
159
- return toBase64(bytes);
160
- }
161
143
  function decodeBase64ToUtf8(value) {
162
144
  const bytes = fromBase64(value);
163
145
  return textDecoder.decode(bytes);
@@ -203,9 +185,6 @@ function parsePaymentRequired(response) {
203
185
  throw new PaymentError(`Failed to parse V2 PAYMENT-REQUIRED header: ${error}`);
204
186
  }
205
187
  }
206
- function toAtomicUnits(amount) {
207
- return Math.floor(parseFloat(amount) * 1e6).toString();
208
- }
209
188
  function extractChainId(network) {
210
189
  if (network.startsWith("eip155:")) {
211
190
  return parseInt(network.split(":")[1], 10);
@@ -228,7 +207,7 @@ async function createX402V2Payment(signer, requirements, fromAddress, nonce, val
228
207
  const authorization = {
229
208
  from: fromAddress,
230
209
  to: requirements.payTo,
231
- value: toAtomicUnits(requirements.amount),
210
+ value: requirements.amount,
232
211
  validAfter: "0",
233
212
  validBefore: validBefore.toString(),
234
213
  nonce
@@ -266,9 +245,6 @@ async function createX402Payment(signer, parsed, fromAddress, nonce, validBefore
266
245
  domainVersion
267
246
  );
268
247
  }
269
- function encodeX402Payment(payload) {
270
- return encodeUtf8ToBase64(JSON.stringify(payload));
271
- }
272
248
  var defaultConfig = {
273
249
  baseURL: "",
274
250
  headers: {},
@@ -301,6 +277,16 @@ var fetchWithTimeout = async (url, init, timeout) => {
301
277
  }
302
278
  };
303
279
  var delay = (ms) => new Promise((resolve) => setTimeout(resolve, ms));
280
+ var getRequirementDomainOverrides = (parsed) => {
281
+ const requirement = parsed.requirements;
282
+ const extra = requirement.extra;
283
+ const extraName = extra && typeof extra === "object" && typeof extra["name"] === "string" ? extra["name"] : void 0;
284
+ const extraVersion = extra && typeof extra === "object" && typeof extra["version"] === "string" ? extra["version"] : void 0;
285
+ return {
286
+ domainName: requirement.name ?? extraName,
287
+ domainVersion: requirement.version ?? extraVersion
288
+ };
289
+ };
304
290
  var handlePaymentRequired = async (state, response) => {
305
291
  if (!state.signer) {
306
292
  throw new SignerRequiredError("Cannot handle payment: no signer configured.");
@@ -308,8 +294,17 @@ var handlePaymentRequired = async (state, response) => {
308
294
  try {
309
295
  const parsed = parsePaymentRequired(response);
310
296
  const from = await state.signer.getAddress();
311
- const payload = await createX402Payment(state.signer, parsed, from);
312
- const encoded = encodeX402Payment(payload);
297
+ const requirementDomain = getRequirementDomainOverrides(parsed);
298
+ const payload = await createX402Payment(
299
+ state.signer,
300
+ parsed,
301
+ from,
302
+ void 0,
303
+ void 0,
304
+ requirementDomain.domainName,
305
+ requirementDomain.domainVersion
306
+ );
307
+ const encoded = encodePaymentV2(payload);
313
308
  const headerName = getPaymentHeaderName(parsed.version);
314
309
  const paymentResponse = await fetchWithTimeout(
315
310
  response.url,
@@ -592,4 +587,4 @@ var createArmory = (config) => {
592
587
  };
593
588
  };
594
589
 
595
- export { AuthorizationError, PaymentError, ProviderRequiredError, SignerRequiredError, SigningError, X402ClientError, armoryDelete, armoryGet, armoryPatch, armoryPay, armoryPost, armoryPut, createArmory, createX402Client, createX402Payment, createX402Transport, detectX402Version, encodeX402Payment, getNetworks, getPaymentHeaderName, getTokens, getWalletAddress, normalizeWallet, parsePaymentRequired, recoverEIP3009Signer, signEIP3009, signEIP3009WithDomain, signPayment, validateNetwork, validateToken };
590
+ export { AuthorizationError, PaymentError, ProviderRequiredError, SignerRequiredError, SigningError, X402ClientError, armoryDelete, armoryGet, armoryPatch, armoryPay, armoryPost, armoryPut, createArmory, createX402Client, createX402Payment, createX402Transport, detectX402Version, getNetworks, getPaymentHeaderName, getTokens, getWalletAddress, normalizeWallet, parsePaymentRequired, recoverEIP3009Signer, signEIP3009, signEIP3009WithDomain, signPayment, validateNetwork, validateToken };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@armory-sh/client-ethers",
3
- "version": "0.2.25-beta.20260216.68",
3
+ "version": "0.2.26-alpha.23.73",
4
4
  "license": "MIT",
5
5
  "author": "Sawyer Cutler <sawyer@dirtroad.dev>",
6
6
  "keywords": [
@@ -47,7 +47,7 @@
47
47
  "directory": "packages/client-ethers"
48
48
  },
49
49
  "dependencies": {
50
- "@armory-sh/base": "0.2.26-beta.20260216.68",
50
+ "@armory-sh/base": "0.2.27-alpha.23.73",
51
51
  "ethers": "6.16.0"
52
52
  },
53
53
  "devDependencies": {