@metamask/ramps-controller 5.1.0 → 6.0.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/CHANGELOG.md +8 -1
- package/dist/RampsController.cjs +230 -190
- package/dist/RampsController.cjs.map +1 -1
- package/dist/RampsController.d.cts +52 -106
- package/dist/RampsController.d.cts.map +1 -1
- package/dist/RampsController.d.mts +52 -106
- package/dist/RampsController.d.mts.map +1 -1
- package/dist/RampsController.mjs +229 -189
- package/dist/RampsController.mjs.map +1 -1
- package/dist/RequestCache.cjs.map +1 -1
- package/dist/RequestCache.d.cts +11 -0
- package/dist/RequestCache.d.cts.map +1 -1
- package/dist/RequestCache.d.mts +11 -0
- package/dist/RequestCache.d.mts.map +1 -1
- package/dist/RequestCache.mjs.map +1 -1
- package/dist/index.cjs +2 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +4 -4
- package/dist/index.d.cts.map +1 -1
- package/dist/index.d.mts +4 -4
- package/dist/index.d.mts.map +1 -1
- package/dist/index.mjs +1 -1
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { ControllerGetStateAction, ControllerStateChangeEvent } from "@metamask/base-controller";
|
|
2
2
|
import { BaseController } from "@metamask/base-controller";
|
|
3
3
|
import type { Messenger } from "@metamask/messenger";
|
|
4
|
-
import type { Country, TokensResponse, Provider, State, RampAction, PaymentMethod, PaymentMethodsResponse, QuotesResponse, Quote, RampsToken } from "./RampsService.mjs";
|
|
4
|
+
import type { Country, TokensResponse, Provider, State, RampAction, PaymentMethod, PaymentMethodsResponse, QuotesResponse, Quote, RampsToken, RampsServiceActions } from "./RampsService.mjs";
|
|
5
5
|
import type { RampsServiceGetGeolocationAction, RampsServiceGetCountriesAction, RampsServiceGetTokensAction, RampsServiceGetProvidersAction, RampsServiceGetPaymentMethodsAction, RampsServiceGetQuotesAction } from "./RampsService-method-action-types.mjs";
|
|
6
6
|
import type { RequestCache as RequestCacheType, RequestState, ExecuteRequestOptions } from "./RequestCache.mjs";
|
|
7
7
|
/**
|
|
@@ -10,6 +10,12 @@ import type { RequestCache as RequestCacheType, RequestState, ExecuteRequestOpti
|
|
|
10
10
|
* when composed with other controllers.
|
|
11
11
|
*/
|
|
12
12
|
export declare const controllerName = "RampsController";
|
|
13
|
+
/**
|
|
14
|
+
* RampsService action types that RampsController calls via the messenger.
|
|
15
|
+
* Any host (e.g. mobile) that creates a RampsController messenger must delegate
|
|
16
|
+
* these actions from the root messenger so the controller can function.
|
|
17
|
+
*/
|
|
18
|
+
export declare const RAMPS_CONTROLLER_REQUIRED_SERVICE_ACTIONS: readonly RampsServiceActions['type'][];
|
|
13
19
|
/**
|
|
14
20
|
* Represents the user's selected region with full country and state objects.
|
|
15
21
|
*/
|
|
@@ -28,54 +34,63 @@ export type UserRegion = {
|
|
|
28
34
|
regionCode: string;
|
|
29
35
|
};
|
|
30
36
|
/**
|
|
31
|
-
*
|
|
37
|
+
* Generic type for resource state that bundles data with loading/error states.
|
|
38
|
+
*
|
|
39
|
+
* @template TData - The type of the resource data
|
|
40
|
+
* @template TSelected - The type of the selected item (defaults to null for resources without selection)
|
|
32
41
|
*/
|
|
33
|
-
export type
|
|
42
|
+
export type ResourceState<TData, TSelected = null> = {
|
|
34
43
|
/**
|
|
35
|
-
* The
|
|
36
|
-
* Initially set via geolocation fetch, but can be manually changed by the user.
|
|
37
|
-
* Once set (either via geolocation or manual selection), it will not be overwritten
|
|
38
|
-
* by subsequent geolocation fetches.
|
|
44
|
+
* The resource data.
|
|
39
45
|
*/
|
|
40
|
-
|
|
46
|
+
data: TData;
|
|
41
47
|
/**
|
|
42
|
-
* The
|
|
43
|
-
* Can be manually set by the user.
|
|
48
|
+
* The currently selected item, or null if none selected.
|
|
44
49
|
*/
|
|
45
|
-
|
|
50
|
+
selected: TSelected;
|
|
46
51
|
/**
|
|
47
|
-
*
|
|
52
|
+
* Whether the resource is currently being fetched.
|
|
48
53
|
*/
|
|
49
|
-
|
|
54
|
+
isLoading: boolean;
|
|
55
|
+
/**
|
|
56
|
+
* Error message if the fetch failed, or null.
|
|
57
|
+
*/
|
|
58
|
+
error: string | null;
|
|
59
|
+
};
|
|
60
|
+
/**
|
|
61
|
+
* Describes the shape of the state object for {@link RampsController}.
|
|
62
|
+
*/
|
|
63
|
+
export type RampsControllerState = {
|
|
50
64
|
/**
|
|
51
|
-
*
|
|
65
|
+
* The user's region (full country and state objects).
|
|
66
|
+
* Initially set via geolocation fetch, but can be manually changed by the user.
|
|
52
67
|
*/
|
|
53
|
-
|
|
68
|
+
userRegion: UserRegion | null;
|
|
54
69
|
/**
|
|
55
|
-
*
|
|
56
|
-
*
|
|
70
|
+
* Countries resource state with data, loading, and error.
|
|
71
|
+
* Data contains the list of countries available for ramp actions.
|
|
57
72
|
*/
|
|
58
|
-
|
|
73
|
+
countries: ResourceState<Country[]>;
|
|
59
74
|
/**
|
|
60
|
-
*
|
|
61
|
-
*
|
|
75
|
+
* Providers resource state with data, selected, loading, and error.
|
|
76
|
+
* Data contains the list of providers available for the current region.
|
|
62
77
|
*/
|
|
63
|
-
|
|
78
|
+
providers: ResourceState<Provider[], Provider | null>;
|
|
64
79
|
/**
|
|
65
|
-
*
|
|
66
|
-
*
|
|
80
|
+
* Tokens resource state with data, selected, loading, and error.
|
|
81
|
+
* Data contains topTokens and allTokens arrays.
|
|
67
82
|
*/
|
|
68
|
-
|
|
83
|
+
tokens: ResourceState<TokensResponse | null, RampsToken | null>;
|
|
69
84
|
/**
|
|
70
|
-
*
|
|
71
|
-
*
|
|
85
|
+
* Payment methods resource state with data, selected, loading, and error.
|
|
86
|
+
* Data contains payment methods filtered by region, fiat, asset, and provider.
|
|
72
87
|
*/
|
|
73
|
-
|
|
88
|
+
paymentMethods: ResourceState<PaymentMethod[], PaymentMethod | null>;
|
|
74
89
|
/**
|
|
75
|
-
* Quotes
|
|
76
|
-
*
|
|
90
|
+
* Quotes resource state with data, loading, and error.
|
|
91
|
+
* Data contains quotes from multiple providers for the given parameters.
|
|
77
92
|
*/
|
|
78
|
-
quotes: QuotesResponse | null
|
|
93
|
+
quotes: ResourceState<QuotesResponse | null>;
|
|
79
94
|
/**
|
|
80
95
|
* Cache of request states, keyed by cache key.
|
|
81
96
|
* This stores loading, success, and error states for API requests.
|
|
@@ -138,6 +153,13 @@ export type RampsControllerOptions = {
|
|
|
138
153
|
*/
|
|
139
154
|
export declare class RampsController extends BaseController<typeof controllerName, RampsControllerState, RampsControllerMessenger> {
|
|
140
155
|
#private;
|
|
156
|
+
/**
|
|
157
|
+
* Clears the pending resource count map. Used only in tests to exercise the
|
|
158
|
+
* defensive path when get() returns undefined in the finally block.
|
|
159
|
+
*
|
|
160
|
+
* @internal
|
|
161
|
+
*/
|
|
162
|
+
clearPendingResourceCountForTest(): void;
|
|
141
163
|
/**
|
|
142
164
|
* Constructs a new {@link RampsController}.
|
|
143
165
|
*
|
|
@@ -320,82 +342,6 @@ export declare class RampsController extends BaseController<typeof controllerNam
|
|
|
320
342
|
* @returns The widget URL string, or null if not available.
|
|
321
343
|
*/
|
|
322
344
|
getWidgetUrl(quote: Quote): string | null;
|
|
323
|
-
/**
|
|
324
|
-
* Triggers setting the user region without throwing.
|
|
325
|
-
*
|
|
326
|
-
* @param region - The region code to set (e.g., "US-CA").
|
|
327
|
-
* @param options - Options for cache behavior.
|
|
328
|
-
*/
|
|
329
|
-
triggerSetUserRegion(region: string, options?: ExecuteRequestOptions): void;
|
|
330
|
-
/**
|
|
331
|
-
* Triggers fetching countries without throwing.
|
|
332
|
-
*
|
|
333
|
-
* @param options - Options for cache behavior.
|
|
334
|
-
*/
|
|
335
|
-
triggerGetCountries(options?: ExecuteRequestOptions): void;
|
|
336
|
-
/**
|
|
337
|
-
* Triggers fetching tokens without throwing.
|
|
338
|
-
*
|
|
339
|
-
* @param region - The region code. If not provided, uses userRegion from state.
|
|
340
|
-
* @param action - The ramp action type ('buy' or 'sell').
|
|
341
|
-
* @param options - Options for cache behavior.
|
|
342
|
-
*/
|
|
343
|
-
triggerGetTokens(region?: string, action?: 'buy' | 'sell', options?: ExecuteRequestOptions): void;
|
|
344
|
-
/**
|
|
345
|
-
* Triggers fetching providers without throwing.
|
|
346
|
-
*
|
|
347
|
-
* @param region - The region code. If not provided, uses userRegion from state.
|
|
348
|
-
* @param options - Options for cache behavior and query filters.
|
|
349
|
-
*/
|
|
350
|
-
triggerGetProviders(region?: string, options?: ExecuteRequestOptions & {
|
|
351
|
-
provider?: string | string[];
|
|
352
|
-
crypto?: string | string[];
|
|
353
|
-
fiat?: string | string[];
|
|
354
|
-
payments?: string | string[];
|
|
355
|
-
}): void;
|
|
356
|
-
/**
|
|
357
|
-
* Triggers fetching payment methods without throwing.
|
|
358
|
-
*
|
|
359
|
-
* @param region - User's region code (e.g., "us", "fr", "us-ny").
|
|
360
|
-
* @param options - Query parameters for filtering payment methods.
|
|
361
|
-
* @param options.fiat - Fiat currency code. If not provided, uses userRegion currency.
|
|
362
|
-
* @param options.assetId - CAIP-19 cryptocurrency identifier.
|
|
363
|
-
* @param options.provider - Provider ID path.
|
|
364
|
-
*/
|
|
365
|
-
triggerGetPaymentMethods(region?: string, options?: ExecuteRequestOptions & {
|
|
366
|
-
fiat?: string;
|
|
367
|
-
assetId?: string;
|
|
368
|
-
provider?: string;
|
|
369
|
-
}): void;
|
|
370
|
-
/**
|
|
371
|
-
* Triggers fetching quotes without throwing.
|
|
372
|
-
*
|
|
373
|
-
* @param options - The parameters for fetching quotes.
|
|
374
|
-
* @param options.region - User's region code. If not provided, uses userRegion from state.
|
|
375
|
-
* @param options.fiat - Fiat currency code. If not provided, uses userRegion currency.
|
|
376
|
-
* @param options.assetId - CAIP-19 cryptocurrency identifier.
|
|
377
|
-
* @param options.amount - The amount (in fiat for buy, crypto for sell).
|
|
378
|
-
* @param options.walletAddress - The destination wallet address.
|
|
379
|
-
* @param options.paymentMethods - Array of payment method IDs. If not provided, uses paymentMethods from state.
|
|
380
|
-
* @param options.provider - Optional provider ID to filter quotes.
|
|
381
|
-
* @param options.redirectUrl - Optional redirect URL after order completion.
|
|
382
|
-
* @param options.action - The ramp action type. Defaults to 'buy'.
|
|
383
|
-
* @param options.forceRefresh - Whether to bypass cache.
|
|
384
|
-
* @param options.ttl - Custom TTL for this request.
|
|
385
|
-
*/
|
|
386
|
-
triggerGetQuotes(options: {
|
|
387
|
-
region?: string;
|
|
388
|
-
fiat?: string;
|
|
389
|
-
assetId: string;
|
|
390
|
-
amount: number;
|
|
391
|
-
walletAddress: string;
|
|
392
|
-
paymentMethods?: string[];
|
|
393
|
-
provider?: string;
|
|
394
|
-
redirectUrl?: string;
|
|
395
|
-
action?: RampAction;
|
|
396
|
-
forceRefresh?: boolean;
|
|
397
|
-
ttl?: number;
|
|
398
|
-
}): void;
|
|
399
345
|
}
|
|
400
346
|
export {};
|
|
401
347
|
//# sourceMappingURL=RampsController.d.mts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RampsController.d.mts","sourceRoot":"","sources":["../src/RampsController.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,wBAAwB,EACxB,0BAA0B,EAE3B,kCAAkC;AACnC,OAAO,EAAE,cAAc,EAAE,kCAAkC;AAC3D,OAAO,KAAK,EAAE,SAAS,EAAE,4BAA4B;AAGrD,OAAO,KAAK,EACV,OAAO,EACP,cAAc,EACd,QAAQ,EACR,KAAK,EACL,UAAU,EACV,aAAa,EACb,sBAAsB,EACtB,cAAc,EACd,KAAK,EAEL,UAAU,
|
|
1
|
+
{"version":3,"file":"RampsController.d.mts","sourceRoot":"","sources":["../src/RampsController.ts"],"names":[],"mappings":"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"}
|