added: zoo network

This commit is contained in:
venuswhispers
2024-11-22 22:28:41 +08:00
parent 4839de3136
commit 1caa8438af
48 changed files with 8036 additions and 202 deletions
@@ -675,7 +675,7 @@ export const networks: Network[] = [
logo: 'https://cdn.lux.network/bridge/currencies/lux/lux.svg',
contract_address: '0x0000000000000000000000000000000000000000',
decimals: 18,
status: 'inactive',
status: 'active',
is_deposit_enabled: true,
is_withdrawal_enabled: true,
is_refuel_enabled: false,
@@ -692,7 +692,7 @@ export const networks: Network[] = [
logo: 'https://cdn.lux.network/bridge/currencies/lux/lbtc.svg',
contract_address: '0x1E48D32a4F5e9f08DB9aE4959163300FaF8A6C8e',
decimals: 18,
status: 'inactive',
status: 'active',
is_deposit_enabled: true,
is_withdrawal_enabled: true,
is_refuel_enabled: false,
@@ -737,6 +737,23 @@ export const networks: Network[] = [
destination_base_fee: 0.1,
is_native: false,
},
{
name: 'Lux ZOO',
asset: 'LZOO',
logo: 'https://cdn.lux.network/bridge/currencies/lux/lzoo.png',
contract_address: '0x5E5290f350352768bD2bfC59c2DA15DD04A7cB88',
decimals: 18,
status: 'active',
is_deposit_enabled: true,
is_withdrawal_enabled: true,
is_refuel_enabled: false,
max_withdrawal_amount: 1,
deposit_fee: 0.1,
withdrawal_fee: 0.1,
source_base_fee: 0.1,
destination_base_fee: 0.1,
is_native: false,
},
{
name: 'Lux BNB',
asset: 'LBNB',
@@ -826,9 +843,9 @@ export const networks: Network[] = [
name: 'Lux SOL',
asset: 'LSOL',
logo: 'https://cdn.lux.network/bridge/currencies/lux/lsol.svg',
contract_address: '0x1AF00A2590a834d14F4A8a26D1b03EBbA8cf7961',
contract_address: '0x26B40f650156C7EbF9e087Dd0dca181Fe87625B7',
decimals: 18,
status: 'inactive',
status: 'active',
is_deposit_enabled: true,
is_withdrawal_enabled: true,
is_refuel_enabled: false,
@@ -843,9 +860,231 @@ export const networks: Network[] = [
name: 'Lux TON',
asset: 'LTON',
logo: 'https://cdn.lux.network/bridge/currencies/lux/lton.svg',
contract_address: '0xF5a313885832D4Fc71d1Ef80115197c4479B58C8',
contract_address: '0x3141b94b89691009b950c96e97Bff48e0C543E3C',
decimals: 18,
status: 'inactive',
status: 'active',
is_deposit_enabled: true,
is_withdrawal_enabled: true,
is_refuel_enabled: false,
max_withdrawal_amount: 1,
deposit_fee: 0.1,
withdrawal_fee: 0.1,
source_base_fee: 0.1,
destination_base_fee: 0.1,
is_native: false,
}
],
},
{
display_name: 'Zoo',
internal_name: 'ZOO_MAINNET',
native_currency: 'ZOO',
logo: 'https://cdn.lux.network/bridge/networks/zoo_mainnet.png',
is_testnet: false,
is_featured: true,
average_completion_time: '00:00:07.7777777',
chain_id: 200200,
status: 'active',
type: 'evm',
refuel_amount_in_usd: 1,
transaction_explorer_template: 'https://explore.zoo.network/tx/{0}',
account_explorer_template: 'https://explore.zoo.network/address/{0}',
node: 'https://api.zoo.network',
currencies: [
{
name: 'ZOO',
asset: 'ZOO',
logo: 'https://cdn.lux.network/bridge/currencies/zoo.png',
contract_address: '0x0000000000000000000000000000000000000000',
decimals: 18,
status: 'active',
is_deposit_enabled: true,
is_withdrawal_enabled: true,
is_refuel_enabled: false,
max_withdrawal_amount: 1,
deposit_fee: 0.1,
withdrawal_fee: 0.1,
source_base_fee: 0.1,
destination_base_fee: 0.1,
is_native: true,
},
{
name: 'Zoo BTC',
asset: 'ZBTC',
logo: 'https://cdn.lux.network/bridge/currencies/zoo/zbtc.svg',
contract_address: '0x1E48D32a4F5e9f08DB9aE4959163300FaF8A6C8e',
decimals: 18,
status: 'active',
is_deposit_enabled: true,
is_withdrawal_enabled: true,
is_refuel_enabled: false,
max_withdrawal_amount: 1,
deposit_fee: 0.1,
withdrawal_fee: 0.1,
source_base_fee: 0.1,
destination_base_fee: 0.1,
is_native: false,
},
{
name: 'Zoo ETH',
asset: 'ZETH',
logo: 'https://cdn.lux.network/bridge/currencies/zoo/zeth.svg',
contract_address: '0x60E0a8167FC13dE89348978860466C9ceC24B9ba',
decimals: 18,
status: 'active',
is_deposit_enabled: true,
is_withdrawal_enabled: true,
is_refuel_enabled: false,
max_withdrawal_amount: 1,
deposit_fee: 0.1,
withdrawal_fee: 0.1,
source_base_fee: 0.1,
destination_base_fee: 0.1,
is_native: false,
},
{
name: 'Zoo Dollar',
asset: 'ZUSD',
logo: 'https://cdn.lux.network/bridge/currencies/zoo/zusd.svg',
contract_address: '0x848Cff46eb323f323b6Bbe1Df274E40793d7f2c2',
decimals: 18,
status: 'active',
is_deposit_enabled: true,
is_withdrawal_enabled: true,
is_refuel_enabled: false,
max_withdrawal_amount: 1,
deposit_fee: 0.1,
withdrawal_fee: 0.1,
source_base_fee: 0.1,
destination_base_fee: 0.1,
is_native: false,
},
{
name: 'Zoo LUX',
asset: 'ZLUX',
logo: 'https://cdn.lux.network/bridge/currencies/zoo/zlux.png',
contract_address: '0x5E5290f350352768bD2bfC59c2DA15DD04A7cB88',
decimals: 18,
status: 'active',
is_deposit_enabled: true,
is_withdrawal_enabled: true,
is_refuel_enabled: false,
max_withdrawal_amount: 1,
deposit_fee: 0.1,
withdrawal_fee: 0.1,
source_base_fee: 0.1,
destination_base_fee: 0.1,
is_native: false,
},
{
name: 'Zoo BNB',
asset: 'ZBNB',
logo: 'https://cdn.lux.network/bridge/currencies/zoo/zbnb.svg',
contract_address: '0x6EdcF3645DeF09DB45050638c41157D8B9FEa1cf',
decimals: 18,
status: 'active',
is_deposit_enabled: true,
is_withdrawal_enabled: true,
is_refuel_enabled: false,
max_withdrawal_amount: 1,
deposit_fee: 0.1,
withdrawal_fee: 0.1,
source_base_fee: 0.1,
destination_base_fee: 0.1,
is_native: false,
},
{
name: 'Zoo POL',
asset: 'ZPOL',
logo: 'https://cdn.lux.network/bridge/currencies/zoo/zpol.svg',
contract_address: '0x28BfC5DD4B7E15659e41190983e5fE3df1132bB9',
decimals: 18,
status: 'active',
is_deposit_enabled: true,
is_withdrawal_enabled: true,
is_refuel_enabled: false,
max_withdrawal_amount: 1,
deposit_fee: 0.1,
withdrawal_fee: 0.1,
source_base_fee: 0.1,
destination_base_fee: 0.1,
is_native: false,
},
{
name: 'Zoo CELO',
asset: 'ZCELO',
logo: 'https://cdn.lux.network/bridge/currencies/zoo/zcelo.svg',
contract_address: '0x3078847F879A33994cDa2Ec1540ca52b5E0eE2e5',
decimals: 18,
status: 'active',
is_deposit_enabled: true,
is_withdrawal_enabled: true,
is_refuel_enabled: false,
max_withdrawal_amount: 1,
deposit_fee: 0.1,
withdrawal_fee: 0.1,
source_base_fee: 0.1,
destination_base_fee: 0.1,
is_native: false,
},
{
name: 'Zoo FTM',
asset: 'ZFTM',
logo: 'https://cdn.lux.network/bridge/currencies/zoo/zftm.svg',
contract_address: '0x8B982132d639527E8a0eAAD385f97719af8f5e04',
decimals: 18,
status: 'active',
is_deposit_enabled: true,
is_withdrawal_enabled: true,
is_refuel_enabled: false,
max_withdrawal_amount: 1,
deposit_fee: 0.1,
withdrawal_fee: 0.1,
source_base_fee: 0.1,
destination_base_fee: 0.1,
is_native: false,
},
{
name: 'Zoo xDAI',
asset: 'ZXDAI',
logo: 'https://cdn.lux.network/bridge/currencies/zoo/zdai.svg',
contract_address: '0x7dfb3cBf7CF9c96fd56e3601FBA50AF45C731211',
decimals: 18,
status: 'active',
is_deposit_enabled: true,
is_withdrawal_enabled: true,
is_refuel_enabled: false,
max_withdrawal_amount: 1,
deposit_fee: 0.1,
withdrawal_fee: 0.1,
source_base_fee: 0.1,
destination_base_fee: 0.1,
is_native: false,
},
{
name: 'Zoo SOL',
asset: 'ZSOL',
logo: 'https://cdn.lux.network/bridge/currencies/zoo/zsol.svg',
contract_address: '0x26B40f650156C7EbF9e087Dd0dca181Fe87625B7',
decimals: 18,
status: 'active',
is_deposit_enabled: true,
is_withdrawal_enabled: true,
is_refuel_enabled: false,
max_withdrawal_amount: 1,
deposit_fee: 0.1,
withdrawal_fee: 0.1,
source_base_fee: 0.1,
destination_base_fee: 0.1,
is_native: false,
},
{
name: 'Zoo TON',
asset: 'ZTON',
logo: 'https://cdn.lux.network/bridge/currencies/zoo/zton.svg',
contract_address: '0x3141b94b89691009b950c96e97Bff48e0C543E3C',
decimals: 18,
status: 'active',
is_deposit_enabled: true,
is_withdrawal_enabled: true,
is_refuel_enabled: false,
@@ -384,7 +384,7 @@ export const networks: Network[] = [
logo: 'https://cdn.lux.network/bridge/currencies/lux/lux.svg',
contract_address: '0x0000000000000000000000000000000000000000',
decimals: 18,
status: 'inactive',
status: 'active',
is_deposit_enabled: true,
is_withdrawal_enabled: true,
is_refuel_enabled: false,
@@ -401,7 +401,7 @@ export const networks: Network[] = [
logo: 'https://cdn.lux.network/bridge/currencies/lux/lbtc.svg',
contract_address: '0x1E48D32a4F5e9f08DB9aE4959163300FaF8A6C8e',
decimals: 18,
status: 'inactive',
status: 'active',
is_deposit_enabled: true,
is_withdrawal_enabled: true,
is_refuel_enabled: false,
@@ -446,6 +446,23 @@ export const networks: Network[] = [
destination_base_fee: 0.1,
is_native: false,
},
{
name: 'Lux ZOO',
asset: 'LZOO',
logo: 'https://cdn.lux.network/bridge/currencies/lux/lzoo.png',
contract_address: '0x5E5290f350352768bD2bfC59c2DA15DD04A7cB88',
decimals: 18,
status: 'active',
is_deposit_enabled: true,
is_withdrawal_enabled: true,
is_refuel_enabled: false,
max_withdrawal_amount: 1,
deposit_fee: 0.1,
withdrawal_fee: 0.1,
source_base_fee: 0.1,
destination_base_fee: 0.1,
is_native: false,
},
{
name: 'Lux BNB',
asset: 'LBNB',
@@ -535,9 +552,9 @@ export const networks: Network[] = [
name: 'Lux SOL',
asset: 'LSOL',
logo: 'https://cdn.lux.network/bridge/currencies/lux/lsol.svg',
contract_address: '0x1AF00A2590a834d14F4A8a26D1b03EBbA8cf7961',
contract_address: '0x26B40f650156C7EbF9e087Dd0dca181Fe87625B7',
decimals: 18,
status: 'inactive',
status: 'active',
is_deposit_enabled: true,
is_withdrawal_enabled: true,
is_refuel_enabled: false,
@@ -552,9 +569,9 @@ export const networks: Network[] = [
name: 'Lux TON',
asset: 'LTON',
logo: 'https://cdn.lux.network/bridge/currencies/lux/lton.svg',
contract_address: '0xF5a313885832D4Fc71d1Ef80115197c4479B58C8',
contract_address: '0x3141b94b89691009b950c96e97Bff48e0C543E3C',
decimals: 18,
status: 'inactive',
status: 'active',
is_deposit_enabled: true,
is_withdrawal_enabled: true,
is_refuel_enabled: false,
@@ -567,4 +584,226 @@ export const networks: Network[] = [
}
],
},
{
display_name: 'Zoo Testnet',
internal_name: 'ZOO_TESTNET',
native_currency: 'ZOO',
logo: 'https://cdn.lux.network/bridge/networks/zoo_testnet.png',
is_testnet: true,
is_featured: true,
average_completion_time: '00:00:07.7777777',
chain_id: 200201,
status: 'active',
type: 'evm',
refuel_amount_in_usd: 1,
transaction_explorer_template: 'https://explore.zoo-test.network/tx/{0}',
account_explorer_template: 'https://explore.zoo-test.network/address/{0}',
node: 'https://api.zoo-test.network',
currencies: [
{
name: 'ZOO',
asset: 'ZOO',
logo: 'https://cdn.lux.network/bridge/currencies/zoo.png',
contract_address: '0x0000000000000000000000000000000000000000',
decimals: 18,
status: 'active',
is_deposit_enabled: true,
is_withdrawal_enabled: true,
is_refuel_enabled: false,
max_withdrawal_amount: 1,
deposit_fee: 0.1,
withdrawal_fee: 0.1,
source_base_fee: 0.1,
destination_base_fee: 0.1,
is_native: true,
},
{
name: 'Zoo BTC',
asset: 'ZBTC',
logo: 'https://cdn.lux.network/bridge/currencies/zoo/zbtc.svg',
contract_address: '0x1E48D32a4F5e9f08DB9aE4959163300FaF8A6C8e',
decimals: 18,
status: 'active',
is_deposit_enabled: true,
is_withdrawal_enabled: true,
is_refuel_enabled: false,
max_withdrawal_amount: 1,
deposit_fee: 0.1,
withdrawal_fee: 0.1,
source_base_fee: 0.1,
destination_base_fee: 0.1,
is_native: false,
},
{
name: 'Zoo ETH',
asset: 'ZETH',
logo: 'https://cdn.lux.network/bridge/currencies/zoo/zeth.svg',
contract_address: '0x60E0a8167FC13dE89348978860466C9ceC24B9ba',
decimals: 18,
status: 'active',
is_deposit_enabled: true,
is_withdrawal_enabled: true,
is_refuel_enabled: false,
max_withdrawal_amount: 1,
deposit_fee: 0.1,
withdrawal_fee: 0.1,
source_base_fee: 0.1,
destination_base_fee: 0.1,
is_native: false,
},
{
name: 'Zoo Dollar',
asset: 'ZUSD',
logo: 'https://cdn.lux.network/bridge/currencies/zoo/zusd.svg',
contract_address: '0x848Cff46eb323f323b6Bbe1Df274E40793d7f2c2',
decimals: 18,
status: 'active',
is_deposit_enabled: true,
is_withdrawal_enabled: true,
is_refuel_enabled: false,
max_withdrawal_amount: 1,
deposit_fee: 0.1,
withdrawal_fee: 0.1,
source_base_fee: 0.1,
destination_base_fee: 0.1,
is_native: false,
},
{
name: 'Zoo LUX',
asset: 'ZLUX',
logo: 'https://cdn.lux.network/bridge/currencies/zoo/zlux.png',
contract_address: '0x5E5290f350352768bD2bfC59c2DA15DD04A7cB88',
decimals: 18,
status: 'active',
is_deposit_enabled: true,
is_withdrawal_enabled: true,
is_refuel_enabled: false,
max_withdrawal_amount: 1,
deposit_fee: 0.1,
withdrawal_fee: 0.1,
source_base_fee: 0.1,
destination_base_fee: 0.1,
is_native: false,
},
{
name: 'Zoo BNB',
asset: 'ZBNB',
logo: 'https://cdn.lux.network/bridge/currencies/zoo/zbnb.svg',
contract_address: '0x6EdcF3645DeF09DB45050638c41157D8B9FEa1cf',
decimals: 18,
status: 'active',
is_deposit_enabled: true,
is_withdrawal_enabled: true,
is_refuel_enabled: false,
max_withdrawal_amount: 1,
deposit_fee: 0.1,
withdrawal_fee: 0.1,
source_base_fee: 0.1,
destination_base_fee: 0.1,
is_native: false,
},
{
name: 'Zoo POL',
asset: 'ZPOL',
logo: 'https://cdn.lux.network/bridge/currencies/zoo/zpol.svg',
contract_address: '0x28BfC5DD4B7E15659e41190983e5fE3df1132bB9',
decimals: 18,
status: 'active',
is_deposit_enabled: true,
is_withdrawal_enabled: true,
is_refuel_enabled: false,
max_withdrawal_amount: 1,
deposit_fee: 0.1,
withdrawal_fee: 0.1,
source_base_fee: 0.1,
destination_base_fee: 0.1,
is_native: false,
},
{
name: 'Zoo CELO',
asset: 'ZCELO',
logo: 'https://cdn.lux.network/bridge/currencies/zoo/zcelo.svg',
contract_address: '0x3078847F879A33994cDa2Ec1540ca52b5E0eE2e5',
decimals: 18,
status: 'active',
is_deposit_enabled: true,
is_withdrawal_enabled: true,
is_refuel_enabled: false,
max_withdrawal_amount: 1,
deposit_fee: 0.1,
withdrawal_fee: 0.1,
source_base_fee: 0.1,
destination_base_fee: 0.1,
is_native: false,
},
{
name: 'Zoo FTM',
asset: 'ZFTM',
logo: 'https://cdn.lux.network/bridge/currencies/zoo/zftm.svg',
contract_address: '0x8B982132d639527E8a0eAAD385f97719af8f5e04',
decimals: 18,
status: 'active',
is_deposit_enabled: true,
is_withdrawal_enabled: true,
is_refuel_enabled: false,
max_withdrawal_amount: 1,
deposit_fee: 0.1,
withdrawal_fee: 0.1,
source_base_fee: 0.1,
destination_base_fee: 0.1,
is_native: false,
},
{
name: 'Zoo xDAI',
asset: 'ZXDAI',
logo: 'https://cdn.lux.network/bridge/currencies/zoo/zdai.svg',
contract_address: '0x7dfb3cBf7CF9c96fd56e3601FBA50AF45C731211',
decimals: 18,
status: 'active',
is_deposit_enabled: true,
is_withdrawal_enabled: true,
is_refuel_enabled: false,
max_withdrawal_amount: 1,
deposit_fee: 0.1,
withdrawal_fee: 0.1,
source_base_fee: 0.1,
destination_base_fee: 0.1,
is_native: false,
},
{
name: 'Zoo SOL',
asset: 'ZSOL',
logo: 'https://cdn.lux.network/bridge/currencies/zoo/zsol.svg',
contract_address: '0x26B40f650156C7EbF9e087Dd0dca181Fe87625B7',
decimals: 18,
status: 'active',
is_deposit_enabled: true,
is_withdrawal_enabled: true,
is_refuel_enabled: false,
max_withdrawal_amount: 1,
deposit_fee: 0.1,
withdrawal_fee: 0.1,
source_base_fee: 0.1,
destination_base_fee: 0.1,
is_native: false,
},
{
name: 'Zoo TON',
asset: 'ZTON',
logo: 'https://cdn.lux.network/bridge/currencies/zoo/zton.svg',
contract_address: '0x3141b94b89691009b950c96e97Bff48e0C543E3C',
decimals: 18,
status: 'active',
is_deposit_enabled: true,
is_withdrawal_enabled: true,
is_refuel_enabled: false,
max_withdrawal_amount: 1,
deposit_fee: 0.1,
withdrawal_fee: 0.1,
source_base_fee: 0.1,
destination_base_fee: 0.1,
is_native: false,
}
]
},
]
@@ -123,21 +123,41 @@ export const CONTRACTS = {
}
export const SWAP_PAIRS: Record<string, string[]> = {
LETH: ['ETH'],
LBNB: ['BNB'],
LFTM: ['FTM'],
LPOL: ['POL', 'MATIC'],
LUSD: ['USDT', 'USDC', 'DAI'],
LCELO: ['CELO'],
LXDAI: ['XDAI'],
ETH: ['LETH'],
POL: ['LPOL'],
BNB: ['LBNB'],
FTM: ['LFTM'],
DAI: ['LUSD'],
USDT: ['LUSD'],
USDC: ['LUSD'],
CELO: ['LCELO'],
XDAI: ['LXDAI'],
// Lux tokens
LUX: ['ZLUX'],
LBTC: ['ZBTC'],
LETH: ['ETH', 'ZETH'],
LUSD: ['USDT', 'USDC', 'DAI', 'ZUSD'],
LZOO: ['ZOO'],
LBNB: ['BNB', 'ZBNB'],
LPOL: ['POL', 'ZPOL'],
LCELO: ['CELO', 'ZCELO'],
LFTM: ['FTM', 'ZFTM'],
LXDAI: ['XDAI', 'ZXDAI'],
LSOL: ['ZSOL'],
LTON: ['ZTON'],
// Zoo tokens
ZOO: ['LZOO'],
ZBTC: ['LBTC'],
ZETH: ['ETH', 'LETH'],
ZUSD: ['USDT', 'USDC', 'DAI', 'LUSD'],
ZLUX: ['LUX'],
ZBNB: ['BNB', 'LBNB'],
ZPOL: ['POL', 'LPOL'],
ZCELO: ['CELO', 'LCELO'],
ZFTM: ['FTM', 'LFTM'],
ZXDAI: ['XDAI', 'LXDAI'],
ZSOL: ['LSOL'],
ZTON: ['LTON'],
// Evm tokens
ETH: ['LETH', 'ZETH'],
WETH: ['LETH', 'ZETH'],
POL: ['LPOL', 'ZPOL'],
BNB: ['LBNB', 'ZBNB'],
FTM: ['LFTM', 'ZFTM'],
DAI: ['LUSD', 'ZUSD'],
USDT: ['LUSD', 'ZUSD'],
USDC: ['LUSD', 'ZUSD'],
CELO: ['LCELO', 'ZCELO'],
XDAI: ['LXDAI', 'ZXDAI'],
}
@@ -97,29 +97,28 @@ const Swap: FC = () => {
}, [sourceNetwork])
React.useEffect(() => {
if (sourceAsset) {
const _networks = networks
.filter(
(n: Network) =>
n.currencies.some((c: Token) =>
SWAP_PAIRS[sourceAsset.asset]
? SWAP_PAIRS[sourceAsset.asset].includes(c.asset)
: false
) && n.is_testnet === sourceNetwork?.is_testnet
)
.map((n: Network) => ({
...n,
currencies: n.currencies.map((c: Token) => ({
...c,
status: SWAP_PAIRS?.[sourceAsset.asset].includes(c.asset)
? c.status
: 'inactive',
})),
}))
if (!sourceAsset) return
const _networks = networks
.filter(
(n: Network) =>
n.currencies.some((c: Token) =>
SWAP_PAIRS[sourceAsset.asset]
? SWAP_PAIRS[sourceAsset.asset].includes(c.asset)
: false
) && n.is_testnet === sourceNetwork?.is_testnet
)
.map((n: Network) => ({
...n,
currencies: n.currencies.map((c: Token) => ({
...c,
status: SWAP_PAIRS?.[sourceAsset.asset].includes(c.asset)
? c.status
: 'inactive',
})),
}))
setDestinationNetworks(_networks)
setDestinationNetwork(_networks.find((n) => n.status === 'active'))
}
setDestinationNetworks(_networks)
setDestinationNetwork(_networks.find((n) => n.status === 'active'))
}, [sourceAsset, sourceNetwork])
React.useEffect(() => {
@@ -68,10 +68,14 @@ const PayoutProcessor: React.FC<IProps> = ({
const { switchChain } = useSwitchChain()
const { connectWallet } = useWallet()
const isWithdrawal = React.useMemo(
() => (sourceAsset?.name?.startsWith('Lux') ? true : false),
const toBurn = React.useMemo(
() => ((sourceAsset.name.startsWith('Lux ') || sourceAsset.name.startsWith('Zoo ')) ? true : false),
[sourceAsset]
)
const toMint = React.useMemo(
() => ((destinationAsset.name.startsWith('Lux ') || destinationAsset.name.startsWith('Zoo ')) ? true : false),
[destinationAsset]
)
React.useEffect(() => {
if (isConnecting) return;
@@ -80,19 +84,19 @@ const PayoutProcessor: React.FC<IProps> = ({
notify('Please connect wallet first.', 'info')
// connectWallet('evm')
} else {
if (isWithdrawal) {
if (toMint) {
mintDestinationToken()
} else {
if (Number(chainId) === Number(destinationNetwork?.chain_id)) {
withdrawDestinationToken()
} else {
destinationNetwork.chain_id && switchChain && switchChain({ chainId: destinationNetwork.chain_id })
}
} else {
payoutDestinationToken()
}
}
}, [signer])
const payoutDestinationToken = async () => {
const mintDestinationToken = async () => {
const mintData = {
hashedTxId_: Web3.utils.keccak256(userTransferTransaction),
toTokenAddress_: destinationAsset?.contract_address,
@@ -322,7 +326,9 @@ const PayoutProcessor: React.FC<IProps> = ({
)
// connectWallet('evm')
} else {
if (isWithdrawal) {
if (toMint) {
mintDestinationToken()
} else {
if (Number(chainId) === Number(destinationNetwork.chain_id)) {
withdrawDestinationToken()
} else {
@@ -330,8 +336,6 @@ const PayoutProcessor: React.FC<IProps> = ({
switchChain &&
switchChain({ chainId: destinationNetwork.chain_id })
}
} else {
payoutDestinationToken()
}
}
}
@@ -356,7 +360,7 @@ const PayoutProcessor: React.FC<IProps> = ({
<Gauge value={60} size="medium" />
</span>
<div className="mt-2">
{isWithdrawal ? 'Withdraw' : 'Get'} Your{' '}
{toMint ? 'Mint' : 'Withdraw'} Your{' '}
{destinationAsset.asset}
</div>
</div>
@@ -367,7 +371,7 @@ const PayoutProcessor: React.FC<IProps> = ({
</span>
<div className="flex flex-col items-start text-sm">
<span>
{`${truncateDecimals(Number(sourceAmount), 6)} ${sourceAsset?.asset} ${isWithdrawal ? 'burnt' : 'transferred'}`}
{`${truncateDecimals(Number(sourceAmount), 6)} ${sourceAsset?.asset} ${toBurn ? 'burnt' : 'transferred'}`}
</span>
<div className="underline flex gap-2 items-center">
{shortenAddress(userTransferTransaction)}
@@ -426,7 +430,7 @@ const PayoutProcessor: React.FC<IProps> = ({
<ArrowRight />
)}
<span className="grow">
{isWithdrawal ? `Withdraw Your ${destinationAsset?.asset}` : `Get Your ${destinationAsset?.asset}`}
{toMint ? `Mint Your ${destinationAsset?.asset}` : `Withdraw Your ${destinationAsset?.asset}`}
</span>
</button>
</div>
@@ -52,6 +52,11 @@ const SwapItems: React.FC<IProps> = ({
const chainId = useChainId()
const signer = useEthersSigner()
const toMint = React.useMemo(
() => ((destinationAsset.name.startsWith('Lux ') || destinationAsset.name.startsWith('Zoo ')) ? true : false),
[destinationAsset]
)
const _network = networks.find((n) => n.chain_id === chainId)
const _renderWallet = () => {
@@ -137,11 +142,6 @@ const SwapItems: React.FC<IProps> = ({
}
}, [signer, chainId])
const isWithdrawal = React.useMemo(
() => (sourceAsset?.name?.startsWith("Lux") ? true : false),
[sourceAsset]
);
return (
<div className="flex flex-col gap-4">
{_renderWallet()}
@@ -175,9 +175,7 @@ const SwapItems: React.FC<IProps> = ({
<div className="flex items-end gap-1 justify-end text-xs">
{isFetching || !signer ? (
<span className="px-2">
<MoveIcon />
</span>
<span className="ml-1 h-3 w-16 rounded-sm bg-level-3 animate-pulse" />
) : (
<>
<WalletIcon height={20} width={20} />
@@ -210,19 +208,17 @@ const SwapItems: React.FC<IProps> = ({
</div>
<div className="flex flex-col text-[#85c285]">
<p className=" text-sm">
{isWithdrawal ? truncateDecimals(Number(sourceAmount) * 0.99, 6) : truncateDecimals(Number(sourceAmount), 6)}{' '}
{toMint ? truncateDecimals(Number(sourceAmount), 6) : truncateDecimals(Number(sourceAmount) * 0.99, 6)}{' '}
{destinationAsset.asset}
</p>
<p className=" text-sm flex justify-end">
${isWithdrawal ? truncateDecimals(Number(sourceAmount) * 0.99 * tokenPrice, 6) : truncateDecimals(Number(sourceAmount) * tokenPrice, 6)}
${toMint ? truncateDecimals(Number(sourceAmount) * tokenPrice, 6) : truncateDecimals(Number(sourceAmount) * 0.99 * tokenPrice, 6)}
</p>
</div>
</div>
<div className="flex items-end gap-1 justify-end text-xs">
{isFetching || !signer ? (
<span className="px-2">
<MoveIcon />
</span>
<span className="ml-1 h-3 w-16 rounded-sm bg-level-3 animate-pulse" />
) : (
<>
<WalletIcon height={20} width={20} />
@@ -35,11 +35,16 @@ const SwapSuccess: React.FC<{
)
const [userTransferTransaction] = useAtom(userTransferTransactionAtom)
const isWithdrawal = React.useMemo(
() => (sourceAsset.name.startsWith('Lux') ? true : false),
const toBurn = React.useMemo(
() => ((sourceAsset.name.startsWith('Lux ') || sourceAsset.name.startsWith('Zoo ')) ? true : false),
[sourceAsset]
)
const toMint = React.useMemo(
() => ((destinationAsset.name.startsWith('Lux ') || destinationAsset.name.startsWith('Zoo ')) ? true : false),
[destinationAsset]
)
return (
<div className={`w-full flex flex-col ${className}`}>
<div className="space-y-5">
@@ -72,7 +77,7 @@ const SwapSuccess: React.FC<{
</span>
<div className="flex flex-col items-start text-sm">
<span>
{`${truncateDecimals(Number(sourceAmount), 6)} ${sourceAsset?.asset} ${isWithdrawal ? 'burnt' : 'transferred'}`}
{`${truncateDecimals(Number(sourceAmount), 6)} ${sourceAsset?.asset} ${toBurn ? 'burnt' : 'transferred'}`}
</span>
<div className="underline flex gap-2 items-center">
{shortenAddress(userTransferTransaction)}
@@ -127,7 +132,7 @@ const SwapSuccess: React.FC<{
<Gauge value={100} size="verySmall" showCheckmark={true} />
</span>
<div className="flex flex-col text-sm">
<span>{isWithdrawal ? String(truncateDecimals(Number(sourceAmount) * 0.99, 6)) : String(truncateDecimals(Number(sourceAmount), 6))} {destinationAsset?.asset} has been arrived</span>
<span>{toMint ? String(truncateDecimals(Number(sourceAmount), 6)) : String(truncateDecimals(Number(sourceAmount) * 0.99, 6))} {destinationAsset?.asset} has been arrived</span>
<div className="underline flex gap-2 items-center">
{shortenAddress(bridgeMintTransactionHash)}
<Tooltip>
@@ -59,10 +59,14 @@ const TeleportProcessor: React.FC<IProps> = ({
const { notify } = useNotify();
const isWithdrawal = React.useMemo(
() => (sourceAsset.name.startsWith('Lux') ? true : false),
const toBurn = React.useMemo(
() => ((sourceAsset.name.startsWith('Lux ') || sourceAsset.name.startsWith('Zoo ')) ? true : false),
[sourceAsset]
)
const toMint = React.useMemo(
() => ((destinationAsset.name.startsWith('Lux ') || destinationAsset.name.startsWith('Zoo ')) ? true : false),
[destinationAsset]
)
React.useEffect(() => {
if (isConnecting) return;
@@ -183,7 +187,7 @@ const TeleportProcessor: React.FC<IProps> = ({
</span>
<div className="flex flex-col items-start text-sm">
<span>
{`${truncateDecimals(Number(sourceAmount), 6)} ${sourceAsset?.asset} ${isWithdrawal ? 'burnt' : 'transferred'}`}
{`${truncateDecimals(Number(sourceAmount), 6)} ${sourceAsset?.asset} ${toBurn ? 'burnt' : 'transferred'}`}
</span>
<div className="underline flex gap-2 items-center">
{shortenAddress(userTransferTransaction)}
@@ -1,6 +1,6 @@
import React from 'react'
import { swapStatusAtom, userTransferTransactionAtom } from '@/store/teleport'
import { ArrowRight, Router } from 'lucide-react'
import { ArrowRight, Router, Wallet2Icon } from 'lucide-react'
import { Contract } from 'ethers'
import { CONTRACTS } from '@/components/lux/teleport/constants/settings'
@@ -43,8 +43,7 @@ const UserTokenDepositor: React.FC<IProps> = ({
}) => {
const { notify } = useNotify()
//state
const [isTokenTransferring, setIsTokenTransferring] =
React.useState<boolean>(false)
const [isTokenTransferring, setIsTokenTransferring] = React.useState<boolean>(false)
const [userDepositNotice, setUserDepositNotice] = React.useState<string>('')
//atoms
const [, setSwapStatus] = useAtom(swapStatusAtom)
@@ -54,8 +53,8 @@ const UserTokenDepositor: React.FC<IProps> = ({
const { switchChain } = useSwitchChain()
const { connectWallet } = useWallet()
const isWithdrawal = React.useMemo(
() => (sourceAsset.name.startsWith('Lux') ? true : false),
const toBurn = React.useMemo(
() => ((sourceAsset.name.startsWith('Lux ') || sourceAsset.name.startsWith('Zoo ')) ? true : false),
[sourceAsset]
)
@@ -66,7 +65,7 @@ const UserTokenDepositor: React.FC<IProps> = ({
notify('Please connect wallet first.', 'info')
} else {
if (Number(chainId) === Number(sourceNetwork?.chain_id)) {
isWithdrawal ? burnToken() : transferToken()
toBurn ? burnToken() : transferToken()
} else {
sourceNetwork.chain_id && switchChain && switchChain({ chainId: sourceNetwork.chain_id })
}
@@ -253,8 +252,7 @@ const UserTokenDepositor: React.FC<IProps> = ({
} else if (Number(chainId) !== Number(sourceNetwork.chain_id)) {
sourceNetwork.chain_id && switchChain && switchChain({ chainId: sourceNetwork.chain_id })
} else {
console.log("transfer")
isWithdrawal ? burnToken() : transferToken()
toBurn ? burnToken() : transferToken()
}
}
@@ -271,24 +269,35 @@ const UserTokenDepositor: React.FC<IProps> = ({
sourceAmount={sourceAmount}
/>
</div>
<button
disabled={isTokenTransferring}
onClick={handleTokenTransfer}
className="border border-muted-3 disabled:border-[#404040] items-center space-x-1 disabled:opacity-80 disabled:cursor-not-allowed relative w-full flex justify-center font-semibold rounded-md transform transition duration-200 ease-in-out hover:bg-primary-hover bg-primary-lux text-primary-fg disabled:hover:bg-primary-lux py-3 px-2 md:px-3 plausible-event-name=Swap+initiated"
>
{isTokenTransferring ? (
<SpinIcon className="animate-spin h-5 w-5" />
) : (
<ArrowRight />
)}
{isTokenTransferring ? (
<span className="grow">{userDepositNotice}</span>
) : (
<span className="grow">
{isWithdrawal ? 'Burn' : 'Transfer'} {sourceAsset.asset}
</span>
)}
</button>
{
!signer ?
<button
onClick={() => connectWallet('evm')}
className="border border-muted-3 disabled:border-[#404040] items-center space-x-1 disabled:opacity-80 disabled:cursor-not-allowed relative w-full flex justify-center font-semibold rounded-md transform transition duration-200 ease-in-out hover:bg-primary-hover bg-primary-lux text-primary-fg disabled:hover:bg-primary-lux py-3 px-2 md:px-3 plausible-event-name=Swap+initiated"
>
<Wallet2Icon className="h-5 w-5" />
<span className="grow">Connect Wallet</span>
</button> :
<button
disabled={isTokenTransferring}
onClick={handleTokenTransfer}
className="border border-muted-3 disabled:border-[#404040] items-center space-x-1 disabled:opacity-80 disabled:cursor-not-allowed relative w-full flex justify-center font-semibold rounded-md transform transition duration-200 ease-in-out hover:bg-primary-hover bg-primary-lux text-primary-fg disabled:hover:bg-primary-lux py-3 px-2 md:px-3 plausible-event-name=Swap+initiated"
>
{isTokenTransferring ? (
<SpinIcon className="animate-spin h-5 w-5" />
) : (
<ArrowRight />
)}
{isTokenTransferring ? (
<span className="grow">{userDepositNotice}</span>
) : (
<span className="grow">
{toBurn ? 'Burn' : 'Transfer'} {sourceAsset.asset}
</span>
)}
</button>
}
</div>
</div>
)
@@ -34,7 +34,7 @@ const TokenSelect: React.FC<{
height="40"
width="40"
loading="eager"
className="rounded-md object-contain"
className="rounded-full object-contain"
/>
)}
</div>
@@ -290,6 +290,22 @@
"destination_base_fee": 1,
"is_native": false
},
{
"name": "LZOO",
"asset": "LZOO",
"contract_address": "0x0000000000000000000000000000000000000000",
"decimals": 18,
"status": "active",
"is_deposit_enabled": false,
"is_withdrawal_enabled": false,
"is_refuel_enabled": false,
"max_withdrawal_amount": 0,
"deposit_fee": 0.2,
"withdrawal_fee": 0.2,
"source_base_fee": 1,
"destination_base_fee": 1,
"is_native": false
},
{
"name": "LFTM",
"asset": "LFTM",
@@ -380,6 +396,286 @@
],
"created_date": "2024-01-01T00:00:00.000000+00:00"
},
{
"display_name": "Zoo Mainnet",
"internal_name": "ZOO_MAINNET",
"native_currency": "ZOO",
"is_testnet": false,
"is_featured": true,
"average_completion_time": "00:00:07.7777777",
"chain_id": "200200",
"status": "active",
"type": "evm",
"refuel_amount_in_usd": 1,
"transaction_explorer_template": "https://explore.zoo.network/tx/{0}",
"account_explorer_template": "https://explore.zoo.network/address/{0}",
"currencies": [
{
"name": "ZOO",
"asset": "ZOO",
"contract_address": null,
"decimals": 18,
"status": "active",
"is_deposit_enabled": false,
"is_withdrawal_enabled": true,
"is_refuel_enabled": false,
"max_withdrawal_amount": 0,
"deposit_fee": 0.000108,
"withdrawal_fee": 0.000108,
"source_base_fee": 0.000545,
"destination_base_fee": 0.000545,
"is_native": true
},
{
"name": "WETH",
"asset": "WETH",
"contract_address": "0x0000000000000000000000000000000000000000",
"decimals": 18,
"status": "active",
"is_deposit_enabled": false,
"is_withdrawal_enabled": true,
"is_refuel_enabled": false,
"max_withdrawal_amount": 0,
"deposit_fee": 0.1,
"withdrawal_fee": 0.1,
"source_base_fee": 0.1,
"destination_base_fee": 0.1,
"is_native": false
},
{
"name": "USDT",
"asset": "USDT",
"contract_address": "0x0000000000000000000000000000000000000000",
"decimals": 6,
"status": "active",
"is_deposit_enabled": false,
"is_withdrawal_enabled": false,
"is_refuel_enabled": false,
"max_withdrawal_amount": 0,
"deposit_fee": 0.1,
"withdrawal_fee": 0.1,
"source_base_fee": 0.1,
"destination_base_fee": 0.1,
"is_native": false
},
{
"name": "USDC",
"asset": "USDC",
"contract_address": "0x0000000000000000000000000000000000000000",
"decimals": 6,
"status": "active",
"is_deposit_enabled": false,
"is_withdrawal_enabled": false,
"is_refuel_enabled": false,
"max_withdrawal_amount": 0,
"deposit_fee": 0.1,
"withdrawal_fee": 0.1,
"source_base_fee": 0.1,
"destination_base_fee": 0.1,
"is_native": false
},
{
"name": "DAI",
"asset": "DAI",
"contract_address": "0x0000000000000000000000000000000000000000",
"decimals": 18,
"status": "active",
"is_deposit_enabled": false,
"is_withdrawal_enabled": false,
"is_refuel_enabled": false,
"max_withdrawal_amount": 0,
"deposit_fee": 0.1,
"withdrawal_fee": 0.1,
"source_base_fee": 0.1,
"destination_base_fee": 0.1,
"is_native": false
},
{
"name": "ZETH",
"asset": "ZETH",
"contract_address": "0x999Ab39dF1Ae0F0069303B430A52f16FFdaAC69C",
"decimals": 18,
"status": "active",
"is_deposit_enabled": false,
"is_withdrawal_enabled": false,
"is_refuel_enabled": false,
"max_withdrawal_amount": 0,
"deposit_fee": 0.1,
"withdrawal_fee": 0.1,
"source_base_fee": 0.1,
"destination_base_fee": 0.1,
"is_native": false
},
{
"name": "ZBTC",
"asset": "ZBTC",
"contract_address": "0xd7bE6F0E47acb95944fcc357a4392cAa5670B9e4",
"decimals": 18,
"status": "active",
"is_deposit_enabled": false,
"is_withdrawal_enabled": false,
"is_refuel_enabled": false,
"max_withdrawal_amount": 0,
"deposit_fee": 0.1,
"withdrawal_fee": 0.1,
"source_base_fee": 0.1,
"destination_base_fee": 0.1,
"is_native": false
},
{
"name": "ZUSD",
"asset": "ZUSD",
"contract_address": "0xA7EF94FfacA04aA51aCB66Ad93691a10Ce6eAcf4",
"decimals": 18,
"status": "active",
"is_deposit_enabled": false,
"is_withdrawal_enabled": false,
"is_refuel_enabled": false,
"max_withdrawal_amount": 0,
"deposit_fee": 0.1,
"withdrawal_fee": 0.1,
"source_base_fee": 0.1,
"destination_base_fee": 0.1,
"is_native": false
},
{
"name": "ZLUX",
"asset": "ZLUX",
"contract_address": "0xA7EF94FfacA04aA51aCB66Ad93691a10Ce6eAcf4",
"decimals": 18,
"status": "active",
"is_deposit_enabled": false,
"is_withdrawal_enabled": false,
"is_refuel_enabled": false,
"max_withdrawal_amount": 0,
"deposit_fee": 0.1,
"withdrawal_fee": 0.1,
"source_base_fee": 0.1,
"destination_base_fee": 0.1,
"is_native": false
},
{
"name": "ZFTM",
"asset": "ZFTM",
"contract_address": "0xE1276a2F675A1D7F69FC2C78Ca6a39d1D951fD35",
"decimals": 18,
"status": "active",
"is_deposit_enabled": false,
"is_withdrawal_enabled": false,
"is_refuel_enabled": false,
"max_withdrawal_amount": 0,
"deposit_fee": 0.1,
"withdrawal_fee": 0.1,
"source_base_fee": 0.1,
"destination_base_fee": 0.1,
"is_native": false
},
{
"name": "ZTON",
"asset": "ZTON",
"contract_address": "0xf41380968E9D408a143ddC63322565793d0750f8",
"decimals": 18,
"status": "active",
"is_deposit_enabled": false,
"is_withdrawal_enabled": false,
"is_refuel_enabled": false,
"max_withdrawal_amount": 0,
"deposit_fee": 0.1,
"withdrawal_fee": 0.1,
"source_base_fee": 0.1,
"destination_base_fee": 0.1,
"is_native": false
},
{
"name": "ZSOL",
"asset": "ZSOL",
"contract_address": "",
"decimals": 18,
"status": "active",
"is_deposit_enabled": false,
"is_withdrawal_enabled": false,
"is_refuel_enabled": false,
"max_withdrawal_amount": 0,
"deposit_fee": 0.1,
"withdrawal_fee": 0.1,
"source_base_fee": 0.1,
"destination_base_fee": 0.1,
"is_native": false
},
{
"name": "ZCELO",
"asset": "ZCELO",
"contract_address": "0xe0feC703840364714b97272973B8945FD5eB5600",
"decimals": 18,
"status": "active",
"is_deposit_enabled": false,
"is_withdrawal_enabled": false,
"is_refuel_enabled": false,
"max_withdrawal_amount": 0,
"deposit_fee": 0.1,
"withdrawal_fee": 0.1,
"source_base_fee": 0.1,
"destination_base_fee": 0.1,
"is_native": false
},
{
"name": "ZXDAI",
"asset": "ZXDAI",
"contract_address": "0x426123c16f821A1C945F57d8730210185DA16724",
"decimals": 18,
"status": "active",
"is_deposit_enabled": false,
"is_withdrawal_enabled": false,
"is_refuel_enabled": false,
"max_withdrawal_amount": 0,
"deposit_fee": 0.1,
"withdrawal_fee": 0.1,
"source_base_fee": 0.1,
"destination_base_fee": 0.1,
"is_native": false
},
{
"name": "ZPOL",
"asset": "ZPOL",
"contract_address": "0x305B062C74F92d05de7Cbccd1923f19c7B27eAB1",
"decimals": 18,
"status": "active",
"is_deposit_enabled": false,
"is_withdrawal_enabled": false,
"is_refuel_enabled": false,
"max_withdrawal_amount": 0,
"deposit_fee": 0.1,
"withdrawal_fee": 0.1,
"source_base_fee": 0.1,
"destination_base_fee": 0.1,
"is_native": false
},
{
"name": "ZBNB",
"asset": "ZBNB",
"contract_address": "0x2c04439Dc52080E56882f61B2C4fb059A412fD5b",
"decimals": 18,
"status": "active",
"is_deposit_enabled": false,
"is_withdrawal_enabled": false,
"is_refuel_enabled": false,
"max_withdrawal_amount": 0,
"deposit_fee": 0.1,
"withdrawal_fee": 0.1,
"source_base_fee": 0.1,
"destination_base_fee": 0.1,
"is_native": false
}
],
"metadata": null,
"managed_accounts": [],
"nodes": [
{
"url": "https://api.zoo.network"
}
],
"created_date": "2024-01-01T00:00:00.000000+00:00"
},
{
"display_name": "Polygon",
"internal_name": "POLYGON_MAINNET",
@@ -453,6 +453,22 @@
"destination_base_fee": 0.1,
"is_native": false
},
{
"name": "LZOO",
"asset": "LZOO",
"contract_address": "0xA7EF94FfacA04aA51aCB66Ad93691a10Ce6eAcf4",
"decimals": 18,
"status": "active",
"is_deposit_enabled": false,
"is_withdrawal_enabled": false,
"is_refuel_enabled": false,
"max_withdrawal_amount": 0,
"deposit_fee": 0.1,
"withdrawal_fee": 0.1,
"source_base_fee": 0.1,
"destination_base_fee": 0.1,
"is_native": false
},
{
"name": "LFTM",
"asset": "LFTM",
@@ -575,6 +591,286 @@
],
"created_date": "2024-01-01T00:00:00.000000+00:00"
},
{
"display_name": "Zoo Testnet",
"internal_name": "ZOO_TESTNET",
"native_currency": "ZOO",
"is_testnet": true,
"is_featured": true,
"average_completion_time": "00:00:07.7777777",
"chain_id": "200201",
"status": "active",
"type": "evm",
"refuel_amount_in_usd": 1,
"transaction_explorer_template": "https://explore.zoo-test.network/tx/{0}",
"account_explorer_template": "https://explore.zoo-test.network/address/{0}",
"currencies": [
{
"name": "ZOO",
"asset": "ZOO",
"contract_address": null,
"decimals": 18,
"status": "active",
"is_deposit_enabled": false,
"is_withdrawal_enabled": true,
"is_refuel_enabled": false,
"max_withdrawal_amount": 0,
"deposit_fee": 0.000108,
"withdrawal_fee": 0.000108,
"source_base_fee": 0.000545,
"destination_base_fee": 0.000545,
"is_native": true
},
{
"name": "WETH",
"asset": "WETH",
"contract_address": "0x0000000000000000000000000000000000000000",
"decimals": 18,
"status": "active",
"is_deposit_enabled": false,
"is_withdrawal_enabled": true,
"is_refuel_enabled": false,
"max_withdrawal_amount": 0,
"deposit_fee": 0.1,
"withdrawal_fee": 0.1,
"source_base_fee": 0.1,
"destination_base_fee": 0.1,
"is_native": false
},
{
"name": "USDT",
"asset": "USDT",
"contract_address": "0x0000000000000000000000000000000000000000",
"decimals": 6,
"status": "active",
"is_deposit_enabled": false,
"is_withdrawal_enabled": false,
"is_refuel_enabled": false,
"max_withdrawal_amount": 0,
"deposit_fee": 0.1,
"withdrawal_fee": 0.1,
"source_base_fee": 0.1,
"destination_base_fee": 0.1,
"is_native": false
},
{
"name": "USDC",
"asset": "USDC",
"contract_address": "0x0000000000000000000000000000000000000000",
"decimals": 6,
"status": "active",
"is_deposit_enabled": false,
"is_withdrawal_enabled": false,
"is_refuel_enabled": false,
"max_withdrawal_amount": 0,
"deposit_fee": 0.1,
"withdrawal_fee": 0.1,
"source_base_fee": 0.1,
"destination_base_fee": 0.1,
"is_native": false
},
{
"name": "DAI",
"asset": "DAI",
"contract_address": "0x0000000000000000000000000000000000000000",
"decimals": 18,
"status": "active",
"is_deposit_enabled": false,
"is_withdrawal_enabled": false,
"is_refuel_enabled": false,
"max_withdrawal_amount": 0,
"deposit_fee": 0.1,
"withdrawal_fee": 0.1,
"source_base_fee": 0.1,
"destination_base_fee": 0.1,
"is_native": false
},
{
"name": "ZETH",
"asset": "ZETH",
"contract_address": "0x999Ab39dF1Ae0F0069303B430A52f16FFdaAC69C",
"decimals": 18,
"status": "active",
"is_deposit_enabled": false,
"is_withdrawal_enabled": false,
"is_refuel_enabled": false,
"max_withdrawal_amount": 0,
"deposit_fee": 0.1,
"withdrawal_fee": 0.1,
"source_base_fee": 0.1,
"destination_base_fee": 0.1,
"is_native": false
},
{
"name": "ZBTC",
"asset": "ZBTC",
"contract_address": "0xd7bE6F0E47acb95944fcc357a4392cAa5670B9e4",
"decimals": 18,
"status": "active",
"is_deposit_enabled": false,
"is_withdrawal_enabled": false,
"is_refuel_enabled": false,
"max_withdrawal_amount": 0,
"deposit_fee": 0.1,
"withdrawal_fee": 0.1,
"source_base_fee": 0.1,
"destination_base_fee": 0.1,
"is_native": false
},
{
"name": "ZUSD",
"asset": "ZUSD",
"contract_address": "0xA7EF94FfacA04aA51aCB66Ad93691a10Ce6eAcf4",
"decimals": 18,
"status": "active",
"is_deposit_enabled": false,
"is_withdrawal_enabled": false,
"is_refuel_enabled": false,
"max_withdrawal_amount": 0,
"deposit_fee": 0.1,
"withdrawal_fee": 0.1,
"source_base_fee": 0.1,
"destination_base_fee": 0.1,
"is_native": false
},
{
"name": "ZLUX",
"asset": "ZLUX",
"contract_address": "0xA7EF94FfacA04aA51aCB66Ad93691a10Ce6eAcf4",
"decimals": 18,
"status": "active",
"is_deposit_enabled": false,
"is_withdrawal_enabled": false,
"is_refuel_enabled": false,
"max_withdrawal_amount": 0,
"deposit_fee": 0.1,
"withdrawal_fee": 0.1,
"source_base_fee": 0.1,
"destination_base_fee": 0.1,
"is_native": false
},
{
"name": "ZFTM",
"asset": "ZFTM",
"contract_address": "0xE1276a2F675A1D7F69FC2C78Ca6a39d1D951fD35",
"decimals": 18,
"status": "active",
"is_deposit_enabled": false,
"is_withdrawal_enabled": false,
"is_refuel_enabled": false,
"max_withdrawal_amount": 0,
"deposit_fee": 0.1,
"withdrawal_fee": 0.1,
"source_base_fee": 0.1,
"destination_base_fee": 0.1,
"is_native": false
},
{
"name": "ZTON",
"asset": "ZTON",
"contract_address": "0xf41380968E9D408a143ddC63322565793d0750f8",
"decimals": 18,
"status": "active",
"is_deposit_enabled": false,
"is_withdrawal_enabled": false,
"is_refuel_enabled": false,
"max_withdrawal_amount": 0,
"deposit_fee": 0.1,
"withdrawal_fee": 0.1,
"source_base_fee": 0.1,
"destination_base_fee": 0.1,
"is_native": false
},
{
"name": "ZSOL",
"asset": "ZSOL",
"contract_address": "",
"decimals": 18,
"status": "active",
"is_deposit_enabled": false,
"is_withdrawal_enabled": false,
"is_refuel_enabled": false,
"max_withdrawal_amount": 0,
"deposit_fee": 0.1,
"withdrawal_fee": 0.1,
"source_base_fee": 0.1,
"destination_base_fee": 0.1,
"is_native": false
},
{
"name": "ZCELO",
"asset": "ZCELO",
"contract_address": "0xe0feC703840364714b97272973B8945FD5eB5600",
"decimals": 18,
"status": "active",
"is_deposit_enabled": false,
"is_withdrawal_enabled": false,
"is_refuel_enabled": false,
"max_withdrawal_amount": 0,
"deposit_fee": 0.1,
"withdrawal_fee": 0.1,
"source_base_fee": 0.1,
"destination_base_fee": 0.1,
"is_native": false
},
{
"name": "ZXDAI",
"asset": "ZXDAI",
"contract_address": "0x426123c16f821A1C945F57d8730210185DA16724",
"decimals": 18,
"status": "active",
"is_deposit_enabled": false,
"is_withdrawal_enabled": false,
"is_refuel_enabled": false,
"max_withdrawal_amount": 0,
"deposit_fee": 0.1,
"withdrawal_fee": 0.1,
"source_base_fee": 0.1,
"destination_base_fee": 0.1,
"is_native": false
},
{
"name": "ZPOL",
"asset": "ZPOL",
"contract_address": "0x305B062C74F92d05de7Cbccd1923f19c7B27eAB1",
"decimals": 18,
"status": "active",
"is_deposit_enabled": false,
"is_withdrawal_enabled": false,
"is_refuel_enabled": false,
"max_withdrawal_amount": 0,
"deposit_fee": 0.1,
"withdrawal_fee": 0.1,
"source_base_fee": 0.1,
"destination_base_fee": 0.1,
"is_native": false
},
{
"name": "ZBNB",
"asset": "ZBNB",
"contract_address": "0x2c04439Dc52080E56882f61B2C4fb059A412fD5b",
"decimals": 18,
"status": "active",
"is_deposit_enabled": false,
"is_withdrawal_enabled": false,
"is_refuel_enabled": false,
"max_withdrawal_amount": 0,
"deposit_fee": 0.1,
"withdrawal_fee": 0.1,
"source_base_fee": 0.1,
"destination_base_fee": 0.1,
"is_native": false
}
],
"metadata": null,
"managed_accounts": [],
"nodes": [
{
"url": "https://api.zoo-test.network"
}
],
"created_date": "2024-01-01T00:00:00.000000+00:00"
},
{
"display_name": "BSC Testnet",
"internal_name": "BSC_TESTNET",
+2 -1
View File
@@ -1,4 +1,5 @@
# for local dev
POSTGRESQL_URL='file:./dev.sqlite'
POSTGRES_URL='file:./dev.sqlite'
PORT=8080
GH_USER=
GH_TOKEN=
+2
View File
@@ -35,6 +35,7 @@
"devDependencies": {
"@types/cors": "^2.8.17",
"@types/express": "^4.17.21",
"@types/jsonwebtoken": "^9.0.7",
"@types/multicoin-address-validator": "^0.5.3",
"@types/node": "^20.11.0",
"@typescript-eslint/eslint-plugin": "^8.2.0",
@@ -56,6 +57,7 @@
"ethers": "^6.13.4",
"express": "^4.19.2",
"express-validator": "^7.2.0",
"jsonwebtoken": "^9.0.2",
"module-alias": "^2.2.3",
"multicoin-address-validator": "^0.5.22"
}
+37
View File
@@ -0,0 +1,37 @@
//import { handlerGetExplorer, handlerGetHasBySwaps } from "@/helpers/swapHelper"
import { Router, Request, Response } from "express"
import jwt from 'jsonwebtoken';
import { mainnetSettings, testnetSettings } from "@/settings"
const router: Router = Router()
function generateToken() {
const options = <jwt.SignOptions>{
subject: process.env.SERVICE_ACCOUNT_EMAIL,
audience: "https://api.utila.io/",
expiresIn: "1h",
algorithm: <jwt.Algorithm>"RS256",
};
return jwt.sign({}, process.env.SERVICE_ACCOUNT_PRIVATE_KEY as string, options);
}
// route: /api/utila/
// description:
// method: GET and it's public
router.get("/", async (req: Request, res: Response) => {
try {
const token = generateToken ()
console.log(token)
res.status(200).json({ data: token })
}
catch (error: any) {
console.log(error)
res.status(500).json({ error: error })
}
})
export default router
+2
View File
@@ -11,6 +11,7 @@ import quotes from "@/routes/quotes"
import rate from "@/routes/rate"
import networks from "@/routes/networks"
import exchanges from "@/routes/exchanges"
import utila from "@/routes/utila"
dotenv.config()
@@ -30,6 +31,7 @@ app.use("/api/quotes", quotes)
app.use("/api/rate", rate)
app.use("/api/networks", networks)
app.use("/api/exchanges", exchanges)
app.use("/api/utila", utila)
app.get("/", async (req, res) => {
res.json(">>> Hello world. We are LUX!!!")
+32
View File
@@ -0,0 +1,32 @@
// Importing JSON files for mainnet
import mainnetNetworks from './mainnet/networks.json'
import mainnetExchanges from './mainnet/exchanges.json'
// Importing JSON files for testnet
import testnetExchanges from './testnet/exchanges.json'
import testnetNetworks from './testnet/networks.json'
export const mainnetSettings = {
data: {
currencies: [],
discovery: {},
exchanges: mainnetExchanges,
networks: [...mainnetNetworks, ...testnetNetworks],
},
sources: [],
destinations: [],
contractAddress: {},
error: null,
}
export const testnetSettings = {
data: {
currencies: [],
discovery: {},
exchanges: testnetExchanges,
networks: testnetNetworks,
},
sources: [],
destinations: [],
contractAddress: {},
error: null,
}
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
+1 -1
View File
@@ -14,7 +14,7 @@ node_modules
/coverage
/coverage.json
/scripts/deploy.local.ts
/scripts/deploy.local*
# Hardhat Ignition default folder for deployments against a local node
ignition/deployments/chain-31337
+197
View File
@@ -0,0 +1,197 @@
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;
/**
███████╗ ██████╗ ██████╗ ██╗ ██╗ █████╗ ██╗ ██╗██╗ ████████╗
╚══███╔╝██╔═══██╗██╔═══██╗ ██║ ██║██╔══██╗██║ ██║██║ ╚══██╔══╝
███╔╝ ██║ ██║██║ ██║ ██║ ██║███████║██║ ██║██║ ██║
███╔╝ ██║ ██║██║ ██║ ╚██╗ ██╔╝██╔══██║██║ ██║██║ ██║
███████╗╚██████╔╝╚██████╔╝ ╚████╔╝ ██║ ██║╚██████╔╝███████╗ ██║
╚══════╝ ╚═════╝ ╚═════╝ ╚═══╝ ╚═╝ ╚═╝ ╚═════╝ ╚══════╝ ╚═╝
*/
import {ERC4626} from "@openzeppelin/contracts/token/ERC20/extensions/ERC4626.sol";
import {LERC4626} from "./LERC4626.sol";
import {IERC20} from "@openzeppelin/contracts/token/ERC20/IERC20.sol";
import {ERC20} from "@openzeppelin/contracts/token/ERC20/ERC20.sol";
import {ETHVault} from "./ETHVault.sol";
import {Ownable} from "@openzeppelin/contracts/access/Ownable.sol";
contract ZooVault is Ownable {
mapping(address => address) public erc20Vault;
address payable public ethVaultAddress;
uint256 public totalVaultLength;
address[] public assets;
event ERC20VaultCreated(
address indexed asset,
address indexed vaultAddress
);
constructor() Ownable(msg.sender) {
ethVaultAddress = payable(0); // Setting to zero address
}
function concat(
string memory a,
string memory b
) internal pure returns (string memory) {
return string(abi.encodePacked(a, b));
}
/**
* @dev add new ERC20 vault
* @param asset_ ERC20 token address
*/
function addNewVault(address asset_) external onlyOwner {
_addNewVault(asset_);
}
/**
* @dev add new ERC20 or ETH vault
* @param asset_ asset address
*/
function _addNewVault(address asset_) private {
if(asset_ == address(0)) {
_addETHVault();
} else {
_addNewERC20Vault(asset_);
}
}
/**
* @dev add new ERC20 vault
* @param asset_ ERC20 token address
*/
function _addNewERC20Vault(address asset_) private {
require(erc20Vault[asset_] == address(0), "Vault already exists.");
LERC4626 newERC20Vault = new LERC4626(
IERC20(asset_),
concat(ERC20(asset_).name(), " Vault"),
concat("v", ERC20(asset_).symbol())
);
address newVaultAddress = address(newERC20Vault);
erc20Vault[asset_] = newVaultAddress;
IERC20(asset_).approve(newVaultAddress, type(uint256).max);
totalVaultLength++;
assets.push(asset_);
emit ERC20VaultCreated(asset_, newVaultAddress);
}
/**
* @dev add ETH vault
*/
function _addETHVault() private {
require(ethVaultAddress == payable(0), "ethVaultAddress already exists!");
ETHVault _newETHVault = new ETHVault("Native Vault", "ethVault");
ethVaultAddress = payable(address(_newETHVault));
}
/**
* @dev deposit asset
* @param asset_ ERC20 token address
* @param amount_ token amount
*/
function deposit(
address asset_,
uint256 amount_
) external payable onlyOwner {
if (asset_ == address(0)) {
if(ethVaultAddress == payable(0)) {
_addNewVault(address(0));
}
require(msg.value >= amount_, "Insufficient ETH amount");
ETHVault(ethVaultAddress).deposit{value: amount_}(amount_, owner());
} else {
if(erc20Vault[asset_] == address(0)) {
_addNewVault(asset_);
}
ERC4626(erc20Vault[asset_]).deposit(amount_, owner());
}
}
/**
* @dev withdraw asset
* @param asset_ ERC20 token address
* @param receiver_ receiver's address
* @param amount_ token amount
*/
function withdraw(
address asset_,
address receiver_,
uint256 amount_
) external onlyOwner {
if (asset_ == address(0)) {
require(ethVaultAddress != payable(0), "Ethvault does not exist!");
ETHVault(ethVaultAddress).withdraw(amount_, receiver_, owner());
} else {
require(erc20Vault[asset_] != payable(0), "Ethvault does not exist!");
ERC4626(erc20Vault[asset_]).withdraw(amount_, receiver_, owner());
}
}
/**
* @dev preview withdraw
* @param asset_ asset address
* @return value token amount available for withdrawal
*/
function previewWithdraw(
address asset_
) public view returns (uint256) {
if (asset_ == address(0)) {
if(ethVaultAddress == payable(0)) {
return 0;
} else {
return ETHVault(ethVaultAddress).balanceOf(owner());
}
} else {
if(erc20Vault[asset_] == address(0)) {
return 0;
} else {
return ERC4626(erc20Vault[asset_]).maxWithdraw(owner());
}
}
}
/**
* @dev get vault info according to asset address
* @param asset_ ERC20 token address
* @return info vault info
*/
function getVaultInfo(
address asset_
)
external
view
returns (
string memory,
string memory,
string memory,
string memory,
address,
uint256
)
{
if (asset_ == address(0)) {
return (
"Native Token",
"ETH",
ETHVault(ethVaultAddress).name(),
ETHVault(ethVaultAddress).symbol(),
ethVaultAddress,
ETHVault(ethVaultAddress).totalSupply()
);
} else {
return (
ERC20(asset_).name(),
ERC20(asset_).symbol(),
LERC4626(erc20Vault[asset_]).name(),
LERC4626(erc20Vault[asset_]).symbol(), // Add parentheses here
erc20Vault[asset_],
LERC4626(erc20Vault[asset_]).totalAssets()
);
}
}
receive() external payable {}
}
@@ -13,7 +13,7 @@ pragma solidity ^0.8.19;
╚══════╝ ╚═════╝ ╚═╝ ╚═╝ ╚═════╝ ╚═╝ ╚═══╝╚═════╝
*/
import "./ERC20B.sol";
import "../ERC20B.sol";
contract LuxBNB is ERC20B {
string public constant _name = "Lux BNB";
@@ -13,7 +13,7 @@ pragma solidity ^0.8.20;
╚══════╝ ╚═════╝ ╚═╝ ╚═╝ ╚═════╝ ╚═╝ ╚═════╝
*/
import "./ERC20B.sol";
import "../ERC20B.sol";
contract LuxBTC is ERC20B {
string public constant _name = "Lux BTC";
@@ -13,7 +13,7 @@ pragma solidity ^0.8.19;
╚══════╝ ╚═════╝ ╚═╝ ╚═╝ ╚═════╝╚══════╝╚══════╝ ╚═════╝
*/
import "./ERC20B.sol";
import "../ERC20B.sol";
contract LuxCELO is ERC20B {
string public constant _name = "Lux CELO";
@@ -13,7 +13,7 @@ pragma solidity ^0.8.19;
╚══════╝ ╚═════╝ ╚═╝ ╚═╝ ╚══════╝ ╚═╝ ╚═╝ ╚═╝
*/
import "./ERC20B.sol";
import "../ERC20B.sol";
contract LuxETH is ERC20B {
string public constant _name = "Lux ETH";
@@ -13,7 +13,7 @@ pragma solidity ^0.8.19;
╚══════╝ ╚═════╝ ╚═╝ ╚═╝ ╚═╝ ╚═╝ ╚═╝ ╚═╝
*/
import "./ERC20B.sol";
import "../ERC20B.sol";
contract LuxFTM is ERC20B {
string public constant _name = "Lux FTM";
@@ -13,7 +13,7 @@ pragma solidity ^0.8.19;
╚══════╝ ╚═════╝ ╚═╝ ╚═╝ ╚═╝ ╚═════╝ ╚══════╝
*/
import "./ERC20B.sol";
import "../ERC20B.sol";
contract LuxPOL is ERC20B {
string public constant _name = "Lux POL";
@@ -5,15 +5,15 @@
pragma solidity ^0.8.19;
/*
██╗ ██╗ ██╗██╗ ██╗ ██████╗ ███╗ ██╗██████╗
██║ ██║ ██║╚██╗██╔╝ ██╔══██╗████╗ ██║██╔══██╗
██║ ██║ ██║ ╚███╔╝ ██████╔╝██╔██╗ ██║██████╔╝
██║ ██║ ██║ ██╔██╗ ██╔══██╗██║╚██╗██║██╔══██╗
███████╗╚██████╔╝██╔╝ ██╗ ██████╔╝██║ ╚████║██████╔╝
╚══════╝ ╚═════╝ ╚═╝ ╚═╝ ╚═════╝ ╚═╝ ╚═══╝╚═════╝
██╗ ██╗ ██╗██╗ ██╗ ███████╗ ██████╗ ██╗
██║ ██║ ██║╚██╗██╔╝ ██╔════╝██╔═══██╗██║
██║ ██║ ██║ ╚███╔╝ ███████╗██║ ██║██║
██║ ██║ ██║ ██╔██╗ ╚════██║██║ ██║██║
███████╗╚██████╔╝██╔╝ ██╗ ███████║╚██████╔╝███████╗
╚══════╝ ╚═════╝ ╚═╝ ╚═╝ ╚══════╝ ╚═════╝ ╚══════╝
*/
import "./ERC20B.sol";
import "../ERC20B.sol";
contract LuxSOL is ERC20B {
string public constant _name = "Lux Solana";
@@ -5,15 +5,15 @@
pragma solidity ^0.8.19;
/*
██╗ ██╗ ██╗██╗ ██╗ ██████╗ ███╗ ██╗██████╗
██║ ██║ ██║╚██╗██╔╝ ██╔══██╗████╗ ██║██╔══██╗
██║ ██║ ██║ ╚███╔╝ ██████╔╝██╔██╗ ██║██████╔╝
██║ ██║ ██║ ██╔██╗ ██╔══██╗██║╚██╗██║██╔══██╗
███████╗╚██████╔╝██╔╝ ██╗ ██████╔╝██║ ╚████║██████╔╝
╚══════╝ ╚═════╝ ╚═╝ ╚═╝ ╚═════╝ ╚═╝ ╚═══╝╚═════╝
██╗ ██╗ ██╗██╗ ██╗ ████████╗ ██████╗ ███╗ ██╗
██║ ██║ ██║╚██╗██╔╝ ╚══██╔══╝██╔═══██╗████╗ ██║
██║ ██║ ██║ ╚███╔╝ ██║ ██║ ██║██╔██╗ ██║
██║ ██║ ██║ ██╔██╗ ██║ ██║ ██║██║╚██╗██║
███████╗╚██████╔╝██╔╝ ██╗ ██║ ╚██████╔╝██║ ╚████║
╚══════╝ ╚═════╝ ╚═╝ ╚═╝ ╚═╝ ╚═════╝ ╚═╝ ╚═══╝
*/
import "./ERC20B.sol";
import "../ERC20B.sol";
contract LuxTON is ERC20B {
string public constant _name = "Lux TON";
@@ -10,7 +10,7 @@ pragma solidity ^0.8.20;
╚══════╝ ╚═════╝ ╚═╝ ╚═╝ ╚═════╝ ╚══════╝╚═════╝
*/
import "./ERC20B.sol";
import "../ERC20B.sol";
contract LuxUSD is ERC20B {
string public constant _name = "Lux Dollar";
@@ -13,7 +13,7 @@ pragma solidity ^0.8.19;
╚══════╝ ╚═════╝ ╚═╝ ╚═╝ ╚═╝ ╚═╝╚═════╝ ╚═╝ ╚═╝╚═╝
*/
import "./ERC20B.sol";
import "../ERC20B.sol";
contract LuxXDAI is ERC20B {
string public constant _name = "Lux XDAI";
+28
View File
@@ -0,0 +1,28 @@
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;
/**
██╗ ██╗ ██╗██╗ ██╗ ███████╗ ██████╗ ██████╗
██║ ██║ ██║╚██╗██╔╝ ╚══███╔╝██╔═══██╗██╔═══██╗
██║ ██║ ██║ ╚███╔╝ ███╔╝ ██║ ██║██║ ██║
██║ ██║ ██║ ██╔██╗ ███╔╝ ██║ ██║██║ ██║
███████╗╚██████╔╝██╔╝ ██╗ ███████╗╚██████╔╝╚██████╔╝
╚══════╝ ╚═════╝ ╚═╝ ╚═╝ ╚══════╝ ╚═════╝ ╚═════╝
*/
import "../ERC20B.sol";
contract LuxZOO is ERC20B {
string public constant _name = "Lux ZOO";
string public constant _symbol = "LZOO";
constructor() ERC20B(_name, _symbol) {}
function mint(address account, uint256 amount) public {
_mint(account, amount);
}
function burn(address account, uint256 amount) public {
_burn(account, amount);
}
}
+28
View File
@@ -0,0 +1,28 @@
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.19;
/*
███████╗ ██████╗ ██████╗ ██████╗ ███╗ ██╗██████╗
╚══███╔╝██╔═══██╗██╔═══██╗ ██╔══██╗████╗ ██║██╔══██╗
███╔╝ ██║ ██║██║ ██║ ██████╔╝██╔██╗ ██║██████╔╝
███╔╝ ██║ ██║██║ ██║ ██╔══██╗██║╚██╗██║██╔══██╗
███████╗╚██████╔╝╚██████╔╝ ██████╔╝██║ ╚████║██████╔╝
╚══════╝ ╚═════╝ ╚═════╝ ╚═════╝ ╚═╝ ╚═══╝╚═════╝
*/
import "../ERC20B.sol";
contract ZooBNB is ERC20B {
string public constant _name = "Zoo BNB";
string public constant _symbol = "ZBNB";
constructor() ERC20B(_name, _symbol) {}
function mint(address account, uint256 amount) public {
_mint(account, amount);
}
function burn(address account, uint256 amount) public {
_burn(account, amount);
}
}
+28
View File
@@ -0,0 +1,28 @@
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;
/**
███████╗ ██████╗ ██████╗ ██████╗ ████████╗ ██████╗
╚══███╔╝██╔═══██╗██╔═══██╗ ██╔══██╗╚══██╔══╝██╔════╝
███╔╝ ██║ ██║██║ ██║ ██████╔╝ ██║ ██║
███╔╝ ██║ ██║██║ ██║ ██╔══██╗ ██║ ██║
███████╗╚██████╔╝╚██████╔╝ ██████╔╝ ██║ ╚██████╗
╚══════╝ ╚═════╝ ╚═════╝ ╚═════╝ ╚═╝ ╚═════╝
*/
import "../ERC20B.sol";
contract ZooBTC is ERC20B {
string public constant _name = "Zoo BTC";
string public constant _symbol = "ZBTC";
constructor() ERC20B(_name, _symbol) {}
function mint(address account, uint256 amount) public {
_mint(account, amount);
}
function burn(address account, uint256 amount) public {
_burn(account, amount);
}
}
+28
View File
@@ -0,0 +1,28 @@
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.19;
/*
███████╗ ██████╗ ██████╗ ██████╗███████╗██╗ ██████╗
╚══███╔╝██╔═══██╗██╔═══██╗ ██╔════╝██╔════╝██║ ██╔═══██╗
███╔╝ ██║ ██║██║ ██║ ██║ █████╗ ██║ ██║ ██║
███╔╝ ██║ ██║██║ ██║ ██║ ██╔══╝ ██║ ██║ ██║
███████╗╚██████╔╝╚██████╔╝ ╚██████╗███████╗███████╗╚██████╔╝
╚══════╝ ╚═════╝ ╚═════╝ ╚═════╝╚══════╝╚══════╝ ╚═════╝
*/
import "../ERC20B.sol";
contract ZooCELO is ERC20B {
string public constant _name = "Zoo CELO";
string public constant _symbol = "ZCELO";
constructor() ERC20B(_name, _symbol) {}
function mint(address account, uint256 amount) public {
_mint(account, amount);
}
function burn(address account, uint256 amount) public {
_burn(account, amount);
}
}
+28
View File
@@ -0,0 +1,28 @@
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.19;
/*
███████╗ ██████╗ ██████╗ ███████╗████████╗██╗ ██╗
╚══███╔╝██╔═══██╗██╔═══██╗ ██╔════╝╚══██╔══╝██║ ██║
███╔╝ ██║ ██║██║ ██║ █████╗ ██║ ███████║
███╔╝ ██║ ██║██║ ██║ ██╔══╝ ██║ ██╔══██║
███████╗╚██████╔╝╚██████╔╝ ███████╗ ██║ ██║ ██║
╚══════╝ ╚═════╝ ╚═════╝ ╚══════╝ ╚═╝ ╚═╝ ╚═╝
*/
import "../ERC20B.sol";
contract ZooETH is ERC20B {
string public constant _name = "Zoo ETH";
string public constant _symbol = "ZETH";
constructor() ERC20B(_name, _symbol) {}
function mint(address account, uint256 amount) public {
_mint(account, amount);
}
function burn(address account, uint256 amount) public {
_burn(account, amount);
}
}
+28
View File
@@ -0,0 +1,28 @@
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.19;
/*
███████╗ ██████╗ ██████╗ ███████╗████████╗███╗ ███╗
╚══███╔╝██╔═══██╗██╔═══██╗ ██╔════╝╚══██╔══╝████╗ ████║
███╔╝ ██║ ██║██║ ██║ █████╗ ██║ ██╔████╔██║
███╔╝ ██║ ██║██║ ██║ ██╔══╝ ██║ ██║╚██╔╝██║
███████╗╚██████╔╝╚██████╔╝ ██║ ██║ ██║ ╚═╝ ██║
╚══════╝ ╚═════╝ ╚═════╝ ╚═╝ ╚═╝ ╚═╝ ╚═╝
*/
import "../ERC20B.sol";
contract ZooFTM is ERC20B {
string public constant _name = "Zoo FTM";
string public constant _symbol = "ZFTM";
constructor() ERC20B(_name, _symbol) {}
function mint(address account, uint256 amount) public {
_mint(account, amount);
}
function burn(address account, uint256 amount) public {
_burn(account, amount);
}
}
+28
View File
@@ -0,0 +1,28 @@
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;
/**
███████╗ ██████╗ ██████╗ ██╗ ██╗ ██╗██╗ ██╗
╚══███╔╝██╔═══██╗██╔═══██╗ ██║ ██║ ██║╚██╗██╔╝
███╔╝ ██║ ██║██║ ██║ ██║ ██║ ██║ ╚███╔╝
███╔╝ ██║ ██║██║ ██║ ██║ ██║ ██║ ██╔██╗
███████╗╚██████╔╝╚██████╔╝ ███████╗╚██████╔╝██╔╝ ██╗
╚══════╝ ╚═════╝ ╚═════╝ ╚══════╝ ╚═════╝ ╚═╝ ╚═╝
*/
import "../ERC20B.sol";
contract ZooLUX is ERC20B {
string public constant _name = "Zoo LUX";
string public constant _symbol = "ZLUX";
constructor() ERC20B(_name, _symbol) {}
function mint(address account, uint256 amount) public {
_mint(account, amount);
}
function burn(address account, uint256 amount) public {
_burn(account, amount);
}
}
+28
View File
@@ -0,0 +1,28 @@
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.19;
/*
███████╗ ██████╗ ██████╗ ██████╗ ██████╗ ██╗
╚══███╔╝██╔═══██╗██╔═══██╗ ██╔══██╗██╔═══██╗██║
███╔╝ ██║ ██║██║ ██║ ██████╔╝██║ ██║██║
███╔╝ ██║ ██║██║ ██║ ██╔═══╝ ██║ ██║██║
███████╗╚██████╔╝╚██████╔╝ ██║ ╚██████╔╝███████╗
╚══════╝ ╚═════╝ ╚═════╝ ╚═╝ ╚═════╝ ╚══════╝
*/
import "../ERC20B.sol";
contract ZooPOL is ERC20B {
string public constant _name = "Zoo POL";
string public constant _symbol = "ZPOL";
constructor() ERC20B(_name, _symbol) {}
function mint(address account, uint256 amount) public {
_mint(account, amount);
}
function burn(address account, uint256 amount) public {
_burn(account, amount);
}
}
+28
View File
@@ -0,0 +1,28 @@
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.19;
/*
███████╗ ██████╗ ██████╗ ███████╗ ██████╗ ██╗
╚══███╔╝██╔═══██╗██╔═══██╗ ██╔════╝██╔═══██╗██║
███╔╝ ██║ ██║██║ ██║ ███████╗██║ ██║██║
███╔╝ ██║ ██║██║ ██║ ╚════██║██║ ██║██║
███████╗╚██████╔╝╚██████╔╝ ███████║╚██████╔╝███████╗
╚══════╝ ╚═════╝ ╚═════╝ ╚══════╝ ╚═════╝ ╚══════╝
*/
import "../ERC20B.sol";
contract ZooSOL is ERC20B {
string public constant _name = "Zoo Solana";
string public constant _symbol = "ZSOL";
constructor() ERC20B(_name, _symbol) {}
function mint(address account, uint256 amount) public {
_mint(account, amount);
}
function burn(address account, uint256 amount) public {
_burn(account, amount);
}
}
+28
View File
@@ -0,0 +1,28 @@
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.19;
/*
███████╗ ██████╗ ██████╗ ████████╗ ██████╗ ███╗ ██╗
╚══███╔╝██╔═══██╗██╔═══██╗ ╚══██╔══╝██╔═══██╗████╗ ██║
███╔╝ ██║ ██║██║ ██║ ██║ ██║ ██║██╔██╗ ██║
███╔╝ ██║ ██║██║ ██║ ██║ ██║ ██║██║╚██╗██║
███████╗╚██████╔╝╚██████╔╝ ██║ ╚██████╔╝██║ ╚████║
╚══════╝ ╚═════╝ ╚═════╝ ╚═╝ ╚═════╝ ╚═╝ ╚═══╝
*/
import "../ERC20B.sol";
contract ZooTON is ERC20B {
string public constant _name = "Zoo TON";
string public constant _symbol = "ZTON";
constructor() ERC20B(_name, _symbol) {}
function mint(address account, uint256 amount) public {
_mint(account, amount);
}
function burn(address account, uint256 amount) public {
_burn(account, amount);
}
}
+28
View File
@@ -0,0 +1,28 @@
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;
/**
███████╗ ██████╗ ██████╗ ██╗ ██╗███████╗██████╗
╚══███╔╝██╔═══██╗██╔═══██╗ ██║ ██║██╔════╝██╔══██╗
███╔╝ ██║ ██║██║ ██║ ██║ ██║███████╗██║ ██║
███╔╝ ██║ ██║██║ ██║ ██║ ██║╚════██║██║ ██║
███████╗╚██████╔╝╚██████╔╝ ╚██████╔╝███████║██████╔╝
╚══════╝ ╚═════╝ ╚═════╝ ╚═════╝ ╚══════╝╚═════╝
*/
import "../ERC20B.sol";
contract ZooUSD is ERC20B {
string public constant _name = "Zoo Dollar";
string public constant _symbol = "ZUSD";
constructor() ERC20B(_name, _symbol) {}
function mint(address account, uint256 amount) public {
_mint(account, amount);
}
function burn(address account, uint256 amount) public {
_burn(account, amount);
}
}
+28
View File
@@ -0,0 +1,28 @@
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.19;
/*
███████╗ ██████╗ ██████╗ ██╗ ██╗██████╗ █████╗ ██╗
╚══███╔╝██╔═══██╗██╔═══██╗ ╚██╗██╔╝██╔══██╗██╔══██╗██║
███╔╝ ██║ ██║██║ ██║ ╚███╔╝ ██║ ██║███████║██║
███╔╝ ██║ ██║██║ ██║ ██╔██╗ ██║ ██║██╔══██║██║
███████╗╚██████╔╝╚██████╔╝ ██╔╝ ██╗██████╔╝██║ ██║██║
╚══════╝ ╚═════╝ ╚═════╝ ╚═╝ ╚═╝╚═════╝ ╚═╝ ╚═╝╚═╝
*/
import "../ERC20B.sol";
contract ZooXDAI is ERC20B {
string public constant _name = "Zoo XDAI";
string public constant _symbol = "ZXDAI";
constructor() ERC20B(_name, _symbol) {}
function mint(address account, uint256 amount) public {
_mint(account, amount);
}
function burn(address account, uint256 amount) public {
_burn(account, amount);
}
}
+26
View File
@@ -12,6 +12,8 @@ const HOLESKY_RPC: string = process.env.HOLESKY_RPC!;
const BSC_TESTNET_RPC: string = process.env.BSC_TESTNET_RPC!;
const LUX_MAINNET_RPC: string = process.env.LUX_MAINNET_RPC!;
const LUX_TESTNET_RPC: string = process.env.LUX_TESTNET_RPC!;
const ZOO_MAINNET_RPC: string = process.env.ZOO_MAINNET_RPC!;
const ZOO_TESTNET_RPC: string = process.env.ZOO_TESTNET_RPC!;
const MAINNET_RPC: string = process.env.MAINNET_RPC!;
const BSC_MAINNET_RPC = process.env.BSC_MAINNET_RPC!;
@@ -68,6 +70,10 @@ const config: HardhatUserConfig = {
url: LUX_MAINNET_RPC,
accounts: [`0x${PRIVATE_KEY}`],
},
zoo: {
url: ZOO_MAINNET_RPC,
accounts: [`0x${PRIVATE_KEY}`],
},
//////////////////////// testnet ////////////////////
sepolia: {
url: SEPOLIA_RPC,
@@ -89,6 +95,10 @@ const config: HardhatUserConfig = {
url: LUX_TESTNET_RPC,
accounts: [`0x${PRIVATE_KEY}`],
},
zooTestnet: {
url: ZOO_TESTNET_RPC,
accounts: [`0x${PRIVATE_KEY}`],
},
},
etherscan: {
apiKey: {
@@ -123,6 +133,22 @@ const config: HardhatUserConfig = {
browserURL: "https://explore.lux-test.network",
},
},
{
network: "zoo",
chainId: 200200,
urls: {
apiURL: "https://api-explore.zoo.network",
browserURL: "https://explore.zoo.network",
},
},
{
network: "zooTestnet",
chainId: 200201,
urls: {
apiURL: "https://api-explore.zoo-test.network",
browserURL: "https://explore.zoo-test.network",
},
},
],
},
sourcify: {
@@ -88,6 +88,13 @@ export const MAIN_NETWORKS: NETWORK[] = [
decimals: 18,
is_native: false
},
{
name: "LZOO",
asset: "LZOO",
contract_address: "0x5E5290f350352768bD2bfC59c2DA15DD04A7cB88",
decimals: 18,
is_native: false
},
{
name: "LBNB",
asset: "LBNB",
@@ -126,14 +133,139 @@ export const MAIN_NETWORKS: NETWORK[] = [
{
name: "LSOL",
asset: "LSOL",
contract_address: "0x1AF00A2590a834d14F4A8a26D1b03EBbA8cf7961",
contract_address: "0x26B40f650156C7EbF9e087Dd0dca181Fe87625B7",
decimals: 18,
is_native: false
},
{
name: "LTON",
asset: "LTON",
contract_address: "0xF5a313885832D4Fc71d1Ef80115197c4479B58C8",
contract_address: "0x3141b94b89691009b950c96e97Bff48e0C543E3C",
decimals: 18,
is_native: false
}
]
},
{
display_name: "Zoo Mainnet",
internal_name: "ZOO_MAINNET",
is_testnet: false,
chain_id: "200200",
teleporter: "0x5B562e80A56b600d729371eB14fE3B83298D0642",
vault: "0x08c0f48517C6d94Dd18aB5b132CA4A84FB77108e",
node: "https://api.zoo.network",
currencies: [
{
name: "ZOO",
asset: "ZOO",
contract_address: "0x0000000000000000000000000000000000000000",
decimals: 18,
is_native: true
},
// main tokens
{
name: "Wrapped Ether",
asset: "WETH",
contract_address: "0x...",
decimals: 18,
is_native: false
},
{
name: "USDT",
asset: "USDT",
contract_address: "0x...",
decimals: 6,
is_native: false
},
{
name: "USDC",
asset: "USDC",
contract_address: "0x...",
decimals: 6,
is_native: false
},
{
name: "DAI",
asset: "DAI",
contract_address: "0x...",
decimals: 18,
is_native: false
},
// lux tokens
{
name: "ZBTC",
asset: "ZBTC",
contract_address: "0x1E48D32a4F5e9f08DB9aE4959163300FaF8A6C8e",
decimals: 18,
is_native: false
},
{
name: "ZETH",
asset: "ZETH",
contract_address: "0x60E0a8167FC13dE89348978860466C9ceC24B9ba",
decimals: 18,
is_native: false
},
{
name: "ZUSD",
asset: "ZUSD",
contract_address: "0x848Cff46eb323f323b6Bbe1Df274E40793d7f2c2",
decimals: 18,
is_native: false
},
{
name: "ZLUX",
asset: "ZLUX",
contract_address: "0x5E5290f350352768bD2bfC59c2DA15DD04A7cB88",
decimals: 18,
is_native: false
},
{
name: "ZBNB",
asset: "ZBNB",
contract_address: "0x6EdcF3645DeF09DB45050638c41157D8B9FEa1cf",
decimals: 18,
is_native: false
},
{
name: "ZPOL",
asset: "ZPOL",
contract_address: "0x28BfC5DD4B7E15659e41190983e5fE3df1132bB9",
decimals: 18,
is_native: false
},
{
name: "ZCELO",
asset: "ZCELO",
contract_address: "0x3078847F879A33994cDa2Ec1540ca52b5E0eE2e5",
decimals: 18,
is_native: false
},
{
name: "ZFTM",
asset: "ZFTM",
contract_address: "0x8B982132d639527E8a0eAAD385f97719af8f5e04",
decimals: 18,
is_native: false
},
{
name: "ZXDAI",
asset: "ZXDAI",
contract_address: "0x7dfb3cBf7CF9c96fd56e3601FBA50AF45C731211",
decimals: 18,
is_native: false
},
{
name: "ZSOL",
asset: "ZSOL",
contract_address: "0x26B40f650156C7EbF9e087Dd0dca181Fe87625B7",
decimals: 18,
is_native: false
},
{
name: "ZTON",
asset: "ZTON",
contract_address: "0x3141b94b89691009b950c96e97Bff48e0C543E3C",
decimals: 18,
is_native: false
}
@@ -985,6 +1117,7 @@ export const TEST_NETWORKS: NETWORK[] = [
decimals: 18,
is_native: true
},
// main tokens
{
name: "Wrapped Ether",
asset: "WETH",
@@ -1013,7 +1146,7 @@ export const TEST_NETWORKS: NETWORK[] = [
decimals: 18,
is_native: false
},
///// lux tokens /////
// lux tokens
{
name: "LBTC",
asset: "LBTC",
@@ -1035,6 +1168,13 @@ export const TEST_NETWORKS: NETWORK[] = [
decimals: 18,
is_native: false
},
{
name: "LZOO",
asset: "LZOO",
contract_address: "0x5E5290f350352768bD2bfC59c2DA15DD04A7cB88",
decimals: 18,
is_native: false
},
{
name: "LBNB",
asset: "LBNB",
@@ -1073,14 +1213,139 @@ export const TEST_NETWORKS: NETWORK[] = [
{
name: "LSOL",
asset: "LSOL",
contract_address: "0x1AF00A2590a834d14F4A8a26D1b03EBbA8cf7961",
contract_address: "0x26B40f650156C7EbF9e087Dd0dca181Fe87625B7",
decimals: 18,
is_native: false
},
{
name: "LTON",
asset: "LTON",
contract_address: "0xF5a313885832D4Fc71d1Ef80115197c4479B58C8",
contract_address: "0x3141b94b89691009b950c96e97Bff48e0C543E3C",
decimals: 18,
is_native: false
}
]
},
{
display_name: "Zoo Testnet",
internal_name: "ZOO_TESTNET",
is_testnet: true,
chain_id: "200201",
teleporter: "0x5B562e80A56b600d729371eB14fE3B83298D0642",
vault: "0x08c0f48517C6d94Dd18aB5b132CA4A84FB77108e",
node: "https://api.zoo-test.network",
currencies: [
{
name: "ZOO",
asset: "ZOO",
contract_address: "0x0000000000000000000000000000000000000000",
decimals: 18,
is_native: true
},
// main tokens
{
name: "Wrapped Ether",
asset: "WETH",
contract_address: "0x...",
decimals: 18,
is_native: false
},
{
name: "USDT",
asset: "USDT",
contract_address: "0x...",
decimals: 6,
is_native: false
},
{
name: "USDC",
asset: "USDC",
contract_address: "0x...",
decimals: 6,
is_native: false
},
{
name: "DAI",
asset: "DAI",
contract_address: "0x...",
decimals: 18,
is_native: false
},
// lux tokens
{
name: "ZBTC",
asset: "ZBTC",
contract_address: "0x1E48D32a4F5e9f08DB9aE4959163300FaF8A6C8e",
decimals: 18,
is_native: false
},
{
name: "ZETH",
asset: "ZETH",
contract_address: "0x60E0a8167FC13dE89348978860466C9ceC24B9ba",
decimals: 18,
is_native: false
},
{
name: "ZUSD",
asset: "ZUSD",
contract_address: "0x848Cff46eb323f323b6Bbe1Df274E40793d7f2c2",
decimals: 18,
is_native: false
},
{
name: "ZLUX",
asset: "ZLUX",
contract_address: "0x5E5290f350352768bD2bfC59c2DA15DD04A7cB88",
decimals: 18,
is_native: false
},
{
name: "ZBNB",
asset: "ZBNB",
contract_address: "0x6EdcF3645DeF09DB45050638c41157D8B9FEa1cf",
decimals: 18,
is_native: false
},
{
name: "ZPOL",
asset: "ZPOL",
contract_address: "0x28BfC5DD4B7E15659e41190983e5fE3df1132bB9",
decimals: 18,
is_native: false
},
{
name: "ZCELO",
asset: "ZCELO",
contract_address: "0x3078847F879A33994cDa2Ec1540ca52b5E0eE2e5",
decimals: 18,
is_native: false
},
{
name: "ZFTM",
asset: "ZFTM",
contract_address: "0x8B982132d639527E8a0eAAD385f97719af8f5e04",
decimals: 18,
is_native: false
},
{
name: "ZXDAI",
asset: "ZXDAI",
contract_address: "0x7dfb3cBf7CF9c96fd56e3601FBA50AF45C731211",
decimals: 18,
is_native: false
},
{
name: "ZSOL",
asset: "ZSOL",
contract_address: "0x26B40f650156C7EbF9e087Dd0dca181Fe87625B7",
decimals: 18,
is_native: false
},
{
name: "ZTON",
asset: "ZTON",
contract_address: "0x3141b94b89691009b950c96e97Bff48e0C543E3C",
decimals: 18,
is_native: false
}
@@ -1089,23 +1354,43 @@ export const TEST_NETWORKS: NETWORK[] = [
]
export const SWAP_PAIRS: Record<string, string[]> = {
LETH: ["ETH"],
LBNB: ["BNB"],
LFTM: ["FTM"],
LPOL: ["POL", "MATIC"],
LUSD: ["USDT", "USDC", "DAI"],
LWETH: ["WETH"],
LCELO: ["CELO"],
LXDAI: ["XDAI"],
// lux tokens
LUX: ['ZLUX'],
LBTC: ['ZBTC'],
LETH: ['ETH', 'ZETH'],
LUSD: ['USDT', 'USDC', 'DAI', 'ZUSD'],
LZOO: ['ZOO'],
LBNB: ['BNB', 'ZBNB'],
LPOL: ['POL', 'ZPOL'],
LCELO: ['CELO', 'ZCELO'],
LFTM: ['FTM', 'ZFTM'],
LXDAI: ['XDAI', 'ZXDAI'],
LSOL: ['ZSOL'],
LTON: ['ZTON'],
// Zoo tokens
ZOO: ['LZOO'],
ZBTC: ['LBTC'],
ZETH: ['ETH', 'LETH'],
ZUSD: ['USDT', 'USDC', 'DAI', 'LUSD'],
ZLUX: ['LUX'],
ZBNB: ['BNB', 'LBNB'],
ZPOL: ['POL', 'LPOL'],
ZCELO: ['CELO', 'LCELO'],
ZFTM: ['FTM', 'LFTM'],
ZXDAI: ['XDAI', 'LXDAI'],
ZSOL: ['LSOL'],
ZTON: ['LTON'],
ETH: ["LETH"],
POL: ["LPOL"],
BNB: ["LBNB"],
FTM: ["LFTM"],
DAI: ["LUSD"],
WETH: ["LWETH"],
CELO: ["LCELO"],
XDAI: ["LXDAI"],
USDT: ["LUSD"],
USDC: ["LUSD"]
// Evm tokens
ETH: ['LETH', 'ZETH'],
WETH: ['LETH', 'ZETH'],
POL: ['LPOL', 'ZPOL'],
BNB: ['LBNB', 'ZBNB'],
FTM: ['LFTM', 'ZFTM'],
DAI: ['LUSD', 'ZUSD'],
USDT: ['LUSD', 'ZUSD'],
USDC: ['LUSD', 'ZUSD'],
CELO: ['LCELO', 'ZCELO'],
XDAI: ['LXDAI', 'ZXDAI'],
}
+51 -45
View File
@@ -483,6 +483,9 @@ importers:
express-validator:
specifier: ^7.2.0
version: 7.2.0
jsonwebtoken:
specifier: ^9.0.2
version: 9.0.2
module-alias:
specifier: ^2.2.3
version: 2.2.3
@@ -496,6 +499,9 @@ importers:
'@types/express':
specifier: ^4.17.21
version: 4.17.21
'@types/jsonwebtoken':
specifier: ^9.0.7
version: 9.0.7
'@types/multicoin-address-validator':
specifier: ^0.5.3
version: 0.5.3
@@ -1936,15 +1942,15 @@ packages:
'@hanzo/[email protected]':
resolution: {integrity: sha512-56+a82zFp2olo8utu6Ic/vxJTFASQPuZAfcmQFWxd5QnfO5fVgI+GW8bjqAj+tJANjL4rO0hItSBBg38BdcXag==}
peerDependencies:
'@hanzo/ui': ^3.8.36
'@hanzo/ui': 4.0.5
'@hookform/resolvers': ^3.3.4
firebase: ^10.8.0
lucide-react: ^0.344.0
mobx: ^6.12.3
mobx-react-lite: ^4.0.7
next: ^14.2.16
react: ^18.3.1
react-hook-form: ^7.51.4
next: 14.2.14
react: 18.3.1
react-hook-form: 7.51.4
zod: 3.23.8
'@hanzo/[email protected]':
@@ -1996,13 +2002,13 @@ packages:
resolution: {integrity: sha512-Ll+8q3OlMJfJbAKM/+/Y2q6PPYbryqNTXDbryx7SXLIDamkF6iQFbriYHga0dY44PvDhvvBWCx1Xj4U5+G4hOw==}
engines: {node: '>=10'}
peerDependencies:
react: ^16 || ^17 || ^18
react-dom: ^16 || ^17 || ^18
react: 18.3.1
react-dom: 18.3.1
'@heroicons/[email protected]':
resolution: {integrity: sha512-FuzFN+BsHa+7OxbvAERtgBTNeZpUjgM/MIizfVkSCL2/edriN0Hx/DWRCR//aPYwO5QX/YlgLGXk+E3PcfZwjA==}
peerDependencies:
react: '>= 16'
react: 18.3.1
'@hookform/[email protected]':
resolution: {integrity: sha512-bU0Gr4EepJ/EQsH/IwEzYLsT/PEj5C0ynLQ4m+GSHS+xKH4TfSelhluTgOaoc4kA5s7eCsQbM4wvZLzELmWzUg==}
@@ -2127,30 +2133,30 @@ packages:
resolution: {integrity: sha512-vhMBWDRW4RhzigaRNl2WvPME19MAE+S2eqxebjvPQY2USCnuStN4TbvVI+2v6tqD08TTZGaYoeDUBaWeXgzpOA==}
peerDependencies:
'@next/mdx': ^14.1.0
next: ^14.1.0
next: 14.2.14
next-themes: ^0.2.1
react: ^18.2.0
react-dom: ^18.2.0
react: 18.3.1
react-dom: 18.3.1
tailwind-merge: ^2.2.0
tailwindcss: ^3.4.1
tailwindcss: 3.4.3
tailwindcss-animate: ^1.0.6
tailwindcss-interaction-media: ^0.1.0
'@luxfi/[email protected]':
resolution: {integrity: sha512-oc5n+zHz/ztt3KNFJ0IpejnoCUQSKOJyG9jYJzq+ILX2/XodKJ3VYrIdvru/Rmfd8InDamxN8LG1VeGzEjpMnA==}
peerDependencies:
'@hanzo/auth': '*'
'@hanzo/commerce': '*'
'@hanzo/ui': '*'
'@hanzo/auth': 2.5.2
'@hanzo/commerce': 7.3.4
'@hanzo/ui': 4.0.5
'@hookform/resolvers': ^3.3.2
lucide-react: ^0.344.0
mobx: ^6.12.3
mobx-react-lite: ^4.0.7
next: 15.0.1
next: 14.2.14
next-themes: ^0.2.1
react: '*'
react-dom: '*'
react-hook-form: ^7.51.4
react: 18.3.1
react-dom: 18.3.1
react-hook-form: 7.51.4
validator: ^13.11.0
zod: 3.23.8
@@ -2637,7 +2643,7 @@ packages:
engines: {node: '>=14.1.0'}
hasBin: true
peerDependencies:
typescript: '>= 4.7.4'
typescript: 5.6.3
peerDependenciesMeta:
typescript:
optional: true
@@ -2660,10 +2666,10 @@ packages:
'@radix-ui/[email protected]':
resolution: {integrity: sha512-bg/l7l5QzUjgsh8kjwDFommzAshnUsuVMV5NM56QVCm+7ZckYdd9P/ExR8xG/Oup0OajVxNLaHJ1tb8mXk+nzQ==}
peerDependencies:
'@types/react': '*'
'@types/react-dom': '*'
react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
'@types/react': 18.3.12
'@types/react-dom': 18.3.1
react: 18.3.1
react-dom: 18.3.1
peerDependenciesMeta:
'@types/react':
optional: true
@@ -3197,10 +3203,10 @@ packages:
'@radix-ui/[email protected]':
resolution: {integrity: sha512-EA6AMGeq9AEeQDeSH0aZgG198qkfHSbvWTf1HvoDmOB5bBG/qTxjYMWUKMnYiV6J/iP/J8MEFSuB2zRU2n7ODA==}
peerDependencies:
'@types/react': '*'
'@types/react-dom': '*'
react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
'@types/react': 18.3.12
'@types/react-dom': 18.3.1
react: 18.3.1
react-dom: 18.3.1
peerDependenciesMeta:
'@types/react':
optional: true
@@ -3403,8 +3409,8 @@ packages:
'@radix-ui/[email protected]':
resolution: {integrity: sha512-CasTfvsy+frcFkbXtSJ2Zu9JHpN8TYKxkgJGWbjiZhFivxaeW7rMeZt7QELGVLaYVfFMsKHjb7Ak0nMEe+2Vfw==}
peerDependencies:
'@types/react': '*'
react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
'@types/react': 18.3.12
react: 18.3.1
peerDependenciesMeta:
'@types/react':
optional: true
@@ -3426,8 +3432,8 @@ packages:
'@radix-ui/[email protected]':
resolution: {integrity: sha512-MtfMVJiSr2NjzS0Aa90NPTnvTSg6C/JLCV7ma0W6+OMV78vd8OyRpID+Ng9LxzsPbLeuBnWBA1Nq30AtBIDChw==}
peerDependencies:
'@types/react': '*'
react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
'@types/react': 18.3.12
react: 18.3.1
peerDependenciesMeta:
'@types/react':
optional: true
@@ -3569,8 +3575,8 @@ packages:
engines: {node: '>=12.4'}
peerDependencies:
'@tanstack/react-query': '>=5.0.0'
react: '>=18'
react-dom: '>=18'
react: 18.3.1
react-dom: 18.3.1
viem: 2.x
wagmi: ^2.9.0
@@ -3647,7 +3653,7 @@ packages:
'@reduxjs/[email protected]':
resolution: {integrity: sha512-t7v8ZPxhhKgOKtU+uyJT13lu4vL7az5aFi4IdoDs/eS548edn2M8Ik9h8fxgvMjGoAUVFSt6ZC1P5cWmQ014QQ==}
peerDependencies:
react: ^16.9.0 || ^17.0.0 || ^18
react: 18.3.1
react-redux: ^7.2.1 || ^8.0.2
peerDependenciesMeta:
react:
@@ -4019,9 +4025,9 @@ packages:
resolution: {integrity: sha512-FqrV7/K2q998Y0t83QUauQxsifKWAg9CFZoSb64qRuH7IfHkDs5/OgU1ACkg0aTgsEPtFlH+kATQ+8X6MrizHQ==}
peerDependencies:
'@splinetool/runtime': '*'
next: '>=14.2.0'
react: '*'
react-dom: '*'
next: 14.2.14
react: 18.3.1
react-dom: 18.3.1
peerDependenciesMeta:
next:
optional: true
@@ -4102,7 +4108,7 @@ packages:
'@stitches/[email protected]':
resolution: {integrity: sha512-9g9dWI4gsSVe8bNLlb+lMkBYsnIKCZTmvqvDG+Avnn69XfmHZKiaMrx7cgTaddq7aTPPmXiTsbFcUy0xgI4+wA==}
peerDependencies:
react: '>= 16.3.0'
react: 18.3.1
'@storybook/[email protected]':
resolution: {integrity: sha512-c/GkEQ2U9BC/Ew/IMdh+zvsh4N6y6n7Zsn2GIhJgcu9YEAa5aF2a9/pNgEGBMOABH959XE8DAOMERw/5qiLR8g==}
@@ -4163,8 +4169,8 @@ packages:
'@storybook/[email protected]':
resolution: {integrity: sha512-p3DqQi+8QRL5k7jXhXmJZLsE/GqHqyY6PcoA1oNTJr0try48uhTGUOYkgzmqtDaa/qPFO5LP+xCPzZXckGtquQ==}
peerDependencies:
react: ^16.8.0 || ^17.0.0 || ^18.0.0
react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0
react: 18.3.1
react-dom: 18.3.1
'@storybook/[email protected]':
resolution: {integrity: sha512-Ok18Y698Ccyg++MoUNJNHY0cXUvo8ETFIRLJk1g9ElJ70j6kPgNnzW2pAtZkBNmswHtofZ7pT156cj96k/LgfA==}
@@ -4578,7 +4584,7 @@ packages:
'@tailwindcss/[email protected]':
resolution: {integrity: sha512-tM4XVr2+UVTxXJzey9Twx48c1gcxFStqn1pQz0tRsX8o3DvxhN5oY5pvyAbUx7VTaZxpej4Zzvc6h+1RJBzpIg==}
peerDependencies:
tailwindcss: '>=3.0.0 || >= 3.0.0-alpha.1 || >= 4.0.0-alpha.20'
tailwindcss: 3.4.3
'@tailwindcss/[email protected]':
resolution: {integrity: sha512-AqhlCXl+8grUz8uqExv5OTtgpjuVIwFTSXTrh8y9/pw6q2ek7fJ+Y8ZEVw7EB2DCcuCOtEjf9w3+J3rzts01uA==}
@@ -5055,8 +5061,8 @@ packages:
resolution: {integrity: sha512-1I+RwWyS+kdv3Mv0Vmc+p0dPYH0DTRAo04HLyXReYBL9AeseDWUJyi4THuksBJcu9F0Pih69Ak150VDnqbVnXg==}
engines: {node: '>=16'}
peerDependencies:
react: '>=18.0.0'
react-dom: '>=18.0.0'
react: 18.3.1
react-dom: 18.3.1
'@ungap/[email protected]':
resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==}
@@ -5097,7 +5103,7 @@ packages:
'@wagmi/[email protected]':
resolution: {integrity: sha512-ytMCvXbBOgfDu9Qw67279wq/jNEe7EZLjLyekX7ROnvHRADqFr3lwZI6ih41UmtRZAmXAx8Ghyuqy154EjB5mQ==}
peerDependencies:
typescript: '>=5.0.4'
typescript: 5.6.3
viem: '>=0.3.35'
peerDependenciesMeta:
typescript:
@@ -12425,7 +12431,7 @@ packages:
[email protected]:
resolution: {integrity: sha512-BNVYdSaUjeS2zKQgPs+49e5JKocfo60Ib2yiXOWBT6LuVxY1I/6fFX3waEtpXvL1Xn4qu+BVitVtMh9lyThyhQ==}
peerDependencies:
typescript: '>=5.0.4'
typescript: 5.6.3
peerDependenciesMeta:
typescript:
optional: true