@toruslabs/ethereum-controllers 6.3.2 → 7.0.0-alpha.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/757.ethereumControllers.cjs.js +226 -0
- package/dist/ethereumControllers.cjs.js +18978 -2202
- package/dist/ethereumControllers.esm.js +1225 -1044
- package/dist/ethereumControllers.umd.min.js +1 -1
- package/dist/lib.cjs/AccountAbstraction/AccountAbstractionController.js +218 -0
- package/dist/lib.cjs/AccountAbstraction/smartAccounts/BiconomySmartAccount.js +29 -0
- package/dist/lib.cjs/AccountAbstraction/smartAccounts/KernelSmartAccount.js +24 -0
- package/dist/lib.cjs/AccountAbstraction/smartAccounts/NexusSmartAccount.js +30 -0
- package/dist/lib.cjs/AccountAbstraction/smartAccounts/SafeSmartAccount.js +32 -0
- package/dist/lib.cjs/AccountAbstraction/smartAccounts/TrustSmartAccount.js +31 -0
- package/dist/lib.cjs/Block/PollingBlockTracker.js +1 -2
- package/dist/lib.cjs/Currency/CurrencyController.js +1 -2
- package/dist/lib.cjs/Gas/GasFeeController.js +1 -2
- package/dist/lib.cjs/Message/AddChainController.js +6 -9
- package/dist/lib.cjs/Message/MessageController.js +7 -10
- package/dist/lib.cjs/Message/PersonalMessageController.js +7 -10
- package/dist/lib.cjs/Message/SwitchChainController.js +6 -9
- package/dist/lib.cjs/Message/TypedMessageController.js +8 -8
- package/dist/lib.cjs/Nfts/NftsController.js +1 -2
- package/dist/lib.cjs/Preferences/PreferencesController.js +6 -3
- package/dist/lib.cjs/Tokens/TokenRatesController.js +1 -2
- package/dist/lib.cjs/Tokens/TokensController.js +1 -1
- package/dist/lib.cjs/index.js +15 -5
- package/dist/lib.cjs/utils/constants.js +10 -12
- package/dist/lib.cjs/utils/helpers.js +0 -25
- package/dist/lib.esm/AccountAbstraction/AccountAbstractionController.js +214 -0
- package/dist/lib.esm/AccountAbstraction/smartAccounts/BiconomySmartAccount.js +27 -0
- package/dist/lib.esm/AccountAbstraction/smartAccounts/KernelSmartAccount.js +22 -0
- package/dist/lib.esm/AccountAbstraction/smartAccounts/NexusSmartAccount.js +28 -0
- package/dist/lib.esm/AccountAbstraction/smartAccounts/SafeSmartAccount.js +30 -0
- package/dist/lib.esm/AccountAbstraction/smartAccounts/TrustSmartAccount.js +29 -0
- package/dist/lib.esm/Block/PollingBlockTracker.js +1 -2
- package/dist/lib.esm/Currency/CurrencyController.js +1 -2
- package/dist/lib.esm/Gas/GasFeeController.js +1 -2
- package/dist/lib.esm/Message/AddChainController.js +3 -6
- package/dist/lib.esm/Message/MessageController.js +4 -7
- package/dist/lib.esm/Message/PersonalMessageController.js +4 -7
- package/dist/lib.esm/Message/SwitchChainController.js +3 -6
- package/dist/lib.esm/Message/TypedMessageController.js +5 -5
- package/dist/lib.esm/Nfts/NftsController.js +1 -2
- package/dist/lib.esm/Preferences/PreferencesController.js +6 -3
- package/dist/lib.esm/Tokens/TokenRatesController.js +1 -2
- package/dist/lib.esm/Tokens/TokensController.js +2 -2
- package/dist/lib.esm/index.js +8 -3
- package/dist/lib.esm/utils/constants.js +10 -11
- package/dist/lib.esm/utils/helpers.js +1 -25
- package/dist/types/AccountAbstraction/AccountAbstractionController.d.ts +52 -0
- package/dist/types/AccountAbstraction/smartAccounts/BiconomySmartAccount.d.ts +15 -0
- package/dist/types/AccountAbstraction/smartAccounts/KernelSmartAccount.d.ts +16 -0
- package/dist/types/AccountAbstraction/smartAccounts/LightSmartAccount.d.ts +15 -0
- package/dist/types/AccountAbstraction/smartAccounts/NexusSmartAccount.d.ts +15 -0
- package/dist/types/AccountAbstraction/smartAccounts/SafeSmartAccount.d.ts +16 -0
- package/dist/types/AccountAbstraction/smartAccounts/SimpleSmartAccount.d.ts +16 -0
- package/dist/types/AccountAbstraction/smartAccounts/TrustSmartAccount.d.ts +16 -0
- package/dist/types/AccountAbstraction/smartAccounts/index.d.ts +5 -0
- package/dist/types/Block/PollingBlockTracker.d.ts +2 -2
- package/dist/types/Currency/CurrencyController.d.ts +2 -2
- package/dist/types/Message/AddChainController.d.ts +3 -6
- package/dist/types/Message/MessageController.d.ts +5 -8
- package/dist/types/Message/PersonalMessageController.d.ts +5 -8
- package/dist/types/Message/SwitchChainController.d.ts +3 -6
- package/dist/types/Message/TypedMessageController.d.ts +3 -3
- package/dist/types/Message/types.d.ts +2 -0
- package/dist/types/Message/utils.d.ts +2 -1
- package/dist/types/Network/createEthereumMiddleware.d.ts +2 -2
- package/dist/types/Nfts/NftsController.d.ts +2 -2
- package/dist/types/Preferences/PreferencesController.d.ts +1 -1
- package/dist/types/Tokens/ITokensController.d.ts +4 -6
- package/dist/types/Tokens/TokenRatesController.d.ts +6 -14
- package/dist/types/Tokens/TokensController.d.ts +7 -7
- package/dist/types/Transaction/TransactionController.d.ts +2 -2
- package/dist/types/index.d.ts +2 -6
- package/dist/types/utils/constants.d.ts +8 -10
- package/dist/types/utils/helpers.d.ts +0 -3
- package/dist/types/utils/interfaces.d.ts +27 -2
- package/package.json +6 -4
- package/dist/lib.cjs/Message/AbstractMessageController.js +0 -107
- package/dist/lib.esm/Message/AbstractMessageController.js +0 -105
- package/dist/types/Message/AbstractMessageController.d.ts +0 -35
|
@@ -1,16 +1,13 @@
|
|
|
1
|
-
import { BaseConfig } from "@toruslabs/base-controllers";
|
|
1
|
+
import { AbstractMessageController, BaseConfig, MessageControllerState, UserRequestApprovalParams } from "@toruslabs/base-controllers";
|
|
2
2
|
import { JRPCRequest } from "@web3auth/auth";
|
|
3
|
-
import { NetworkController } from "../Network/NetworkController";
|
|
4
3
|
import { PreferencesController } from "../Preferences/PreferencesController";
|
|
5
|
-
import { SwitchChainMessage, SwitchChainMessageParams
|
|
6
|
-
import { AbstractMessageController, MessageControllerState } from "./AbstractMessageController";
|
|
4
|
+
import { SwitchChainMessage, SwitchChainMessageParams } from "../utils/interfaces";
|
|
7
5
|
export declare class SwitchChainController extends AbstractMessageController<SwitchChainMessage, SwitchChainMessageParams> {
|
|
8
6
|
name: string;
|
|
9
7
|
protected switchChain: PreferencesController["switchChain"];
|
|
10
|
-
constructor({ config, state,
|
|
8
|
+
constructor({ config, state, switchChain, }: {
|
|
11
9
|
config: Partial<BaseConfig>;
|
|
12
10
|
state: Partial<MessageControllerState<SwitchChainMessage>>;
|
|
13
|
-
getNetworkIdentifier: NetworkController["getNetworkIdentifier"];
|
|
14
11
|
switchChain: PreferencesController["switchChain"];
|
|
15
12
|
});
|
|
16
13
|
processSwitchChain(messageId: string): Promise<string>;
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import { BaseConfig } from "@toruslabs/base-controllers";
|
|
1
|
+
import { AbstractMessageController, BaseConfig, MessageControllerState, UserRequestApprovalParams } from "@toruslabs/base-controllers";
|
|
2
2
|
import { JRPCRequest } from "@web3auth/auth";
|
|
3
3
|
import { KeyringController } from "../Keyring/KeyringController";
|
|
4
4
|
import { NetworkController } from "../Network/NetworkController";
|
|
5
|
-
import { TypedMessage, TypedMessageParams
|
|
6
|
-
import { AbstractMessageController, MessageControllerState } from "./AbstractMessageController";
|
|
5
|
+
import { TypedMessage, TypedMessageParams } from "../utils/interfaces";
|
|
7
6
|
export declare class TypedMessageController extends AbstractMessageController<TypedMessage, TypedMessageParams> {
|
|
8
7
|
name: string;
|
|
9
8
|
protected signTypedData: KeyringController["signTypedData"];
|
|
9
|
+
private getNetworkIdentifier;
|
|
10
10
|
constructor({ config, state, signTypedData, getNetworkIdentifier, }: {
|
|
11
11
|
config: Partial<BaseConfig>;
|
|
12
12
|
state: Partial<MessageControllerState<TypedMessage>>;
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { MessageParams } from "@toruslabs/base-controllers";
|
|
2
|
+
import { AddChainMessageParams, SwitchChainMessageParams, TypedMessageParams } from "../utils/interfaces";
|
|
2
3
|
export declare function validateAddress(address: string, propertyName: string): void;
|
|
3
4
|
export declare function validateSignMessageData(messageData: MessageParams): void;
|
|
4
5
|
export declare function normalizeMessageData(data: string): string;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { InPageWalletProviderState } from "@toruslabs/base-controllers";
|
|
1
|
+
import { InPageWalletProviderState, MessageParams, UserRequestApprovalParams } from "@toruslabs/base-controllers";
|
|
2
2
|
import { JRPCEngineEndCallback, JRPCEngineNextCallback, JRPCMiddleware, JRPCRequest, JRPCResponse } from "@web3auth/auth";
|
|
3
|
-
import { AddChainMessageParams, BlockParams, EthereumTransactionMeta,
|
|
3
|
+
import { AddChainMessageParams, BlockParams, EthereumTransactionMeta, SwitchChainMessageParams, TransactionParams, TransactionRPCMeta, TypedMessageParams } from "../utils/interfaces";
|
|
4
4
|
export interface IProviderHandlers {
|
|
5
5
|
version: string;
|
|
6
6
|
requestAccounts?: (req: JRPCRequest<string[]>) => Promise<string[]>;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { BaseController, PreferencesState } from "@toruslabs/base-controllers";
|
|
1
|
+
import { BaseController, INftsController, PreferencesState } from "@toruslabs/base-controllers";
|
|
2
2
|
import { SafeEventEmitterProvider } from "@web3auth/auth";
|
|
3
3
|
import { PreferencesController } from "../Preferences/PreferencesController";
|
|
4
4
|
import { CustomNftInfo, EthereumNetworkState, ExtendedAddressPreferences } from "../utils/interfaces";
|
|
@@ -12,7 +12,7 @@ export interface INftsControllerOptions {
|
|
|
12
12
|
onPreferencesStateChange: (listener: (preferencesState: PreferencesState<ExtendedAddressPreferences>) => void) => void;
|
|
13
13
|
onNetworkStateChange: (listener: (networkState: EthereumNetworkState) => void) => void;
|
|
14
14
|
}
|
|
15
|
-
export declare class NftsController extends BaseController<NftsControllerConfig, NftsControllerState> {
|
|
15
|
+
export declare class NftsController extends BaseController<NftsControllerConfig, NftsControllerState> implements INftsController<NftsControllerConfig, NftsControllerState> {
|
|
16
16
|
name: string;
|
|
17
17
|
private provider;
|
|
18
18
|
private ethersProvider;
|
|
@@ -22,7 +22,7 @@ export declare class PreferencesController extends BasePreferencesController<Ext
|
|
|
22
22
|
poll(interval?: number): Promise<void>;
|
|
23
23
|
initPreferences(params: InitPreferencesParams): Promise<void>;
|
|
24
24
|
getSelectedAddress(): string;
|
|
25
|
-
sync(address: string): Promise<boolean>;
|
|
25
|
+
sync(address: string, eoaAddress?: string): Promise<boolean>;
|
|
26
26
|
patchNewTx(tx: TransactionPayload, address: string): Promise<void>;
|
|
27
27
|
recalculatePastTx(address?: string): void;
|
|
28
28
|
refetchEtherscanTx(address?: string): Promise<EtherscanTransaction[]>;
|
|
@@ -1,10 +1,8 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { TokensControllerConfig, TokensControllerState, UserAddress } from "@toruslabs/base-controllers";
|
|
2
2
|
import { CustomTokenInfo } from "../utils/interfaces";
|
|
3
|
-
export interface
|
|
4
|
-
interval?: number;
|
|
5
|
-
selectedAddress: string;
|
|
3
|
+
export interface EthereumTokensControllerConfig extends TokensControllerConfig {
|
|
6
4
|
chainId: string;
|
|
7
5
|
}
|
|
8
|
-
export interface
|
|
9
|
-
tokens: Record<
|
|
6
|
+
export interface EthereumTokensControllerState extends TokensControllerState {
|
|
7
|
+
tokens: Record<UserAddress, CustomTokenInfo[]>;
|
|
10
8
|
}
|
|
@@ -1,33 +1,25 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { BaseController, BaseTokenRatesControllerConfig, BaseTokenRatesControllerState, ITokenRatesController, PreferencesState } from "@toruslabs/base-controllers";
|
|
2
2
|
import { CustomTokenInfo, EthereumNetworkState, ExtendedAddressPreferences } from "../utils/interfaces";
|
|
3
|
-
import {
|
|
3
|
+
import { EthereumTokensControllerState } from "./ITokensController";
|
|
4
4
|
export interface CoinGeckoResponse {
|
|
5
5
|
[address: string]: {
|
|
6
6
|
[currency: string]: number;
|
|
7
7
|
};
|
|
8
8
|
}
|
|
9
|
-
export type ContractExchangeRates = Record<string, number | undefined>;
|
|
10
9
|
export declare const DEFAULT_CURRENCY = "eth";
|
|
11
|
-
export interface ITokenRatesControllerState extends
|
|
12
|
-
contractExchangeRates: ContractExchangeRates;
|
|
10
|
+
export interface ITokenRatesControllerState extends BaseTokenRatesControllerState {
|
|
13
11
|
}
|
|
14
|
-
export interface ITokenRatesControllerConfig extends
|
|
15
|
-
pollInterval: number;
|
|
16
|
-
api: string;
|
|
17
|
-
currencyApi: string;
|
|
18
|
-
chainId: string;
|
|
19
|
-
selectedAddress: string;
|
|
20
|
-
nativeCurrency: string;
|
|
12
|
+
export interface ITokenRatesControllerConfig extends BaseTokenRatesControllerConfig {
|
|
21
13
|
tokens: CustomTokenInfo[];
|
|
22
14
|
}
|
|
23
15
|
export interface TokenRatesControllerOptions {
|
|
24
16
|
config: Partial<ITokenRatesControllerConfig>;
|
|
25
17
|
state: Partial<ITokenRatesControllerState>;
|
|
26
18
|
onPreferencesStateChange: (listener: (preferencesState: PreferencesState<ExtendedAddressPreferences>) => void) => void;
|
|
27
|
-
onTokensStateChange: (listener: (tokensState:
|
|
19
|
+
onTokensStateChange: (listener: (tokensState: EthereumTokensControllerState) => void) => void;
|
|
28
20
|
onNetworkStateChange: (listener: (networkState: EthereumNetworkState) => void) => void;
|
|
29
21
|
}
|
|
30
|
-
export declare class TokenRatesController extends BaseController<ITokenRatesControllerConfig, ITokenRatesControllerState> {
|
|
22
|
+
export declare class TokenRatesController extends BaseController<ITokenRatesControllerConfig, ITokenRatesControllerState> implements ITokenRatesController<ITokenRatesControllerConfig, ITokenRatesControllerState> {
|
|
31
23
|
private conversionInterval;
|
|
32
24
|
constructor({ config, state, onPreferencesStateChange, onNetworkStateChange, onTokensStateChange }: TokenRatesControllerOptions);
|
|
33
25
|
/**
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import { BaseController, PreferencesState } from "@toruslabs/base-controllers";
|
|
1
|
+
import { BaseController, ITokensController, PreferencesState, UserAddress } from "@toruslabs/base-controllers";
|
|
2
2
|
import { SafeEventEmitterProvider } from "@web3auth/auth";
|
|
3
3
|
import { NetworkController } from "../Network/NetworkController";
|
|
4
4
|
import { PreferencesController } from "../Preferences/PreferencesController";
|
|
5
5
|
import { CustomTokenInfo, EthereumNetworkState, ExtendedAddressPreferences } from "../utils/interfaces";
|
|
6
|
-
import {
|
|
6
|
+
import { EthereumTokensControllerConfig, EthereumTokensControllerState } from "./ITokensController";
|
|
7
7
|
export interface ITokensControllerOptions {
|
|
8
|
-
config?: Partial<
|
|
9
|
-
state?: Partial<
|
|
8
|
+
config?: Partial<EthereumTokensControllerConfig>;
|
|
9
|
+
state?: Partial<EthereumTokensControllerState>;
|
|
10
10
|
provider: SafeEventEmitterProvider;
|
|
11
11
|
getCustomTokens?: PreferencesController["getCustomTokens"];
|
|
12
12
|
getEtherScanTokens: PreferencesController["getEtherScanTokens"];
|
|
@@ -14,7 +14,7 @@ export interface ITokensControllerOptions {
|
|
|
14
14
|
onPreferencesStateChange: (listener: (preferencesState: PreferencesState<ExtendedAddressPreferences>) => void) => void;
|
|
15
15
|
onNetworkStateChange: (listener: (networkState: EthereumNetworkState) => void) => void;
|
|
16
16
|
}
|
|
17
|
-
export declare class TokensController extends BaseController<
|
|
17
|
+
export declare class TokensController extends BaseController<EthereumTokensControllerConfig, EthereumTokensControllerState> implements ITokensController<EthereumTokensControllerConfig, EthereumTokensControllerState, CustomTokenInfo> {
|
|
18
18
|
name: string;
|
|
19
19
|
private provider;
|
|
20
20
|
private ethersProvider;
|
|
@@ -23,11 +23,11 @@ export declare class TokensController extends BaseController<TokensControllerCon
|
|
|
23
23
|
private getCustomTokens;
|
|
24
24
|
private getEtherScanTokens;
|
|
25
25
|
constructor({ config, state, provider, getCustomTokens, getEtherScanTokens, getProviderConfig, onPreferencesStateChange, onNetworkStateChange, }: ITokensControllerOptions);
|
|
26
|
-
get userSelectedAddress():
|
|
26
|
+
get userSelectedAddress(): UserAddress;
|
|
27
27
|
get userTokens(): CustomTokenInfo[];
|
|
28
28
|
get interval(): number;
|
|
29
29
|
set interval(interval: number);
|
|
30
|
-
startTokenDetection(selectedAddress:
|
|
30
|
+
startTokenDetection(selectedAddress: UserAddress): void;
|
|
31
31
|
/**
|
|
32
32
|
* Restart token detection polling period and call detectNewTokens
|
|
33
33
|
* in case of address change or user session initialization.
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import { ITransactionController, TransactionConfig, TransactionState, TX_CONFIRMED_EVENT_TYPE } from "@toruslabs/base-controllers";
|
|
1
|
+
import { ITransactionController, TransactionConfig, TransactionState, TX_CONFIRMED_EVENT_TYPE, UserRequestApprovalParams } from "@toruslabs/base-controllers";
|
|
2
2
|
import { JRPCRequest, SafeEventEmitterProvider } from "@web3auth/auth";
|
|
3
3
|
import { PollingBlockTracker } from "../Block/PollingBlockTracker";
|
|
4
4
|
import { GasFeeController } from "../Gas/GasFeeController";
|
|
5
5
|
import { KeyringController } from "../Keyring/KeyringController";
|
|
6
6
|
import { NetworkController } from "../Network/NetworkController";
|
|
7
7
|
import { PreferencesController } from "../Preferences/PreferencesController";
|
|
8
|
-
import { EthereumTransactionMeta, TransactionParams
|
|
8
|
+
import { EthereumTransactionMeta, TransactionParams } from "../utils/interfaces";
|
|
9
9
|
import { NonceTracker } from "./NonceTracker";
|
|
10
10
|
import { PendingTransactionTracker } from "./PendingTransactionTracker";
|
|
11
11
|
import { TransactionGasUtil } from "./TransactionGasUtil";
|
package/dist/types/index.d.ts
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
export { AccountTrackerController } from "./Account/AccountTrackerController";
|
|
2
|
+
export * from "./AccountAbstraction/AccountAbstractionController";
|
|
3
|
+
export * from "./AccountAbstraction/smartAccounts";
|
|
2
4
|
export { PollingBlockTracker } from "./Block/PollingBlockTracker";
|
|
3
5
|
export { CurrencyController } from "./Currency/CurrencyController";
|
|
4
6
|
export { GasFeeController } from "./Gas/GasFeeController";
|
|
5
7
|
export * from "./Gas/IGasFeeController";
|
|
6
8
|
export { KeyringController } from "./Keyring/KeyringController";
|
|
7
|
-
export * from "./Message/AbstractMessageController";
|
|
8
9
|
export * from "./Message/AddChainController";
|
|
9
10
|
export * from "./Message/MessageController";
|
|
10
11
|
export * from "./Message/PersonalMessageController";
|
|
@@ -34,11 +35,6 @@ export * from "./utils/constants";
|
|
|
34
35
|
export * from "./utils/conversionUtils";
|
|
35
36
|
export * from "./utils/helpers";
|
|
36
37
|
export * from "./utils/interfaces";
|
|
37
|
-
/**
|
|
38
|
-
* Pending controllers
|
|
39
|
-
* - Transaction Controllers
|
|
40
|
-
// * - AA Controller
|
|
41
|
-
*/
|
|
42
38
|
/**
|
|
43
39
|
* Backend apis
|
|
44
40
|
* - Preferences Controller
|
|
@@ -70,14 +70,12 @@ export declare const COINGECKO_PLATFORMS_CHAIN_CODE_MAP: Record<string, {
|
|
|
70
70
|
platform: string;
|
|
71
71
|
currency: string;
|
|
72
72
|
}>;
|
|
73
|
-
export declare const
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
export declare const MESSAGE_EVENTS: {
|
|
82
|
-
readonly UNAPPROVED_MESSAGE: "unapprovedMessage";
|
|
73
|
+
export declare const SMART_ACCOUNT: {
|
|
74
|
+
BICONOMY: string;
|
|
75
|
+
KERNEL: string;
|
|
76
|
+
SAFE: string;
|
|
77
|
+
TRUST: string;
|
|
78
|
+
LIGHT: string;
|
|
79
|
+
SIMPLE: string;
|
|
80
|
+
NEXUS: string;
|
|
83
81
|
};
|
|
@@ -16,9 +16,6 @@ export declare const formatPastTx: (params: {
|
|
|
16
16
|
export declare const getEthTxStatus: (hash: string, provider: SafeEventEmitterProvider) => Promise<TransactionStatus | undefined>;
|
|
17
17
|
export declare function formatDate(inputDate: string): string;
|
|
18
18
|
export declare function formatTime(time: number): string;
|
|
19
|
-
export declare const idleTimeTracker: {
|
|
20
|
-
checkIfIdle: () => boolean;
|
|
21
|
-
};
|
|
22
19
|
export declare function isAddressByChainId(address: string, _chainId: string): address is `0x${string}`;
|
|
23
20
|
export declare function toChecksumAddressByChainId(address: string, chainId: string): string;
|
|
24
21
|
export declare const GAS_LIMITS: {
|
|
@@ -1,8 +1,10 @@
|
|
|
1
|
-
import { AddressPreferences, BASE_TX_EVENT_TYPE, BaseBlockTrackerState, BaseControllerEvents, BaseTransactionEvents, NetworkConfig, NetworkState, PaymentTransaction, PollingBlockTrackerConfig, PopupWhitelabelData, ProviderConfig, TRANSACTION_TYPE, TransactionMeta, TransactionState, TransactionStatus, TX_CONFIRMED_EVENT_TYPE, TX_DROPPED_EVENT_TYPE, TX_EVENTS, TX_FAILED_EVENT_TYPE, TX_WARNING_EVENT_TYPE, User } from "@toruslabs/base-controllers";
|
|
1
|
+
import { AddressPreferences, BASE_TX_EVENT_TYPE, BaseBlockTrackerState, BaseControllerEvents, BaseTransactionEvents, MESSAGE_EVENTS, MessageStatus, NetworkConfig, NetworkState, PaymentTransaction, PollingBlockTrackerConfig, PopupWhitelabelData, ProviderConfig, TRANSACTION_TYPE, TransactionMeta, TransactionState, TransactionStatus, TX_CONFIRMED_EVENT_TYPE, TX_DROPPED_EVENT_TYPE, TX_EVENTS, TX_FAILED_EVENT_TYPE, TX_WARNING_EVENT_TYPE, User } from "@toruslabs/base-controllers";
|
|
2
2
|
import { JRPCRequest, Json } from "@web3auth/auth";
|
|
3
3
|
import { MutexInterface } from "async-mutex";
|
|
4
4
|
import { AccessList, TypedDataDomain, TypedDataField } from "ethers";
|
|
5
|
-
import {
|
|
5
|
+
import { Client, EIP1193Provider } from "viem";
|
|
6
|
+
import { createBundlerClient, createPaymasterClient, SmartAccount } from "viem/account-abstraction";
|
|
7
|
+
import { METHOD_TYPES, SMART_ACCOUNT, TRANSACTION_ENVELOPE_TYPES } from "./constants";
|
|
6
8
|
export type CustomTokenInfo = {
|
|
7
9
|
tokenAddress: string;
|
|
8
10
|
name: string;
|
|
@@ -460,3 +462,26 @@ export type EthereumTransactionEvents<T, U> = BaseTransactionEvents<TransactionS
|
|
|
460
462
|
[event: `${string}:unapproved`]: (txMeta: U) => void;
|
|
461
463
|
[event: `${string}:${Exclude<TransactionStatus, "unapproved">}`]: (txId: string) => void;
|
|
462
464
|
};
|
|
465
|
+
type Transport = Parameters<typeof createBundlerClient>[0]["transport"];
|
|
466
|
+
export type BundlerConfig = Omit<Parameters<typeof createBundlerClient>[0], "account" | "client" | "transport" | "paymaster"> & ({
|
|
467
|
+
url: string;
|
|
468
|
+
transport?: Transport;
|
|
469
|
+
} | {
|
|
470
|
+
url?: string;
|
|
471
|
+
transport: Transport;
|
|
472
|
+
});
|
|
473
|
+
export type PaymasterConfig = Omit<Parameters<typeof createPaymasterClient>[0], "transport"> & ({
|
|
474
|
+
url: string;
|
|
475
|
+
transport?: Transport;
|
|
476
|
+
} | {
|
|
477
|
+
url?: string;
|
|
478
|
+
transport: Transport;
|
|
479
|
+
});
|
|
480
|
+
export interface ISmartAccount {
|
|
481
|
+
getSmartAccount(params: {
|
|
482
|
+
owner: EIP1193Provider;
|
|
483
|
+
client: Client;
|
|
484
|
+
}): Promise<SmartAccount>;
|
|
485
|
+
}
|
|
486
|
+
export type SmartAccountType = (typeof SMART_ACCOUNT)[keyof typeof SMART_ACCOUNT];
|
|
487
|
+
export {};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@toruslabs/ethereum-controllers",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "7.0.0-alpha.0",
|
|
4
4
|
"homepage": "https://github.com/torusresearch/controllers#readme",
|
|
5
5
|
"license": "ISC",
|
|
6
6
|
"sideEffects": false,
|
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
},
|
|
22
22
|
"dependencies": {
|
|
23
23
|
"@ethereumjs/util": "^9.1.0",
|
|
24
|
-
"@toruslabs/base-controllers": "^
|
|
24
|
+
"@toruslabs/base-controllers": "^7.0.0-alpha.0",
|
|
25
25
|
"@toruslabs/http-helpers": "^7.0.0",
|
|
26
26
|
"@web3auth/auth": "^9.5.2",
|
|
27
27
|
"async-mutex": "^0.5.0",
|
|
@@ -32,7 +32,9 @@
|
|
|
32
32
|
"fast-json-patch": "^3.1.1",
|
|
33
33
|
"fast-safe-stringify": "^2.1.1",
|
|
34
34
|
"jsonschema": "^1.4.1",
|
|
35
|
-
"loglevel": "^1.9.2"
|
|
35
|
+
"loglevel": "^1.9.2",
|
|
36
|
+
"permissionless": "^0.2.14",
|
|
37
|
+
"viem": "^2.21.40"
|
|
36
38
|
},
|
|
37
39
|
"peerDependencies": {
|
|
38
40
|
"@babel/runtime": "7.x"
|
|
@@ -61,7 +63,7 @@
|
|
|
61
63
|
"publishConfig": {
|
|
62
64
|
"access": "public"
|
|
63
65
|
},
|
|
64
|
-
"gitHead": "
|
|
66
|
+
"gitHead": "8c4e3f3abfabb3ca69b37cd4db9cab78af1e2182",
|
|
65
67
|
"devDependencies": {
|
|
66
68
|
"@nomicfoundation/hardhat-chai-matchers": "^2.0.8",
|
|
67
69
|
"@nomicfoundation/hardhat-ethers": "^3.0.8",
|
|
@@ -1,107 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
var _defineProperty = require('@babel/runtime/helpers/defineProperty');
|
|
4
|
-
var baseControllers = require('@toruslabs/base-controllers');
|
|
5
|
-
var auth = require('@web3auth/auth');
|
|
6
|
-
var constants = require('../utils/constants.js');
|
|
7
|
-
|
|
8
|
-
class AbstractMessageController extends baseControllers.BaseController {
|
|
9
|
-
/**
|
|
10
|
-
* Controller in charge of managing - storing, adding, removing, updating - Messages.
|
|
11
|
-
*
|
|
12
|
-
*/
|
|
13
|
-
constructor({
|
|
14
|
-
config,
|
|
15
|
-
state,
|
|
16
|
-
getNetworkIdentifier
|
|
17
|
-
}) {
|
|
18
|
-
super({
|
|
19
|
-
config,
|
|
20
|
-
state
|
|
21
|
-
});
|
|
22
|
-
_defineProperty(this, "messages", void 0);
|
|
23
|
-
_defineProperty(this, "getNetworkIdentifier", void 0);
|
|
24
|
-
this.defaultState = {
|
|
25
|
-
unapprovedMessages: {},
|
|
26
|
-
unapprovedMessagesCount: 0
|
|
27
|
-
};
|
|
28
|
-
this.messages = [];
|
|
29
|
-
this.defaultConfig = {};
|
|
30
|
-
this.getNetworkIdentifier = getNetworkIdentifier;
|
|
31
|
-
super.initialize();
|
|
32
|
-
}
|
|
33
|
-
getMessage(messageId) {
|
|
34
|
-
return this.messages.find(message => message.id === messageId);
|
|
35
|
-
}
|
|
36
|
-
getAllMessages() {
|
|
37
|
-
return this.messages;
|
|
38
|
-
}
|
|
39
|
-
setMetadata(messageId, metadata) {
|
|
40
|
-
const message = this.getMessage(messageId);
|
|
41
|
-
if (!message) {
|
|
42
|
-
throw new Error(`${this.name}: Message not found for id: ${messageId}.`);
|
|
43
|
-
}
|
|
44
|
-
message.metadata = metadata;
|
|
45
|
-
this.updateMessage(message);
|
|
46
|
-
}
|
|
47
|
-
getUnapprovedMessages() {
|
|
48
|
-
return this.messages.filter(message => message.status === constants.MessageStatus.UNAPPROVED).reduce((result, message) => {
|
|
49
|
-
result[message.id] = message;
|
|
50
|
-
return result;
|
|
51
|
-
}, {});
|
|
52
|
-
}
|
|
53
|
-
async addMessage(message) {
|
|
54
|
-
this.messages.push(message);
|
|
55
|
-
this.saveMessageList();
|
|
56
|
-
}
|
|
57
|
-
approveMessage(messageId, messageParams) {
|
|
58
|
-
this.setMessageStatus(messageId, constants.MessageStatus.APPROVED);
|
|
59
|
-
return this.prepMessageForSigning(messageParams);
|
|
60
|
-
}
|
|
61
|
-
setMessageStatus(messageId, status) {
|
|
62
|
-
const message = this.getMessage(messageId);
|
|
63
|
-
if (!message) {
|
|
64
|
-
throw new Error(`${this.name}: Message not found for id: ${messageId}.`);
|
|
65
|
-
}
|
|
66
|
-
message.status = status;
|
|
67
|
-
this.updateMessage(message);
|
|
68
|
-
this.emit(`${messageId}:${status}`, message);
|
|
69
|
-
if (status === constants.MessageStatus.REJECTED || status === constants.MessageStatus.SIGNED || status === constants.MessageStatus.FAILED) {
|
|
70
|
-
this.emit(`${messageId}:finished`, message);
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
async waitForFinishStatus(msgParams, messageName) {
|
|
74
|
-
return new Promise((resolve, reject) => {
|
|
75
|
-
const handleFinished = msg => {
|
|
76
|
-
if (msg.status === constants.MessageStatus.REJECTED) {
|
|
77
|
-
return reject(auth.providerErrors.userRejectedRequest(`${messageName} Signature: User denied message signature`));
|
|
78
|
-
}
|
|
79
|
-
if (msg.status === constants.MessageStatus.FAILED) {
|
|
80
|
-
return reject(auth.rpcErrors.internal(`${messageName} Signature: failed to sign message ${msg.error}`));
|
|
81
|
-
}
|
|
82
|
-
if (msg.status === constants.MessageStatus.SIGNED) {
|
|
83
|
-
return resolve(msg.rawSig);
|
|
84
|
-
}
|
|
85
|
-
return reject(auth.rpcErrors.internal(`${messageName} Signature: Unknown problem: ${JSON.stringify(msgParams)}`));
|
|
86
|
-
};
|
|
87
|
-
this.once(`${msgParams.id}:finished`, handleFinished);
|
|
88
|
-
});
|
|
89
|
-
}
|
|
90
|
-
updateMessage(message) {
|
|
91
|
-
const index = this.messages.findIndex(msg => message.id === msg.id);
|
|
92
|
-
if (index !== -1) {
|
|
93
|
-
this.messages[index] = message;
|
|
94
|
-
}
|
|
95
|
-
this.saveMessageList();
|
|
96
|
-
}
|
|
97
|
-
saveMessageList() {
|
|
98
|
-
const unapprovedMessages = this.getUnapprovedMessages();
|
|
99
|
-
const unapprovedMessagesCount = Object.keys(unapprovedMessages).length;
|
|
100
|
-
this.update({
|
|
101
|
-
unapprovedMessages,
|
|
102
|
-
unapprovedMessagesCount
|
|
103
|
-
});
|
|
104
|
-
}
|
|
105
|
-
}
|
|
106
|
-
|
|
107
|
-
exports.AbstractMessageController = AbstractMessageController;
|
|
@@ -1,105 +0,0 @@
|
|
|
1
|
-
import _defineProperty from '@babel/runtime/helpers/defineProperty';
|
|
2
|
-
import { BaseController } from '@toruslabs/base-controllers';
|
|
3
|
-
import { providerErrors, rpcErrors } from '@web3auth/auth';
|
|
4
|
-
import { MessageStatus } from '../utils/constants.js';
|
|
5
|
-
|
|
6
|
-
class AbstractMessageController extends BaseController {
|
|
7
|
-
/**
|
|
8
|
-
* Controller in charge of managing - storing, adding, removing, updating - Messages.
|
|
9
|
-
*
|
|
10
|
-
*/
|
|
11
|
-
constructor({
|
|
12
|
-
config,
|
|
13
|
-
state,
|
|
14
|
-
getNetworkIdentifier
|
|
15
|
-
}) {
|
|
16
|
-
super({
|
|
17
|
-
config,
|
|
18
|
-
state
|
|
19
|
-
});
|
|
20
|
-
_defineProperty(this, "messages", void 0);
|
|
21
|
-
_defineProperty(this, "getNetworkIdentifier", void 0);
|
|
22
|
-
this.defaultState = {
|
|
23
|
-
unapprovedMessages: {},
|
|
24
|
-
unapprovedMessagesCount: 0
|
|
25
|
-
};
|
|
26
|
-
this.messages = [];
|
|
27
|
-
this.defaultConfig = {};
|
|
28
|
-
this.getNetworkIdentifier = getNetworkIdentifier;
|
|
29
|
-
super.initialize();
|
|
30
|
-
}
|
|
31
|
-
getMessage(messageId) {
|
|
32
|
-
return this.messages.find(message => message.id === messageId);
|
|
33
|
-
}
|
|
34
|
-
getAllMessages() {
|
|
35
|
-
return this.messages;
|
|
36
|
-
}
|
|
37
|
-
setMetadata(messageId, metadata) {
|
|
38
|
-
const message = this.getMessage(messageId);
|
|
39
|
-
if (!message) {
|
|
40
|
-
throw new Error(`${this.name}: Message not found for id: ${messageId}.`);
|
|
41
|
-
}
|
|
42
|
-
message.metadata = metadata;
|
|
43
|
-
this.updateMessage(message);
|
|
44
|
-
}
|
|
45
|
-
getUnapprovedMessages() {
|
|
46
|
-
return this.messages.filter(message => message.status === MessageStatus.UNAPPROVED).reduce((result, message) => {
|
|
47
|
-
result[message.id] = message;
|
|
48
|
-
return result;
|
|
49
|
-
}, {});
|
|
50
|
-
}
|
|
51
|
-
async addMessage(message) {
|
|
52
|
-
this.messages.push(message);
|
|
53
|
-
this.saveMessageList();
|
|
54
|
-
}
|
|
55
|
-
approveMessage(messageId, messageParams) {
|
|
56
|
-
this.setMessageStatus(messageId, MessageStatus.APPROVED);
|
|
57
|
-
return this.prepMessageForSigning(messageParams);
|
|
58
|
-
}
|
|
59
|
-
setMessageStatus(messageId, status) {
|
|
60
|
-
const message = this.getMessage(messageId);
|
|
61
|
-
if (!message) {
|
|
62
|
-
throw new Error(`${this.name}: Message not found for id: ${messageId}.`);
|
|
63
|
-
}
|
|
64
|
-
message.status = status;
|
|
65
|
-
this.updateMessage(message);
|
|
66
|
-
this.emit(`${messageId}:${status}`, message);
|
|
67
|
-
if (status === MessageStatus.REJECTED || status === MessageStatus.SIGNED || status === MessageStatus.FAILED) {
|
|
68
|
-
this.emit(`${messageId}:finished`, message);
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
async waitForFinishStatus(msgParams, messageName) {
|
|
72
|
-
return new Promise((resolve, reject) => {
|
|
73
|
-
const handleFinished = msg => {
|
|
74
|
-
if (msg.status === MessageStatus.REJECTED) {
|
|
75
|
-
return reject(providerErrors.userRejectedRequest(`${messageName} Signature: User denied message signature`));
|
|
76
|
-
}
|
|
77
|
-
if (msg.status === MessageStatus.FAILED) {
|
|
78
|
-
return reject(rpcErrors.internal(`${messageName} Signature: failed to sign message ${msg.error}`));
|
|
79
|
-
}
|
|
80
|
-
if (msg.status === MessageStatus.SIGNED) {
|
|
81
|
-
return resolve(msg.rawSig);
|
|
82
|
-
}
|
|
83
|
-
return reject(rpcErrors.internal(`${messageName} Signature: Unknown problem: ${JSON.stringify(msgParams)}`));
|
|
84
|
-
};
|
|
85
|
-
this.once(`${msgParams.id}:finished`, handleFinished);
|
|
86
|
-
});
|
|
87
|
-
}
|
|
88
|
-
updateMessage(message) {
|
|
89
|
-
const index = this.messages.findIndex(msg => message.id === msg.id);
|
|
90
|
-
if (index !== -1) {
|
|
91
|
-
this.messages[index] = message;
|
|
92
|
-
}
|
|
93
|
-
this.saveMessageList();
|
|
94
|
-
}
|
|
95
|
-
saveMessageList() {
|
|
96
|
-
const unapprovedMessages = this.getUnapprovedMessages();
|
|
97
|
-
const unapprovedMessagesCount = Object.keys(unapprovedMessages).length;
|
|
98
|
-
this.update({
|
|
99
|
-
unapprovedMessages,
|
|
100
|
-
unapprovedMessagesCount
|
|
101
|
-
});
|
|
102
|
-
}
|
|
103
|
-
}
|
|
104
|
-
|
|
105
|
-
export { AbstractMessageController };
|
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
import { BaseConfig, BaseController, BaseState } from "@toruslabs/base-controllers";
|
|
2
|
-
import { JRPCRequest, Json } from "@web3auth/auth";
|
|
3
|
-
import { NetworkController } from "../Network/NetworkController";
|
|
4
|
-
import { AbstractMessage, AbstractMessageControllerEvents, BaseRequestParams, MessageStatusType, UserRequestApprovalParams } from "../utils/interfaces";
|
|
5
|
-
export interface MessageControllerState<M extends AbstractMessage> extends BaseState {
|
|
6
|
-
unapprovedMessages: Record<string, M>;
|
|
7
|
-
unapprovedMessagesCount: number;
|
|
8
|
-
}
|
|
9
|
-
export declare abstract class AbstractMessageController<M extends AbstractMessage, P extends BaseRequestParams> extends BaseController<BaseConfig, MessageControllerState<M>, AbstractMessageControllerEvents<MessageControllerState<M>, M>> {
|
|
10
|
-
protected messages: M[];
|
|
11
|
-
protected getNetworkIdentifier: NetworkController["getNetworkIdentifier"];
|
|
12
|
-
/**
|
|
13
|
-
* Controller in charge of managing - storing, adding, removing, updating - Messages.
|
|
14
|
-
*
|
|
15
|
-
*/
|
|
16
|
-
constructor({ config, state, getNetworkIdentifier, }: {
|
|
17
|
-
config?: Partial<BaseConfig>;
|
|
18
|
-
state?: Partial<MessageControllerState<M>>;
|
|
19
|
-
getNetworkIdentifier: NetworkController["getNetworkIdentifier"];
|
|
20
|
-
});
|
|
21
|
-
getMessage(messageId: string): M;
|
|
22
|
-
getAllMessages(): M[];
|
|
23
|
-
setMetadata(messageId: string, metadata: Json): void;
|
|
24
|
-
getUnapprovedMessages(): {
|
|
25
|
-
[key: string]: M;
|
|
26
|
-
};
|
|
27
|
-
addMessage(message: M): Promise<void>;
|
|
28
|
-
approveMessage(messageId: string, messageParams: P): Promise<P>;
|
|
29
|
-
setMessageStatus(messageId: string, status: MessageStatusType): void;
|
|
30
|
-
waitForFinishStatus(msgParams: P, messageName: string): Promise<string>;
|
|
31
|
-
protected updateMessage(message: M): void;
|
|
32
|
-
protected saveMessageList(): void;
|
|
33
|
-
abstract prepMessageForSigning(messageParams: P): Promise<P>;
|
|
34
|
-
abstract addUnapprovedMessage(messageParams: P, request: JRPCRequest<P> & UserRequestApprovalParams): Promise<string>;
|
|
35
|
-
}
|