@subscrypts/subscrypts-sdk-react 1.6.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/LICENSE +21 -0
- package/README.md +2140 -0
- package/dist/components/buttons/SubscryptsButton.d.ts +19 -0
- package/dist/components/buttons/SubscryptsButton.d.ts.map +1 -0
- package/dist/components/buttons/index.d.ts +5 -0
- package/dist/components/buttons/index.d.ts.map +1 -0
- package/dist/components/checkout/CheckoutWizard.d.ts +22 -0
- package/dist/components/checkout/CheckoutWizard.d.ts.map +1 -0
- package/dist/components/checkout/ConfigurationStep.d.ts +15 -0
- package/dist/components/checkout/ConfigurationStep.d.ts.map +1 -0
- package/dist/components/checkout/TransactionStep.d.ts +15 -0
- package/dist/components/checkout/TransactionStep.d.ts.map +1 -0
- package/dist/components/checkout/index.d.ts +7 -0
- package/dist/components/checkout/index.d.ts.map +1 -0
- package/dist/components/guards/SubscriptionGuard.d.ts +25 -0
- package/dist/components/guards/SubscriptionGuard.d.ts.map +1 -0
- package/dist/components/guards/index.d.ts +5 -0
- package/dist/components/guards/index.d.ts.map +1 -0
- package/dist/components/index.d.ts +20 -0
- package/dist/components/index.d.ts.map +1 -0
- package/dist/components/merchant/MerchantDashboard.d.ts +24 -0
- package/dist/components/merchant/MerchantDashboard.d.ts.map +1 -0
- package/dist/components/merchant/index.d.ts +6 -0
- package/dist/components/merchant/index.d.ts.map +1 -0
- package/dist/components/pricing/PlanCard.d.ts +45 -0
- package/dist/components/pricing/PlanCard.d.ts.map +1 -0
- package/dist/components/pricing/PricingTable.d.ts +68 -0
- package/dist/components/pricing/PricingTable.d.ts.map +1 -0
- package/dist/components/pricing/index.d.ts +10 -0
- package/dist/components/pricing/index.d.ts.map +1 -0
- package/dist/components/shared/ErrorDisplay.d.ts +34 -0
- package/dist/components/shared/ErrorDisplay.d.ts.map +1 -0
- package/dist/components/shared/LoadingSpinner.d.ts +5 -0
- package/dist/components/shared/LoadingSpinner.d.ts.map +1 -0
- package/dist/components/shared/Modal.d.ts +12 -0
- package/dist/components/shared/Modal.d.ts.map +1 -0
- package/dist/components/shared/NetworkSwitchPrompt.d.ts +33 -0
- package/dist/components/shared/NetworkSwitchPrompt.d.ts.map +1 -0
- package/dist/components/shared/SubscryptsErrorBoundary.d.ts +41 -0
- package/dist/components/shared/SubscryptsErrorBoundary.d.ts.map +1 -0
- package/dist/components/subscription/ConfirmDialog.d.ts +44 -0
- package/dist/components/subscription/ConfirmDialog.d.ts.map +1 -0
- package/dist/components/subscription/ManageSubscriptionModal.d.ts +35 -0
- package/dist/components/subscription/ManageSubscriptionModal.d.ts.map +1 -0
- package/dist/components/subscription/SubscriptionCard.d.ts +35 -0
- package/dist/components/subscription/SubscriptionCard.d.ts.map +1 -0
- package/dist/components/subscription/SubscriptionDashboard.d.ts +40 -0
- package/dist/components/subscription/SubscriptionDashboard.d.ts.map +1 -0
- package/dist/components/subscription/index.d.ts +12 -0
- package/dist/components/subscription/index.d.ts.map +1 -0
- package/dist/components/wallet/ConnectWalletModal.d.ts +29 -0
- package/dist/components/wallet/ConnectWalletModal.d.ts.map +1 -0
- package/dist/components/wallet/index.d.ts +6 -0
- package/dist/components/wallet/index.d.ts.map +1 -0
- package/dist/constants/index.d.ts +16 -0
- package/dist/constants/index.d.ts.map +1 -0
- package/dist/context/SubscryptsContext.d.ts +36 -0
- package/dist/context/SubscryptsContext.d.ts.map +1 -0
- package/dist/context/SubscryptsProvider.d.ts +28 -0
- package/dist/context/SubscryptsProvider.d.ts.map +1 -0
- package/dist/context/index.d.ts +7 -0
- package/dist/context/index.d.ts.map +1 -0
- package/dist/contract/abis/Subscrypts.d.ts +2917 -0
- package/dist/contract/abis/Subscrypts.d.ts.map +1 -0
- package/dist/contract/abis/dexFactoryABI.d.ts +184 -0
- package/dist/contract/abis/dexFactoryABI.d.ts.map +1 -0
- package/dist/contract/abis/dexPairABI.d.ts +775 -0
- package/dist/contract/abis/dexPairABI.d.ts.map +1 -0
- package/dist/contract/abis/dexPositionManagerABI.d.ts +948 -0
- package/dist/contract/abis/dexPositionManagerABI.d.ts.map +1 -0
- package/dist/contract/abis/dexQuoterABI.d.ts +206 -0
- package/dist/contract/abis/dexQuoterABI.d.ts.map +1 -0
- package/dist/contract/abis/dexRouterABI.d.ts +439 -0
- package/dist/contract/abis/dexRouterABI.d.ts.map +1 -0
- package/dist/contract/abis/dexUSDCABI.d.ts +132 -0
- package/dist/contract/abis/dexUSDCABI.d.ts.map +1 -0
- package/dist/contract/abis/index.d.ts +15 -0
- package/dist/contract/abis/index.d.ts.map +1 -0
- package/dist/contract/config.d.ts +40 -0
- package/dist/contract/config.d.ts.map +1 -0
- package/dist/contract/index.d.ts +12 -0
- package/dist/contract/index.d.ts.map +1 -0
- package/dist/contract/methods.d.ts +305 -0
- package/dist/contract/methods.d.ts.map +1 -0
- package/dist/hooks/events/index.d.ts +6 -0
- package/dist/hooks/events/index.d.ts.map +1 -0
- package/dist/hooks/events/useSubscryptsEvents.d.ts +63 -0
- package/dist/hooks/events/useSubscryptsEvents.d.ts.map +1 -0
- package/dist/hooks/index.d.ts +12 -0
- package/dist/hooks/index.d.ts.map +1 -0
- package/dist/hooks/merchant/index.d.ts +10 -0
- package/dist/hooks/merchant/index.d.ts.map +1 -0
- package/dist/hooks/merchant/useMerchantPlans.d.ts +30 -0
- package/dist/hooks/merchant/useMerchantPlans.d.ts.map +1 -0
- package/dist/hooks/merchant/useMerchantRevenue.d.ts +59 -0
- package/dist/hooks/merchant/useMerchantRevenue.d.ts.map +1 -0
- package/dist/hooks/merchant/useMerchantSubscribers.d.ts +54 -0
- package/dist/hooks/merchant/useMerchantSubscribers.d.ts.map +1 -0
- package/dist/hooks/plans/index.d.ts +12 -0
- package/dist/hooks/plans/index.d.ts.map +1 -0
- package/dist/hooks/plans/usePlan.d.ts +33 -0
- package/dist/hooks/plans/usePlan.d.ts.map +1 -0
- package/dist/hooks/plans/usePlans.d.ts +36 -0
- package/dist/hooks/plans/usePlans.d.ts.map +1 -0
- package/dist/hooks/plans/usePlansByMerchant.d.ts +35 -0
- package/dist/hooks/plans/usePlansByMerchant.d.ts.map +1 -0
- package/dist/hooks/pricing/index.d.ts +10 -0
- package/dist/hooks/pricing/index.d.ts.map +1 -0
- package/dist/hooks/pricing/usePlanPrice.d.ts +59 -0
- package/dist/hooks/pricing/usePlanPrice.d.ts.map +1 -0
- package/dist/hooks/pricing/useSUBSPrice.d.ts +39 -0
- package/dist/hooks/pricing/useSUBSPrice.d.ts.map +1 -0
- package/dist/hooks/subscriptions/index.d.ts +12 -0
- package/dist/hooks/subscriptions/index.d.ts.map +1 -0
- package/dist/hooks/subscriptions/useManageSubscription.d.ts +39 -0
- package/dist/hooks/subscriptions/useManageSubscription.d.ts.map +1 -0
- package/dist/hooks/subscriptions/useMySubscriptions.d.ts +53 -0
- package/dist/hooks/subscriptions/useMySubscriptions.d.ts.map +1 -0
- package/dist/hooks/subscriptions/useSubscribe.d.ts +58 -0
- package/dist/hooks/subscriptions/useSubscribe.d.ts.map +1 -0
- package/dist/hooks/subscriptions/useSubscriptionStatus.d.ts +34 -0
- package/dist/hooks/subscriptions/useSubscriptionStatus.d.ts.map +1 -0
- package/dist/hooks/tokens/index.d.ts +6 -0
- package/dist/hooks/tokens/index.d.ts.map +1 -0
- package/dist/hooks/tokens/useTokenBalance.d.ts +36 -0
- package/dist/hooks/tokens/useTokenBalance.d.ts.map +1 -0
- package/dist/hooks/wallet/index.d.ts +6 -0
- package/dist/hooks/wallet/index.d.ts.map +1 -0
- package/dist/hooks/wallet/useWallet.d.ts +40 -0
- package/dist/hooks/wallet/useWallet.d.ts.map +1 -0
- package/dist/index.cjs +2 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.ts +42 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +7850 -0
- package/dist/index.js.map +1 -0
- package/dist/services/cache.service.d.ts +89 -0
- package/dist/services/cache.service.d.ts.map +1 -0
- package/dist/services/index.d.ts +7 -0
- package/dist/services/index.d.ts.map +1 -0
- package/dist/services/token.service.d.ts +43 -0
- package/dist/services/token.service.d.ts.map +1 -0
- package/dist/services/wallet.service.d.ts +46 -0
- package/dist/services/wallet.service.d.ts.map +1 -0
- package/dist/style.css +3 -0
- package/dist/styles.d.ts +2 -0
- package/dist/styles.d.ts.map +1 -0
- package/dist/types/component.types.d.ts +192 -0
- package/dist/types/component.types.d.ts.map +1 -0
- package/dist/types/contract.types.d.ts +81 -0
- package/dist/types/contract.types.d.ts.map +1 -0
- package/dist/types/index.d.ts +8 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/subscription.types.d.ts +65 -0
- package/dist/types/subscription.types.d.ts.map +1 -0
- package/dist/types/wallet.types.d.ts +53 -0
- package/dist/types/wallet.types.d.ts.map +1 -0
- package/dist/utils/errorMessages.d.ts +44 -0
- package/dist/utils/errorMessages.d.ts.map +1 -0
- package/dist/utils/errors.d.ts +60 -0
- package/dist/utils/errors.d.ts.map +1 -0
- package/dist/utils/formatters.d.ts +44 -0
- package/dist/utils/formatters.d.ts.map +1 -0
- package/dist/utils/index.d.ts +10 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/logger.d.ts +80 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/permit.utils.d.ts +52 -0
- package/dist/utils/permit.utils.d.ts.map +1 -0
- package/dist/utils/subscriptionHelpers.d.ts +67 -0
- package/dist/utils/subscriptionHelpers.d.ts.map +1 -0
- package/dist/utils/subscriptionStatus.d.ts +48 -0
- package/dist/utils/subscriptionStatus.d.ts.map +1 -0
- package/dist/utils/validators.d.ts +76 -0
- package/dist/utils/validators.d.ts.map +1 -0
- package/dist/wallet/ExternalConnector.d.ts +32 -0
- package/dist/wallet/ExternalConnector.d.ts.map +1 -0
- package/dist/wallet/InjectedConnector.d.ts +55 -0
- package/dist/wallet/InjectedConnector.d.ts.map +1 -0
- package/dist/wallet/index.d.ts +9 -0
- package/dist/wallet/index.d.ts.map +1 -0
- package/dist/wallet/sessionStore.d.ts +28 -0
- package/dist/wallet/sessionStore.d.ts.map +1 -0
- package/dist/wallet/types.d.ts +66 -0
- package/dist/wallet/types.d.ts.map +1 -0
- package/package.json +99 -0
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Intelligent Caching Service
|
|
3
|
+
*
|
|
4
|
+
* Provides TTL-based caching with:
|
|
5
|
+
* - Chain ID namespacing (prevents testnet/mainnet collisions)
|
|
6
|
+
* - In-flight request deduplication
|
|
7
|
+
* - LRU eviction
|
|
8
|
+
* - Pattern-based invalidation
|
|
9
|
+
* - Performance statistics tracking
|
|
10
|
+
*/
|
|
11
|
+
export interface CacheEntry<T> {
|
|
12
|
+
data: T;
|
|
13
|
+
timestamp: number;
|
|
14
|
+
ttl: number;
|
|
15
|
+
}
|
|
16
|
+
export interface CacheConfig {
|
|
17
|
+
enabled: boolean;
|
|
18
|
+
defaultTTL: number;
|
|
19
|
+
maxEntries: number;
|
|
20
|
+
}
|
|
21
|
+
export interface CacheStats {
|
|
22
|
+
hits: number;
|
|
23
|
+
misses: number;
|
|
24
|
+
entries: number;
|
|
25
|
+
hitRate: number;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Cache Manager with chain ID namespacing and statistics
|
|
29
|
+
*/
|
|
30
|
+
export declare class CacheManager {
|
|
31
|
+
private cache;
|
|
32
|
+
private config;
|
|
33
|
+
private inFlightRequests;
|
|
34
|
+
private stats;
|
|
35
|
+
private chainId;
|
|
36
|
+
constructor(chainId: number, config?: Partial<CacheConfig>);
|
|
37
|
+
/**
|
|
38
|
+
* Get cached data or execute fetcher
|
|
39
|
+
*
|
|
40
|
+
* @param key - Cache key (will be prefixed with chain ID)
|
|
41
|
+
* @param fetcher - Async function to fetch data if not cached
|
|
42
|
+
* @param ttl - Time-to-live in milliseconds (-1 for infinite)
|
|
43
|
+
*/
|
|
44
|
+
get<T>(key: string, fetcher: () => Promise<T>, ttl?: number): Promise<T>;
|
|
45
|
+
/**
|
|
46
|
+
* Manually set cache entry (used for smart TTL updates)
|
|
47
|
+
*/
|
|
48
|
+
set(key: string, data: unknown, ttl: number): void;
|
|
49
|
+
/**
|
|
50
|
+
* Check if cache entry has expired
|
|
51
|
+
*/
|
|
52
|
+
private isExpired;
|
|
53
|
+
/**
|
|
54
|
+
* Invalidate cache entries by pattern
|
|
55
|
+
*
|
|
56
|
+
* @param keyPattern - Regex pattern to match keys (omit for clear all)
|
|
57
|
+
*
|
|
58
|
+
* @example
|
|
59
|
+
* ```typescript
|
|
60
|
+
* // Invalidate all subscription status for a specific plan
|
|
61
|
+
* cacheManager.invalidate('subscription-status:1:');
|
|
62
|
+
*
|
|
63
|
+
* // Invalidate all user subscriptions
|
|
64
|
+
* cacheManager.invalidate('my-subscriptions:');
|
|
65
|
+
*
|
|
66
|
+
* // Clear all cache
|
|
67
|
+
* cacheManager.invalidate();
|
|
68
|
+
* ```
|
|
69
|
+
*/
|
|
70
|
+
invalidate(keyPattern?: string): void;
|
|
71
|
+
/**
|
|
72
|
+
* Clear all cache entries and reset statistics
|
|
73
|
+
*/
|
|
74
|
+
clear(): void;
|
|
75
|
+
/**
|
|
76
|
+
* Get cache performance statistics
|
|
77
|
+
*
|
|
78
|
+
* @returns Cache stats including hit rate
|
|
79
|
+
*
|
|
80
|
+
* @example
|
|
81
|
+
* ```typescript
|
|
82
|
+
* const stats = cacheManager.getStats();
|
|
83
|
+
* console.log(`Hit rate: ${(stats.hitRate * 100).toFixed(1)}%`);
|
|
84
|
+
* console.log(`RPC savings: ${stats.hits} calls avoided`);
|
|
85
|
+
* ```
|
|
86
|
+
*/
|
|
87
|
+
getStats(): CacheStats;
|
|
88
|
+
}
|
|
89
|
+
//# sourceMappingURL=cache.service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cache.service.d.ts","sourceRoot":"","sources":["../../src/services/cache.service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,MAAM,WAAW,UAAU,CAAC,CAAC;IAC3B,IAAI,EAAE,CAAC,CAAC;IACR,SAAS,EAAE,MAAM,CAAC;IAClB,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,KAAK,CAAmC;IAChD,OAAO,CAAC,MAAM,CAAc;IAC5B,OAAO,CAAC,gBAAgB,CAAgC;IACxD,OAAO,CAAC,KAAK,CAAmC;IAChD,OAAO,CAAC,OAAO,CAAS;gBAEZ,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC;IAa1D;;;;;;OAMG;IACG,GAAG,CAAC,CAAC,EACT,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EACzB,GAAG,CAAC,EAAE,MAAM,GACX,OAAO,CAAC,CAAC,CAAC;IAmCb;;OAEG;IACH,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI;IAmBlD;;OAEG;IACH,OAAO,CAAC,SAAS;IAKjB;;;;;;;;;;;;;;;;OAgBG;IACH,UAAU,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI;IAgBrC;;OAEG;IACH,KAAK,IAAI,IAAI;IAMb;;;;;;;;;;;OAWG;IACH,QAAQ,IAAI,UAAU;CASvB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/services/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,KAAK,WAAW,EAAE,KAAK,UAAU,EAAE,MAAM,iBAAiB,CAAC"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { Contract, Signer } from 'ethers';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Service class for ERC20 token operations
|
|
5
|
+
*/
|
|
6
|
+
export declare class TokenService {
|
|
7
|
+
private contract;
|
|
8
|
+
private decimals;
|
|
9
|
+
private symbol;
|
|
10
|
+
constructor(tokenAddress: string, signer: Signer, decimals: number, symbol: string);
|
|
11
|
+
/**
|
|
12
|
+
* Get token balance for an address
|
|
13
|
+
*/
|
|
14
|
+
getBalance(address: string): Promise<bigint>;
|
|
15
|
+
/**
|
|
16
|
+
* Get current allowance for a spender
|
|
17
|
+
*/
|
|
18
|
+
getAllowance(owner: string, spender: string): Promise<bigint>;
|
|
19
|
+
/**
|
|
20
|
+
* Approve spender to use tokens
|
|
21
|
+
*/
|
|
22
|
+
approve(spender: string, amount: bigint): Promise<string>;
|
|
23
|
+
/**
|
|
24
|
+
* Check if balance is sufficient and approve if needed
|
|
25
|
+
*/
|
|
26
|
+
ensureAllowance(owner: string, spender: string, requiredAmount: bigint): Promise<{
|
|
27
|
+
needsApproval: boolean;
|
|
28
|
+
txHash?: string;
|
|
29
|
+
}>;
|
|
30
|
+
/**
|
|
31
|
+
* Get token contract instance
|
|
32
|
+
*/
|
|
33
|
+
getContract(): Contract;
|
|
34
|
+
/**
|
|
35
|
+
* Get token decimals
|
|
36
|
+
*/
|
|
37
|
+
getDecimals(): number;
|
|
38
|
+
/**
|
|
39
|
+
* Get token symbol
|
|
40
|
+
*/
|
|
41
|
+
getSymbol(): string;
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=token.service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"token.service.d.ts","sourceRoot":"","sources":["../../src/services/token.service.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAI1C;;GAEG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,QAAQ,CAAW;IAC3B,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,MAAM,CAAS;gBAEX,YAAY,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;IAMlF;;OAEG;IACG,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAYlD;;OAEG;IACG,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAYnE;;OAEG;IACG,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAkB/D;;OAEG;IACG,eAAe,CACnB,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,MAAM,EACf,cAAc,EAAE,MAAM,GACrB,OAAO,CAAC;QAAE,aAAa,EAAE,OAAO,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAyBvD;;OAEG;IACH,WAAW,IAAI,QAAQ;IAIvB;;OAEG;IACH,WAAW,IAAI,MAAM;IAIrB;;OAEG;IACH,SAAS,IAAI,MAAM;CAGpB"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { BrowserProvider } from 'ethers';
|
|
2
|
+
import { NetworkConfig } from '../types';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Service class for wallet connection and management
|
|
6
|
+
*/
|
|
7
|
+
export declare class WalletService {
|
|
8
|
+
private provider;
|
|
9
|
+
/**
|
|
10
|
+
* Connect to browser wallet (MetaMask, etc.)
|
|
11
|
+
*/
|
|
12
|
+
connect(): Promise<{
|
|
13
|
+
provider: BrowserProvider;
|
|
14
|
+
address: string;
|
|
15
|
+
chainId: number;
|
|
16
|
+
}>;
|
|
17
|
+
/**
|
|
18
|
+
* Switch to a specific network
|
|
19
|
+
*/
|
|
20
|
+
switchNetwork(targetNetwork: NetworkConfig): Promise<void>;
|
|
21
|
+
/**
|
|
22
|
+
* Add a network to the wallet
|
|
23
|
+
*/
|
|
24
|
+
addNetwork(network: NetworkConfig): Promise<void>;
|
|
25
|
+
/**
|
|
26
|
+
* Get current provider
|
|
27
|
+
*/
|
|
28
|
+
getProvider(): BrowserProvider | null;
|
|
29
|
+
/**
|
|
30
|
+
* Listen to account changes
|
|
31
|
+
*/
|
|
32
|
+
onAccountsChanged(callback: (...args: unknown[]) => void): void;
|
|
33
|
+
/**
|
|
34
|
+
* Listen to network changes
|
|
35
|
+
*/
|
|
36
|
+
onChainChanged(callback: (...args: unknown[]) => void): void;
|
|
37
|
+
/**
|
|
38
|
+
* Remove account change listener
|
|
39
|
+
*/
|
|
40
|
+
removeAccountsChangedListener(callback: (...args: unknown[]) => void): void;
|
|
41
|
+
/**
|
|
42
|
+
* Remove network change listener
|
|
43
|
+
*/
|
|
44
|
+
removeChainChangedListener(callback: (...args: unknown[]) => void): void;
|
|
45
|
+
}
|
|
46
|
+
//# sourceMappingURL=wallet.service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wallet.service.d.ts","sourceRoot":"","sources":["../../src/services/wallet.service.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,eAAe,EAAmB,MAAM,QAAQ,CAAC;AAE1D,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC;;GAEG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAgC;IAEhD;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC;QACvB,QAAQ,EAAE,eAAe,CAAC;QAC1B,OAAO,EAAE,MAAM,CAAC;QAChB,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;IAkCF;;OAEG;IACG,aAAa,CAAC,aAAa,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;IAuBhE;;OAEG;IACG,UAAU,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;IA0BvD;;OAEG;IACH,WAAW,IAAI,eAAe,GAAG,IAAI;IAIrC;;OAEG;IACH,iBAAiB,CAAC,QAAQ,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,GAAG,IAAI;IAM/D;;OAEG;IACH,cAAc,CAAC,QAAQ,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,GAAG,IAAI;IAM5D;;OAEG;IACH,6BAA6B,CAAC,QAAQ,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,GAAG,IAAI;IAM3E;;OAEG;IACH,0BAA0B,CAAC,QAAQ,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,GAAG,IAAI;CAKzE"}
|
package/dist/style.css
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
:root{--subscrypts-color-primary:#3b82f6;--subscrypts-color-secondary:#10b981;--subscrypts-color-error:#ef4444;--subscrypts-color-success:#10b981;--subscrypts-color-warning:#f59e0b;--subscrypts-color-text-primary:#1f2937;--subscrypts-color-text-secondary:#6b7280;--subscrypts-color-background:#fff;--subscrypts-color-background-secondary:#f9fafb;--subscrypts-color-border:#e5e7eb;--subscrypts-spacing-unit:0.25rem;--subscrypts-spacing-xs:calc(var(--subscrypts-spacing-unit)*1);--subscrypts-spacing-sm:calc(var(--subscrypts-spacing-unit)*2);--subscrypts-spacing-md:calc(var(--subscrypts-spacing-unit)*4);--subscrypts-spacing-lg:calc(var(--subscrypts-spacing-unit)*6);--subscrypts-spacing-xl:calc(var(--subscrypts-spacing-unit)*8);--subscrypts-border-radius-sm:0.25rem;--subscrypts-border-radius:0.5rem;--subscrypts-border-radius-lg:0.75rem;--subscrypts-border-radius-xl:1rem;--subscrypts-font-family:-apple-system,BlinkMacSystemFont,"Segoe UI","Roboto","Oxygen","Ubuntu","Cantarell","Fira Sans","Droid Sans","Helvetica Neue",sans-serif;--subscrypts-font-size-xs:0.75rem;--subscrypts-font-size-sm:0.875rem;--subscrypts-font-size-base:1rem;--subscrypts-font-size-lg:1.125rem;--subscrypts-font-size-xl:1.25rem;--subscrypts-font-size-2xl:1.5rem;--subscrypts-shadow-sm:0 1px 2px 0 rgba(0,0,0,.05);--subscrypts-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px 0 rgba(0,0,0,.06);--subscrypts-shadow-md:0 4px 6px -1px rgba(0,0,0,.1),0 2px 4px -1px rgba(0,0,0,.06);--subscrypts-shadow-lg:0 10px 15px -3px rgba(0,0,0,.1),0 4px 6px -2px rgba(0,0,0,.05);--subscrypts-transition-base:150ms cubic-bezier(0.4,0,0.2,1);--subscrypts-transition-slow:300ms cubic-bezier(0.4,0,0.2,1)}@media (prefers-color-scheme:dark){:root{--subscrypts-color-text-primary:#f9fafb;--subscrypts-color-text-secondary:#d1d5db;--subscrypts-color-background:#111827;--subscrypts-color-background-secondary:#1f2937;--subscrypts-color-border:#374151}}*,:after,:before{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }
|
|
2
|
+
|
|
3
|
+
/*! tailwindcss v3.4.19 | MIT License | https://tailwindcss.com*/*,:after,:before{box-sizing:border-box;border:0 solid #e5e7eb}:after,:before{--tw-content:""}:host,html{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}fieldset{margin:0}fieldset,legend{padding:0}menu,ol,ul{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}[role=button],button{cursor:pointer}:disabled{cursor:default}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}.subscrypts-sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.subscrypts-ml-2{margin-left:.5rem}.subscrypts-mt-2{margin-top:.5rem}.subscrypts-flex{display:flex}.subscrypts-h-8{height:2rem}.subscrypts-w-8{width:2rem}.subscrypts-w-full{width:100%}.subscrypts-max-w-2xl{max-width:42rem}.subscrypts-max-w-lg{max-width:32rem}.subscrypts-max-w-md{max-width:28rem}.subscrypts-animate-spin{animation:subscrypts-spin 1s linear infinite}.subscrypts-items-center{align-items:center}.subscrypts-justify-center{justify-content:center}.subscrypts-rounded-full{border-radius:9999px}.subscrypts-border-b-2{border-bottom-width:2px}.subscrypts-border-brand-primary{--tw-border-opacity:1;border-color:rgb(59 130 246/var(--tw-border-opacity,1))}.subscrypts-p-4{padding:1rem}.subscrypts-text-center{text-align:center}.subscrypts-text-sm{font-size:.875rem;line-height:1.25rem}.subscrypts-sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}@keyframes subscrypts-spin{to{transform:rotate(1turn)}}.subscrypts-animate-spin{animation:subscrypts-spin 1s linear infinite}.subscrypts-btn{display:inline-flex;align-items:center;justify-content:center;font-family:var(--subscrypts-font-family);font-weight:500;border-radius:var(--subscrypts-border-radius);transition:all var(--subscrypts-transition-base);cursor:pointer;outline:none;border:none}.subscrypts-btn:disabled{opacity:.5;cursor:not-allowed}.subscrypts-btn-sm{padding:var(--subscrypts-spacing-xs) var(--subscrypts-spacing-sm);font-size:var(--subscrypts-font-size-sm)}.subscrypts-btn-md{padding:var(--subscrypts-spacing-sm) var(--subscrypts-spacing-md);font-size:var(--subscrypts-font-size-base)}.subscrypts-btn-lg{padding:var(--subscrypts-spacing-md) var(--subscrypts-spacing-lg);font-size:var(--subscrypts-font-size-lg)}.subscrypts-btn-primary{background-color:var(--subscrypts-color-primary);color:#fff}.subscrypts-btn-primary:hover:not(:disabled){opacity:.9;box-shadow:var(--subscrypts-shadow-md)}.subscrypts-btn-secondary{background-color:var(--subscrypts-color-secondary);color:#fff}.subscrypts-btn-secondary:hover:not(:disabled){opacity:.9;box-shadow:var(--subscrypts-shadow-md)}.subscrypts-btn-outline{background-color:transparent;color:var(--subscrypts-color-primary);border:1px solid var(--subscrypts-color-primary)}.subscrypts-btn-outline:hover:not(:disabled){background-color:var(--subscrypts-color-primary);color:#fff}.subscrypts-flex{display:flex}.subscrypts-items-center{align-items:center}.subscrypts-justify-center{justify-content:center}.subscrypts-p-4{padding:var(--subscrypts-spacing-md)}.subscrypts-rounded-full{border-radius:9999px}.subscrypts-h-8{height:2rem}.subscrypts-w-8{width:2rem}.subscrypts-border-b-2{border-bottom-width:2px}.subscrypts-border-brand-primary{border-color:var(--subscrypts-color-primary)}.subscrypts-modal-overlay{position:fixed;inset:0;background-color:rgba(0,0,0,.5);display:flex;align-items:center;justify-content:center;z-index:9999;padding:var(--subscrypts-spacing-md)}.subscrypts-modal-content{background-color:var(--subscrypts-color-background);border-radius:var(--subscrypts-border-radius-lg);box-shadow:var(--subscrypts-shadow-lg);width:100%;max-height:90vh;overflow-y:auto}.subscrypts-max-w-md{max-width:28rem}.subscrypts-max-w-lg{max-width:32rem}.subscrypts-max-w-2xl{max-width:42rem}.subscrypts-modal-header{display:flex;align-items:center;justify-content:space-between;padding:var(--subscrypts-spacing-lg);border-bottom:1px solid var(--subscrypts-color-border)}.subscrypts-modal-title{font-size:var(--subscrypts-font-size-xl);font-weight:600;color:var(--subscrypts-color-text-primary);margin:0}.subscrypts-modal-close{background:none;border:none;font-size:2rem;line-height:1;color:var(--subscrypts-color-text-secondary);cursor:pointer;padding:0;width:2rem;height:2rem;display:flex;align-items:center;justify-content:center}.subscrypts-modal-close:hover{color:var(--subscrypts-color-text-primary)}.subscrypts-modal-body{padding:var(--subscrypts-spacing-lg)}.subscrypts-form-group{margin-bottom:var(--subscrypts-spacing-lg)}.subscrypts-label{display:block;font-size:var(--subscrypts-font-size-sm);font-weight:500;margin-bottom:var(--subscrypts-spacing-sm)}.subscrypts-input,.subscrypts-label{color:var(--subscrypts-color-text-primary)}.subscrypts-input{width:100%;padding:var(--subscrypts-spacing-sm);border:1px solid var(--subscrypts-color-border);border-radius:var(--subscrypts-border-radius);font-size:var(--subscrypts-font-size-base);background-color:var(--subscrypts-color-background);transition:border-color var(--subscrypts-transition-base)}.subscrypts-input:focus{outline:none;border-color:var(--subscrypts-color-primary)}.subscrypts-checkbox{width:1.25rem;height:1.25rem;cursor:pointer}.subscrypts-text-sm{font-size:var(--subscrypts-font-size-sm)}.subscrypts-text-secondary{color:var(--subscrypts-color-text-secondary)}.subscrypts-ml-2{margin-left:var(--subscrypts-spacing-sm)}.subscrypts-mt-2{margin-top:var(--subscrypts-spacing-sm)}.subscrypts-w-full{width:100%}.subscrypts-text-center{text-align:center}.subscrypts-cycle-options{display:flex;gap:var(--subscrypts-spacing-sm);flex-wrap:wrap}.subscrypts-cycle-option{flex:1;min-width:5rem;padding:var(--subscrypts-spacing-sm);border:1px solid var(--subscrypts-color-border);border-radius:var(--subscrypts-border-radius);background-color:var(--subscrypts-color-background);color:var(--subscrypts-color-text-primary);cursor:pointer;transition:all var(--subscrypts-transition-base)}.subscrypts-cycle-option-active,.subscrypts-cycle-option:hover{border-color:var(--subscrypts-color-primary)}.subscrypts-cycle-option-active{background-color:var(--subscrypts-color-primary);color:#fff}.subscrypts-payment-methods{display:flex;gap:var(--subscrypts-spacing-md);flex-wrap:wrap}.subscrypts-payment-card{flex:1;min-width:12rem;padding:var(--subscrypts-spacing-md);border:2px solid var(--subscrypts-color-border);border-radius:var(--subscrypts-border-radius-lg);background-color:var(--subscrypts-color-background);cursor:pointer;transition:all var(--subscrypts-transition-base);text-align:left}.subscrypts-payment-card:hover{border-color:var(--subscrypts-color-primary);box-shadow:var(--subscrypts-shadow)}.subscrypts-payment-card-active{border-color:var(--subscrypts-color-primary);background-color:var(--subscrypts-color-background-secondary)}.subscrypts-payment-card-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--subscrypts-spacing-sm)}.subscrypts-payment-card-title{font-weight:600;color:var(--subscrypts-color-text-primary)}.subscrypts-payment-card-balance{font-size:var(--subscrypts-font-size-sm);color:var(--subscrypts-color-text-secondary)}.subscrypts-badge{display:inline-block;padding:.125rem .5rem;background-color:var(--subscrypts-color-secondary);color:#fff;font-size:var(--subscrypts-font-size-xs);border-radius:var(--subscrypts-border-radius-sm);font-weight:500}.subscrypts-form-actions{display:flex;gap:var(--subscrypts-spacing-sm);justify-content:flex-end;margin-top:var(--subscrypts-spacing-lg)}.subscrypts-transaction-status{text-align:center;padding:var(--subscrypts-spacing-xl) var(--subscrypts-spacing-md)}.subscrypts-transaction-message{font-size:var(--subscrypts-font-size-lg);font-weight:500;color:var(--subscrypts-color-text-primary);margin-top:var(--subscrypts-spacing-md)}.subscrypts-error-icon,.subscrypts-success-icon{width:4rem;height:4rem;margin:0 auto;display:flex;align-items:center;justify-content:center;font-size:3rem;border-radius:50%}.subscrypts-success-icon{background-color:var(--subscrypts-color-success);color:#fff}.subscrypts-error-icon{background-color:var(--subscrypts-color-error);color:#fff}.subscrypts-error-box,.subscrypts-info-box{padding:var(--subscrypts-spacing-md);border-radius:var(--subscrypts-border-radius);margin-top:var(--subscrypts-spacing-md)}.subscrypts-error-box{background-color:#fee2e2;border:1px solid var(--subscrypts-color-error)}.subscrypts-info-box{background-color:var(--subscrypts-color-background-secondary);border:1px solid var(--subscrypts-color-border)}.subscrypts-error-title,.subscrypts-info-label{font-weight:600;font-size:var(--subscrypts-font-size-sm);margin-bottom:var(--subscrypts-spacing-xs)}.subscrypts-error-title{color:var(--subscrypts-color-error)}.subscrypts-info-label{color:var(--subscrypts-color-text-secondary)}.subscrypts-error-message,.subscrypts-info-value{font-size:var(--subscrypts-font-size-sm);margin:0}.subscrypts-error-message{color:#991b1b}.subscrypts-info-value{color:var(--subscrypts-color-text-primary);font-family:monospace}.subscrypts-checkout-success{text-align:center;padding:var(--subscrypts-spacing-xl)}.subscrypts-success-title{font-size:var(--subscrypts-font-size-2xl);font-weight:600;color:var(--subscrypts-color-text-primary);margin:var(--subscrypts-spacing-md) 0 var(--subscrypts-spacing-sm)}.subscrypts-success-message{color:var(--subscrypts-color-text-secondary);margin-bottom:var(--subscrypts-spacing-md)}.subscrypts-success-id{font-family:monospace;font-size:var(--subscrypts-font-size-sm);color:var(--subscrypts-color-text-secondary);margin-bottom:var(--subscrypts-spacing-lg)}.subscrypts-error-display{text-align:center;padding:var(--subscrypts-spacing-lg);border-radius:var(--subscrypts-border-radius-lg);background-color:#fef2f2;border:1px solid #fecaca}.subscrypts-error-display-compact{text-align:left;padding:var(--subscrypts-spacing-sm) var(--subscrypts-spacing-md);border-radius:var(--subscrypts-border-radius);background-color:#fef2f2;border:1px solid #fecaca}.subscrypts-error-display-compact .subscrypts-error-display-content{display:flex;align-items:center;justify-content:space-between;gap:var(--subscrypts-spacing-sm)}.subscrypts-error-display-icon{width:3rem;height:3rem;margin:0 auto var(--subscrypts-spacing-md);display:flex;align-items:center;justify-content:center;font-size:1.5rem;border-radius:50%;background-color:var(--subscrypts-color-error);color:#fff;font-weight:700}.subscrypts-error-display-title{font-size:var(--subscrypts-font-size-lg);font-weight:600;color:#991b1b;margin:0 0 var(--subscrypts-spacing-xs)}.subscrypts-error-display-message{font-size:var(--subscrypts-font-size-sm);color:#991b1b;margin:0 0 var(--subscrypts-spacing-xs)}.subscrypts-error-display-suggestion{font-size:var(--subscrypts-font-size-sm);color:var(--subscrypts-color-text-secondary);margin:0 0 var(--subscrypts-spacing-md)}.subscrypts-error-display-actions{display:flex;gap:var(--subscrypts-spacing-sm);justify-content:center;margin-top:var(--subscrypts-spacing-md)}.subscrypts-network-prompt{display:flex;align-items:center;gap:var(--subscrypts-spacing-md);padding:var(--subscrypts-spacing-md);border-radius:var(--subscrypts-border-radius-lg);background-color:#fffbeb;border:1px solid #fde68a}.subscrypts-network-prompt-icon{font-size:1.5rem;flex-shrink:0}.subscrypts-network-prompt-content{flex:1}.subscrypts-network-prompt-title{font-size:var(--subscrypts-font-size-base);font-weight:600;color:#92400e;margin:0 0 var(--subscrypts-spacing-xs)}.subscrypts-network-prompt-message{font-size:var(--subscrypts-font-size-sm);color:#92400e;margin:0}.subscrypts-network-prompt-actions{display:flex;gap:var(--subscrypts-spacing-sm);flex-shrink:0}.subscrypts-error-boundary-fallback{text-align:center;padding:var(--subscrypts-spacing-xl);border-radius:var(--subscrypts-border-radius-lg);background-color:#fef2f2;border:1px solid #fecaca}.subscrypts-error-boundary-icon{font-size:2.5rem;margin-bottom:var(--subscrypts-spacing-md)}.subscrypts-error-boundary-title{font-size:var(--subscrypts-font-size-xl);font-weight:600;color:#991b1b;margin:0 0 var(--subscrypts-spacing-sm)}.subscrypts-error-boundary-message{font-size:var(--subscrypts-font-size-sm);color:#991b1b;margin:0 0 var(--subscrypts-spacing-lg)}.subscrypts-connect-wallet{min-width:0}.subscrypts-connect-wallet-empty{text-align:center;padding:var(--subscrypts-spacing-lg);color:var(--subscrypts-color-text-secondary)}.subscrypts-connect-wallet-empty p{margin:0 0 var(--subscrypts-spacing-sm)}.subscrypts-connect-wallet-list{display:flex;flex-direction:column;gap:var(--subscrypts-spacing-sm)}.subscrypts-connect-wallet-option{display:flex;align-items:center;gap:var(--subscrypts-spacing-md);width:100%;padding:var(--subscrypts-spacing-md);border:1px solid var(--subscrypts-color-border);border-radius:var(--subscrypts-border-radius-lg);background-color:var(--subscrypts-color-background);color:var(--subscrypts-color-text-primary);cursor:pointer;transition:all var(--subscrypts-transition-base);font-size:var(--subscrypts-font-size-base);font-weight:500;text-align:left}.subscrypts-connect-wallet-option:hover:not(:disabled){border-color:var(--subscrypts-color-primary);background-color:var(--subscrypts-color-background-secondary)}.subscrypts-connect-wallet-option:disabled{opacity:.5;cursor:not-allowed}.subscrypts-connect-wallet-option-loading{border-color:var(--subscrypts-color-primary)}.subscrypts-connect-wallet-icon{width:2rem;height:2rem;border-radius:var(--subscrypts-border-radius);-o-object-fit:contain;object-fit:contain;flex-shrink:0}.subscrypts-connect-wallet-name{flex:1}.subscrypts-connect-wallet-spinner{width:1.25rem;height:1.25rem;border:2px solid var(--subscrypts-color-border);border-top-color:var(--subscrypts-color-primary);border-radius:50%;animation:subscrypts-spin .6s linear infinite;flex-shrink:0}.subscrypts-confirm-dialog{padding:.5rem 0}.subscrypts-confirm-dialog__message{color:var(--subscrypts-text-secondary);font-size:.9375rem;line-height:1.5;margin-bottom:1.5rem}.subscrypts-confirm-dialog__actions{display:flex;gap:.75rem;justify-content:flex-end}.subscrypts-btn-danger{background-color:var(--subscrypts-color-error);color:var(--subscrypts-text-inverse);border:none;padding:.625rem 1.25rem;border-radius:var(--subscrypts-border-radius);font-weight:500;cursor:pointer;transition:background-color .15s ease}.subscrypts-btn-danger:hover{background-color:#dc2626}.subscrypts-btn-danger:disabled{opacity:.5;cursor:not-allowed}.subscrypts-manage-modal{padding:.5rem 0}.subscrypts-manage-modal__info{background-color:var(--subscrypts-bg-secondary);border-radius:var(--subscrypts-border-radius);padding:1rem;margin-bottom:1.25rem}.subscrypts-manage-modal__row{display:flex;justify-content:space-between;align-items:center;padding:.5rem 0}.subscrypts-manage-modal__row+.subscrypts-manage-modal__row{border-top:1px solid var(--subscrypts-color-border)}.subscrypts-manage-modal__label{color:var(--subscrypts-text-secondary);font-size:.875rem}.subscrypts-manage-modal__value{color:var(--subscrypts-text-primary);font-weight:500;font-size:.875rem}.subscrypts-manage-modal__processing{display:flex;align-items:center;gap:.75rem;background-color:var(--subscrypts-bg-secondary);color:var(--subscrypts-text-secondary)}.subscrypts-manage-modal__processing,.subscrypts-manage-modal__success{padding:.75rem 1rem;border-radius:var(--subscrypts-border-radius);margin-bottom:1rem;font-size:.875rem}.subscrypts-manage-modal__success{background-color:#ecfdf5;color:#065f46;font-weight:500}.subscrypts-manage-modal__actions{display:flex;flex-direction:column;gap:.625rem}.subscrypts-manage-modal__actions .subscrypts-btn{width:100%;text-align:center}.subscrypts-subscription-card{background-color:var(--subscrypts-bg-primary);border:1px solid var(--subscrypts-color-border);border-radius:var(--subscrypts-border-radius);padding:1.25rem;transition:box-shadow .2s ease}.subscrypts-subscription-card:hover{box-shadow:0 4px 6px rgba(0,0,0,.1)}.subscrypts-subscription-card__header{display:flex;justify-content:flex-end;margin-bottom:1rem}.subscrypts-subscription-card__badge{display:inline-block;padding:.25rem .75rem;border-radius:9999px;font-size:.75rem;font-weight:600;text-transform:uppercase;letter-spacing:.025em}.subscrypts-subscription-card__badge--active{background-color:#d1fae5;color:#065f46}.subscrypts-subscription-card__badge--expiring{background-color:#fed7aa;color:#92400e}.subscrypts-subscription-card__badge--expired{background-color:#fee2e2;color:#991b1b}.subscrypts-subscription-card__badge--cancelled{background-color:#e5e7eb;color:#4b5563}.subscrypts-subscription-card__content{margin-bottom:1.25rem;padding-bottom:1.25rem;border-bottom:1px solid var(--subscrypts-color-border)}.subscrypts-subscription-card__amount{font-size:1.5rem;font-weight:700;color:var(--subscrypts-text-primary);margin-bottom:.25rem}.subscrypts-subscription-card__frequency{font-size:.875rem;color:var(--subscrypts-text-secondary)}.subscrypts-subscription-card__details{display:flex;flex-direction:column;gap:.75rem;margin-bottom:1.25rem}.subscrypts-subscription-card__detail-row{display:flex;justify-content:space-between;align-items:center}.subscrypts-subscription-card__detail-label{font-size:.875rem;color:var(--subscrypts-text-secondary)}.subscrypts-subscription-card__detail-value{font-size:.875rem;font-weight:500;color:var(--subscrypts-text-primary)}.subscrypts-subscription-card__actions{display:flex;gap:.75rem}.subscrypts-subscription-card__actions .subscrypts-btn{flex:1}.subscrypts-subscription-dashboard{width:100%}.subscrypts-subscription-dashboard__header{margin-bottom:1.5rem}.subscrypts-subscription-dashboard__title{font-size:1.5rem;font-weight:700;color:var(--subscrypts-text-primary);margin:0 0 .5rem}.subscrypts-subscription-dashboard__subtitle{font-size:.875rem;color:var(--subscrypts-text-secondary);margin:0}.subscrypts-subscription-dashboard__grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:1.5rem;margin-bottom:2rem}.subscrypts-subscription-dashboard__pagination{display:flex;justify-content:center;align-items:center;gap:1.5rem;padding:1.5rem 0}.subscrypts-subscription-dashboard__pagination-btn{min-width:100px}.subscrypts-subscription-dashboard__pagination-info{font-size:.875rem;color:var(--subscrypts-text-secondary);font-weight:500}.subscrypts-subscription-dashboard__loading{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:3rem;text-align:center}.subscrypts-subscription-dashboard__loading p{margin-top:1rem;color:var(--subscrypts-text-secondary)}.subscrypts-subscription-dashboard__error{padding:1.5rem}.subscrypts-subscription-dashboard__empty{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:4rem 2rem;text-align:center;background-color:var(--subscrypts-bg-secondary);border-radius:var(--subscrypts-border-radius)}.subscrypts-subscription-dashboard__empty-text{font-size:1.125rem;font-weight:600;color:var(--subscrypts-text-primary);margin:0 0 .5rem}.subscrypts-subscription-dashboard__empty-subtext{font-size:.875rem;color:var(--subscrypts-text-secondary);margin:0}.subscrypts-merchant-dashboard{width:100%}.subscrypts-merchant-dashboard__header{margin-bottom:2rem}.subscrypts-merchant-dashboard__title{font-size:2rem;font-weight:700;color:var(--subscrypts-text-primary);margin:0}.subscrypts-merchant-dashboard__error,.subscrypts-merchant-dashboard__loading{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:3rem;text-align:center}.subscrypts-merchant-dashboard__loading p{margin-top:1rem;color:var(--subscrypts-text-secondary)}.subscrypts-merchant-dashboard__empty{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:4rem 2rem;text-align:center;background-color:var(--subscrypts-bg-secondary);border-radius:var(--subscrypts-border-radius)}.subscrypts-merchant-dashboard__empty-title{font-size:1.5rem;font-weight:600;color:var(--subscrypts-text-primary);margin:0 0 .75rem}.subscrypts-merchant-dashboard__empty-text{font-size:1rem;color:var(--subscrypts-text-secondary);margin:0}.subscrypts-merchant-dashboard__revenue-card{background-color:var(--subscrypts-bg-secondary);border-radius:var(--subscrypts-border-radius);padding:2rem;margin-bottom:2rem}.subscrypts-merchant-dashboard__section-title{font-size:1.25rem;font-weight:600;color:var(--subscrypts-text-primary);margin:0 0 1.5rem}.subscrypts-merchant-dashboard__metrics{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:2rem}.subscrypts-merchant-dashboard__metric{display:flex;flex-direction:column}.subscrypts-merchant-dashboard__metric-label{font-size:.875rem;color:var(--subscrypts-text-secondary);margin-bottom:.5rem;text-transform:uppercase;letter-spacing:.05em}.subscrypts-merchant-dashboard__metric-value{font-size:1.875rem;font-weight:700;color:var(--subscrypts-text-primary);margin-bottom:.25rem}.subscrypts-merchant-dashboard__metric-value--primary{color:var(--subscrypts-color-primary)}.subscrypts-merchant-dashboard__metric-subvalue{font-size:.875rem;color:var(--subscrypts-text-secondary)}.subscrypts-merchant-dashboard__section{margin-bottom:2rem}.subscrypts-merchant-dashboard__plans-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:1.5rem}.subscrypts-merchant-dashboard__plan-card{background-color:var(--subscrypts-bg-primary);border:2px solid var(--subscrypts-color-border);border-radius:var(--subscrypts-border-radius);padding:1.5rem;cursor:pointer;transition:all .2s ease}.subscrypts-merchant-dashboard__plan-card:hover{box-shadow:0 4px 6px rgba(0,0,0,.1);border-color:var(--subscrypts-color-primary)}.subscrypts-merchant-dashboard__plan-card--selected{border-color:var(--subscrypts-color-primary);background-color:rgba(59,130,246,.05)}.subscrypts-merchant-dashboard__plan-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:1rem}.subscrypts-merchant-dashboard__plan-name{font-size:1.125rem;font-weight:600;color:var(--subscrypts-text-primary);margin:0}.subscrypts-merchant-dashboard__plan-badge{display:inline-block;padding:.25rem .625rem;background-color:#d1fae5;color:#065f46;border-radius:9999px;font-size:.75rem;font-weight:600;text-transform:uppercase;letter-spacing:.025em}.subscrypts-merchant-dashboard__plan-description{font-size:.875rem;color:var(--subscrypts-text-secondary);margin-bottom:1rem;line-height:1.5}.subscrypts-merchant-dashboard__plan-stats{display:flex;flex-direction:column;gap:.5rem}.subscrypts-merchant-dashboard__plan-stat{display:flex;justify-content:space-between;align-items:center;font-size:.875rem}.subscrypts-merchant-dashboard__plan-stat-label{color:var(--subscrypts-text-secondary)}.subscrypts-merchant-dashboard__plan-stat-value{color:var(--subscrypts-text-primary);font-weight:500}.subscrypts-merchant-dashboard__subscribers-loading{display:flex;flex-direction:column;align-items:center;padding:2rem}.subscrypts-merchant-dashboard__subscribers-loading p{margin-top:1rem;color:var(--subscrypts-text-secondary)}.subscrypts-merchant-dashboard__subscribers-empty{padding:2rem;text-align:center;background-color:var(--subscrypts-bg-secondary);border-radius:var(--subscrypts-border-radius)}.subscrypts-merchant-dashboard__subscribers-empty p{color:var(--subscrypts-text-secondary);margin:0}.subscrypts-merchant-dashboard__subscribers-summary{margin-bottom:1rem;padding:1rem;background-color:var(--subscrypts-bg-secondary);border-radius:var(--subscrypts-border-radius)}.subscrypts-merchant-dashboard__subscribers-summary p{color:var(--subscrypts-text-primary);margin:0;font-weight:500}.subscrypts-merchant-dashboard__subscribers-list{display:flex;flex-direction:column;gap:.75rem}.subscrypts-merchant-dashboard__subscriber-item{display:grid;grid-template-columns:1fr auto auto;gap:1rem;align-items:center;padding:1rem;background-color:var(--subscrypts-bg-primary);border:1px solid var(--subscrypts-color-border);border-radius:var(--subscrypts-border-radius)}.subscrypts-merchant-dashboard__subscriber-address{font-family:monospace;font-size:.875rem;color:var(--subscrypts-text-primary);font-weight:500}.subscrypts-merchant-dashboard__subscriber-cycles,.subscrypts-merchant-dashboard__subscriber-status{font-size:.875rem;color:var(--subscrypts-text-secondary)}
|
package/dist/styles.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"styles.d.ts","sourceRoot":"","sources":["../src/styles.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,qBAAqB,CAAC;AAC7B,OAAO,oBAAoB,CAAC"}
|
|
@@ -0,0 +1,192 @@
|
|
|
1
|
+
import { ReactNode } from 'react';
|
|
2
|
+
import { ExternalWalletConfig } from './wallet.types';
|
|
3
|
+
import { Plan } from './subscription.types';
|
|
4
|
+
import { WalletConnector } from '../wallet/types';
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* SubscryptsProvider props
|
|
8
|
+
*/
|
|
9
|
+
export interface SubscryptsProviderProps {
|
|
10
|
+
children: ReactNode;
|
|
11
|
+
/** Enable internal wallet management (default: true) */
|
|
12
|
+
enableWalletManagement?: boolean;
|
|
13
|
+
/** External wallet configuration (required if enableWalletManagement is false) */
|
|
14
|
+
externalProvider?: ExternalWalletConfig;
|
|
15
|
+
/** Network to use: 'arbitrum' (default: 'arbitrum') */
|
|
16
|
+
network?: 'arbitrum';
|
|
17
|
+
/** Custom RPC URL (optional) */
|
|
18
|
+
rpcUrl?: string;
|
|
19
|
+
/** Balance refresh interval in milliseconds (default: 30000) */
|
|
20
|
+
balanceRefreshInterval?: number;
|
|
21
|
+
/**
|
|
22
|
+
* Debug mode for SDK logging
|
|
23
|
+
* - 'silent': No console output
|
|
24
|
+
* - 'info': User-friendly transaction status and errors (default)
|
|
25
|
+
* - 'debug': Full developer debugging with all data
|
|
26
|
+
* @default 'info'
|
|
27
|
+
*/
|
|
28
|
+
debug?: 'silent' | 'info' | 'debug';
|
|
29
|
+
/**
|
|
30
|
+
* Callback when wallet account changes
|
|
31
|
+
* Useful for refreshing page state when user switches accounts
|
|
32
|
+
* @param newAddress - The new wallet address
|
|
33
|
+
* @param oldAddress - The previous wallet address
|
|
34
|
+
*/
|
|
35
|
+
onAccountChange?: (newAddress: string, oldAddress: string) => void;
|
|
36
|
+
/**
|
|
37
|
+
* Callback when network/chain changes
|
|
38
|
+
* @param newChainId - The new chain ID
|
|
39
|
+
* @param oldChainId - The previous chain ID
|
|
40
|
+
*/
|
|
41
|
+
onChainChange?: (newChainId: number, oldChainId: number) => void;
|
|
42
|
+
/**
|
|
43
|
+
* Custom wallet connectors.
|
|
44
|
+
* When provided, the SDK uses the connector architecture instead of
|
|
45
|
+
* the internal WalletService. Overrides enableWalletManagement.
|
|
46
|
+
*
|
|
47
|
+
* @example
|
|
48
|
+
* ```tsx
|
|
49
|
+
* <SubscryptsProvider connectors={[new InjectedConnector(), myPrivyConnector]}>
|
|
50
|
+
* ```
|
|
51
|
+
*/
|
|
52
|
+
connectors?: WalletConnector[];
|
|
53
|
+
/**
|
|
54
|
+
* Persist wallet session across page reloads using localStorage.
|
|
55
|
+
* When true, auto-reconnects silently on page load.
|
|
56
|
+
* @default true
|
|
57
|
+
*/
|
|
58
|
+
persistSession?: boolean;
|
|
59
|
+
/**
|
|
60
|
+
* Cache configuration for query results.
|
|
61
|
+
* Reduces RPC calls by caching plan data, subscription status, etc.
|
|
62
|
+
*
|
|
63
|
+
* **Zero-config defaults work for 90% of users.**
|
|
64
|
+
*
|
|
65
|
+
* @default { enabled: true, defaultTTL: 60000, maxEntries: 500 }
|
|
66
|
+
*
|
|
67
|
+
* @example
|
|
68
|
+
* ```tsx
|
|
69
|
+
* // Default (recommended)
|
|
70
|
+
* <SubscryptsProvider>
|
|
71
|
+
*
|
|
72
|
+
* // Custom configuration
|
|
73
|
+
* <SubscryptsProvider caching={{ enabled: true, defaultTTL: 30000, maxEntries: 1000 }}>
|
|
74
|
+
*
|
|
75
|
+
* // Disable caching
|
|
76
|
+
* <SubscryptsProvider caching={{ enabled: false }}>
|
|
77
|
+
* ```
|
|
78
|
+
*/
|
|
79
|
+
caching?: {
|
|
80
|
+
/** Enable caching (default: true) */
|
|
81
|
+
enabled?: boolean;
|
|
82
|
+
/** Default time-to-live in milliseconds (default: 60000 = 60 seconds) */
|
|
83
|
+
defaultTTL?: number;
|
|
84
|
+
/** Maximum cache entries before LRU eviction (default: 500) */
|
|
85
|
+
maxEntries?: number;
|
|
86
|
+
};
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* SubscriptionGuard props
|
|
90
|
+
*
|
|
91
|
+
* Supports single-plan gating (planId) and multi-plan gating (planIds).
|
|
92
|
+
* When using planIds, set requireAll to control any-of vs all-of behavior.
|
|
93
|
+
*/
|
|
94
|
+
export interface SubscriptionGuardProps {
|
|
95
|
+
/** Single plan ID to check (backward compatible) */
|
|
96
|
+
planId?: string;
|
|
97
|
+
/** Multiple plan IDs to check */
|
|
98
|
+
planIds?: string[];
|
|
99
|
+
/**
|
|
100
|
+
* When true, user must be subscribed to ALL plans in planIds.
|
|
101
|
+
* When false (default), user needs ANY one of the plans.
|
|
102
|
+
* Only applies when planIds is provided.
|
|
103
|
+
* @default false
|
|
104
|
+
*/
|
|
105
|
+
requireAll?: boolean;
|
|
106
|
+
/** URL to redirect to if subscription is inactive */
|
|
107
|
+
fallbackUrl?: string;
|
|
108
|
+
/** Custom loading component */
|
|
109
|
+
loadingComponent?: ReactNode;
|
|
110
|
+
/** Protected content */
|
|
111
|
+
children: ReactNode;
|
|
112
|
+
/** Callback when access is denied */
|
|
113
|
+
onAccessDenied?: () => void;
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* SubscriptionCatalog props
|
|
117
|
+
*/
|
|
118
|
+
export interface SubscriptionCatalogProps {
|
|
119
|
+
/** Optional custom plans array (fetched from contract if not provided) */
|
|
120
|
+
plans?: Plan[];
|
|
121
|
+
/** Show referral input field (default: false) */
|
|
122
|
+
showReferralInput?: boolean;
|
|
123
|
+
/** Callback when subscribe button is clicked */
|
|
124
|
+
onSubscribeClick?: (planId: string) => void;
|
|
125
|
+
/** Custom CSS class */
|
|
126
|
+
className?: string;
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* CheckoutWizard props
|
|
130
|
+
*/
|
|
131
|
+
export interface CheckoutWizardProps {
|
|
132
|
+
planId: string;
|
|
133
|
+
/** Modal open state */
|
|
134
|
+
isOpen: boolean;
|
|
135
|
+
/** Close handler */
|
|
136
|
+
onClose: () => void;
|
|
137
|
+
/** Referrer wallet address (optional) */
|
|
138
|
+
referralAddress?: string;
|
|
139
|
+
/** Success callback with subscription ID */
|
|
140
|
+
onSuccess?: (subscriptionId: string) => void;
|
|
141
|
+
/** Error callback */
|
|
142
|
+
onError?: (error: Error) => void;
|
|
143
|
+
}
|
|
144
|
+
/**
|
|
145
|
+
* SubscryptsButton props
|
|
146
|
+
*/
|
|
147
|
+
export interface SubscryptsButtonProps {
|
|
148
|
+
planId: string;
|
|
149
|
+
/** Button style variant */
|
|
150
|
+
variant?: 'primary' | 'secondary' | 'outline';
|
|
151
|
+
/** Button size */
|
|
152
|
+
size?: 'sm' | 'md' | 'lg';
|
|
153
|
+
/** Button text content */
|
|
154
|
+
children?: ReactNode;
|
|
155
|
+
/** Referrer wallet address (optional) */
|
|
156
|
+
referralAddress?: string;
|
|
157
|
+
/** Success callback with subscription ID */
|
|
158
|
+
onSuccess?: (subscriptionId: string) => void;
|
|
159
|
+
}
|
|
160
|
+
/**
|
|
161
|
+
* PlanCard props
|
|
162
|
+
*/
|
|
163
|
+
export interface PlanCardProps {
|
|
164
|
+
plan: Plan;
|
|
165
|
+
/** Selected currency for display */
|
|
166
|
+
currency: 'SUBS' | 'USDC';
|
|
167
|
+
/** Conversion rate (SUBS/USDC) */
|
|
168
|
+
conversionRate: number;
|
|
169
|
+
/** Click handler */
|
|
170
|
+
onSubscribe: () => void;
|
|
171
|
+
}
|
|
172
|
+
/**
|
|
173
|
+
* CurrencyToggle props
|
|
174
|
+
*/
|
|
175
|
+
export interface CurrencyToggleProps {
|
|
176
|
+
/** Currently selected currency */
|
|
177
|
+
selected: 'SUBS' | 'USDC';
|
|
178
|
+
/** Change handler */
|
|
179
|
+
onChange: (currency: 'SUBS' | 'USDC') => void;
|
|
180
|
+
}
|
|
181
|
+
/**
|
|
182
|
+
* ReferralInput props
|
|
183
|
+
*/
|
|
184
|
+
export interface ReferralInputProps {
|
|
185
|
+
/** Current referral address */
|
|
186
|
+
value: string;
|
|
187
|
+
/** Change handler */
|
|
188
|
+
onChange: (address: string) => void;
|
|
189
|
+
/** Validation error message */
|
|
190
|
+
error?: string;
|
|
191
|
+
}
|
|
192
|
+
//# sourceMappingURL=component.types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"component.types.d.ts","sourceRoot":"","sources":["../../src/types/component.types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Smart contract types based on Subscrypts ABI
|
|
3
|
+
*/
|
|
4
|
+
/**
|
|
5
|
+
* Parameters for creating a subscription with SUBS tokens
|
|
6
|
+
*/
|
|
7
|
+
export interface SubscriptionCreateParams {
|
|
8
|
+
planId: bigint;
|
|
9
|
+
subscriber: string;
|
|
10
|
+
recurring: boolean;
|
|
11
|
+
remainingCycles: bigint;
|
|
12
|
+
referral: string;
|
|
13
|
+
onlyCreate: boolean;
|
|
14
|
+
deductFrom: string;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Parameters for creating a subscription with USDC (includes Uniswap swap)
|
|
18
|
+
*/
|
|
19
|
+
export interface PayWithUsdcParams {
|
|
20
|
+
planId: bigint;
|
|
21
|
+
recurring: boolean;
|
|
22
|
+
remainingCycles: bigint;
|
|
23
|
+
referral: string;
|
|
24
|
+
feeTier: number;
|
|
25
|
+
deadline: bigint;
|
|
26
|
+
nonce: bigint;
|
|
27
|
+
permitDeadline: bigint;
|
|
28
|
+
signature: string;
|
|
29
|
+
maxUsdcIn6Cap: bigint;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Result from subscription creation
|
|
33
|
+
*/
|
|
34
|
+
export interface SubscriptionCreateResult {
|
|
35
|
+
subscriptionId: bigint;
|
|
36
|
+
alreadyExist: boolean;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Result from USDC subscription payment
|
|
40
|
+
*/
|
|
41
|
+
export interface PayWithUsdcResult {
|
|
42
|
+
subId: bigint;
|
|
43
|
+
subExist: boolean;
|
|
44
|
+
subsPaid18: bigint;
|
|
45
|
+
usdcSpent6: bigint;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Subscription data structure from contract
|
|
49
|
+
*/
|
|
50
|
+
export interface ContractSubscription {
|
|
51
|
+
id: bigint;
|
|
52
|
+
merchantAddress: string;
|
|
53
|
+
planId: bigint;
|
|
54
|
+
subscriberAddress: string;
|
|
55
|
+
currencyCode: bigint;
|
|
56
|
+
subscriptionAmount: bigint;
|
|
57
|
+
paymentFrequency: bigint;
|
|
58
|
+
isRecurring: boolean;
|
|
59
|
+
remainingCycles: bigint;
|
|
60
|
+
customAttributes: string;
|
|
61
|
+
lastPaymentDate: bigint;
|
|
62
|
+
nextPaymentDate: bigint;
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Plan data structure from contract
|
|
66
|
+
*/
|
|
67
|
+
export interface ContractPlan {
|
|
68
|
+
id: bigint;
|
|
69
|
+
merchantAddress: string;
|
|
70
|
+
currencyCode: bigint;
|
|
71
|
+
subscriptionAmount: bigint;
|
|
72
|
+
paymentFrequency: bigint;
|
|
73
|
+
referralBonus: bigint;
|
|
74
|
+
commission: bigint;
|
|
75
|
+
description: string;
|
|
76
|
+
defaultAttributes: string;
|
|
77
|
+
verificationExpiryDate: bigint;
|
|
78
|
+
subscriberCount: bigint;
|
|
79
|
+
isActive: boolean;
|
|
80
|
+
}
|
|
81
|
+
//# sourceMappingURL=contract.types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"contract.types.d.ts","sourceRoot":"","sources":["../../src/types/contract.types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACvC,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,OAAO,CAAC;IACnB,eAAe,EAAE,MAAM,CAAC;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,OAAO,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,OAAO,CAAC;IACnB,eAAe,EAAE,MAAM,CAAC;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACvC,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,OAAO,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,OAAO,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,EAAE,EAAE,MAAM,CAAC;IACX,eAAe,EAAE,MAAM,CAAC;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,iBAAiB,EAAE,MAAM,CAAC;IAC1B,YAAY,EAAE,MAAM,CAAC;IACrB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,gBAAgB,EAAE,MAAM,CAAC;IACzB,WAAW,EAAE,OAAO,CAAC;IACrB,eAAe,EAAE,MAAM,CAAC;IACxB,gBAAgB,EAAE,MAAM,CAAC;IACzB,eAAe,EAAE,MAAM,CAAC;IACxB,eAAe,EAAE,MAAM,CAAC;CACzB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,eAAe,EAAE,MAAM,CAAC;IACxB,YAAY,EAAE,MAAM,CAAC;IACrB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,gBAAgB,EAAE,MAAM,CAAC;IACzB,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,sBAAsB,EAAE,MAAM,CAAC;IAC/B,eAAe,EAAE,MAAM,CAAC;IACxB,QAAQ,EAAE,OAAO,CAAC;CACnB"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Type definitions for @subscrypts/subscrypts-sdk-react
|
|
3
|
+
*/
|
|
4
|
+
export type { SubscriptionCreateParams, PayWithUsdcParams, SubscriptionCreateResult, PayWithUsdcResult, ContractSubscription, ContractPlan } from './contract.types';
|
|
5
|
+
export type { SubscriptionStatus, Subscription, Plan, PaymentMethod, TransactionState, CheckoutStep } from './subscription.types';
|
|
6
|
+
export type { NetworkConfig, WalletState, ExternalWalletConfig, EthereumProvider } from './wallet.types';
|
|
7
|
+
export type { SubscryptsProviderProps, SubscriptionGuardProps, SubscriptionCatalogProps, CheckoutWizardProps, SubscryptsButtonProps, PlanCardProps, CurrencyToggleProps, ReferralInputProps } from './component.types';
|
|
8
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,YAAY,EACV,wBAAwB,EACxB,iBAAiB,EACjB,wBAAwB,EACxB,iBAAiB,EACjB,oBAAoB,EACpB,YAAY,EACb,MAAM,kBAAkB,CAAC;AAG1B,YAAY,EACV,kBAAkB,EAClB,YAAY,EACZ,IAAI,EACJ,aAAa,EACb,gBAAgB,EAChB,YAAY,EACb,MAAM,sBAAsB,CAAC;AAG9B,YAAY,EACV,aAAa,EACb,WAAW,EACX,oBAAoB,EACpB,gBAAgB,EACjB,MAAM,gBAAgB,CAAC;AAGxB,YAAY,EACV,uBAAuB,EACvB,sBAAsB,EACtB,wBAAwB,EACxB,mBAAmB,EACnB,qBAAqB,EACrB,aAAa,EACb,mBAAmB,EACnB,kBAAkB,EACnB,MAAM,mBAAmB,CAAC"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Domain types for subscriptions
|
|
3
|
+
*/
|
|
4
|
+
/**
|
|
5
|
+
* Subscription status information
|
|
6
|
+
*/
|
|
7
|
+
export interface SubscriptionStatus {
|
|
8
|
+
/** Whether the subscription is currently active */
|
|
9
|
+
isActive: boolean;
|
|
10
|
+
/** Expiration date (null if no subscription) */
|
|
11
|
+
expirationDate: Date | null;
|
|
12
|
+
/** Whether auto-renewal is enabled */
|
|
13
|
+
isAutoRenewing: boolean;
|
|
14
|
+
/** Number of remaining payment cycles */
|
|
15
|
+
remainingCycles: number;
|
|
16
|
+
/** Subscription ID (null if no subscription exists) */
|
|
17
|
+
subscriptionId: string | null;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Full subscription details
|
|
21
|
+
*/
|
|
22
|
+
export interface Subscription {
|
|
23
|
+
id: string;
|
|
24
|
+
merchantAddress: string;
|
|
25
|
+
planId: string;
|
|
26
|
+
subscriber: string;
|
|
27
|
+
currencyCode: bigint;
|
|
28
|
+
subscriptionAmount: bigint;
|
|
29
|
+
paymentFrequency: bigint;
|
|
30
|
+
isAutoRenewing: boolean;
|
|
31
|
+
remainingCycles: number;
|
|
32
|
+
customAttributes: string;
|
|
33
|
+
lastPaymentDate: Date;
|
|
34
|
+
nextPaymentDate: Date;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Subscription plan information
|
|
38
|
+
*/
|
|
39
|
+
export interface Plan {
|
|
40
|
+
id: bigint;
|
|
41
|
+
merchantAddress: string;
|
|
42
|
+
currencyCode: bigint;
|
|
43
|
+
subscriptionAmount: bigint;
|
|
44
|
+
paymentFrequency: bigint;
|
|
45
|
+
referralBonus: bigint;
|
|
46
|
+
commission: bigint;
|
|
47
|
+
description: string;
|
|
48
|
+
defaultAttributes: string;
|
|
49
|
+
verificationExpiryDate: bigint;
|
|
50
|
+
subscriberCount: bigint;
|
|
51
|
+
isActive: boolean;
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Payment method types
|
|
55
|
+
*/
|
|
56
|
+
export type PaymentMethod = 'SUBS' | 'USDC';
|
|
57
|
+
/**
|
|
58
|
+
* Transaction states during subscription flow
|
|
59
|
+
*/
|
|
60
|
+
export type TransactionState = 'idle' | 'approving' | 'waiting_approval' | 'subscribing' | 'waiting_subscribe' | 'success' | 'error';
|
|
61
|
+
/**
|
|
62
|
+
* Checkout step in wizard
|
|
63
|
+
*/
|
|
64
|
+
export type CheckoutStep = 'configuration' | 'transaction' | 'success';
|
|
65
|
+
//# sourceMappingURL=subscription.types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"subscription.types.d.ts","sourceRoot":"","sources":["../../src/types/subscription.types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,mDAAmD;IACnD,QAAQ,EAAE,OAAO,CAAC;IAClB,gDAAgD;IAChD,cAAc,EAAE,IAAI,GAAG,IAAI,CAAC;IAC5B,sCAAsC;IACtC,cAAc,EAAE,OAAO,CAAC;IACxB,yCAAyC;IACzC,eAAe,EAAE,MAAM,CAAC;IACxB,uDAAuD;IACvD,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;CAC/B;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,eAAe,EAAE,MAAM,CAAC;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,gBAAgB,EAAE,MAAM,CAAC;IACzB,cAAc,EAAE,OAAO,CAAC;IACxB,eAAe,EAAE,MAAM,CAAC;IACxB,gBAAgB,EAAE,MAAM,CAAC;IACzB,eAAe,EAAE,IAAI,CAAC;IACtB,eAAe,EAAE,IAAI,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,IAAI;IACnB,EAAE,EAAE,MAAM,CAAC;IACX,eAAe,EAAE,MAAM,CAAC;IACxB,YAAY,EAAE,MAAM,CAAC;IACrB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,gBAAgB,EAAE,MAAM,CAAC;IACzB,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,sBAAsB,EAAE,MAAM,CAAC;IAC/B,eAAe,EAAE,MAAM,CAAC;IACxB,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,MAAM,CAAC;AAE5C;;GAEG;AACH,MAAM,MAAM,gBAAgB,GACxB,MAAM,GACN,WAAW,GACX,kBAAkB,GAClB,aAAa,GACb,mBAAmB,GACnB,SAAS,GACT,OAAO,CAAC;AAEZ;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG,eAAe,GAAG,aAAa,GAAG,SAAS,CAAC"}
|