// import { SnapRpcMethodRequest } from "@chainsafe/filsnap-types"; import { enableFilecoinSnap, MetamaskFilecoinSnap, } from "@chainsafe/filsnap-adapter"; // declare global { // interface Window { // ethereum: { // isMetaMask: boolean; // // eslint-disable-next-line @typescript-eslint/no-explicit-any // send: ( // request: SnapRpcMethodRequest | { method: string; params?: any[] } // ) => Promise; // on: (eventName: unknown, callback: unknown) => unknown; // // requestIndex: () => Promise<{getSnapApi: (origin: string) => Promise}>; // }; // } // } export const defaultSnapId = "npm:@chainsafe/filsnap"; let isInstalled: boolean = false; export interface SnapInitializationResponse { isSnapInstalled: boolean; snap?: MetamaskFilecoinSnap; } export async function initiateFilecoinSnap(): Promise { const snapId = process.env.REACT_APP_SNAP_ID ? process.env.REACT_APP_SNAP_ID : defaultSnapId; try { console.log("Attempting to connect to snap..."); const metamaskFilecoinSnap = await enableFilecoinSnap( { network: "f" }, snapId, { version: "latest" } ); isInstalled = true; console.log("Snap installed!"); return { isSnapInstalled: true, snap: metamaskFilecoinSnap }; } catch (e) { console.error(e); alert(e); isInstalled = false; return { isSnapInstalled: false }; } } export async function isFilecoinSnapInstalled(): Promise { return isInstalled; }