mirror of
https://seed.radicle.dev/rad:z4V1sjrXqjvFdnCUbxPFqd5p4DtH5.git
synced 2026-11-11 20:00:46 +08:00
69 lines
1.5 KiB
TypeScript
69 lines
1.5 KiB
TypeScript
import { ethers } from "ethers";
|
|
|
|
declare global {
|
|
interface Window {
|
|
ethereum: any;
|
|
}
|
|
}
|
|
|
|
export type Config = {
|
|
registrar: { address: string },
|
|
radToken: { address: string },
|
|
orgFactory: { address: string },
|
|
provider: ethers.providers.JsonRpcProvider,
|
|
signer: ethers.Signer,
|
|
};
|
|
|
|
const addresses = {
|
|
homestead: {
|
|
registrar: {
|
|
address: "0x37723287Ae6F34866d82EE623401f92Ec9013154",
|
|
},
|
|
radToken: {
|
|
address: "0x31c8EAcBFFdD875c74b94b077895Bd78CF1E64A3",
|
|
},
|
|
orgFactory: {
|
|
address: "0x0000000000000000000000000000000000000000",
|
|
},
|
|
},
|
|
ropsten: {
|
|
registrar: {
|
|
address: "0xb31441c140E92Ca20A0141D68b13b10ca051e40a",
|
|
},
|
|
radToken: {
|
|
address: "0x59b5eee36f5fa52400A136Fd4630Ee2bF126a4C0",
|
|
},
|
|
orgFactory: {
|
|
address: "0xe30aA5594FFB52B6bF5bbB21eB7e71Ac525bB028",
|
|
},
|
|
}
|
|
};
|
|
|
|
function isMetamaskInstalled(): boolean {
|
|
const { ethereum } = window;
|
|
return Boolean(ethereum && ethereum.isMetaMask);
|
|
}
|
|
|
|
export async function getConfig(): Promise<Config> {
|
|
if (isMetamaskInstalled()) {
|
|
const provider = new ethers.providers.Web3Provider(window.ethereum);
|
|
|
|
let network = await provider.ready;
|
|
let cfg = addresses[network.name];
|
|
|
|
if (cfg) {
|
|
return {
|
|
registrar: cfg.registrar,
|
|
radToken: cfg.radToken,
|
|
orgFactory: cfg.orgFactory,
|
|
provider: provider,
|
|
signer: provider.getSigner(),
|
|
};
|
|
} else {
|
|
throw `Wrong network: ${network.name}`;
|
|
}
|
|
} else {
|
|
throw "No provider available";
|
|
}
|
|
}
|