@atxp/client 0.7.4 → 0.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/atxpAccount.d.ts +8 -6
- package/dist/atxpAccount.d.ts.map +1 -1
- package/dist/atxpAccount.js +57 -19
- package/dist/atxpAccount.js.map +1 -1
- package/dist/atxpClient.d.ts +1 -1
- package/dist/atxpClient.d.ts.map +1 -1
- package/dist/atxpClient.js +18 -2
- package/dist/atxpClient.js.map +1 -1
- package/dist/atxpFetcher.d.ts +5 -15
- package/dist/atxpFetcher.d.ts.map +1 -1
- package/dist/atxpFetcher.js +95 -229
- package/dist/atxpFetcher.js.map +1 -1
- package/dist/baseAccount.d.ts +7 -4
- package/dist/baseAccount.d.ts.map +1 -1
- package/dist/baseAccount.js +15 -4
- package/dist/baseAccount.js.map +1 -1
- package/dist/basePaymentMaker.d.ts +4 -3
- package/dist/basePaymentMaker.d.ts.map +1 -1
- package/dist/basePaymentMaker.js +20 -3
- package/dist/basePaymentMaker.js.map +1 -1
- package/dist/clientTestHelpers.d.ts.map +1 -1
- package/dist/destinationMakers/atxpDestinationMaker.d.ts +15 -0
- package/dist/destinationMakers/atxpDestinationMaker.d.ts.map +1 -0
- package/dist/destinationMakers/atxpDestinationMaker.js +128 -0
- package/dist/destinationMakers/atxpDestinationMaker.js.map +1 -0
- package/dist/destinationMakers/index.d.ts +9 -0
- package/dist/destinationMakers/index.d.ts.map +1 -0
- package/dist/destinationMakers/index.js +42 -0
- package/dist/destinationMakers/index.js.map +1 -0
- package/dist/destinationMakers/passthroughDestinationMaker.d.ts +8 -0
- package/dist/destinationMakers/passthroughDestinationMaker.d.ts.map +1 -0
- package/dist/destinationMakers/passthroughDestinationMaker.js +27 -0
- package/dist/destinationMakers/passthroughDestinationMaker.js.map +1 -0
- package/dist/index.cjs +803 -584
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +99 -42
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +798 -586
- package/dist/index.js.map +1 -1
- package/dist/polygonConstants.d.ts +46 -0
- package/dist/polygonConstants.d.ts.map +1 -0
- package/dist/polygonConstants.js +54 -0
- package/dist/polygonConstants.js.map +1 -0
- package/dist/solanaAccount.d.ts +8 -4
- package/dist/solanaAccount.d.ts.map +1 -1
- package/dist/solanaAccount.js +16 -4
- package/dist/solanaAccount.js.map +1 -1
- package/dist/solanaPaymentMaker.d.ts +4 -3
- package/dist/solanaPaymentMaker.d.ts.map +1 -1
- package/dist/solanaPaymentMaker.js +24 -5
- package/dist/solanaPaymentMaker.js.map +1 -1
- package/dist/types.d.ts +5 -23
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/package.json +2 -2
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { PaymentMaker } from './types.js';
|
|
2
|
-
import { Logger, Currency } from '@atxp/common';
|
|
2
|
+
import { Logger, Currency, AccountId, PaymentIdentifier, Destination } from '@atxp/common';
|
|
3
3
|
import { WalletClient, PublicActions } from "viem";
|
|
4
4
|
type ExtendedWalletClient = WalletClient & PublicActions;
|
|
5
5
|
export declare class BasePaymentMaker implements PaymentMaker {
|
|
@@ -12,11 +12,12 @@ export declare class BasePaymentMaker implements PaymentMaker {
|
|
|
12
12
|
receiver: string;
|
|
13
13
|
memo: string;
|
|
14
14
|
}): string;
|
|
15
|
-
generateJWT({ paymentRequestId, codeChallenge }: {
|
|
15
|
+
generateJWT({ paymentRequestId, codeChallenge, accountId }: {
|
|
16
16
|
paymentRequestId: string;
|
|
17
17
|
codeChallenge: string;
|
|
18
|
+
accountId?: AccountId | null;
|
|
18
19
|
}): Promise<string>;
|
|
19
|
-
makePayment(
|
|
20
|
+
makePayment(destinations: Destination[], _memo: string, _paymentRequestId?: string): Promise<PaymentIdentifier | null>;
|
|
20
21
|
}
|
|
21
22
|
export {};
|
|
22
23
|
//# sourceMappingURL=basePaymentMaker.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"basePaymentMaker.d.ts","sourceRoot":"","sources":["../src/basePaymentMaker.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAO,MAAM,YAAY,CAAC;AAEpD,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"basePaymentMaker.d.ts","sourceRoot":"","sources":["../src/basePaymentMaker.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAO,MAAM,YAAY,CAAC;AAEpD,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAE3F,OAAO,EAKL,YAAY,EACZ,aAAa,EACd,MAAM,MAAM,CAAC;AAMd,KAAK,oBAAoB,GAAG,YAAY,GAAG,aAAa,CAAC;AA6CzD,qBAAa,gBAAiB,YAAW,YAAY;IACnD,SAAS,CAAC,aAAa,EAAE,oBAAoB,CAAC;IAC9C,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC;gBAEb,UAAU,EAAE,MAAM,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,CAAC,EAAE,MAAM;IAe3E,gBAAgB,CAAC,OAAO,EAAE;QAAC,MAAM,EAAE,SAAS,CAAC;QAAC,QAAQ,EAAE,QAAQ,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAC,GAAG,MAAM;IAIpG,WAAW,CAAC,EAAC,gBAAgB,EAAE,aAAa,EAAE,SAAS,EAAC,EAAE;QAAC,gBAAgB,EAAE,MAAM,CAAC;QAAC,aAAa,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,SAAS,GAAG,IAAI,CAAA;KAAC,GAAG,OAAO,CAAC,MAAM,CAAC;IAsC3J,WAAW,CAAC,YAAY,EAAE,WAAW,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,iBAAiB,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC;CAmF7H"}
|
package/dist/basePaymentMaker.js
CHANGED
|
@@ -63,7 +63,7 @@ class BasePaymentMaker {
|
|
|
63
63
|
getSourceAddress(_params) {
|
|
64
64
|
return this.signingClient.account.address;
|
|
65
65
|
}
|
|
66
|
-
async generateJWT({ paymentRequestId, codeChallenge }) {
|
|
66
|
+
async generateJWT({ paymentRequestId, codeChallenge, accountId }) {
|
|
67
67
|
const headerObj = { alg: 'ES256K' };
|
|
68
68
|
const payloadObj = {
|
|
69
69
|
sub: this.signingClient.account.address,
|
|
@@ -73,6 +73,7 @@ class BasePaymentMaker {
|
|
|
73
73
|
exp: Math.floor(Date.now() / 1000) + 60 * 60,
|
|
74
74
|
...(codeChallenge ? { code_challenge: codeChallenge } : {}),
|
|
75
75
|
...(paymentRequestId ? { payment_request_id: paymentRequestId } : {}),
|
|
76
|
+
...(accountId ? { account_id: accountId } : {}),
|
|
76
77
|
};
|
|
77
78
|
const header = toBase64Url(JSON.stringify(headerObj));
|
|
78
79
|
const payload = toBase64Url(JSON.stringify(payloadObj));
|
|
@@ -93,7 +94,18 @@ class BasePaymentMaker {
|
|
|
93
94
|
this.logger.info(`Generated ES256K JWT: ${jwt}`);
|
|
94
95
|
return jwt;
|
|
95
96
|
}
|
|
96
|
-
async makePayment(
|
|
97
|
+
async makePayment(destinations, _memo, _paymentRequestId) {
|
|
98
|
+
// Filter to base chain destinations
|
|
99
|
+
const baseDestinations = destinations.filter(d => d.chain === 'base');
|
|
100
|
+
if (baseDestinations.length === 0) {
|
|
101
|
+
this.logger.debug('BasePaymentMaker: No base destinations found, cannot handle payment');
|
|
102
|
+
return null; // Cannot handle these destinations
|
|
103
|
+
}
|
|
104
|
+
// Pick first base destination
|
|
105
|
+
const dest = baseDestinations[0];
|
|
106
|
+
const amount = dest.amount;
|
|
107
|
+
const currency = dest.currency;
|
|
108
|
+
const receiver = dest.address;
|
|
97
109
|
if (currency.toUpperCase() !== 'USDC') {
|
|
98
110
|
throw new PaymentNetworkError('Only USDC currency is supported; received ' + currency);
|
|
99
111
|
}
|
|
@@ -136,7 +148,12 @@ class BasePaymentMaker {
|
|
|
136
148
|
throw new PaymentNetworkError(`Transaction reverted: ${hash}`, new Error('Transaction reverted on chain'));
|
|
137
149
|
}
|
|
138
150
|
this.logger.info(`Transaction confirmed: ${hash} in block ${receipt.blockNumber}`);
|
|
139
|
-
|
|
151
|
+
// Return payment result with chain and currency
|
|
152
|
+
return {
|
|
153
|
+
transactionId: hash,
|
|
154
|
+
chain: 'base',
|
|
155
|
+
currency: 'USDC'
|
|
156
|
+
};
|
|
140
157
|
}
|
|
141
158
|
catch (error) {
|
|
142
159
|
if (error instanceof InsufficientFundsError || error instanceof PaymentNetworkError) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"basePaymentMaker.js","sources":["../src/basePaymentMaker.ts"],"sourcesContent":[null],"names":["PaymentNetworkErrorClass","InsufficientFundsErrorClass"],"mappings":";;;;;;;AAmBA;AACA,SAAS,WAAW,CAAC,IAAY,EAAA;;AAE/B,IAAA,MAAM,MAAM,GAAG,OAAO,MAAM,KAAK;UAC7B,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,QAAQ;AACrC,UAAE,IAAI,CAAC,IAAI,CAAC;;IAEd,OAAO,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;AACzE;AAEA,MAAM,aAAa,GAAG,CAAC;AACvB,MAAM,SAAS,GAAG;AAChB,IAAA;AACE,QAAA,QAAQ,EAAE,KAAK;AACf,QAAA,MAAM,EAAE;AACN,YAAA,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE;AAChC,YAAA,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE;AACpC,SAAA;AACD,QAAA,IAAI,EAAE,UAAU;QAChB,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;AACrC,QAAA,IAAI,EAAE,UAAU;AACjB,KAAA;AACD,IAAA;AACI,QAAA,UAAU,EAAE,IAAI;AAChB,QAAA,QAAQ,EAAE;AACN,YAAA;AACI,gBAAA,MAAM,EAAE,QAAQ;AAChB,gBAAA,MAAM,EAAE;AACX;AACJ,SAAA;AACD,QAAA,MAAM,EAAE,WAAW;AACnB,QAAA,SAAS,EAAE;AACP,YAAA;AACI,gBAAA,MAAM,EAAE,SAAS;AACjB,gBAAA,MAAM,EAAE;AACX;AACJ,SAAA;AACD,QAAA,SAAS,EAAE,KAAK;AAChB,QAAA,iBAAiB,EAAE,MAAM;AACzB,QAAA,MAAM,EAAE;AACX;CACF;MAEY,gBAAgB,CAAA;AAI3B,IAAA,WAAA,CAAY,UAAkB,EAAE,YAA0B,EAAE,MAAe,EAAA;QACzE,IAAI,CAAC,UAAU,EAAE;AACf,YAAA,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC;QACzC;QACA,IAAI,CAAC,YAAY,EAAE;AACjB,YAAA,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC;QAC3C;AACA,QAAA,IAAG,CAAC,YAAY,CAAC,OAAO,EAAE;AACxB,YAAA,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC;QACnD;QAEA,IAAI,CAAC,aAAa,GAAG,YAAY,CAAC,MAAM,CAAC,aAAa,CAAyB;QAC/E,IAAI,CAAC,MAAM,GAAG,MAAM,IAAI,IAAI,aAAa,EAAE;IAC7C;AAEA,IAAA,gBAAgB,CAAC,OAAgF,EAAA;AAC/F,QAAA,OAAO,IAAI,CAAC,aAAa,CAAC,OAAQ,CAAC,OAAO;IAC5C;
|
|
1
|
+
{"version":3,"file":"basePaymentMaker.js","sources":["../src/basePaymentMaker.ts"],"sourcesContent":[null],"names":["PaymentNetworkErrorClass","InsufficientFundsErrorClass"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"clientTestHelpers.d.ts","sourceRoot":"","sources":["../src/clientTestHelpers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAGvC,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,SAAS,EAAE,OAAO,GAAE,MAA8B,EAAE,YAAY,GAAE,MAAe,EAAE,aAAa,GAAE,MAAqC,aAqB/K;AAED,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,SAAS,EAAE,OAAO,GAAE,MAAqC,EAAE,eAAe,GAAE;IAAC,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,CAAA;CAAM,
|
|
1
|
+
{"version":3,"file":"clientTestHelpers.d.ts","sourceRoot":"","sources":["../src/clientTestHelpers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAGvC,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,SAAS,EAAE,OAAO,GAAE,MAA8B,EAAE,YAAY,GAAE,MAAe,EAAE,aAAa,GAAE,MAAqC,aAqB/K;AAED,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,SAAS,EAAE,OAAO,GAAE,MAAqC,EAAE,eAAe,GAAE;IAAC,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,CAAA;CAAM,aAuExJ"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { FetchLike, Logger, Source } from '@atxp/common';
|
|
2
|
+
import { Destination, PaymentRequestOption, DestinationMaker } from '@atxp/common';
|
|
3
|
+
/**
|
|
4
|
+
* Destination mapper for ATXP network destinations.
|
|
5
|
+
* Converts destinations with network='atxp' to actual blockchain network destinations
|
|
6
|
+
* by resolving the account ID to its associated blockchain addresses.
|
|
7
|
+
*/
|
|
8
|
+
export declare class ATXPDestinationMaker implements DestinationMaker {
|
|
9
|
+
private accountsServiceUrl;
|
|
10
|
+
private fetchFn;
|
|
11
|
+
constructor(accountsServiceUrl: string, fetchFn?: FetchLike);
|
|
12
|
+
makeDestinations(option: PaymentRequestOption, logger: Logger, paymentRequestId: string, sources: Source[]): Promise<Destination[]>;
|
|
13
|
+
private getDestinations;
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=atxpDestinationMaker.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"atxpDestinationMaker.d.ts","sourceRoot":"","sources":["../../src/destinationMakers/atxpDestinationMaker.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,EAAS,MAAM,EAAkD,MAAM,cAAc,CAAC;AAChH,OAAO,EAAE,WAAW,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAiFnF;;;;GAIG;AACH,qBAAa,oBAAqB,YAAW,gBAAgB;IAC3D,OAAO,CAAC,kBAAkB,CAAS;IACnC,OAAO,CAAC,OAAO,CAAY;gBAEf,kBAAkB,EAAE,MAAM,EAAE,OAAO,GAAE,SAAiB;IAK5D,gBAAgB,CAAC,MAAM,EAAE,oBAAoB,EAAE,MAAM,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;YAyB3H,eAAe;CAyC9B"}
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
import { isEnumValue, ChainEnum, CurrencyEnum } from '@atxp/common';
|
|
2
|
+
import { BigNumber } from 'bignumber.js';
|
|
3
|
+
|
|
4
|
+
function isDestinationResponse(obj) {
|
|
5
|
+
return (typeof obj === 'object' &&
|
|
6
|
+
obj !== null &&
|
|
7
|
+
'chain' in obj &&
|
|
8
|
+
'address' in obj &&
|
|
9
|
+
'currency' in obj &&
|
|
10
|
+
'amount' in obj &&
|
|
11
|
+
typeof obj.chain === 'string' &&
|
|
12
|
+
typeof obj.address === 'string' &&
|
|
13
|
+
typeof obj.currency === 'string' &&
|
|
14
|
+
typeof obj.amount === 'string');
|
|
15
|
+
}
|
|
16
|
+
function isDestinationsApiResponse(obj) {
|
|
17
|
+
return (typeof obj === 'object' &&
|
|
18
|
+
obj !== null &&
|
|
19
|
+
'destinations' in obj &&
|
|
20
|
+
'paymentRequestId' in obj &&
|
|
21
|
+
Array.isArray(obj.destinations) &&
|
|
22
|
+
typeof obj.paymentRequestId === 'string');
|
|
23
|
+
}
|
|
24
|
+
function parseDestinationsResponse(data) {
|
|
25
|
+
// Validate response structure
|
|
26
|
+
if (!isDestinationsApiResponse(data)) {
|
|
27
|
+
throw new Error('Invalid response: expected object with destinations array and paymentRequestId');
|
|
28
|
+
}
|
|
29
|
+
// Validate and convert each destination
|
|
30
|
+
return data.destinations.map((dest, index) => {
|
|
31
|
+
if (!isDestinationResponse(dest)) {
|
|
32
|
+
throw new Error(`Invalid destination at index ${index}: missing required fields (chain, address, currency, amount)`);
|
|
33
|
+
}
|
|
34
|
+
// Validate chain is a valid Chain enum value
|
|
35
|
+
if (!isEnumValue(ChainEnum, dest.chain)) {
|
|
36
|
+
const validChains = Object.values(ChainEnum).join(', ');
|
|
37
|
+
throw new Error(`Invalid destination at index ${index}: chain "${dest.chain}" is not a valid chain. Valid chains are: ${validChains}`);
|
|
38
|
+
}
|
|
39
|
+
// Validate currency is a valid Currency enum value
|
|
40
|
+
if (!isEnumValue(CurrencyEnum, dest.currency)) {
|
|
41
|
+
const validCurrencies = Object.values(CurrencyEnum).join(', ');
|
|
42
|
+
throw new Error(`Invalid destination at index ${index}: currency "${dest.currency}" is not a valid currency. Valid currencies are: ${validCurrencies}`);
|
|
43
|
+
}
|
|
44
|
+
// Validate amount is a valid number
|
|
45
|
+
const amount = new BigNumber(dest.amount);
|
|
46
|
+
if (amount.isNaN()) {
|
|
47
|
+
throw new Error(`Invalid destination at index ${index}: amount "${dest.amount}" is not a valid number`);
|
|
48
|
+
}
|
|
49
|
+
return {
|
|
50
|
+
chain: dest.chain,
|
|
51
|
+
currency: dest.currency,
|
|
52
|
+
address: dest.address,
|
|
53
|
+
amount: amount
|
|
54
|
+
};
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Destination mapper for ATXP network destinations.
|
|
59
|
+
* Converts destinations with network='atxp' to actual blockchain network destinations
|
|
60
|
+
* by resolving the account ID to its associated blockchain addresses.
|
|
61
|
+
*/
|
|
62
|
+
class ATXPDestinationMaker {
|
|
63
|
+
constructor(accountsServiceUrl, fetchFn = fetch) {
|
|
64
|
+
this.accountsServiceUrl = accountsServiceUrl;
|
|
65
|
+
this.fetchFn = fetchFn;
|
|
66
|
+
}
|
|
67
|
+
async makeDestinations(option, logger, paymentRequestId, sources) {
|
|
68
|
+
if (option.network !== 'atxp') {
|
|
69
|
+
return [];
|
|
70
|
+
}
|
|
71
|
+
try {
|
|
72
|
+
// The address field contains the account ID (e.g., atxp_acct_xxx) for atxp options
|
|
73
|
+
const accountId = option.address;
|
|
74
|
+
// Always use the destinations endpoint
|
|
75
|
+
const destinations = await this.getDestinations(accountId, paymentRequestId, option, sources, logger);
|
|
76
|
+
if (destinations.length === 0) {
|
|
77
|
+
logger.warn(`ATXPDestinationMaker: No destinations found for account ${accountId}`);
|
|
78
|
+
}
|
|
79
|
+
else {
|
|
80
|
+
logger.debug(`ATXPDestinationMaker: Got ${destinations.length} destinations for account ${accountId}`);
|
|
81
|
+
}
|
|
82
|
+
return destinations;
|
|
83
|
+
}
|
|
84
|
+
catch (error) {
|
|
85
|
+
logger.error(`ATXPDestinationMaker: Failed to make ATXP destinations: ${error}`);
|
|
86
|
+
throw error;
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
async getDestinations(accountId, paymentRequestId, option, sources, logger) {
|
|
90
|
+
// Strip any network prefix if present
|
|
91
|
+
const unqualifiedId = accountId.includes(':') ? accountId.split(':')[1] : accountId;
|
|
92
|
+
const url = `${this.accountsServiceUrl}/account/${unqualifiedId}/destinations`;
|
|
93
|
+
logger?.debug(`ATXPDestinationMaker: Fetching destinations from ${url}`);
|
|
94
|
+
try {
|
|
95
|
+
const requestBody = {
|
|
96
|
+
paymentRequestId,
|
|
97
|
+
options: [{
|
|
98
|
+
network: option.network,
|
|
99
|
+
currency: option.currency.toString(),
|
|
100
|
+
address: option.address,
|
|
101
|
+
amount: option.amount.toString()
|
|
102
|
+
}],
|
|
103
|
+
sources: sources
|
|
104
|
+
};
|
|
105
|
+
const response = await this.fetchFn(url, {
|
|
106
|
+
method: 'POST',
|
|
107
|
+
headers: {
|
|
108
|
+
'Accept': 'application/json',
|
|
109
|
+
'Content-Type': 'application/json',
|
|
110
|
+
},
|
|
111
|
+
body: JSON.stringify(requestBody),
|
|
112
|
+
});
|
|
113
|
+
if (!response.ok) {
|
|
114
|
+
const text = await response.text();
|
|
115
|
+
throw new Error(`Failed to fetch destinations: ${response.status} ${response.statusText} - ${text}`);
|
|
116
|
+
}
|
|
117
|
+
const data = await response.json();
|
|
118
|
+
return parseDestinationsResponse(data);
|
|
119
|
+
}
|
|
120
|
+
catch (error) {
|
|
121
|
+
logger?.error(`ATXPDestinationMaker: Error fetching destinations: ${error}`);
|
|
122
|
+
throw error;
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
export { ATXPDestinationMaker };
|
|
128
|
+
//# sourceMappingURL=atxpDestinationMaker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"atxpDestinationMaker.js","sources":["../../src/destinationMakers/atxpDestinationMaker.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { Network, DestinationMaker, FetchLike } from '@atxp/common';
|
|
2
|
+
export { ATXPDestinationMaker } from './atxpDestinationMaker.js';
|
|
3
|
+
export { PassthroughDestinationMaker } from './passthroughDestinationMaker.js';
|
|
4
|
+
export interface DestinationMakerFactoryConfig {
|
|
5
|
+
atxpAccountsServer: string;
|
|
6
|
+
fetchFn?: FetchLike;
|
|
7
|
+
}
|
|
8
|
+
export declare function createDestinationMakers(config: DestinationMakerFactoryConfig): Map<Network, DestinationMaker>;
|
|
9
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/destinationMakers/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAe,gBAAgB,EAAE,SAAS,EAAe,MAAM,cAAc,CAAC;AAI9F,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,EAAE,2BAA2B,EAAE,MAAM,kCAAkC,CAAC;AAE/E,MAAM,WAAW,6BAA6B;IAC5C,kBAAkB,EAAE,MAAM,CAAC;IAC3B,OAAO,CAAC,EAAE,SAAS,CAAC;CACrB;AAED,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,6BAA6B,GAAG,GAAG,CAAC,OAAO,EAAE,gBAAgB,CAAC,CAqC7G"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { NetworkEnum, assertNever } from '@atxp/common';
|
|
2
|
+
import { ATXPDestinationMaker } from './atxpDestinationMaker.js';
|
|
3
|
+
import { PassthroughDestinationMaker } from './passthroughDestinationMaker.js';
|
|
4
|
+
|
|
5
|
+
function createDestinationMakers(config) {
|
|
6
|
+
const { atxpAccountsServer, fetchFn = fetch } = config;
|
|
7
|
+
// Build the map by exhaustively checking all Network values
|
|
8
|
+
const makers = new Map();
|
|
9
|
+
for (const network of Object.values(NetworkEnum)) {
|
|
10
|
+
// Exhaustiveness check using switch with assertNever
|
|
11
|
+
switch (network) {
|
|
12
|
+
case NetworkEnum.Solana:
|
|
13
|
+
makers.set(network, new PassthroughDestinationMaker(network));
|
|
14
|
+
break;
|
|
15
|
+
case NetworkEnum.Base:
|
|
16
|
+
makers.set(network, new PassthroughDestinationMaker(network));
|
|
17
|
+
break;
|
|
18
|
+
case NetworkEnum.World:
|
|
19
|
+
makers.set(network, new PassthroughDestinationMaker(network));
|
|
20
|
+
break;
|
|
21
|
+
case NetworkEnum.Polygon:
|
|
22
|
+
makers.set(network, new PassthroughDestinationMaker(network));
|
|
23
|
+
break;
|
|
24
|
+
case NetworkEnum.BaseSepolia:
|
|
25
|
+
makers.set(network, new PassthroughDestinationMaker(network));
|
|
26
|
+
break;
|
|
27
|
+
case NetworkEnum.WorldSepolia:
|
|
28
|
+
makers.set(network, new PassthroughDestinationMaker(network));
|
|
29
|
+
break;
|
|
30
|
+
case NetworkEnum.ATXP:
|
|
31
|
+
makers.set(network, new ATXPDestinationMaker(atxpAccountsServer, fetchFn));
|
|
32
|
+
break;
|
|
33
|
+
default:
|
|
34
|
+
// This will cause a compilation error if a new Network is added but not handled above
|
|
35
|
+
assertNever(network);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
return makers;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
export { ATXPDestinationMaker, PassthroughDestinationMaker, createDestinationMakers };
|
|
42
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../src/destinationMakers/index.ts"],"sourcesContent":[null],"names":[],"mappings":";;;;AAYM,SAAU,uBAAuB,CAAC,MAAqC,EAAA;IAC3E,MAAM,EAAE,kBAAkB,EAAE,OAAO,GAAG,KAAK,EAAE,GAAG,MAAM;;AAGtD,IAAA,MAAM,MAAM,GAAG,IAAI,GAAG,EAA6B;IAEnD,KAAK,MAAM,OAAO,IAAI,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE;;QAEhD,QAAQ,OAAO;YACb,KAAK,WAAW,CAAC,MAAM;gBACrB,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,2BAA2B,CAAC,OAAO,CAAC,CAAC;gBAC7D;YACF,KAAK,WAAW,CAAC,IAAI;gBACnB,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,2BAA2B,CAAC,OAAO,CAAC,CAAC;gBAC7D;YACF,KAAK,WAAW,CAAC,KAAK;gBACpB,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,2BAA2B,CAAC,OAAO,CAAC,CAAC;gBAC7D;YACF,KAAK,WAAW,CAAC,OAAO;gBACtB,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,2BAA2B,CAAC,OAAO,CAAC,CAAC;gBAC7D;YACF,KAAK,WAAW,CAAC,WAAW;gBAC1B,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,2BAA2B,CAAC,OAAO,CAAC,CAAC;gBAC7D;YACF,KAAK,WAAW,CAAC,YAAY;gBAC3B,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,2BAA2B,CAAC,OAAO,CAAC,CAAC;gBAC7D;YACF,KAAK,WAAW,CAAC,IAAI;AACnB,gBAAA,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,oBAAoB,CAAC,kBAAkB,EAAE,OAAO,CAAC,CAAC;gBAC1E;AACF,YAAA;;gBAEE,WAAW,CAAC,OAAO,CAAC;;IAE1B;AAEA,IAAA,OAAO,MAAM;AACf;;;;"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { Logger, Source } from '@atxp/common';
|
|
2
|
+
import { Network, Destination, PaymentRequestOption, DestinationMaker } from '@atxp/common';
|
|
3
|
+
export declare class PassthroughDestinationMaker implements DestinationMaker {
|
|
4
|
+
private network;
|
|
5
|
+
constructor(network: Network);
|
|
6
|
+
makeDestinations(option: PaymentRequestOption, _logger: Logger, _paymentRequestId: string, _sources: Source[]): Promise<Destination[]>;
|
|
7
|
+
}
|
|
8
|
+
//# sourceMappingURL=passthroughDestinationMaker.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"passthroughDestinationMaker.d.ts","sourceRoot":"","sources":["../../src/destinationMakers/passthroughDestinationMaker.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,OAAO,EAAS,WAAW,EAAE,oBAAoB,EAAE,gBAAgB,EAAa,MAAM,cAAc,CAAC;AAE9G,qBAAa,2BAA4B,YAAW,gBAAgB;IAClE,OAAO,CAAC,OAAO,CAAU;gBACb,OAAO,EAAE,OAAO;IAItB,gBAAgB,CAAC,MAAM,EAAE,oBAAoB,EAAE,OAAO,EAAE,MAAM,EAAE,iBAAiB,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;CAkB7I"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { ChainEnum } from '@atxp/common';
|
|
2
|
+
|
|
3
|
+
class PassthroughDestinationMaker {
|
|
4
|
+
constructor(network) {
|
|
5
|
+
this.network = network;
|
|
6
|
+
}
|
|
7
|
+
async makeDestinations(option, _logger, _paymentRequestId, _sources) {
|
|
8
|
+
if (option.network !== this.network) {
|
|
9
|
+
return [];
|
|
10
|
+
}
|
|
11
|
+
// Check if option.network is also a Chain by inspecting the ChainEnum values
|
|
12
|
+
if (Object.values(ChainEnum).includes(option.network)) {
|
|
13
|
+
// It's a chain, so return a single passthrough destination
|
|
14
|
+
const destination = {
|
|
15
|
+
chain: option.network,
|
|
16
|
+
currency: option.currency,
|
|
17
|
+
address: option.address,
|
|
18
|
+
amount: option.amount
|
|
19
|
+
};
|
|
20
|
+
return [destination];
|
|
21
|
+
}
|
|
22
|
+
return [];
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
export { PassthroughDestinationMaker };
|
|
27
|
+
//# sourceMappingURL=passthroughDestinationMaker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"passthroughDestinationMaker.js","sources":["../../src/destinationMakers/passthroughDestinationMaker.ts"],"sourcesContent":[null],"names":[],"mappings":";;MAGa,2BAA2B,CAAA;AAEtC,IAAA,WAAA,CAAY,OAAgB,EAAA;AAC1B,QAAA,IAAI,CAAC,OAAO,GAAG,OAAO;IACxB;IAEA,MAAM,gBAAgB,CAAC,MAA4B,EAAE,OAAe,EAAE,iBAAyB,EAAE,QAAkB,EAAA;QACjH,IAAI,MAAM,CAAC,OAAO,KAAK,IAAI,CAAC,OAAO,EAAE;AACnC,YAAA,OAAO,EAAE;QACX;;AAGA,QAAA,IAAK,MAAM,CAAC,MAAM,CAAC,SAAS,CAAc,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE;;AAEnE,YAAA,MAAM,WAAW,GAAgB;gBAC/B,KAAK,EAAE,MAAM,CAAC,OAAgB;gBAC9B,QAAQ,EAAE,MAAM,CAAC,QAAQ;gBACzB,OAAO,EAAE,MAAM,CAAC,OAAO;gBACvB,MAAM,EAAE,MAAM,CAAC;aAChB;YACD,OAAO,CAAC,WAAW,CAAC;QACtB;AACA,QAAA,OAAO,EAAE;IACX;AACD;;;;"}
|