UNPKG

@pushchain/core

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.

258 lines 7.99 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.PAYABLE_TOKENS = exports.MOVEABLE_TOKENS = exports.PayableTokenAccessor = exports.MoveableTokenAccessor = void 0; const enums_1 = require("./enums"); // Strongly-typed accessors that throw at runtime if a token is unavailable, // while providing non-undefined types at compile time. class MoveableTokenAccessor { constructor(tokens) { this.tokens = tokens; } require(name) { const t = this.tokens[name]; if (!t) throw new Error(`${String(name)} token not available on this chain`); return t; } get ETH() { return this.require('ETH'); } get SOL() { return this.require('SOL'); } get USDT() { return this.require('USDT'); } get WETH() { return this.require('WETH'); } } exports.MoveableTokenAccessor = MoveableTokenAccessor; class PayableTokenAccessor { constructor(tokens) { this.tokens = tokens; } require(name) { const t = this.tokens[name]; if (!t) throw new Error(`${String(name)} token not available on this chain`); return t; } get ETH() { return this.require('ETH'); } get USDT() { return this.require('USDT'); } get USDC() { return this.require('USDC'); } get WETH() { return this.require('WETH'); } } exports.PayableTokenAccessor = PayableTokenAccessor; // Native token sentinel addresses const EVM_NATIVE = '0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee'; const TOKEN_META = { // Ethereum Sepolia (testnet) [enums_1.CHAIN.ETHEREUM_SEPOLIA]: { ETH: { symbol: 'ETH', decimals: 18, address: EVM_NATIVE, mechanism: 'native', }, USDT: { symbol: 'USDT', decimals: 6, address: '0x7169D38820dfd117C3FA1f22a697dBA58d90BA06', mechanism: 'approve', }, WETH: { symbol: 'WETH', decimals: 18, address: '0xfff9976782d46cc05630d1f6ebab18b2324d6b14', mechanism: 'approve', }, USDC: { symbol: 'USDC', decimals: 6, address: '0x1c7D4B196Cb0C7B01d743Fbc6116a902379C7238', mechanism: 'approve', }, }, // Ethereum Mainnet [enums_1.CHAIN.ETHEREUM_MAINNET]: { ETH: { symbol: 'ETH', decimals: 18, address: EVM_NATIVE, mechanism: 'native', }, USDT: { symbol: 'USDT', decimals: 6, address: '0xdAC17F958D2ee523a2206206994597C13D831ec7', mechanism: 'approve', }, WETH: { symbol: 'WETH', decimals: 18, address: '0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2', mechanism: 'approve', }, }, // Arbitrum Sepolia [enums_1.CHAIN.ARBITRUM_SEPOLIA]: { ETH: { symbol: 'ETH', decimals: 18, address: EVM_NATIVE, mechanism: 'native', }, USDT: { symbol: 'USDT', decimals: 6, address: '0x1419d7C74D234fA6B73E06A2ce7822C1d37922f0', mechanism: 'approve', }, WETH: { symbol: 'WETH', decimals: 18, address: '0x980B62Da83eFf3D4576C647993b0c1D7faf17c73', mechanism: 'approve', }, }, // Base Sepolia [enums_1.CHAIN.BASE_SEPOLIA]: { ETH: { symbol: 'ETH', decimals: 18, address: EVM_NATIVE, mechanism: 'native', }, USDT: { symbol: 'USDT', decimals: 6, address: '0x9FF5a186f53F6E6964B00320Da1D2024DE11E0cB', mechanism: 'approve', }, WETH: { symbol: 'WETH', decimals: 18, address: '0xfff9976782d46cc05630d1f6ebab18b2324d6b14', mechanism: 'approve', }, }, // BNB Testnet [enums_1.CHAIN.BNB_TESTNET]: { // NOTE: Both symbols are provided to mirror existing usage across maps BNB: { symbol: 'BNB', decimals: 18, address: EVM_NATIVE, mechanism: 'native', }, ETH: { symbol: 'ETH', decimals: 18, address: EVM_NATIVE, mechanism: 'native', }, USDT: { symbol: 'USDT', decimals: 6, address: '0xBC14F348BC9667be46b35Edc9B68653d86013DC5', mechanism: 'approve', }, }, // Solana Devnet [enums_1.CHAIN.SOLANA_DEVNET]: { SOL: { symbol: 'SOL', decimals: 9, address: 'solana-native', mechanism: 'native', }, USDT: { symbol: 'USDT', decimals: 6, address: 'EiXDnrAg9ea2Q6vEPV7E5TpTU1vh41jcuZqKjU5Dc4ZF', mechanism: 'approve', }, }, }; function makeToken(chain, symbol) { var _a; const meta = (_a = TOKEN_META[chain]) === null || _a === void 0 ? void 0 : _a[symbol]; if (!meta) throw new Error(`Token ${symbol} not available on chain ${chain}`); return { symbol: meta.symbol, decimals: meta.decimals, address: meta.address, mechanism: meta.mechanism, }; } // Minimal initial registries. These can be extended safely without breaking the API. exports.MOVEABLE_TOKENS = { [enums_1.CHAIN.ETHEREUM_SEPOLIA]: [ makeToken(enums_1.CHAIN.ETHEREUM_SEPOLIA, 'ETH'), makeToken(enums_1.CHAIN.ETHEREUM_SEPOLIA, 'USDT'), makeToken(enums_1.CHAIN.ETHEREUM_SEPOLIA, 'WETH'), ], [enums_1.CHAIN.ETHEREUM_MAINNET]: [ makeToken(enums_1.CHAIN.ETHEREUM_MAINNET, 'ETH'), makeToken(enums_1.CHAIN.ETHEREUM_MAINNET, 'USDT'), makeToken(enums_1.CHAIN.ETHEREUM_MAINNET, 'WETH'), ], [enums_1.CHAIN.ARBITRUM_SEPOLIA]: [ makeToken(enums_1.CHAIN.ARBITRUM_SEPOLIA, 'ETH'), makeToken(enums_1.CHAIN.ARBITRUM_SEPOLIA, 'USDT'), makeToken(enums_1.CHAIN.ARBITRUM_SEPOLIA, 'WETH'), ], [enums_1.CHAIN.BASE_SEPOLIA]: [ makeToken(enums_1.CHAIN.BASE_SEPOLIA, 'ETH'), makeToken(enums_1.CHAIN.BASE_SEPOLIA, 'USDT'), makeToken(enums_1.CHAIN.BASE_SEPOLIA, 'WETH'), ], [enums_1.CHAIN.BNB_TESTNET]: [ makeToken(enums_1.CHAIN.BNB_TESTNET, 'ETH'), makeToken(enums_1.CHAIN.BNB_TESTNET, 'USDT'), ], [enums_1.CHAIN.SOLANA_DEVNET]: [ makeToken(enums_1.CHAIN.SOLANA_DEVNET, 'SOL'), makeToken(enums_1.CHAIN.SOLANA_DEVNET, 'USDT'), ], }; exports.PAYABLE_TOKENS = { [enums_1.CHAIN.ETHEREUM_SEPOLIA]: [ makeToken(enums_1.CHAIN.ETHEREUM_SEPOLIA, 'ETH'), makeToken(enums_1.CHAIN.ETHEREUM_SEPOLIA, 'USDT'), makeToken(enums_1.CHAIN.ETHEREUM_SEPOLIA, 'USDC'), makeToken(enums_1.CHAIN.ETHEREUM_SEPOLIA, 'WETH'), ], [enums_1.CHAIN.ETHEREUM_MAINNET]: [ makeToken(enums_1.CHAIN.ETHEREUM_MAINNET, 'ETH'), makeToken(enums_1.CHAIN.ETHEREUM_MAINNET, 'USDT'), makeToken(enums_1.CHAIN.ETHEREUM_MAINNET, 'WETH'), ], [enums_1.CHAIN.ARBITRUM_SEPOLIA]: [ makeToken(enums_1.CHAIN.ARBITRUM_SEPOLIA, 'ETH'), makeToken(enums_1.CHAIN.ARBITRUM_SEPOLIA, 'USDT'), ], [enums_1.CHAIN.BASE_SEPOLIA]: [ makeToken(enums_1.CHAIN.BASE_SEPOLIA, 'ETH'), makeToken(enums_1.CHAIN.BASE_SEPOLIA, 'USDT'), ], [enums_1.CHAIN.BNB_TESTNET]: [ makeToken(enums_1.CHAIN.BNB_TESTNET, 'BNB'), makeToken(enums_1.CHAIN.BNB_TESTNET, 'USDT'), ], [enums_1.CHAIN.SOLANA_DEVNET]: [ makeToken(enums_1.CHAIN.SOLANA_DEVNET, 'SOL'), makeToken(enums_1.CHAIN.SOLANA_DEVNET, 'USDT'), ], }; //# sourceMappingURL=tokens.js.map