@enjin-io/metamask-enjin-adapter
Version:
56 lines (55 loc) • 2.08 kB
TypeScript
import type { AccountData, BlockInfo, SnapConfig, SnapRpcMethodRequest, Transaction, TxPayload } from '@enjin-io/metamask-enjin-types';
import type { InjectedExtension } from '@polkadot/extension-inject/types';
import type { SignerPayloadRaw } from '@polkadot/types/types/extrinsic';
import type { SignerPayloadJSON } from '@polkadot/types/types';
export interface MetamaskSnapApi {
getAddress(): Promise<string>;
getPublicKey(): Promise<string>;
getBalances(): Promise<AccountData>;
getLatestBlock(): Promise<BlockInfo>;
getConfiguration(): Promise<SnapConfig>;
setConfiguration(configuration: SnapConfig): Promise<void>;
getAllTransactions(): Promise<Transaction[]>;
signPayloadJSON(payload: SignerPayloadJSON): Promise<string>;
signPayloadRaw(payload: SignerPayloadRaw): Promise<string>;
send(signature: string, txPayload: TxPayload): Promise<Transaction>;
}
export interface InjectedMetamaskExtension extends InjectedExtension {
getMetamaskSnapApi: () => Promise<MetamaskSnapApi>;
}
declare global {
interface Window {
ethereum: {
isMetaMask: boolean;
isPhantom: boolean;
detected: EIP1193Provider[];
providers: EIP1193Provider[];
send: (request: SnapRpcMethodRequest | {
method: string;
params?: never[];
}) => Promise<unknown>;
on: (eventName: unknown, callback: unknown) => unknown;
request: <T>(request: SnapRpcMethodRequest | {
method: string;
params?: any;
}) => Promise<T>;
};
}
interface WindowEventMap {
'eip6963:announceProvider': CustomEvent<EIP6963AnnounceProviderEvent>;
}
}
interface EIP6963ProviderInfo {
walletId: string;
uuid: string;
name: string;
icon: string;
}
export declare type EIP1193Provider = typeof window.ethereum;
export declare type EIP6963AnnounceProviderEvent = {
detail: {
info: EIP6963ProviderInfo;
provider: EIP1193Provider;
};
};
export {};