@0xsequence/provider 1.0.4 → 1.1.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/0xsequence-provider.cjs.d.ts +1 -0
- package/dist/0xsequence-provider.cjs.d.ts.map +1 -0
- package/dist/0xsequence-provider.cjs.dev.js +1742 -1678
- package/dist/0xsequence-provider.cjs.prod.js +1742 -1678
- package/dist/0xsequence-provider.esm.js +1735 -1676
- package/dist/declarations/src/client.d.ts +74 -0
- package/dist/declarations/src/index.d.ts +7 -5
- package/dist/declarations/src/init.d.ts +25 -0
- package/dist/declarations/src/provider.d.ts +127 -63
- package/dist/declarations/src/signer.d.ts +87 -0
- package/dist/declarations/src/transports/base-provider-transport.d.ts +1 -1
- package/dist/declarations/src/transports/base-wallet-transport.d.ts +2 -2
- package/dist/declarations/src/transports/extension-transport/base-injected-transport.d.ts +1 -1
- package/dist/declarations/src/transports/extension-transport/extension-message-handler.d.ts +3 -3
- package/dist/declarations/src/transports/extension-transport/extension-message-provider.d.ts +2 -2
- package/dist/declarations/src/transports/extension-transport/index.d.ts +3 -3
- package/dist/declarations/src/transports/index.d.ts +8 -8
- package/dist/declarations/src/transports/mux-transport/index.d.ts +1 -1
- package/dist/declarations/src/transports/mux-transport/mux-message-provider.d.ts +22 -1
- package/dist/declarations/src/transports/proxy-transport/index.d.ts +3 -3
- package/dist/declarations/src/transports/proxy-transport/proxy-message-channel.d.ts +1 -1
- package/dist/declarations/src/transports/proxy-transport/proxy-message-handler.d.ts +4 -4
- package/dist/declarations/src/transports/proxy-transport/proxy-message-provider.d.ts +3 -3
- package/dist/declarations/src/transports/unreal-transport/index.d.ts +2 -2
- package/dist/declarations/src/transports/unreal-transport/unreal-message-handler.d.ts +3 -3
- package/dist/declarations/src/transports/unreal-transport/unreal-message-provider.d.ts +2 -2
- package/dist/declarations/src/transports/wallet-request-handler.d.ts +1 -2
- package/dist/declarations/src/transports/window-transport/index.d.ts +2 -2
- package/dist/declarations/src/transports/window-transport/window-message-handler.d.ts +3 -3
- package/dist/declarations/src/transports/window-transport/window-message-provider.d.ts +2 -2
- package/dist/declarations/src/types.d.ts +25 -9
- package/dist/declarations/src/utils/index.d.ts +10 -7
- package/dist/declarations/src/utils.d.ts +21 -15
- package/package.json +19 -12
- package/src/client.ts +423 -0
- package/src/extended.ts +4 -0
- package/src/index.ts +3 -1
- package/src/init.ts +134 -0
- package/src/provider.ts +447 -424
- package/src/signer.ts +316 -0
- package/src/transports/base-wallet-transport.ts +3 -8
- package/src/transports/mux-transport/mux-message-provider.ts +86 -2
- package/src/transports/proxy-transport/proxy-message-provider.ts +1 -1
- package/src/transports/wallet-request-handler.ts +3 -33
- package/src/transports/window-transport/window-message-provider.ts +4 -2
- package/src/types.ts +41 -10
- package/src/utils/index.ts +16 -76
- package/src/utils.ts +81 -51
- package/dist/declarations/src/eip191exceptions.d.ts +0 -3
- package/dist/declarations/src/extended.d.ts +0 -6
- package/dist/declarations/src/transports/unreal-transport/overridelogs.d.ts +0 -4
- package/dist/declarations/src/wallet.d.ts +0 -105
- package/src/wallet.ts +0 -770
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import { JsonRpcRequest, NetworkConfig } from "@0xsequence/network";
|
|
2
|
+
import { ConnectDetails, ConnectOptions, ItemStore, MuxTransportTemplate, OpenWalletIntent, OptionalChainId, OptionalEIP6492, ProviderTransport, WalletEventTypes, WalletSession } from "./index.js";
|
|
3
|
+
import { commons } from "@0xsequence/core";
|
|
4
|
+
import { TypedData } from "@0xsequence/utils";
|
|
5
|
+
import { ethers } from "ethers";
|
|
6
|
+
/**
|
|
7
|
+
* This session class is meant to persist the state of the wallet connection
|
|
8
|
+
* whitin the dapp. This enables the client to retain the wallet address (and some more)
|
|
9
|
+
* even if the user refreshes the page. Otherwise we would have to open the popup again.
|
|
10
|
+
*/
|
|
11
|
+
export declare class SequenceClientSession {
|
|
12
|
+
private store;
|
|
13
|
+
static readonly SESSION_LOCALSTORE_KEY = "@sequence.session";
|
|
14
|
+
constructor(store: ItemStore);
|
|
15
|
+
connectedSession(): Required<WalletSession>;
|
|
16
|
+
hasSession(): boolean;
|
|
17
|
+
setSession(session: WalletSession): void;
|
|
18
|
+
getSession(): WalletSession | undefined;
|
|
19
|
+
clearSession(): Promise<void>;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* The wallet webapp doesn't really care what's the "default chain" for the user.
|
|
23
|
+
* so we don't even bother to send this information to the wallet. Instead, we
|
|
24
|
+
* track it locally using storage, that way the data stays always in sync.
|
|
25
|
+
*/
|
|
26
|
+
export declare class DefaultChainIdTracker {
|
|
27
|
+
private store;
|
|
28
|
+
private startingChainId;
|
|
29
|
+
static readonly SESSION_CHAIN_ID_KEY = "@sequence.session.defaultChainId";
|
|
30
|
+
callbacks: ((chainId: number) => void)[];
|
|
31
|
+
constructor(store: ItemStore, startingChainId?: number);
|
|
32
|
+
onDefaultChainIdChanged(callback: (chainId: number) => void): () => void;
|
|
33
|
+
setDefaultChainId(chainId: number): void;
|
|
34
|
+
getDefaultChainId(): number;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* This is a wallet client for sequence wallet-webapp. It connects using *some* transport
|
|
38
|
+
* and it allows to perform all sequence specific (or write) operations related to the wallet.
|
|
39
|
+
*
|
|
40
|
+
* It doesn't implement a full ethereum Provider, it doesn't include read-only methods.
|
|
41
|
+
*/
|
|
42
|
+
export declare class SequenceClient {
|
|
43
|
+
private readonly session;
|
|
44
|
+
private readonly defaultChainId;
|
|
45
|
+
private readonly callbacks;
|
|
46
|
+
readonly transport: ProviderTransport;
|
|
47
|
+
constructor(transport: ProviderTransport | MuxTransportTemplate, store: ItemStore, defaultChainId?: number);
|
|
48
|
+
registerCallback<K extends keyof WalletEventTypes>(eventName: K, callback: WalletEventTypes[K]): () => void;
|
|
49
|
+
onOpen(callback: WalletEventTypes['open']): () => void;
|
|
50
|
+
onClose(callback: WalletEventTypes['close']): () => void;
|
|
51
|
+
onConnect(callback: WalletEventTypes['connect']): () => void;
|
|
52
|
+
onDisconnect(callback: WalletEventTypes['disconnect']): () => void;
|
|
53
|
+
onNetworks(callback: WalletEventTypes['networks']): () => void;
|
|
54
|
+
onAccountsChanged(callback: WalletEventTypes['accountsChanged']): () => void;
|
|
55
|
+
onWalletContext(callback: WalletEventTypes['walletContext']): () => void;
|
|
56
|
+
onDefaultChainIdChanged(callback: WalletEventTypes['chainChanged']): () => void;
|
|
57
|
+
getChainId(): number;
|
|
58
|
+
setDefaultChainId(chainId: number): void;
|
|
59
|
+
openWallet(path?: string, intent?: OpenWalletIntent): Promise<boolean>;
|
|
60
|
+
closeWallet(): void;
|
|
61
|
+
isOpened(): boolean;
|
|
62
|
+
isConnected(): boolean;
|
|
63
|
+
getSession(): WalletSession | undefined;
|
|
64
|
+
getAddress(): string;
|
|
65
|
+
connect(options: ConnectOptions): Promise<ConnectDetails>;
|
|
66
|
+
disconnect(): Promise<void>;
|
|
67
|
+
send(request: JsonRpcRequest, chainId?: number): Promise<any>;
|
|
68
|
+
getNetworks(pull?: boolean): Promise<NetworkConfig[]>;
|
|
69
|
+
signMessage(message: ethers.BytesLike, options?: OptionalEIP6492 & OptionalChainId): Promise<string>;
|
|
70
|
+
signTypedData(typedData: TypedData, options?: OptionalEIP6492 & OptionalChainId): Promise<string>;
|
|
71
|
+
sendTransaction(tx: (ethers.providers.TransactionRequest[] | ethers.providers.TransactionRequest), options?: OptionalChainId): Promise<string>;
|
|
72
|
+
getWalletContext(): Promise<commons.context.VersionedContext>;
|
|
73
|
+
getOnchainWalletConfig(options?: OptionalChainId): Promise<commons.config.Config>;
|
|
74
|
+
}
|
|
@@ -1,5 +1,7 @@
|
|
|
1
|
-
export * from
|
|
2
|
-
export * from
|
|
3
|
-
export * from
|
|
4
|
-
export * from
|
|
5
|
-
export * from
|
|
1
|
+
export * from "./transports/index.js";
|
|
2
|
+
export * from "./types.js";
|
|
3
|
+
export * from "./provider.js";
|
|
4
|
+
export * from "./utils.js";
|
|
5
|
+
export * from "./client.js";
|
|
6
|
+
export * from "./signer.js";
|
|
7
|
+
export * from "./init.js";
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { ChainIdLike, NetworkConfig } from "@0xsequence/network";
|
|
2
|
+
import { MuxTransportTemplate } from "./transports/index.js";
|
|
3
|
+
import { ItemStore } from "./utils.js";
|
|
4
|
+
import { SequenceProvider } from "./provider.js";
|
|
5
|
+
export interface ProviderConfig {
|
|
6
|
+
localStorage?: ItemStore;
|
|
7
|
+
defaultNetwork?: ChainIdLike;
|
|
8
|
+
networks?: Partial<NetworkConfig>[];
|
|
9
|
+
transports?: MuxTransportTemplate;
|
|
10
|
+
}
|
|
11
|
+
export declare const DefaultProviderConfig: {
|
|
12
|
+
transports: {
|
|
13
|
+
walletAppURL: string;
|
|
14
|
+
windowTransport: {
|
|
15
|
+
enabled: boolean;
|
|
16
|
+
};
|
|
17
|
+
proxyTransport: {
|
|
18
|
+
enabled: boolean;
|
|
19
|
+
};
|
|
20
|
+
};
|
|
21
|
+
defaultNetwork: number;
|
|
22
|
+
};
|
|
23
|
+
export declare const initWallet: (partialConfig?: Partial<ProviderConfig>) => SequenceProvider;
|
|
24
|
+
export declare const unregisterWallet: () => void;
|
|
25
|
+
export declare const getWallet: () => SequenceProvider;
|
|
@@ -1,68 +1,132 @@
|
|
|
1
|
-
import { ethers
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
send(method: string, params: Array<any>, chainId?: number): Promise<any>;
|
|
17
|
-
request(request: {
|
|
18
|
-
method: string;
|
|
19
|
-
params?: Array<any>;
|
|
20
|
-
chainId?: number;
|
|
21
|
-
}): Promise<any>;
|
|
22
|
-
getSigner(): Web3Signer;
|
|
23
|
-
getChainId(): Promise<number>;
|
|
1
|
+
import { ethers } from "ethers";
|
|
2
|
+
import { SequenceClient } from "./client.js";
|
|
3
|
+
import { ChainIdLike, NetworkConfig } from "@0xsequence/network";
|
|
4
|
+
import { ConnectDetails, ConnectOptions, EIP1193Provider, OpenWalletIntent, OptionalChainIdLike, WalletSession } from "./types.js";
|
|
5
|
+
import { commons } from "@0xsequence/core";
|
|
6
|
+
import { WalletUtils } from "./utils/index.js";
|
|
7
|
+
import { SequenceSigner, SingleNetworkSequenceSigner } from "./signer.js";
|
|
8
|
+
export interface ISequenceProvider {
|
|
9
|
+
readonly _isSequenceProvider: true;
|
|
10
|
+
connect(options?: ConnectOptions): Promise<ConnectDetails>;
|
|
11
|
+
disconnect(): void;
|
|
12
|
+
isConnected(): boolean;
|
|
13
|
+
getSession(): WalletSession | undefined;
|
|
14
|
+
listAccounts(): string[];
|
|
15
|
+
getAddress(): string;
|
|
24
16
|
getNetworks(): Promise<NetworkConfig[]>;
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
constructor(provider: Web3Provider, defaultChainId?: number);
|
|
37
|
-
_address: string;
|
|
38
|
-
_index: number;
|
|
39
|
-
_context: commons.context.VersionedContext;
|
|
40
|
-
_networks: NetworkConfig[];
|
|
41
|
-
private _providers;
|
|
42
|
-
getAddress(): Promise<string>;
|
|
43
|
-
signTransaction(transaction: Deferrable<ethers.providers.TransactionRequest>): Promise<string>;
|
|
44
|
-
connect(provider: ethers.providers.Provider): ethers.providers.JsonRpcSigner;
|
|
45
|
-
getProvider(chainId?: number): Promise<Web3Provider | undefined>;
|
|
46
|
-
getSender(chainId?: number): Promise<Web3Provider | undefined>;
|
|
47
|
-
getRelayer(chainId?: number): Promise<Relayer | undefined>;
|
|
17
|
+
getChainId(): number;
|
|
18
|
+
setDefaultChainId(chainId: ChainIdLike): void;
|
|
19
|
+
isOpened(): boolean;
|
|
20
|
+
openWallet(path?: string, intent?: OpenWalletIntent): Promise<boolean>;
|
|
21
|
+
closeWallet(): void;
|
|
22
|
+
getProvider(): SequenceProvider;
|
|
23
|
+
getProvider(chainId: ChainIdLike): SingleNetworkSequenceProvider;
|
|
24
|
+
getProvider(chainId?: ChainIdLike): SequenceProvider | SingleNetworkSequenceProvider;
|
|
25
|
+
getSigner(): SequenceSigner;
|
|
26
|
+
getSigner(chainId: ChainIdLike): SingleNetworkSequenceSigner;
|
|
27
|
+
getSigner(chainId?: ChainIdLike): SequenceSigner | SingleNetworkSequenceSigner;
|
|
48
28
|
getWalletContext(): Promise<commons.context.VersionedContext>;
|
|
49
29
|
getWalletConfig(chainId?: ChainIdLike): Promise<commons.config.Config>;
|
|
50
|
-
|
|
30
|
+
utils: WalletUtils;
|
|
31
|
+
}
|
|
32
|
+
export declare class SequenceProvider extends ethers.providers.BaseProvider implements ISequenceProvider, EIP1193Provider {
|
|
33
|
+
readonly client: SequenceClient;
|
|
34
|
+
private readonly providerFor;
|
|
35
|
+
readonly networks: NetworkConfig[];
|
|
36
|
+
private readonly singleNetworkProviders;
|
|
37
|
+
readonly _isSequenceProvider = true;
|
|
38
|
+
readonly utils: WalletUtils;
|
|
39
|
+
readonly signer: SequenceSigner;
|
|
40
|
+
constructor(client: SequenceClient, providerFor: (networkId: number) => ethers.providers.JsonRpcProvider, networks?: NetworkConfig[]);
|
|
41
|
+
getSigner(): SequenceSigner;
|
|
42
|
+
getSigner(chainId: ChainIdLike): SingleNetworkSequenceSigner;
|
|
43
|
+
getSigner(chainId?: ChainIdLike): SequenceSigner | SingleNetworkSequenceSigner;
|
|
44
|
+
connect(options: ConnectOptions): Promise<ConnectDetails>;
|
|
45
|
+
disconnect(): Promise<void>;
|
|
46
|
+
isConnected(): boolean;
|
|
47
|
+
getSession(): WalletSession | undefined;
|
|
48
|
+
listAccounts(): string[];
|
|
49
|
+
getAddress(): string;
|
|
51
50
|
getNetworks(): Promise<NetworkConfig[]>;
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
51
|
+
getChainId(): number;
|
|
52
|
+
setDefaultChainId(chainId: ChainIdLike): void;
|
|
53
|
+
isOpened(): boolean;
|
|
54
|
+
closeWallet(): void;
|
|
55
|
+
getWalletContext(): Promise<commons.context.VersionedContext>;
|
|
56
|
+
getWalletConfig(chainId?: ChainIdLike): Promise<commons.config.Config>;
|
|
57
|
+
authorize(options: ConnectOptions): Promise<ConnectDetails>;
|
|
58
|
+
openWallet(path?: string, intent?: OpenWalletIntent): Promise<boolean>;
|
|
59
|
+
toChainId(chainId: ChainIdLike): number;
|
|
60
|
+
toChainId(chainId?: ChainIdLike): number | undefined;
|
|
61
|
+
/**
|
|
62
|
+
* Resolves the chainId to use for the given request. If no chainId is provided,
|
|
63
|
+
* it uses the chainId defined by the client (default chainId). This can be
|
|
64
|
+
* overriden to build a single-network SequenceProvider.
|
|
65
|
+
*/
|
|
66
|
+
protected useChainId(chainId?: ChainIdLike): Promise<number>;
|
|
67
|
+
/**
|
|
68
|
+
* This generates a provider that ONLY works for the given chainId.
|
|
69
|
+
* the generated provider can't switch networks, and can't handle requests
|
|
70
|
+
* for other networks.
|
|
71
|
+
*/
|
|
72
|
+
getProvider(): SequenceProvider;
|
|
73
|
+
getProvider(chainId: ChainIdLike): SingleNetworkSequenceProvider;
|
|
74
|
+
getProvider(chainId?: ChainIdLike): SequenceProvider | SingleNetworkSequenceProvider;
|
|
75
|
+
/**
|
|
76
|
+
* This returns a subprovider, this is a regular non-sequence provider that
|
|
77
|
+
* can be used to fulfill read only requests on a given network.
|
|
78
|
+
*/
|
|
79
|
+
_getSubprovider(chainId?: ChainIdLike): Promise<ethers.providers.JsonRpcProvider>;
|
|
80
|
+
perform(method: string, params: any): Promise<any>;
|
|
81
|
+
send(method: string, params: any): Promise<any>;
|
|
82
|
+
request(request: {
|
|
83
|
+
method: string;
|
|
84
|
+
params?: any[] | undefined;
|
|
85
|
+
}): Promise<any>;
|
|
86
|
+
detectNetwork(): Promise<ethers.providers.Network>;
|
|
87
|
+
waitForTransaction(transactionHash: string, confirmations?: number, timeout?: number, optionals?: OptionalChainIdLike): Promise<ethers.providers.TransactionReceipt>;
|
|
88
|
+
getBlockNumber(optionals?: OptionalChainIdLike): Promise<number>;
|
|
89
|
+
getGasPrice(optionals?: OptionalChainIdLike): Promise<ethers.BigNumber>;
|
|
90
|
+
getBalance(addressOrName: string | Promise<string>, blockTag?: ethers.providers.BlockTag | Promise<ethers.providers.BlockTag>, optionals?: OptionalChainIdLike): Promise<ethers.BigNumber>;
|
|
91
|
+
getTransactionCount(addressOrName: string | Promise<string>, blockTag?: ethers.providers.BlockTag | Promise<ethers.providers.BlockTag>, optionals?: OptionalChainIdLike): Promise<number>;
|
|
92
|
+
getCode(addressOrName: string | Promise<string>, blockTag?: ethers.providers.BlockTag | Promise<ethers.providers.BlockTag>, optionals?: OptionalChainIdLike): Promise<string>;
|
|
93
|
+
getStorageAt(addressOrName: string | Promise<string>, position: ethers.BigNumberish | Promise<ethers.BigNumberish>, blockTag?: ethers.providers.BlockTag | Promise<ethers.providers.BlockTag>, optionals?: OptionalChainIdLike): Promise<string>;
|
|
94
|
+
call(transaction: ethers.utils.Deferrable<ethers.providers.TransactionRequest>, blockTag?: ethers.providers.BlockTag | Promise<ethers.providers.BlockTag>, optionals?: OptionalChainIdLike): Promise<string>;
|
|
95
|
+
estimateGas(transaction: ethers.utils.Deferrable<ethers.providers.TransactionRequest>, optionals?: OptionalChainIdLike): Promise<ethers.BigNumber>;
|
|
96
|
+
getBlock(blockHashOrBlockTag: ethers.providers.BlockTag | string | Promise<ethers.providers.BlockTag | string>, optionals?: OptionalChainIdLike): Promise<ethers.providers.Block>;
|
|
97
|
+
getTransaction(transactionHash: string | Promise<string>, optionals?: OptionalChainIdLike): Promise<ethers.providers.TransactionResponse>;
|
|
98
|
+
getLogs(filter: ethers.providers.Filter | Promise<ethers.providers.Filter>, optionals?: OptionalChainIdLike): Promise<ethers.providers.Log[]>;
|
|
99
|
+
supportsENS(): Promise<boolean>;
|
|
100
|
+
getResolver(name: string): Promise<ethers.providers.Resolver | null>;
|
|
101
|
+
resolveName(name: string | Promise<string>): Promise<string | null>;
|
|
102
|
+
lookupAddress(address: string | Promise<string>): Promise<string | null>;
|
|
103
|
+
getAvatar(nameOrAddress: string): Promise<string | null>;
|
|
104
|
+
static is: (provider: any) => provider is SequenceProvider;
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* This is the same provider, but it only allows a single network at a time.
|
|
108
|
+
* the network defined by the constructor is the only one that can be used.
|
|
109
|
+
*
|
|
110
|
+
* Attempting to call any method with a different network will throw an error.
|
|
111
|
+
* Attempting to change the network of this provider will throw an error.
|
|
112
|
+
*
|
|
113
|
+
* NOTICE: These networks won't support ENS unless they are the mainnet.
|
|
114
|
+
*/
|
|
115
|
+
export declare class SingleNetworkSequenceProvider extends SequenceProvider {
|
|
116
|
+
readonly chainId: ChainIdLike;
|
|
117
|
+
readonly _isSingleNetworkSequenceProvider = true;
|
|
118
|
+
constructor(client: SequenceClient, providerFor: (networkId: number) => ethers.providers.JsonRpcProvider, chainId: ChainIdLike);
|
|
119
|
+
private _useChainId;
|
|
120
|
+
protected useChainId(chainId?: ChainIdLike): Promise<number>;
|
|
121
|
+
getChainId(): number;
|
|
122
|
+
getNetwork(): Promise<NetworkConfig>;
|
|
123
|
+
/**
|
|
124
|
+
* Override getProvider and getSigner so they always use `useChainId`
|
|
125
|
+
* this way they can't return providers and signers that can switch networks,
|
|
126
|
+
* or that don't match the chainId of this signer.
|
|
127
|
+
*/
|
|
128
|
+
getProvider(chainId?: ChainIdLike): SingleNetworkSequenceProvider;
|
|
129
|
+
getSigner(chainId?: ChainIdLike): SingleNetworkSequenceSigner;
|
|
130
|
+
setDefaultChainId(_chainId: ChainIdLike): void;
|
|
131
|
+
static is(cand: any): cand is SingleNetworkSequenceProvider;
|
|
67
132
|
}
|
|
68
|
-
export {};
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
import { ethers } from "ethers";
|
|
2
|
+
import { SequenceProvider, SingleNetworkSequenceProvider } from "./provider.js";
|
|
3
|
+
import { SequenceClient } from "./client.js";
|
|
4
|
+
import { commons } from "@0xsequence/core";
|
|
5
|
+
import { ChainIdLike, NetworkConfig } from "@0xsequence/network";
|
|
6
|
+
import { WalletUtils } from "./utils/index.js";
|
|
7
|
+
import { OptionalChainIdLike, OptionalEIP6492 } from "./types.js";
|
|
8
|
+
export interface ISequenceSigner extends ethers.Signer {
|
|
9
|
+
getProvider(): SequenceProvider;
|
|
10
|
+
getProvider(chainId: ChainIdLike): SingleNetworkSequenceProvider;
|
|
11
|
+
getProvider(chainId?: ChainIdLike): SequenceProvider | SingleNetworkSequenceProvider;
|
|
12
|
+
getSigner(): SequenceSigner;
|
|
13
|
+
getSigner(chainId: ChainIdLike): SingleNetworkSequenceSigner;
|
|
14
|
+
getSigner(chainId?: ChainIdLike): SequenceSigner | SingleNetworkSequenceSigner;
|
|
15
|
+
getWalletConfig(chainId?: ChainIdLike): Promise<commons.config.Config>;
|
|
16
|
+
getNetworks(): Promise<NetworkConfig[]>;
|
|
17
|
+
signMessage(message: ethers.BytesLike, options?: OptionalChainIdLike & OptionalEIP6492): Promise<string>;
|
|
18
|
+
signTypedData(domain: ethers.TypedDataDomain, types: Record<string, Array<ethers.TypedDataField>>, message: Record<string, any>, options?: OptionalChainIdLike & OptionalEIP6492): Promise<string>;
|
|
19
|
+
sendTransaction(transaction: (ethers.utils.Deferrable<ethers.providers.TransactionRequest>[] | ethers.utils.Deferrable<ethers.providers.TransactionRequest>), options?: OptionalChainIdLike): Promise<commons.transaction.TransactionResponse>;
|
|
20
|
+
utils: WalletUtils;
|
|
21
|
+
}
|
|
22
|
+
export declare class SequenceSigner implements ISequenceSigner {
|
|
23
|
+
client: SequenceClient;
|
|
24
|
+
provider: SequenceProvider;
|
|
25
|
+
private readonly singleNetworkSigners;
|
|
26
|
+
readonly _isSigner: boolean;
|
|
27
|
+
readonly _isSequenceSigner: boolean;
|
|
28
|
+
get utils(): WalletUtils;
|
|
29
|
+
constructor(client: SequenceClient, provider: SequenceProvider);
|
|
30
|
+
getAddress(): Promise<string>;
|
|
31
|
+
connect(provider: ethers.providers.Provider): SequenceSigner;
|
|
32
|
+
getSigner(): SequenceSigner;
|
|
33
|
+
getSigner(chainId: ChainIdLike): SingleNetworkSequenceSigner;
|
|
34
|
+
getSigner(chainId?: ChainIdLike): SingleNetworkSequenceSigner | SequenceSigner;
|
|
35
|
+
/**
|
|
36
|
+
* Resolves the chainId to use for the given request. If no chainId is provided,
|
|
37
|
+
* it uses the chainId defined by the client (default chainId). This can be
|
|
38
|
+
* overriden to build a single-network SequenceProvider.
|
|
39
|
+
*/
|
|
40
|
+
protected useChainId(chainId?: ChainIdLike): number;
|
|
41
|
+
signMessage(message: ethers.BytesLike, options?: OptionalChainIdLike & OptionalEIP6492): Promise<string>;
|
|
42
|
+
signTypedData(domain: ethers.TypedDataDomain, types: Record<string, Array<ethers.TypedDataField>>, message: Record<string, any>, options?: OptionalChainIdLike & OptionalEIP6492): Promise<string>;
|
|
43
|
+
getProvider(): SequenceProvider;
|
|
44
|
+
getProvider(chainId: ChainIdLike): SingleNetworkSequenceProvider;
|
|
45
|
+
getProvider(chainId?: ChainIdLike): SingleNetworkSequenceProvider | SequenceProvider;
|
|
46
|
+
sendTransaction(transaction: (ethers.utils.Deferrable<ethers.providers.TransactionRequest>[] | ethers.utils.Deferrable<ethers.providers.TransactionRequest>), options?: OptionalChainIdLike): Promise<ethers.providers.TransactionResponse>;
|
|
47
|
+
getWalletConfig(chainId?: ChainIdLike | undefined): Promise<commons.config.Config>;
|
|
48
|
+
getNetworks(): Promise<NetworkConfig[]>;
|
|
49
|
+
getBalance(blockTag?: ethers.providers.BlockTag | undefined, optionals?: OptionalChainIdLike): Promise<ethers.BigNumber>;
|
|
50
|
+
estimateGas(transaction: ethers.utils.Deferrable<ethers.providers.TransactionRequest>, optionals?: OptionalChainIdLike): Promise<ethers.BigNumber>;
|
|
51
|
+
call(transaction: ethers.utils.Deferrable<ethers.providers.TransactionRequest>, blockTag?: ethers.providers.BlockTag | undefined, optionals?: OptionalChainIdLike): Promise<string>;
|
|
52
|
+
getChainId(): Promise<number>;
|
|
53
|
+
getGasPrice(optionals?: OptionalChainIdLike): Promise<ethers.BigNumber>;
|
|
54
|
+
getFeeData(optionals?: OptionalChainIdLike): Promise<ethers.providers.FeeData>;
|
|
55
|
+
resolveName(name: string): Promise<string>;
|
|
56
|
+
_checkProvider(_operation?: string | undefined): void;
|
|
57
|
+
populateTransaction(_transaction: ethers.utils.Deferrable<ethers.providers.TransactionRequest>): Promise<ethers.providers.TransactionRequest>;
|
|
58
|
+
checkTransaction(_transaction: ethers.utils.Deferrable<ethers.providers.TransactionRequest>): ethers.utils.Deferrable<ethers.providers.TransactionRequest>;
|
|
59
|
+
getTransactionCount(_blockTag?: ethers.providers.BlockTag | undefined): Promise<number>;
|
|
60
|
+
signTransaction(_transaction: ethers.utils.Deferrable<commons.transaction.Transactionish>): Promise<string>;
|
|
61
|
+
static is(cand: any): cand is SequenceSigner;
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* This is the same provider, but it only allows a single network at a time.
|
|
65
|
+
* the network defined by the constructor is the only one that can be used.
|
|
66
|
+
*
|
|
67
|
+
* Attempting to call any method with a different network will throw an error.
|
|
68
|
+
* Attempting to change the network of this provider will throw an error.
|
|
69
|
+
*
|
|
70
|
+
* NOTICE: These networks won't support ENS unless they are the mainnet.
|
|
71
|
+
*/
|
|
72
|
+
export declare class SingleNetworkSequenceSigner extends SequenceSigner {
|
|
73
|
+
readonly chainId: ChainIdLike;
|
|
74
|
+
readonly _isSingleNetworkSequenceSigner = true;
|
|
75
|
+
constructor(client: SequenceClient, provider: SequenceProvider, chainId: ChainIdLike);
|
|
76
|
+
private _useChainId;
|
|
77
|
+
protected useChainId(chainId?: ChainIdLike): number;
|
|
78
|
+
getChainId(): Promise<number>;
|
|
79
|
+
/**
|
|
80
|
+
* Override getProvider and getSigner so they always use `useChainId`
|
|
81
|
+
* this way they can't return providers and signers that can switch networks,
|
|
82
|
+
* or that don't match the chainId of this signer.
|
|
83
|
+
*/
|
|
84
|
+
getProvider(chainId?: ChainIdLike): SingleNetworkSequenceProvider;
|
|
85
|
+
getSigner(chainId?: ChainIdLike | undefined): SingleNetworkSequenceSigner;
|
|
86
|
+
static is(cand: any): cand is SingleNetworkSequenceSigner;
|
|
87
|
+
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ProviderTransport, ProviderMessage, ProviderMessageRequest, ProviderEventTypes, ProviderMessageResponse, ProviderMessageResponseCallback, OpenState, OpenWalletIntent, ConnectDetails, WalletSession, ProviderRpcError, InitState, TypedEventEmitter } from
|
|
1
|
+
import { ProviderTransport, ProviderMessage, ProviderMessageRequest, ProviderEventTypes, ProviderMessageResponse, ProviderMessageResponseCallback, OpenState, OpenWalletIntent, ConnectDetails, WalletSession, ProviderRpcError, InitState, TypedEventEmitter } from "../types.js";
|
|
2
2
|
import { NetworkConfig, JsonRpcRequest, JsonRpcResponseCallback } from '@0xsequence/network';
|
|
3
3
|
import { commons } from '@0xsequence/core';
|
|
4
4
|
export declare const PROVIDER_OPEN_TIMEOUT = 30000;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { WalletTransport, ProviderMessage, ProviderMessageRequest, ProviderMessageResponse, ProviderRpcError, InitState, ConnectDetails, WalletSession, TransportSession } from
|
|
2
|
-
import { WalletRequestHandler } from
|
|
1
|
+
import { WalletTransport, ProviderMessage, ProviderMessageRequest, ProviderMessageResponse, ProviderRpcError, InitState, ConnectDetails, WalletSession, TransportSession } from "../types.js";
|
|
2
|
+
import { WalletRequestHandler } from "./wallet-request-handler.js";
|
|
3
3
|
import { NetworkConfig, JsonRpcRequest, JsonRpcResponseCallback } from '@0xsequence/network';
|
|
4
4
|
import { commons } from '@0xsequence/core';
|
|
5
5
|
export declare abstract class BaseWalletTransport implements WalletTransport {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { EventEmitter2 as EventEmitter } from 'eventemitter2';
|
|
2
|
-
import { ProviderMessageResponseCallback, ProviderMessageRequest, ProviderMessageResponse } from
|
|
2
|
+
import { ProviderMessageResponseCallback, ProviderMessageRequest, ProviderMessageResponse } from "../../types.js";
|
|
3
3
|
export interface Stream {
|
|
4
4
|
on(ev: string | symbol, fn: (...args: any[]) => void): void;
|
|
5
5
|
writable: boolean;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { WalletRequestHandler } from
|
|
2
|
-
import { BaseWalletTransport } from
|
|
3
|
-
import { ProviderMessage } from
|
|
1
|
+
import { WalletRequestHandler } from "../wallet-request-handler.js";
|
|
2
|
+
import { BaseWalletTransport } from "../base-wallet-transport.js";
|
|
3
|
+
import { ProviderMessage } from "../../types.js";
|
|
4
4
|
import { Runtime } from 'webextension-polyfill';
|
|
5
5
|
export declare const CHANNEL_ID = "sequence-extension-message-handler";
|
|
6
6
|
export declare class ExtensionMessageHandler extends BaseWalletTransport {
|
package/dist/declarations/src/transports/extension-transport/extension-message-provider.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { OpenWalletIntent, ProviderMessage } from
|
|
2
|
-
import { BaseProviderTransport } from
|
|
1
|
+
import { OpenWalletIntent, ProviderMessage } from "../../types.js";
|
|
2
|
+
import { BaseProviderTransport } from "../base-provider-transport.js";
|
|
3
3
|
import { Runtime } from 'webextension-polyfill';
|
|
4
4
|
export declare class ExtensionMessageProvider extends BaseProviderTransport {
|
|
5
5
|
constructor(runtime: Runtime.Static);
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
export * from
|
|
2
|
-
export * from
|
|
3
|
-
export * from
|
|
1
|
+
export * from "./extension-message-handler.js";
|
|
2
|
+
export * from "./extension-message-provider.js";
|
|
3
|
+
export * from "./base-injected-transport.js";
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
export * from
|
|
2
|
-
export * from
|
|
3
|
-
export * from
|
|
4
|
-
export * from
|
|
5
|
-
export * from
|
|
6
|
-
export * from
|
|
7
|
-
export * from
|
|
8
|
-
export * from
|
|
1
|
+
export * from "./base-provider-transport.js";
|
|
2
|
+
export * from "./base-wallet-transport.js";
|
|
3
|
+
export * from "./proxy-transport/index.js";
|
|
4
|
+
export * from "./mux-transport/index.js";
|
|
5
|
+
export * from "./window-transport/index.js";
|
|
6
|
+
export * from "./wallet-request-handler.js";
|
|
7
|
+
export * from "./extension-transport/index.js";
|
|
8
|
+
export * from "./unreal-transport/index.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export * from
|
|
1
|
+
export * from "./mux-message-provider.js";
|
|
@@ -1,9 +1,30 @@
|
|
|
1
|
-
import { ProviderMessage, ProviderTransport, ProviderEventTypes, ProviderMessageRequest, ProviderMessageResponse, WalletSession, OpenWalletIntent, ConnectDetails } from
|
|
1
|
+
import { ProviderMessage, ProviderTransport, ProviderEventTypes, ProviderMessageRequest, ProviderMessageResponse, WalletSession, OpenWalletIntent, ConnectDetails } from "../../types.js";
|
|
2
2
|
import { JsonRpcRequest, JsonRpcResponseCallback } from '@0xsequence/network';
|
|
3
|
+
import { ProxyMessageChannelPort } from "../proxy-transport/index.js";
|
|
4
|
+
import { Runtime } from 'webextension-polyfill';
|
|
5
|
+
export type MuxTransportTemplate = {
|
|
6
|
+
walletAppURL?: string;
|
|
7
|
+
windowTransport?: {
|
|
8
|
+
enabled: boolean;
|
|
9
|
+
};
|
|
10
|
+
proxyTransport?: {
|
|
11
|
+
enabled: boolean;
|
|
12
|
+
appPort?: ProxyMessageChannelPort;
|
|
13
|
+
};
|
|
14
|
+
extensionTransport?: {
|
|
15
|
+
enabled: boolean;
|
|
16
|
+
runtime: Runtime.Static;
|
|
17
|
+
};
|
|
18
|
+
unrealTransport?: {
|
|
19
|
+
enabled: boolean;
|
|
20
|
+
};
|
|
21
|
+
};
|
|
22
|
+
export declare function isMuxTransportTemplate(obj: any): obj is MuxTransportTemplate;
|
|
3
23
|
export declare class MuxMessageProvider implements ProviderTransport {
|
|
4
24
|
private messageProviders;
|
|
5
25
|
private provider;
|
|
6
26
|
constructor(...messageProviders: ProviderTransport[]);
|
|
27
|
+
static new(template: MuxTransportTemplate): MuxMessageProvider;
|
|
7
28
|
add(...messageProviders: ProviderTransport[]): void;
|
|
8
29
|
register: () => void;
|
|
9
30
|
unregister: () => void;
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
export * from
|
|
2
|
-
export * from
|
|
3
|
-
export * from
|
|
1
|
+
export * from "./proxy-message-channel.js";
|
|
2
|
+
export * from "./proxy-message-provider.js";
|
|
3
|
+
export * from "./proxy-message-handler.js";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ProviderMessage, ProviderMessageTransport, ProviderEventTypes, TypedEventEmitter } from
|
|
1
|
+
import { ProviderMessage, ProviderMessageTransport, ProviderEventTypes, TypedEventEmitter } from "../../types.js";
|
|
2
2
|
export declare class ProxyMessageChannel {
|
|
3
3
|
app: ProxyMessageChannelPort;
|
|
4
4
|
wallet: ProxyMessageChannelPort;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { BaseWalletTransport } from
|
|
2
|
-
import { WalletRequestHandler } from
|
|
3
|
-
import { ProviderMessage } from
|
|
4
|
-
import { ProxyMessageChannelPort } from
|
|
1
|
+
import { BaseWalletTransport } from "../base-wallet-transport.js";
|
|
2
|
+
import { WalletRequestHandler } from "../wallet-request-handler.js";
|
|
3
|
+
import { ProviderMessage } from "../../types.js";
|
|
4
|
+
import { ProxyMessageChannelPort } from "./proxy-message-channel.js";
|
|
5
5
|
export declare class ProxyMessageHandler extends BaseWalletTransport {
|
|
6
6
|
private port;
|
|
7
7
|
constructor(walletRequestHandler: WalletRequestHandler, port: ProxyMessageChannelPort);
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { BaseProviderTransport } from
|
|
2
|
-
import { ProviderMessage, OpenWalletIntent } from
|
|
3
|
-
import { ProxyMessageChannelPort } from
|
|
1
|
+
import { BaseProviderTransport } from "../base-provider-transport.js";
|
|
2
|
+
import { ProviderMessage, OpenWalletIntent } from "../../types.js";
|
|
3
|
+
import { ProxyMessageChannelPort } from "./proxy-message-channel.js";
|
|
4
4
|
export declare class ProxyMessageProvider extends BaseProviderTransport {
|
|
5
5
|
private port;
|
|
6
6
|
constructor(port: ProxyMessageChannelPort);
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export * from
|
|
2
|
-
export * from
|
|
1
|
+
export * from "./unreal-message-provider.js";
|
|
2
|
+
export * from "./unreal-message-handler.js";
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { ProviderMessage } from
|
|
2
|
-
import { WalletRequestHandler } from
|
|
3
|
-
import { BaseWalletTransport } from
|
|
1
|
+
import { ProviderMessage } from "../../types.js";
|
|
2
|
+
import { WalletRequestHandler } from "../wallet-request-handler.js";
|
|
3
|
+
import { BaseWalletTransport } from "../base-wallet-transport.js";
|
|
4
4
|
/**
|
|
5
5
|
* Initialized on Wallet side
|
|
6
6
|
*/
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { OpenWalletIntent, ProviderMessage } from
|
|
2
|
-
import { BaseProviderTransport } from
|
|
1
|
+
import { OpenWalletIntent, ProviderMessage } from "../../types.js";
|
|
2
|
+
import { BaseProviderTransport } from "../base-provider-transport.js";
|
|
3
3
|
/**
|
|
4
4
|
* Initialized on dApp side
|
|
5
5
|
*/
|
|
@@ -2,7 +2,7 @@ import { Account } from '@0xsequence/account';
|
|
|
2
2
|
import { commons } from '@0xsequence/core';
|
|
3
3
|
import { NetworkConfig, JsonRpcHandler, JsonRpcRequest, JsonRpcResponseCallback } from '@0xsequence/network';
|
|
4
4
|
import { providers } from 'ethers';
|
|
5
|
-
import { ProviderMessageRequest, ProviderMessageResponse, ProviderMessageRequestHandler, MessageToSign, ProviderRpcError, ConnectOptions, ConnectDetails, PromptConnectDetails, WalletSession, OpenWalletIntent, ProviderEventTypes } from
|
|
5
|
+
import { ProviderMessageRequest, ProviderMessageResponse, ProviderMessageRequestHandler, MessageToSign, ProviderRpcError, ConnectOptions, ConnectDetails, PromptConnectDetails, WalletSession, OpenWalletIntent, ProviderEventTypes } from "../types.js";
|
|
6
6
|
type ExternalProvider = providers.ExternalProvider;
|
|
7
7
|
export interface WalletSignInOptions {
|
|
8
8
|
connect?: boolean;
|
|
@@ -19,7 +19,6 @@ export declare class WalletRequestHandler implements ExternalProvider, JsonRpcHa
|
|
|
19
19
|
onConnectOptionsChange: ((connectOptions: ConnectOptions | undefined) => void) | undefined;
|
|
20
20
|
constructor(account: Account | null | undefined, prompter: WalletUserPrompter | null, networks: NetworkConfig[]);
|
|
21
21
|
defaultChainId(): number;
|
|
22
|
-
private findNetworkID;
|
|
23
22
|
signIn(account: Account | null, options?: WalletSignInOptions): Promise<void>;
|
|
24
23
|
signOut(): void;
|
|
25
24
|
signerReset(): void;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export * from
|
|
2
|
-
export * from
|
|
1
|
+
export * from "./window-message-provider.js";
|
|
2
|
+
export * from "./window-message-handler.js";
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { ProviderMessage } from
|
|
2
|
-
import { WalletRequestHandler } from
|
|
3
|
-
import { BaseWalletTransport } from
|
|
1
|
+
import { ProviderMessage } from "../../types.js";
|
|
2
|
+
import { WalletRequestHandler } from "../wallet-request-handler.js";
|
|
3
|
+
import { BaseWalletTransport } from "../base-wallet-transport.js";
|
|
4
4
|
export declare class WindowMessageHandler extends BaseWalletTransport {
|
|
5
5
|
protected parentWindow: Window;
|
|
6
6
|
private _isPopup;
|