@atxp/base 0.2.22 → 0.4.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/baseAppAccount.js +6 -3
- package/dist/baseAppAccount.js.map +1 -1
- package/dist/baseAppPaymentMaker.js +22 -42
- package/dist/baseAppPaymentMaker.js.map +1 -1
- package/dist/eip1271JwtHelper.js +83 -0
- package/dist/eip1271JwtHelper.js.map +1 -0
- package/dist/index.cjs +630 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.ts +157 -6
- package/dist/index.js +623 -5
- package/dist/index.js.map +1 -1
- package/dist/mainWalletPaymentMaker.js +26 -48
- package/dist/mainWalletPaymentMaker.js.map +1 -1
- package/dist/smartWalletHelpers.js +6 -3
- package/dist/smartWalletHelpers.js.map +1 -1
- package/dist/spendPermissionUtils.js +4 -2
- package/dist/spendPermissionUtils.js.map +1 -1
- package/dist/storage.js +6 -4
- package/dist/storage.js.map +1 -1
- package/package.json +21 -7
- package/dist/baseAppAccount.d.ts +0 -33
- package/dist/baseAppAccount.d.ts.map +0 -1
- package/dist/baseAppAccount.ephemeral.test.d.ts +0 -2
- package/dist/baseAppAccount.ephemeral.test.d.ts.map +0 -1
- package/dist/baseAppAccount.ephemeral.test.js +0 -426
- package/dist/baseAppAccount.ephemeral.test.js.map +0 -1
- package/dist/baseAppAccount.mainWallet.test.d.ts +0 -2
- package/dist/baseAppAccount.mainWallet.test.d.ts.map +0 -1
- package/dist/baseAppAccount.mainWallet.test.js +0 -259
- package/dist/baseAppAccount.mainWallet.test.js.map +0 -1
- package/dist/baseAppPaymentMaker.d.ts +0 -16
- package/dist/baseAppPaymentMaker.d.ts.map +0 -1
- package/dist/baseAppPaymentMaker.test.d.ts +0 -2
- package/dist/baseAppPaymentMaker.test.d.ts.map +0 -1
- package/dist/baseAppPaymentMaker.test.js +0 -113
- package/dist/baseAppPaymentMaker.test.js.map +0 -1
- package/dist/compatibility.test.d.ts +0 -2
- package/dist/compatibility.test.d.ts.map +0 -1
- package/dist/compatibility.test.js +0 -94
- package/dist/compatibility.test.js.map +0 -1
- package/dist/environment.test.d.ts +0 -2
- package/dist/environment.test.d.ts.map +0 -1
- package/dist/environment.test.js +0 -77
- package/dist/environment.test.js.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/mainWalletPaymentMaker.d.ts +0 -22
- package/dist/mainWalletPaymentMaker.d.ts.map +0 -1
- package/dist/mainWalletPaymentMaker.test.d.ts +0 -2
- package/dist/mainWalletPaymentMaker.test.d.ts.map +0 -1
- package/dist/mainWalletPaymentMaker.test.js +0 -340
- package/dist/mainWalletPaymentMaker.test.js.map +0 -1
- package/dist/smartWalletHelpers.d.ts +0 -13
- package/dist/smartWalletHelpers.d.ts.map +0 -1
- package/dist/spendPermissionUtils.d.ts +0 -9
- package/dist/spendPermissionUtils.d.ts.map +0 -1
- package/dist/storage.d.ts +0 -51
- package/dist/storage.d.ts.map +0 -1
- package/dist/testHelpers.d.ts +0 -88
- package/dist/testHelpers.d.ts.map +0 -1
- package/dist/testHelpers.js +0 -202
- package/dist/testHelpers.js.map +0 -1
- package/dist/types.d.ts +0 -35
- package/dist/types.d.ts.map +0 -1
- package/dist/types.js +0 -3
- package/dist/types.js.map +0 -1
package/dist/index.d.ts
CHANGED
|
@@ -1,6 +1,157 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
1
|
+
import { PaymentMaker, Hex, Account as Account$1 } from '@atxp/client';
|
|
2
|
+
import BigNumber$1 from 'bignumber.js';
|
|
3
|
+
import { Logger, Currency } from '@atxp/common';
|
|
4
|
+
import { Address, Account } from 'viem';
|
|
5
|
+
import { BundlerClient, SmartAccount } from 'viem/account-abstraction';
|
|
6
|
+
|
|
7
|
+
type MainWalletProvider = {
|
|
8
|
+
request: (params: {
|
|
9
|
+
method: string;
|
|
10
|
+
params?: any[];
|
|
11
|
+
}) => Promise<any>;
|
|
12
|
+
};
|
|
13
|
+
declare class MainWalletPaymentMaker implements PaymentMaker {
|
|
14
|
+
private walletAddress;
|
|
15
|
+
private provider;
|
|
16
|
+
private logger;
|
|
17
|
+
constructor(walletAddress: string, provider: MainWalletProvider, logger?: Logger);
|
|
18
|
+
generateJWT(payload: {
|
|
19
|
+
paymentRequestId: string;
|
|
20
|
+
codeChallenge: string;
|
|
21
|
+
}): Promise<string>;
|
|
22
|
+
makePayment(amount: BigNumber$1, currency: Currency, receiver: string, _reason: string): Promise<string>;
|
|
23
|
+
private waitForTransactionConfirmations;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* Represents a spending permission with limits
|
|
28
|
+
*/
|
|
29
|
+
type SpendPermission = {
|
|
30
|
+
/** UTC timestamp for when the permission was granted */
|
|
31
|
+
createdAt?: number;
|
|
32
|
+
/** Hash of the permission in hex format */
|
|
33
|
+
permissionHash?: string;
|
|
34
|
+
/** Cryptographic signature in hex format */
|
|
35
|
+
signature: string;
|
|
36
|
+
/** Chain ID */
|
|
37
|
+
chainId?: number;
|
|
38
|
+
/** The permission details */
|
|
39
|
+
permission: {
|
|
40
|
+
/** Wallet address of the account */
|
|
41
|
+
account: string;
|
|
42
|
+
/** Address of the contract/entity allowed to spend */
|
|
43
|
+
spender: string;
|
|
44
|
+
/** Address of the token being spent */
|
|
45
|
+
token: string;
|
|
46
|
+
/** Maximum amount allowed as base 10 numeric string */
|
|
47
|
+
allowance: string;
|
|
48
|
+
/** Time period in seconds */
|
|
49
|
+
period: number;
|
|
50
|
+
/** Start time in unix seconds */
|
|
51
|
+
start: number;
|
|
52
|
+
/** Expiration time in unix seconds */
|
|
53
|
+
end: number;
|
|
54
|
+
/** Salt as base 10 numeric string */
|
|
55
|
+
salt: string;
|
|
56
|
+
/** Additional data in hex format */
|
|
57
|
+
extraData: string;
|
|
58
|
+
};
|
|
59
|
+
};
|
|
60
|
+
|
|
61
|
+
/**
|
|
62
|
+
* Stored permission data structure
|
|
63
|
+
*/
|
|
64
|
+
interface Intermediary {
|
|
65
|
+
/** Ephemeral wallet private key */
|
|
66
|
+
privateKey: Hex;
|
|
67
|
+
/** Spend permission from Base */
|
|
68
|
+
permission: SpendPermission;
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Storage interface for abstracting storage mechanisms
|
|
72
|
+
* This allows for easy mocking in tests and potential future
|
|
73
|
+
* support for different storage backends (e.g., React Native AsyncStorage)
|
|
74
|
+
*/
|
|
75
|
+
interface IStorage<T = string> {
|
|
76
|
+
get(key: string): T | null;
|
|
77
|
+
set(key: string, value: T): void;
|
|
78
|
+
delete(key: string): void;
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Type-safe storage wrapper for permission data
|
|
82
|
+
*/
|
|
83
|
+
declare class IntermediaryStorage {
|
|
84
|
+
private storage;
|
|
85
|
+
constructor(storage: IStorage<string>);
|
|
86
|
+
get(key: string): Intermediary | null;
|
|
87
|
+
set(key: string, data: Intermediary): void;
|
|
88
|
+
delete(key: string): void;
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Browser localStorage implementation
|
|
92
|
+
*/
|
|
93
|
+
declare class BrowserStorage implements IStorage<string> {
|
|
94
|
+
private isAvailable;
|
|
95
|
+
get(key: string): string | null;
|
|
96
|
+
set(key: string, value: string): void;
|
|
97
|
+
delete(key: string): void;
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* In-memory storage implementation for testing
|
|
101
|
+
*/
|
|
102
|
+
declare class MemoryStorage implements IStorage<string> {
|
|
103
|
+
private store;
|
|
104
|
+
get(key: string): string | null;
|
|
105
|
+
set(key: string, value: string): void;
|
|
106
|
+
delete(key: string): void;
|
|
107
|
+
clear(): void;
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
interface EphemeralSmartWallet {
|
|
111
|
+
address: Address;
|
|
112
|
+
client: BundlerClient;
|
|
113
|
+
account: SmartAccount;
|
|
114
|
+
signer: Account;
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
declare class BaseAppAccount implements Account$1 {
|
|
118
|
+
accountId: string;
|
|
119
|
+
paymentMakers: {
|
|
120
|
+
[key: string]: PaymentMaker;
|
|
121
|
+
};
|
|
122
|
+
private static toStorageKey;
|
|
123
|
+
static initialize(config: {
|
|
124
|
+
walletAddress: string;
|
|
125
|
+
apiKey: string;
|
|
126
|
+
appName: string;
|
|
127
|
+
useEphemeralWallet?: boolean;
|
|
128
|
+
allowance?: bigint;
|
|
129
|
+
periodInDays?: number;
|
|
130
|
+
storage?: IStorage<string>;
|
|
131
|
+
logger?: Logger;
|
|
132
|
+
}): Promise<BaseAppAccount>;
|
|
133
|
+
private static loadSavedWalletAndPermission;
|
|
134
|
+
private static deploySmartWallet;
|
|
135
|
+
constructor(spendPermission: SpendPermission | null, ephemeralSmartWallet: EphemeralSmartWallet | null, logger?: Logger, mainWalletAddress?: string, provider?: MainWalletProvider);
|
|
136
|
+
/**
|
|
137
|
+
* Dynamically import the appropriate spend-permission module based on environment.
|
|
138
|
+
* Uses browser version as requestSpendPermission only exists there.
|
|
139
|
+
* Throws error if used in server-side environment.
|
|
140
|
+
*/
|
|
141
|
+
static clearAllStoredData(userWalletAddress: string, storage?: IStorage<string>): void;
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
declare class BaseAppPaymentMaker implements PaymentMaker {
|
|
145
|
+
private logger;
|
|
146
|
+
private spendPermission;
|
|
147
|
+
private smartWallet;
|
|
148
|
+
constructor(spendPermission: SpendPermission, smartWallet: EphemeralSmartWallet, logger?: Logger);
|
|
149
|
+
generateJWT({ paymentRequestId, codeChallenge }: {
|
|
150
|
+
paymentRequestId: string;
|
|
151
|
+
codeChallenge: string;
|
|
152
|
+
}): Promise<string>;
|
|
153
|
+
makePayment(amount: BigNumber, currency: Currency, receiver: string, memo: string): Promise<string>;
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
export { BaseAppAccount, BaseAppPaymentMaker, BrowserStorage, MainWalletPaymentMaker, MemoryStorage, IntermediaryStorage as PermissionStorage };
|
|
157
|
+
export type { IStorage, MainWalletProvider, SpendPermission, Intermediary as StoredPermissionData };
|