Skip to content

Commit

Permalink
add SimpleProvider the base of EIP1193Provider
Browse files Browse the repository at this point in the history
  • Loading branch information
Muhammad-Altabba committed Jun 18, 2023
1 parent f9ba36d commit 5801c44
Show file tree
Hide file tree
Showing 2 changed files with 11 additions and 7 deletions.
3 changes: 2 additions & 1 deletion packages/web3-core/src/utils.ts
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,8 @@ export const isLegacySendAsyncProvider = <API extends Web3APISpec>(
export const isSupportedProvider = <API extends Web3APISpec>(
provider: SupportedProviders<API>,
): provider is SupportedProviders<API> =>
Web3BaseProvider.isWeb3Provider(provider) ||
isWeb3Provider(provider) ||
isEIP1193Provider(provider) ||
isLegacyRequestProvider(provider) ||
isLegacySendAsyncProvider(provider) ||
isLegacySendProvider(provider);
Expand Down
15 changes: 9 additions & 6 deletions packages/web3-types/src/web3_base_provider.ts
Original file line number Diff line number Diff line change
Expand Up @@ -94,6 +94,12 @@ export interface LegacyRequestProvider {
): void;
}

export interface SimpleProvider<API extends Web3APISpec> {
request<Method extends Web3APIMethod<API>, ResponseType = Web3APIReturnType<API, Method>>(
args: Web3APIPayload<API, Method>,
): Promise<JsonRpcResponseWithResult<ResponseType> | unknown>;
}

export interface ProviderInfo {
chainId: string;
}
Expand All @@ -102,16 +108,12 @@ export type ProviderChainId = string;

export type ProviderAccounts = string[];

export interface EIP1193Provider<API extends Web3APISpec> {
export interface EIP1193Provider<API extends Web3APISpec> extends SimpleProvider<API> {
on(event: 'connect', listener: (info: ProviderInfo) => void): void;
on(event: 'disconnect', listener: (error: ProviderRpcError) => void): void;
on(event: 'message', listener: (message: ProviderMessage) => void): void;
on(event: 'chainChanged', listener: (chainId: ProviderChainId) => void): void;
on(event: 'accountsChanged', listener: (accounts: ProviderAccounts) => void): void;

request<Method extends Web3APIMethod<API>, ResponseType = Web3APIReturnType<API, Method>>(
args: Web3APIPayload<API, Method>,
): Promise<JsonRpcResponseWithResult<ResponseType> | unknown>;
}

// Provider interface compatible with EIP-1193
Expand Down Expand Up @@ -258,7 +260,8 @@ export type SupportedProviders<API extends Web3APISpec = Web3EthExecutionAPI> =
| Web3BaseProvider<API>
| LegacyRequestProvider
| LegacySendProvider
| LegacySendAsyncProvider;
| LegacySendAsyncProvider
| SimpleProvider<API>;

export type Web3BaseProviderConstructor = new <API extends Web3APISpec>(
url: string,
Expand Down

0 comments on commit 5801c44

Please sign in to comment.