@api3/contracts
Version:
Contracts through which API3 services are delivered
52 lines • 1.84 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.chainHttpRpcUrlName = chainHttpRpcUrlName;
exports.chains = chains;
const viem_1 = require("viem");
const chains_1 = require("./generated/chains");
const strings_1 = require("./utils/strings");
function chainHttpRpcUrlName(chain) {
return `API3_CHAINS_HTTP_RPC_URL_${(0, strings_1.toUpperSnakeCase)(chain.alias)}`;
}
function chains() {
return chains_1.CHAINS.map((chain) => {
// All chains must have at least a default provider
const defaultProvider = chain.providers.find((c) => c.alias === 'default');
const envRpcUrl = process.env[chainHttpRpcUrlName(chain)];
const environmentHttp = envRpcUrl ? [envRpcUrl] : [];
const customRpcUrls = { environment: { http: environmentHttp } };
return (0, viem_1.defineChain)({
id: Number(chain.id),
name: chain.alias,
network: chain.alias,
nativeCurrency: {
name: buildName(chain),
symbol: chain.symbol,
decimals: chain.decimals,
},
rpcUrls: {
default: {
http: [defaultProvider.rpcUrl],
},
public: {
http: [defaultProvider.rpcUrl],
},
...customRpcUrls,
},
blockExplorers: {
default: {
name: 'Explorer',
url: chain.explorer.browserUrl,
},
},
});
});
}
function buildName(chain) {
if (chain.testnet) {
const symbolWithoutPrefix = chain.symbol.replace(/^test\./, '');
return `Testnet ${symbolWithoutPrefix}`;
}
return chain.symbol;
}
//# sourceMappingURL=viem-config.js.map