@pushchain/ui-kit
Version:
Push Chain is a true universal L1 that is 100% EVM compatible. It allows developers to deploy once and make their apps instantly compatible with users from all other L1s (Ethereum, Solana, etc) with zero on-chain code change.
42 lines • 1.58 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.walletRegistry = void 0;
const metamask_1 = require("./ethereum/metamask");
const phantom_1 = require("./solana/phantom");
const rabby_1 = require("./ethereum/rabby");
const zerion_1 = require("./ethereum/zerion");
const walletConnect_1 = require("./ethereum/walletConnect");
class WalletProviderRegistry {
providers = new Map();
chainProviders = new Map();
constructor() {
this.registerProvider(new metamask_1.MetamaskProvider());
this.registerProvider(new phantom_1.PhantomProvider());
this.registerProvider(new walletConnect_1.WalletConnectProvider());
this.registerProvider(new rabby_1.RabbyProvider());
this.registerProvider(new zerion_1.ZerionProvider());
}
registerProvider(provider) {
this.providers.set(provider.name, provider);
provider.supportedChains.forEach((chain) => {
if (!this.chainProviders.has(chain)) {
this.chainProviders.set(chain, []);
}
this.chainProviders.get(chain)?.push(provider);
});
}
getProvider(name) {
return this.providers.get(name);
}
getProvidersByChain(chain) {
return this.chainProviders.get(chain) || [];
}
getAllProviders() {
return Array.from(this.providers.values());
}
getAllSupportedChains() {
return Array.from(this.chainProviders.keys());
}
}
exports.walletRegistry = new WalletProviderRegistry();
//# sourceMappingURL=WalletProviderRegistry.js.map