new bridge ui (on remix) - initial (#304)

* initial remix boilerplate runs
* remix: font support
* metadata and favicons
* network and tokens domain model;
* network-combobox; 
* favicon bug;
* new combobox interface
* network combobox typescript issues
* reverse button, etc
* amount input and token selection
* renamed remix-bridge to new-bridge
* @hanzo/[email protected]; new scripts
* lockfile

---------

Co-authored-by: Zach Kelling <[email protected]>
This commit is contained in:
Artem Ash
2024-12-18 10:46:15 -08:00
committed by GitHub
co-authored by zeekay
parent 288582d3ef
commit a3c6af02b6
53 changed files with 12054 additions and 3562 deletions
+2 -1
View File
@@ -1,5 +1,5 @@
{
"name": "@luxbridge/app",
"name": "@luxbridge/app-old",
"version": "0.1.0",
"private": true,
"scripts": {
@@ -103,6 +103,7 @@
"@storybook/testing-library": "^0.2.1",
"@types/bn.js": "^5.1.0",
"@types/crypto-js": "^4.1.1",
"@types/lodash.merge": "^4.6.9",
"@types/mdx": "^2.0.9",
"@types/multicoin-address-validator": "^0.5.3",
"@types/node": "^20.10.7",
@@ -0,0 +1,15 @@
import * as CurrencyInputExports from "react-currency-input-field";
// cf: https://github.com/cchanxzy/react-currency-input-field/issues/335
const CurrencyInput =
"default" in CurrencyInputExports.default
? ((CurrencyInputExports.default as any)
.default as React.FC<CurrencyInputExports.CurrencyInputProps>)
: CurrencyInputExports.default;
type CurrencyInputOnChangeValues = CurrencyInputExports.CurrencyInputOnChangeValues
export {
CurrencyInput as default,
type CurrencyInputOnChangeValues
}
+27
View File
@@ -0,0 +1,27 @@
import React, { type PropsWithChildren } from 'react'
import { cn } from '@hanzo/ui/util'
const Main: React.FC<PropsWithChildren & {
id?: string
className?: string
headerSpace?: boolean
standardWidth?: boolean
}> = ({
children,
className='',
headerSpace=true,
standardWidth=true,
id
}) => (
<main id={id ?? 'BRIDGE_MAIN'} className={cn(
'flex flex-col justify-start items-center',
'px-4 md:px-6 xl:px-0',
standardWidth ? 'max-w-screen-xl w-full lg:mx-auto' : '',
headerSpace ? 'pt-[44px] md:pt-[80px]' : 'py-4',
className
)}>
{children}
</main>
)
export default Main
@@ -0,0 +1,16 @@
import { type ListAdaptor } from '@hanzo/ui/primitives-common'
import type { Network } from '@/domain/types'
export default {
getValue: (el: Network): string => (el.internal_name),
equals: (el1: Network, el2: Network): boolean => (
el1.internal_name.toUpperCase() === el2.internal_name.toUpperCase()
),
valueEquals: (el: Network, v: string): boolean => (
el.internal_name.toUpperCase() === v.toUpperCase()
),
getLabel: (el: Network): string => (el.display_name),
getImageUrl: (el: Network): string => (el.logo),
} satisfies ListAdaptor<Network>
@@ -0,0 +1,61 @@
import React from 'react'
import { Combobox } from '@hanzo/ui/primitives-common'
import { cn } from '@hanzo/ui/util'
import type { Network } from '@/domain/types'
import adaptor from './adaptor'
import NetworkComboboxTrigger, { type NetworkTriggerProps } from './trigger'
const ICON_SIZE = 40
const NetworkCombobox: React.FC<{
networks: Network[]
network: Network | null
setNetwork: (network: Network | null) => void
searchHint?: string
popoverClx?: string
buttonClx?: string
popoverAlign? : "center" | "end" | "start"
label: string
rightJustified?: boolean
}> = ({
networks,
network,
setNetwork,
searchHint,
popoverClx='',
popoverAlign = 'center',
buttonClx='',
label,
rightJustified=false
}) => (
<Combobox<Network, NetworkTriggerProps>
elements={networks}
current={network}
setCurrent={setNetwork}
adaptor={adaptor}
searchPlaceholder={searchHint}
noCheckmark
popoverClx={cn('font-sans font-medium w-full', popoverClx)}
popoverAlign={popoverAlign}
listItemClx='bg-background hover:!bg-level-3'
listItemSelectedClx='!bg-level-2'
Trigger={NetworkComboboxTrigger}
triggerProps={{
open: false,
current: (network ?? null),
currentLabel: null,
imageUrl: null,
buttonClx: cn('font-sans font-medium w-full px-2', buttonClx),
disabled: false,
imageSize: ICON_SIZE,
label,
rightJustified
}}
/>
)
export default NetworkCombobox
@@ -0,0 +1,64 @@
import React from 'react'
import { Button, type ComboboxTriggerProps } from '@hanzo/ui/primitives-common'
import { cn } from '@hanzo/ui/util'
import type { Network } from '@/domain/types'
interface NetworkTriggerProps extends ComboboxTriggerProps<Network>{
label: string
rightJustified?: boolean
}
const NetworkComboboxTriggerInner = ({
current,
currentLabel,
imageUrl,
buttonClx,
imageClx,
imageSize,
rightJustified=false,
label,
...rest
}: NetworkTriggerProps,
ref: React.ForwardedRef<HTMLButtonElement>
) => (
<Button
ref={ref}
{...rest}
variant='outline'
role='combobox'
className={cn(
'flex gap-1.5 rounded-lg h-auto py-1',
rightJustified ? 'justify-start flex-row-reverse' : 'justify-start',
buttonClx
)}
>
{current ? (
<img
src={imageUrl!}
alt={currentLabel + ' image'}
height={imageSize}
width={imageSize}
loading="eager"
className={cn('block rounded-md ', imageClx)}
/>
) : (
<div style={{width: imageSize, height: imageSize}} />
)}
<div className={cn(
'flex flex-col gap-0 ',
rightJustified ? 'justify-end items-end' : 'justify-start items-start'
)}>
<span className='text-sm block text-muted-2'>{label}</span>
<span className={cn('block font-semibold', currentLabel ? 'text-foreground' : 'text-muted')}>{ currentLabel ?? '(select)' }</span>
</div>
</Button>
)
const NetworkComboboxTrigger = React.forwardRef(NetworkComboboxTriggerInner) as <Network, NetworkTriggerProps>(props: NetworkTriggerProps & { ref?: React.ForwardedRef<HTMLButtonElement> }) => React.ReactNode
export {
NetworkComboboxTrigger as default,
type NetworkTriggerProps
}
@@ -0,0 +1,29 @@
import { cn } from '@hanzo/ui/util'
import { Bridge } from '@/domain/types'
const BridgeLabel: React.FC<{
bridge: Bridge
imageSize?: number
imageClx?: string
className?: string
}> = ({
bridge : { name, logo },
imageSize=24,
imageClx='',
className=''
}) => (
<div className={cn('flex justify-start items-center gap-2', className)}>
<img
src={logo}
alt={name + ' image'}
height={imageSize}
width={imageSize}
loading="eager"
className={cn('block', imageClx)}
/>
<span className='block'>{name}</span>
</div>
)
export default BridgeLabel
@@ -0,0 +1,53 @@
import React from 'react'
import { cn } from '@hanzo/ui/util'
import type { Bridge, Network, Token } from '@/domain/types'
import BridgeLabel from './bridge-label'
const ReceiveCard: React.FC<{
from: Network
to: Network
token: Token
usdValue: number
usdFee: number
gasInTokens: number
txnTime: string // eg, '~5min'
bridges?: Bridge[]
bridge?: Bridge
onSelect?: (bridge: Bridge) => void
className?: string
}> = ({
from,
to,
token,
usdValue,
usdFee,
gasInTokens,
txnTime, // eg, '~5min'
bridge,
onSelect,
className=''
}) => {
return (
<div
className={cn(
'border border-muted-4 py-2 px-2',
(!!bridge && !!onSelect) ? 'cursor-poiner' : '',
className
)}
onClick={(!!bridge && !!onSelect) ? () => {onSelect(bridge)} : undefined}
>
<div className='flex flex-col justify-between items-center text-sm'>
<span className='block'>Receive on {to.display_name}</span>
{bridge ? (
<BridgeLabel bridge={bridge} />
) : (
null
)}
</div>
</div>
)
}
export default ReceiveCard
@@ -0,0 +1,68 @@
import { useState } from 'react'
import type { Network } from '@/domain/types'
// import DecimalInput from './decimal-input'
import NetworkCombobox from '../network-combobox'
import ReverseButton from './reverse-button'
const ABS_CENTERED = {
position: 'absolute',
left: '50%',
top: '50%',
transform: 'translate(-50%,-50%)'
} satisfies React.CSSProperties
const FromToCard: React.FC<{
from: Network | null
to: Network | null
fromNetworks: Network[]
toNetworks: Network[]
setFrom: (v: Network | null) => void
setTo: (v: Network | null) => void
swapFromAndTo: () => void
className?: string
}> = ({
from,
to,
fromNetworks,
toNetworks,
setFrom,
setTo,
swapFromAndTo,
className=''
}) => {
// 'flex w-full gap-2 relative'
return (
<div className={className}>
<NetworkCombobox
networks={fromNetworks}
setNetwork={setFrom}
network={from}
buttonClx='grow pr-4'
popoverClx='w-[350px]'
popoverAlign='start'
label='from'
/>
<NetworkCombobox
networks={toNetworks}
setNetwork={setTo}
network={to}
buttonClx='grow pl-4'
popoverClx='w-[350px]'
popoverAlign='end'
label='to'
rightJustified
/>
<ReverseButton
className='p-1 h-auto text-muted active:!bg-level-3'
onClick={swapFromAndTo}
style={ABS_CENTERED}
/>
</div>
)
}
export default FromToCard
@@ -0,0 +1,89 @@
import React, { useRef, useState } from 'react'
import type { Network, Token } from '@/domain/types'
// import DecimalInput from './decimal-input'
import TokenCard from '../token-card'
import FromToCard from './from-to-card'
import { cn } from '@hanzo/ui/util'
const SwapCard: React.FC<{
className?: string
fromNetworks: Network[]
fromInitial?: Network | null
toNetworks: Network[]
toInitial?: Network | null
}> = ({
className='',
fromNetworks,
fromInitial,
toNetworks,
toInitial,
}) => {
const _from = useRef<Network | null>(fromInitial ?? null)
const _to = useRef<Network | null>(toInitial ?? null)
const _fromNetworks = useRef<Network[]>(fromNetworks)
const _toNetworks = useRef<Network[]>(toNetworks)
const _token = useRef<Token | null>(fromInitial?.currencies![0] ?? null)
const _amount = useRef<number>(0)
const [triggerUpdate, setTriggerUpdate] = useState<boolean>(false)
const update = () => {setTriggerUpdate((c) => (!c))}
const setFrom = (v: Network | null) => {
_from.current = v
update()
}
const setTo = (v: Network | null) => {
_to.current = v
update()
}
const setAmount = (n: number) => {
_amount.current = n
}
const setToken = (t: Token | null) => {
_token.current = t
update()
}
const swapFromAndTo = () => {
const tmp = _from.current
_from.current = _to.current
_to.current = tmp
const tmpNetworks = _fromNetworks.current
_fromNetworks.current = _toNetworks.current
_toNetworks.current = tmpNetworks
setTriggerUpdate((c) => (!c))
}
return (
<div className={cn(
'flex flex-col justify-start items-center p-6 rounded border border-muted-4',
className
)}>
<FromToCard
swapFromAndTo={swapFromAndTo}
from={_from.current}
to={_to.current}
fromNetworks={_fromNetworks.current}
toNetworks={_toNetworks.current}
setFrom={setFrom}
setTo={setTo}
className='flex w-full gap-2 relative'
/>
<TokenCard
tokens={_from.current?.currencies!}
token={_token.current}
setToken={setToken}
usdValue={1}
className='w-full rounded-lg mt-2'
/>
</div>
)
}
export default SwapCard
@@ -0,0 +1,27 @@
import { ChevronsLeftRight } from 'lucide-react'
import { Button } from '@hanzo/ui/primitives-common'
import { cn } from '@hanzo/ui/util'
const ReverseButton: React.FC<{
onClick: () => void
className?: string
style?: React.CSSProperties
}> = ({
onClick,
className='',
style={}
}) => (
<Button
variant='outline'
size='sm'
className={cn(className)}
onClick={onClick}
style={style}
>
<ChevronsLeftRight className='w-4 h-4'/>
</Button>
)
export default ReverseButton
@@ -0,0 +1,71 @@
import { useState } from 'react'
import type { Token } from '@/domain/types'
import { cn } from '@hanzo/ui/util'
import CurrencyInput, { type CurrencyInputOnChangeValues } from '../currency-input'
import TokenCombobox from '../token-combobox'
const TokenCard: React.FC<{
tokens: Token[]
token: Token | null
setToken: (token: Token | null) => void
usdValue: number | null // value of 1 in USD
className?: string
}> = ({
tokens,
token,
setToken,
usdValue,
className=''
}) => {
const [_amount, _setAmount] = useState<number>(0)
// component ensures a valid number string
const onAmountChange = (
value: string | undefined,
formatted?: string | undefined,
values?: CurrencyInputOnChangeValues | undefined
) => {
_setAmount(value ? Number(value) : 0)
}
return (
<div className={cn('border border-muted-4 py-2 pl-3 pr-1.5 has-[:focus]:border-muted', className)}>
<div className='flex justify-between items-center gap-1'>
<CurrencyInput
placeholder='0'
decimalsLimit={2}
onValueChange={onAmountChange}
className={
'min-w-0 text-foreground focus:text-accent bg-level-0 p-1 ' +
'!border-none focus:outline-none text-xl !placeholder-muted-3'
}
/>
<TokenCombobox
tokens={tokens}
token={token}
setToken={setToken}
buttonClx='shrink-0 border-none'
popoverAlign='end'
/>
</div>
{ _amount > 0 && usdValue && (
<CurrencyInput
readOnly
prefix='$'
decimalsLimit={2}
value={_amount * usdValue}
className={
'cursor-default text-muted bg-level-0 ' +
'!border-none focus:outline-none text-sm'
}
/>
)}
</div>
)
}
export default TokenCard
@@ -0,0 +1,67 @@
import React from 'react'
import { Combobox, type ComboboxTriggerProps, type ListAdaptor } from '@hanzo/ui/primitives-common'
import { cn } from '@hanzo/ui/util'
import type { Token } from '@/domain/types'
const adaptor = {
getValue: (el: Token): string => (el.asset),
equals: (el1: Token, el2: Token): boolean => (
el1.asset.toUpperCase() === el2.asset.toUpperCase()
),
valueEquals: (el: Token, v: string): boolean => (
el.asset.toUpperCase() === v.toUpperCase()
),
getLabel: (el: Token): string => (el.name),
getImageUrl: (el: Token): string => (el.logo),
} satisfies ListAdaptor<Token>
const TokenCombobox: React.FC<{
tokens: Token[]
token: Token | null
setToken: (token: Token | null) => void
placeholder?: string
searchHint?: string
disabled?: boolean
buttonClx?: string
popoverClx?: string
popoverAlign? : "center" | "end" | "start"
}> = ({
tokens,
token,
setToken,
placeholder,
searchHint,
disabled=false,
buttonClx='',
popoverClx='',
popoverAlign = 'center',
}) => (
<Combobox<Token, ComboboxTriggerProps<Token>>
elements={tokens}
current={token}
setCurrent={setToken}
adaptor={adaptor}
noCheckmark
searchPlaceholder={searchHint}
popoverClx={cn('font-sans font-medium w-full', popoverClx)}
popoverAlign={popoverAlign}
listItemClx='bg-background hover:!bg-level-3'
listItemSelectedClx='!bg-level-2'
triggerProps={{
open: false,
current: (token ?? null),
currentLabel: null,
imageUrl: null,
placeholder,
imageClx: 'rounded',
buttonClx: cn('font-sans font-medium w-auto pl-1.5 pr-2', buttonClx),
disabled
}}
/>
)
export default TokenCombobox
@@ -0,0 +1,875 @@
[
{
"inputs": [],
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"inputs": [],
"name": "AccessControlBadConfirmation",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "account",
"type": "address"
},
{
"internalType": "bytes32",
"name": "neededRole",
"type": "bytes32"
}
],
"name": "AccessControlUnauthorizedAccount",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "owner",
"type": "address"
}
],
"name": "OwnableInvalidOwner",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "OwnableUnauthorizedAccount",
"type": "error"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "value",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "length",
"type": "uint256"
}
],
"name": "StringsInsufficientHexLength",
"type": "error"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "address",
"name": "to",
"type": "address"
}
],
"name": "AdminGranted",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "address",
"name": "to",
"type": "address"
}
],
"name": "AdminRevoked",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "address",
"name": "caller",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "amt",
"type": "uint256"
},
{
"indexed": false,
"internalType": "address",
"name": "token",
"type": "address"
}
],
"name": "BridgeBurned",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "address",
"name": "recipient",
"type": "address"
},
{
"indexed": false,
"internalType": "address",
"name": "token",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "amt",
"type": "uint256"
}
],
"name": "BridgeMinted",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "address",
"name": "recipient",
"type": "address"
},
{
"indexed": false,
"internalType": "address",
"name": "token",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "amt",
"type": "uint256"
}
],
"name": "BridgeWithdrawn",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "address",
"name": "MPCOracle",
"type": "address"
}
],
"name": "NewMPCOracleSet",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "previousOwner",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "newOwner",
"type": "address"
}
],
"name": "OwnershipTransferred",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
},
{
"indexed": true,
"internalType": "bytes32",
"name": "previousAdminRole",
"type": "bytes32"
},
{
"indexed": true,
"internalType": "bytes32",
"name": "newAdminRole",
"type": "bytes32"
}
],
"name": "RoleAdminChanged",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
},
{
"indexed": true,
"internalType": "address",
"name": "account",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "sender",
"type": "address"
}
],
"name": "RoleGranted",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
},
{
"indexed": true,
"internalType": "address",
"name": "account",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "sender",
"type": "address"
}
],
"name": "RoleRevoked",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "bytes",
"name": "_key",
"type": "bytes"
}
],
"name": "SigMappingAdded",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "address",
"name": "depositor",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "amt",
"type": "uint256"
},
{
"indexed": false,
"internalType": "address",
"name": "token",
"type": "address"
}
],
"name": "VaultDeposit",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "address",
"name": "receiver",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "amt",
"type": "uint256"
},
{
"indexed": false,
"internalType": "address",
"name": "token",
"type": "address"
}
],
"name": "VaultWithdraw",
"type": "event"
},
{
"inputs": [],
"name": "DEFAULT_ADMIN_ROLE",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "asset_",
"type": "address"
}
],
"name": "addNewERC20Vault",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "amount_",
"type": "uint256"
},
{
"internalType": "address",
"name": "tokenAddr_",
"type": "address"
}
],
"name": "bridgeBurn",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "string",
"name": "hashedTxId_",
"type": "string"
},
{
"internalType": "address",
"name": "toTokenAddress_",
"type": "address"
},
{
"internalType": "uint256",
"name": "tokenAmount_",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "fromTokenDecimals_",
"type": "uint256"
},
{
"internalType": "address",
"name": "receiverAddress_",
"type": "address"
},
{
"internalType": "bytes",
"name": "signedTXInfo_",
"type": "bytes"
},
{
"internalType": "string",
"name": "vault_",
"type": "string"
}
],
"name": "bridgeMintStealth",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "string",
"name": "hashedTxId_",
"type": "string"
},
{
"internalType": "address",
"name": "toTokenAddress_",
"type": "address"
},
{
"internalType": "uint256",
"name": "tokenAmount_",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "fromTokenDecimals_",
"type": "uint256"
},
{
"internalType": "address",
"name": "receiverAddress_",
"type": "address"
},
{
"internalType": "bytes",
"name": "signedTXInfo_",
"type": "bytes"
},
{
"internalType": "string",
"name": "vault_",
"type": "string"
}
],
"name": "bridgeWithdrawStealth",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "feeRate",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "key_",
"type": "address"
}
],
"name": "getMPCMapDataTx",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
}
],
"name": "getRoleAdmin",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "to_",
"type": "address"
}
],
"name": "grantAdmin",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
},
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "grantRole",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
},
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "hasRole",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes",
"name": "key_",
"type": "bytes"
}
],
"name": "keyExistsTx",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "owner",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "string",
"name": "hashedTxId_",
"type": "string"
},
{
"internalType": "address",
"name": "toTokenAddress_",
"type": "address"
},
{
"internalType": "uint256",
"name": "tokenAmount_",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "fromTokenDecimals_",
"type": "uint256"
},
{
"internalType": "address",
"name": "receiverAddress_",
"type": "address"
},
{
"internalType": "bytes",
"name": "signedTXInfo_",
"type": "bytes"
},
{
"internalType": "string",
"name": "vault_",
"type": "string"
}
],
"name": "previewBridgeStealth",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "tokenAddr_",
"type": "address"
}
],
"name": "previewVaultWithdraw",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "amount_",
"type": "uint256"
},
{
"internalType": "address",
"name": "tokenAddr_",
"type": "address"
},
{
"internalType": "address",
"name": "receiver_",
"type": "address"
}
],
"name": "pullWithdraw",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "renounceOwnership",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
},
{
"internalType": "address",
"name": "callerConfirmation",
"type": "address"
}
],
"name": "renounceRole",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "to_",
"type": "address"
}
],
"name": "revokeAdmin",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
},
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "revokeRole",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "MPCO_",
"type": "address"
}
],
"name": "setMPCOracle",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address payable",
"name": "vault_",
"type": "address"
}
],
"name": "setVault",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "payoutAddress_",
"type": "address"
},
{
"internalType": "uint256",
"name": "feeRate_",
"type": "uint256"
}
],
"name": "setpayoutAddressess",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes4",
"name": "interfaceId",
"type": "bytes4"
}
],
"name": "supportsInterface",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "newOwner",
"type": "address"
}
],
"name": "transferOwnership",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "vault",
"outputs": [
{
"internalType": "contract LuxVault",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "amount_",
"type": "uint256"
},
{
"internalType": "address",
"name": "tokenAddr_",
"type": "address"
}
],
"name": "vaultDeposit",
"outputs": [],
"stateMutability": "payable",
"type": "function"
},
{
"stateMutability": "payable",
"type": "receive"
}
]
@@ -0,0 +1,351 @@
[
{
"inputs": [],
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"inputs": [
{
"internalType": "address",
"name": "spender",
"type": "address"
},
{
"internalType": "uint256",
"name": "allowance",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "needed",
"type": "uint256"
}
],
"name": "ERC20InsufficientAllowance",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "sender",
"type": "address"
},
{
"internalType": "uint256",
"name": "balance",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "needed",
"type": "uint256"
}
],
"name": "ERC20InsufficientBalance",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "approver",
"type": "address"
}
],
"name": "ERC20InvalidApprover",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "receiver",
"type": "address"
}
],
"name": "ERC20InvalidReceiver",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "sender",
"type": "address"
}
],
"name": "ERC20InvalidSender",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "spender",
"type": "address"
}
],
"name": "ERC20InvalidSpender",
"type": "error"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "spender",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "Approval",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "from",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "to",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "Transfer",
"type": "event"
},
{
"inputs": [
{
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"internalType": "address",
"name": "spender",
"type": "address"
}
],
"name": "allowance",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "spender",
"type": "address"
},
{
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "approve",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "balanceOf",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "account",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "burn",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "decimals",
"outputs": [
{
"internalType": "uint8",
"name": "",
"type": "uint8"
}
],
"stateMutability": "pure",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "account",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "mint",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "name",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "symbol",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "totalSupply",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "to",
"type": "address"
},
{
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "transfer",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "from",
"type": "address"
},
{
"internalType": "address",
"name": "to",
"type": "address"
},
{
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "transferFrom",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
}
]
@@ -0,0 +1,380 @@
import { type Network } from "@/domain/types"
const sourceNetworks: Network[] = [
{
display_name: "Bitcoin",
internal_name: "BITCOIN_MAINNET",
native_currency: "BTC",
logo: "https://cdn.lux.network/bridge/networks/bitcoin_mainnet.png",
is_testnet: false,
is_featured: true,
average_completion_time: "00:04:39.5276290",
chain_id: null,
status: "active",
type: "btc",
deposit_address: {
address: "bc1qx6t60aknh95vjmnudf48mfjvwm47a607prqv4t"
},
refuel_amount_in_usd: 1,
transaction_explorer_template: "https://btcscan.org/tx/{0}",
account_explorer_template: "https://btcscan.org/address/{0}",
node: "",
currencies: [
{
name: "BTC",
asset: "BTC",
contract_address: "",
logo: "https://cdn.lux.network/bridge/currencies/btc.png",
decimals: 8,
status: "active",
is_deposit_enabled: true,
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: true,
},
],
},
{
display_name: "Solana",
internal_name: "SOLANA_MAINNET",
native_currency: "SOL",
logo: "https://cdn.lux.network/bridge/networks/solana_mainnet.png",
is_testnet: false,
is_featured: false,
average_completion_time: "00:03:07.9874770",
chain_id: null,
status: "active",
type: "solana",
deposit_address: {
address: "52n85bTwSqkXuZxsz5sVEtzC7WQDMva228iUY2wZkLN1"
},
refuel_amount_in_usd: 1,
transaction_explorer_template: "https://explorer.solana.com/tx/{0}",
account_explorer_template: "https://explorer.solana.com/address/{0}",
node: "https://odella-kzfk20-fast-mainnet.helius-rpc.com/",
currencies: [
{
name: "SOL",
asset: "SOL",
contract_address: null,
logo: "https://cdn.lux.network/bridge/currencies/sol.png",
decimals: 9,
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: true,
},
{
name: "WETH",
asset: "WETH",
contract_address: "7vfCXTUXx5WJV5JADk17DUJ4ksgau7utNKj4b963voxs",
logo: "https://cdn.lux.network/bridge/currencies/ethereum_eth.svg",
decimals: 8,
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: "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
logo: "https://cdn.lux.network/bridge/currencies/usdc.png",
decimals: 6,
status: "active",
is_deposit_enabled: true,
is_withdrawal_enabled: true,
is_refuel_enabled: false,
max_withdrawal_amount: 1000,
deposit_fee: 0.1,
withdrawal_fee: 0.1,
source_base_fee: 0.1,
destination_base_fee: 0.1,
is_native: false,
},
],
},
{
display_name: "Ton",
internal_name: "TON_MAINNET",
native_currency: "TON",
logo: "https://cdn.lux.network/bridge/networks/ton_mainnet.svg",
is_testnet: false,
is_featured: false,
average_completion_time: "00:04:39.5276290",
chain_id: null,
status: "active",
type: "ton",
deposit_address: {
address: "UQCdW7qm_Kh3zX6YdBPxK9_bHq1D7gowVkDEb2ekxb9GdR8P",
memo: "BCE7D5F9B0A66291B221"
},
refuel_amount_in_usd: 1,
transaction_explorer_template: "https://tonscan.org/tx/{0}",
account_explorer_template: "https://tonscan.org/address/{0}",
node: "UQAvirnJ3tWyhjU0At4qRr-Miph3bI_38vgp0h73SHTl3TDB",
currencies: [
{
name: "TON",
asset: "TON",
contract_address: null,
logo: "https://cdn.lux.network/bridge/currencies/ton.svg",
decimals: 9,
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: true,
},
{
name: "jUSDC",
asset: "jUSDC",
contract_address: "EQB-MPwrd1G6WKNkLz_VnV6WqBDd142KMQv-g1O-8QUA3728",
logo: "https://cdn.lux.network/bridge/currencies/usdc.png",
decimals: 6,
status: "active",
is_deposit_enabled: false,
is_withdrawal_enabled: true,
is_refuel_enabled: true,
max_withdrawal_amount: 500,
deposit_fee: 0.1,
withdrawal_fee: 0.1,
source_base_fee: 0.1,
destination_base_fee: 0.1,
is_native: false,
},
],
}
];
const destinationNetworks: Network[] = [
{
display_name: "Lux",
internal_name: "LUX_MAINNET",
native_currency: "LUX",
logo: "https://cdn.lux.network/bridge/networks/lux_mainnet.png",
is_testnet: false,
is_featured: true,
average_completion_time: "00:00:07.7777777",
chain_id: 7777,
status: "active",
type: "evm",
refuel_amount_in_usd: 1,
transaction_explorer_template: "https://explore.lux.network/tx/{0}",
account_explorer_template: "https://explore.lux.network/address/{0}",
node: "https://api.lux.network",
currencies: [
{
name: "LUX",
asset: "LUX",
logo: "https://cdn.lux.network/bridge/currencies/lux/lux.svg",
contract_address: "0x0000000000000000000000000000000000000000",
decimals: 18,
status: "inactive",
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: "Lux BTC",
asset: "LBTC",
logo: "https://cdn.lux.network/bridge/currencies/lux/lbtc.svg",
contract_address: "0xebD1Ee9BCAaeE50085077651c1a2dD452fc6b72e",
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 ETH",
asset: "LETH",
logo: "https://cdn.lux.network/bridge/currencies/lux/leth.svg",
contract_address: "0x2951A9386df11a4EA8ae5A823B94DC257dEb35Cb",
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 POL",
asset: "LPOL",
logo: "https://cdn.lux.network/bridge/currencies/lux/lpol.svg",
contract_address: "0x9F47CeB09cb88362f0274Bb354a9807Fd976D963",
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",
logo: "https://cdn.lux.network/bridge/currencies/lux/lbnb.svg",
contract_address: "0xcf963Fe4E4cE126047147661e6e06e171f366506",
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 FTM",
asset: "LFTM",
logo: "https://cdn.lux.network/bridge/currencies/lux/lftm.svg",
contract_address: "0x15BA7dCA26c63029E33C81f7B3978B54Bc0CB08B",
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 CELO",
asset: "LCELO",
logo: "https://cdn.lux.network/bridge/currencies/lux/lcelo.svg",
contract_address: "0xD257ADA332da217c78959A609e97c71ce5214925",
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 xDAI",
asset: "LXDAI",
logo: "https://cdn.lux.network/bridge/currencies/lux/ldai.svg",
contract_address: "0x0D15251ad56cE56cC22588F6645c20ee7d77aE39",
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 SOL",
asset: "LSOL",
logo: "https://cdn.lux.network/bridge/currencies/lux/lsol.svg",
contract_address: "0x372b3B7Cb87A7aE9Cb024861775f01015A71058C",
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 TON",
asset: "LTON",
logo: "https://cdn.lux.network/bridge/currencies/lux/lton.svg",
contract_address: "0xa4AA40ff2F2Cbe4FFcDfa5fF2A466fa7aF3390e5",
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 Dollar",
asset: "LUSD",
logo: "https://cdn.lux.network/bridge/currencies/lux/lusd.svg",
contract_address: "0x42b733cA4b3A8FC0237dBE39A47441cfD525f0F1",
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,
},
],
}
];
export default { sourceNetworks, destinationNetworks }
@@ -0,0 +1,564 @@
import { type Network } from "@/domain/types"
const sourceNetworks: Network[] = [
{
display_name: "Bitcoin Testnet",
internal_name: "BITCOIN_TESTNET",
native_currency: "BTC",
logo: "https://cdn.lux.network/bridge/networks/bitcoin_mainnet.png",
is_testnet: true,
is_featured: true,
average_completion_time: "00:04:39.5276290",
chain_id: null,
status: "active",
type: "btc",
deposit_address: {
address: "tb1qgps3lt0lz3mufdnmj3lhcnpfh48s2u53996xdv",
},
refuel_amount_in_usd: 1,
transaction_explorer_template: "https://blockstream.info/testnet/tx/{0}",
account_explorer_template: "https://blockstream.info/testnet/address/{0}",
node: "",
currencies: [
{
name: "BTC",
asset: "BTC",
contract_address: "",
logo: "https://cdn.lux.network/bridge/currencies/btc.png",
decimals: 8,
status: "active",
is_deposit_enabled: true,
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: true,
},
],
},
{
display_name: "Ethereum Sepolia",
internal_name: "ETHEREUM_SEPOLIA",
native_currency: "ETH",
logo: "https://cdn.lux.network/bridge/networks/ethereum_sepolia.png",
is_testnet: true,
is_featured: true,
average_completion_time: "00:01:04.0494430",
chain_id: 11155111,
status: "active",
type: "evm",
deposit_address: {
address: "0xD4952A4c2644469D59F9dE340E0e829e51836Dec",
},
refuel_amount_in_usd: 0.5,
transaction_explorer_template: "https://sepolia.etherscan.io/tx/{0}",
account_explorer_template: "https://sepolia.etherscan.io/address/{0}",
node: "https://old-green-glade.ethereum-sepolia.quiknode.pro/0523b575936957f0e7eae638096d19465aae8f8c/",
currencies: [
{
name: "ETH",
asset: "ETH",
logo: "https://cdn.lux.network/bridge/currencies/ethereum_eth.svg",
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: "USDT",
asset: "USDT",
logo: "https://cdn.lux.network/bridge/currencies/usdt.png",
contract_address: "0xE9FF4E487ffcA25a765D5445CC8665128Ac35820",
decimals: 6,
status: "inactive",
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: 1,
destination_base_fee: 1,
is_native: false,
},
{
name: "USDC",
asset: "USDC",
logo: "https://cdn.lux.network/bridge/currencies/usdc.png",
contract_address: "0x299e04DE65090D3C48019893e369A7983124c514",
decimals: 6,
status: "inactive",
is_deposit_enabled: true,
is_withdrawal_enabled: true,
is_refuel_enabled: true,
max_withdrawal_amount: 3000,
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",
logo: "https://cdn.lux.network/bridge/currencies/dai.png",
contract_address: "0x3FADaC51B852273e11Da42Db30714FddA785b8C5",
decimals: 18,
status: "inactive",
is_deposit_enabled: true,
is_withdrawal_enabled: true,
is_refuel_enabled: true,
max_withdrawal_amount: 3000,
deposit_fee: 0.1,
withdrawal_fee: 0.1,
source_base_fee: 0.1,
destination_base_fee: 0.1,
is_native: false,
},
],
},
{
display_name: "Base Sepolia",
internal_name: "BASE_SEPOLIA",
native_currency: "ETH",
logo: "https://cdn.lux.network/bridge/networks/base_mainnet.png",
is_testnet: true,
is_featured: true,
average_completion_time: "00:01:04.0494430",
chain_id: 84532, //base sepolia
status: "active",
type: "evm",
deposit_address: {
address: "0xD4952A4c2644469D59F9dE340E0e829e51836Dec",
},
refuel_amount_in_usd: 0.5,
transaction_explorer_template: "https://sepolia.basescan.org/tx/{0}", // sepolia
account_explorer_template: "https://sepolia.basescan.org/address/{0}", // sepolia
node: "https://sepolia.base.org", // sepolia
currencies: [
{
name: "ETH",
asset: "ETH",
logo: "https://cdn.lux.network/bridge/currencies/ethereum_eth.svg",
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: "USDT",
asset: "USDT",
logo: "https://cdn.lux.network/bridge/currencies/usdt.png",
contract_address: "0x46390FA219b22f739C63F0bF1c165a1FBc30B57c",
decimals: 6,
status: "inactive",
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",
logo: "https://cdn.lux.network/bridge/currencies/usdc.png",
contract_address: "0xE49355609F94A4B8a2EfC6FBd077542F8EC90080", //sepolia
decimals: 6,
status: "inactive",
is_deposit_enabled: true,
is_withdrawal_enabled: true,
is_refuel_enabled: true,
max_withdrawal_amount: 3000,
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",
logo: "https://cdn.lux.network/bridge/currencies/dai.png",
contract_address: "0x568BF299E115D78a1fBa57BafdAe0fD8A26BFb7e",
decimals: 18,
status: "inactive",
is_deposit_enabled: true,
is_withdrawal_enabled: true,
is_refuel_enabled: true,
max_withdrawal_amount: 3000,
deposit_fee: 0.1,
withdrawal_fee: 0.1,
source_base_fee: 0.1,
destination_base_fee: 0.1,
is_native: false,
},
],
},
{
display_name: "Solana Testnet",
internal_name: "SOLANA_TESTNET",
native_currency: "SOL",
logo: "https://cdn.lux.network/bridge/networks/solana_mainnet.png",
is_testnet: true,
is_featured: false,
average_completion_time: "00:03:07.9874770",
chain_id: null,
status: "active",
type: "solana",
deposit_address: {
address: "DsBiAAy92HtjXKFf78ZTQKCaMDuMGyUeh6v7pPSHrVbY",
},
refuel_amount_in_usd: 1,
transaction_explorer_template:
"https://explorer.solana.com/?cluster=testnet/tx/{0}",
account_explorer_template:
"https://explorer.solana.com/?cluster=testnet/address/{0}",
node: "https://api.testnet.solana.com",
currencies: [
{
name: "SOL",
asset: "SOL",
contract_address: null,
logo: "https://cdn.lux.network/bridge/currencies/sol.png",
decimals: 9,
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: true,
},
],
},
{
display_name: "Solana Devnet",
internal_name: "SOLANA_DEVNET",
native_currency: "SOL",
logo: "https://cdn.lux.network/bridge/networks/solana_mainnet.png",
is_testnet: true,
is_featured: false,
average_completion_time: "00:03:07.9874770",
chain_id: null,
status: "active",
type: "solana",
deposit_address: {
address: "DsBiAAy92HtjXKFf78ZTQKCaMDuMGyUeh6v7pPSHrVbY",
},
refuel_amount_in_usd: 1,
transaction_explorer_template:
"https://explorer.solana.com/?cluster=testnet/tx/{0}",
account_explorer_template:
"https://explorer.solana.com/?cluster=testnet/address/{0}",
node: "https://api.testnet.solana.com",
currencies: [
{
name: "SOL",
asset: "SOL",
contract_address: null,
logo: "https://cdn.lux.network/bridge/currencies/sol.png",
decimals: 9,
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: true,
},
],
},
{
display_name: "Ton Testnet",
internal_name: "TON_TESTNET",
native_currency: "TON",
logo: "https://cdn.lux.network/bridge/networks/ton_mainnet.svg",
is_testnet: false,
is_featured: false,
average_completion_time: "00:04:39.5276290",
chain_id: null,
status: "active",
type: "ton",
deposit_address: {
address: "0QDMXrj5n4ldLGoq9l0svifDORdTLnKsOEH6ClAEXX5qj1Sq",
memo: "70A09E871BFAFCB0A216",
},
refuel_amount_in_usd: 1,
transaction_explorer_template: "https://tonscan.org/tx/{0}",
account_explorer_template: "https://tonscan.org/address/{0}",
node: "UQAvirnJ3tWyhjU0At4qRr-Miph3bI_38vgp0h73SHTl3TDB",
currencies: [
{
name: "TON",
asset: "TON",
contract_address: null,
logo: "https://cdn.lux.network/bridge/currencies/ton.svg",
decimals: 9,
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: true,
},
{
name: "jUSDC",
asset: "jUSDC",
contract_address: "EQB-MPwrd1G6WKNkLz_VnV6WqBDd142KMQv-g1O-8QUA3728",
logo: "https://cdn.lux.network/bridge/currencies/usdc.png",
decimals: 6,
status: "inactive",
is_deposit_enabled: false,
is_withdrawal_enabled: true,
is_refuel_enabled: true,
max_withdrawal_amount: 500,
deposit_fee: 0.1,
withdrawal_fee: 0.1,
source_base_fee: 0.1,
destination_base_fee: 0.1,
is_native: false,
},
],
},
];
const destinationNetworks: Network[] = [
{
display_name: "Lux Testnet",
internal_name: "LUX_TESTNET",
native_currency: "LUX",
logo: "https://cdn.lux.network/bridge/networks/lux_mainnet.png",
is_testnet: false,
is_featured: true,
average_completion_time: "00:00:07.7777777",
chain_id: 7777,
status: "active",
type: "evm",
refuel_amount_in_usd: 1,
transaction_explorer_template: "https://explore.lux-test.network/tx/{0}",
account_explorer_template: "https://explore.lux-test.network/address/{0}",
node: "https://api.lux-test.network",
currencies: [
{
name: "LUX",
asset: "LUX",
logo: "https://cdn.lux.network/bridge/currencies/lux/lux.svg",
contract_address: "0x0000000000000000000000000000000000000000",
decimals: 18,
status: "inactive",
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: "Lux BTC",
asset: "LBTC",
logo: "https://cdn.lux.network/bridge/currencies/lux/lbtc.svg",
contract_address: "0xebD1Ee9BCAaeE50085077651c1a2dD452fc6b72e",
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 ETH",
asset: "LETH",
logo: "https://cdn.lux.network/bridge/currencies/lux/leth.svg",
contract_address: "0x2951A9386df11a4EA8ae5A823B94DC257dEb35Cb",
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 POL",
asset: "LPOL",
logo: "https://cdn.lux.network/bridge/currencies/lux/lpol.svg",
contract_address: "0x9F47CeB09cb88362f0274Bb354a9807Fd976D963",
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",
logo: "https://cdn.lux.network/bridge/currencies/lux/lbnb.svg",
contract_address: "0xcf963Fe4E4cE126047147661e6e06e171f366506",
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 FTM",
asset: "LFTM",
logo: "https://cdn.lux.network/bridge/currencies/lux/lftm.svg",
contract_address: "0x15BA7dCA26c63029E33C81f7B3978B54Bc0CB08B",
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 CELO",
asset: "LCELO",
logo: "https://cdn.lux.network/bridge/currencies/lux/lcelo.svg",
contract_address: "0xD257ADA332da217c78959A609e97c71ce5214925",
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 xDAI",
asset: "LXDAI",
logo: "https://cdn.lux.network/bridge/currencies/lux/ldai.svg",
contract_address: "0x0D15251ad56cE56cC22588F6645c20ee7d77aE39",
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 SOL",
asset: "LSOL",
logo: "https://cdn.lux.network/bridge/currencies/lux/lsol.svg",
contract_address: "0x372b3B7Cb87A7aE9Cb024861775f01015A71058C",
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 TON",
asset: "LTON",
logo: "https://cdn.lux.network/bridge/currencies/lux/lton.svg",
contract_address: "0xa4AA40ff2F2Cbe4FFcDfa5fF2A466fa7aF3390e5",
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 Dollar",
asset: "LUSD",
logo: "https://cdn.lux.network/bridge/currencies/lux/lusd.svg",
contract_address: "0x42b733cA4b3A8FC0237dBE39A47441cfD525f0F1",
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,
},
],
},
];
export default { sourceNetworks, destinationNetworks };
@@ -0,0 +1,108 @@
export const CONTRACTS = {
1: {
chain_id: 1,
teleporter: "",
vault: "",
},
137: {
chain_id: 137,
teleporter: "",
vault: "",
},
10: {
chain_id: 10,
teleporter: "",
vault: "",
},
42161: {
chain_id: 42161,
teleporter: "",
vault: "",
},
42220: {
chain_id: 42220,
teleporter: "",
vault: "",
},
8453: {
chain_id: 8453,
teleporter: "",
vault: "",
},
100: {
chain_id: 100,
teleporter: "",
vault: "",
},
43114: {
chain_id: 43114,
teleporter: "",
vault: "",
},
250: {
chain_id: 250,
teleporter: "",
vault: "",
},
1313161554: {
chain_id: 1313161554,
teleporter: "",
vault: "",
},
7777777: {
chain_id: 7777777,
teleporter: "",
vault: "",
},
81457: {
chain_id: 81457,
teleporter: "",
vault: "",
},
59144: {
chain_id: 59144,
teleporter: "",
vault: "",
},
97: {
//bsc testnet
chain_id: 97,
teleporter: "0x568BF299E115D78a1fBa57BafdAe0fD8A26BFb7e",
vault: "0xE49355609F94A4B8a2EfC6FBd077542F8EC90080",
},
8888: {
// lux testnet
chain_id: 8888,
teleporter: "0x23E4BFDAC278FFE22DbBFAc5c1474E10cE7631CD",
vault: "0x43A4Ab078Edcd3e28385C714950fd099c9595279",
},
84532: {
// base testnet
chain_id: 84532,
teleporter: "0x6374d9d1E0CB5eA5e77D92E9a306f7f2ec41660a",
vault: "0x3Aa3179Bd3A8b1d8269dd840E39f8112fb3eD27a",
},
11155111: {
// sepolia
chain_id: 11155111,
teleporter: "0x306533aaedc8d2e28F05a7d42E999730C45aB5B1",
vault: "0xF2d3BE50D818d48A4e516FbaBb61609F9792CfA6",
},
};
export const SWAP_PAIRS: Record<string, string[]> = {
BTC: ["LBTC"],
WETH: ["LETH"],
ETH: ["LETH"],
TON: ["LTON"],
SOL: ["LSOL"],
jUSDC: ["LUSD"],
POL: ["LPOL"],
BNB: ["LBNB"],
FTM: ["LFTM"],
DAI: ["LUSD"],
USDT: ["LUSD"],
USDC: ["LUSD"],
CELO: ["LCELO"],
XDAI: ["LXDAI"],
};
@@ -0,0 +1,875 @@
[
{
"inputs": [],
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"inputs": [],
"name": "AccessControlBadConfirmation",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "account",
"type": "address"
},
{
"internalType": "bytes32",
"name": "neededRole",
"type": "bytes32"
}
],
"name": "AccessControlUnauthorizedAccount",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "owner",
"type": "address"
}
],
"name": "OwnableInvalidOwner",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "OwnableUnauthorizedAccount",
"type": "error"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "value",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "length",
"type": "uint256"
}
],
"name": "StringsInsufficientHexLength",
"type": "error"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "address",
"name": "to",
"type": "address"
}
],
"name": "AdminGranted",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "address",
"name": "to",
"type": "address"
}
],
"name": "AdminRevoked",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "address",
"name": "caller",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "amt",
"type": "uint256"
},
{
"indexed": false,
"internalType": "address",
"name": "token",
"type": "address"
}
],
"name": "BridgeBurned",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "address",
"name": "recipient",
"type": "address"
},
{
"indexed": false,
"internalType": "address",
"name": "token",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "amt",
"type": "uint256"
}
],
"name": "BridgeMinted",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "address",
"name": "recipient",
"type": "address"
},
{
"indexed": false,
"internalType": "address",
"name": "token",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "amt",
"type": "uint256"
}
],
"name": "BridgeWithdrawn",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "address",
"name": "MPCOracle",
"type": "address"
}
],
"name": "NewMPCOracleSet",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "previousOwner",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "newOwner",
"type": "address"
}
],
"name": "OwnershipTransferred",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
},
{
"indexed": true,
"internalType": "bytes32",
"name": "previousAdminRole",
"type": "bytes32"
},
{
"indexed": true,
"internalType": "bytes32",
"name": "newAdminRole",
"type": "bytes32"
}
],
"name": "RoleAdminChanged",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
},
{
"indexed": true,
"internalType": "address",
"name": "account",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "sender",
"type": "address"
}
],
"name": "RoleGranted",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
},
{
"indexed": true,
"internalType": "address",
"name": "account",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "sender",
"type": "address"
}
],
"name": "RoleRevoked",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "bytes",
"name": "_key",
"type": "bytes"
}
],
"name": "SigMappingAdded",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "address",
"name": "depositor",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "amt",
"type": "uint256"
},
{
"indexed": false,
"internalType": "address",
"name": "token",
"type": "address"
}
],
"name": "VaultDeposit",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "address",
"name": "receiver",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "amt",
"type": "uint256"
},
{
"indexed": false,
"internalType": "address",
"name": "token",
"type": "address"
}
],
"name": "VaultWithdraw",
"type": "event"
},
{
"inputs": [],
"name": "DEFAULT_ADMIN_ROLE",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "asset_",
"type": "address"
}
],
"name": "addNewERC20Vault",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "amount_",
"type": "uint256"
},
{
"internalType": "address",
"name": "tokenAddr_",
"type": "address"
}
],
"name": "bridgeBurn",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "string",
"name": "hashedTxId_",
"type": "string"
},
{
"internalType": "address",
"name": "toTokenAddress_",
"type": "address"
},
{
"internalType": "uint256",
"name": "tokenAmount_",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "fromTokenDecimals_",
"type": "uint256"
},
{
"internalType": "address",
"name": "receiverAddress_",
"type": "address"
},
{
"internalType": "bytes",
"name": "signedTXInfo_",
"type": "bytes"
},
{
"internalType": "string",
"name": "vault_",
"type": "string"
}
],
"name": "bridgeMintStealth",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "string",
"name": "hashedTxId_",
"type": "string"
},
{
"internalType": "address",
"name": "toTokenAddress_",
"type": "address"
},
{
"internalType": "uint256",
"name": "tokenAmount_",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "fromTokenDecimals_",
"type": "uint256"
},
{
"internalType": "address",
"name": "receiverAddress_",
"type": "address"
},
{
"internalType": "bytes",
"name": "signedTXInfo_",
"type": "bytes"
},
{
"internalType": "string",
"name": "vault_",
"type": "string"
}
],
"name": "bridgeWithdrawStealth",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "feeRate",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "key_",
"type": "address"
}
],
"name": "getMPCMapDataTx",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
}
],
"name": "getRoleAdmin",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "to_",
"type": "address"
}
],
"name": "grantAdmin",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
},
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "grantRole",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
},
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "hasRole",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes",
"name": "key_",
"type": "bytes"
}
],
"name": "keyExistsTx",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "owner",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "string",
"name": "hashedTxId_",
"type": "string"
},
{
"internalType": "address",
"name": "toTokenAddress_",
"type": "address"
},
{
"internalType": "uint256",
"name": "tokenAmount_",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "fromTokenDecimals_",
"type": "uint256"
},
{
"internalType": "address",
"name": "receiverAddress_",
"type": "address"
},
{
"internalType": "bytes",
"name": "signedTXInfo_",
"type": "bytes"
},
{
"internalType": "string",
"name": "vault_",
"type": "string"
}
],
"name": "previewBridgeStealth",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "tokenAddr_",
"type": "address"
}
],
"name": "previewVaultWithdraw",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "amount_",
"type": "uint256"
},
{
"internalType": "address",
"name": "tokenAddr_",
"type": "address"
},
{
"internalType": "address",
"name": "receiver_",
"type": "address"
}
],
"name": "pullWithdraw",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "renounceOwnership",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
},
{
"internalType": "address",
"name": "callerConfirmation",
"type": "address"
}
],
"name": "renounceRole",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "to_",
"type": "address"
}
],
"name": "revokeAdmin",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
},
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "revokeRole",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "MPCO_",
"type": "address"
}
],
"name": "setMPCOracle",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address payable",
"name": "vault_",
"type": "address"
}
],
"name": "setVault",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "payoutAddress_",
"type": "address"
},
{
"internalType": "uint256",
"name": "feeRate_",
"type": "uint256"
}
],
"name": "setpayoutAddressess",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes4",
"name": "interfaceId",
"type": "bytes4"
}
],
"name": "supportsInterface",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "newOwner",
"type": "address"
}
],
"name": "transferOwnership",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "vault",
"outputs": [
{
"internalType": "contract LuxVault",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "amount_",
"type": "uint256"
},
{
"internalType": "address",
"name": "tokenAddr_",
"type": "address"
}
],
"name": "vaultDeposit",
"outputs": [],
"stateMutability": "payable",
"type": "function"
},
{
"stateMutability": "payable",
"type": "receive"
}
]
@@ -0,0 +1,351 @@
[
{
"inputs": [],
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"inputs": [
{
"internalType": "address",
"name": "spender",
"type": "address"
},
{
"internalType": "uint256",
"name": "allowance",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "needed",
"type": "uint256"
}
],
"name": "ERC20InsufficientAllowance",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "sender",
"type": "address"
},
{
"internalType": "uint256",
"name": "balance",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "needed",
"type": "uint256"
}
],
"name": "ERC20InsufficientBalance",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "approver",
"type": "address"
}
],
"name": "ERC20InvalidApprover",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "receiver",
"type": "address"
}
],
"name": "ERC20InvalidReceiver",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "sender",
"type": "address"
}
],
"name": "ERC20InvalidSender",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "spender",
"type": "address"
}
],
"name": "ERC20InvalidSpender",
"type": "error"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "spender",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "Approval",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "from",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "to",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "Transfer",
"type": "event"
},
{
"inputs": [
{
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"internalType": "address",
"name": "spender",
"type": "address"
}
],
"name": "allowance",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "spender",
"type": "address"
},
{
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "approve",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "balanceOf",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "account",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "burn",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "decimals",
"outputs": [
{
"internalType": "uint8",
"name": "",
"type": "uint8"
}
],
"stateMutability": "pure",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "account",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "mint",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "name",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "symbol",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "totalSupply",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "to",
"type": "address"
},
{
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "transfer",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "from",
"type": "address"
},
{
"internalType": "address",
"name": "to",
"type": "address"
},
{
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "transferFrom",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
}
]
@@ -0,0 +1,861 @@
import { type Network } from "@/domain/types"
export const networks: Network[] = [
{
display_name: 'Ethereum',
internal_name: 'ETHEREUM_MAINNET',
native_currency: 'ETH',
logo: 'https://cdn.lux.network/bridge/networks/ethereum_mainnet.png',
is_testnet: false,
is_featured: true,
average_completion_time: '00:01:04.0494430',
chain_id: 1,
status: 'active',
type: 'evm',
refuel_amount_in_usd: 0.5,
transaction_explorer_template: 'https://etherscan.io/tx/{0}',
account_explorer_template: 'https://etherscan.io/address/{0}',
node: 'https://boldest-bold-uranium.quiknode.pro/a5e9ce66d6648e49889274a783acd07aebcc02bc/',
currencies: [
{
name: 'ETH',
asset: 'ETH',
logo: 'https://cdn.lux.network/bridge/currencies/ethereum_eth.svg',
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: 'USDT',
asset: 'USDT',
logo: 'https://cdn.lux.network/bridge/currencies/usdt.png',
contract_address: '0xdac17f958d2ee523a2206206994597c13d831ec7',
decimals: 6,
status: 'inactive',
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',
logo: 'https://cdn.lux.network/bridge/currencies/usdc.png',
contract_address: '0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48',
decimals: 6,
status: 'inactive',
is_deposit_enabled: true,
is_withdrawal_enabled: true,
is_refuel_enabled: true,
max_withdrawal_amount: 3000,
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',
logo: 'https://cdn.lux.network/bridge/currencies/dai.png',
contract_address: '0x6b175474e89094c44da98b954eedeac495271d0f',
decimals: 18,
status: 'inactive',
is_deposit_enabled: true,
is_withdrawal_enabled: true,
is_refuel_enabled: true,
max_withdrawal_amount: 3000,
deposit_fee: 0.1,
withdrawal_fee: 0.1,
source_base_fee: 0.1,
destination_base_fee: 0.1,
is_native: false,
},
],
},
{
display_name: 'Base',
internal_name: 'BASE_MAINNET',
native_currency: 'ETH',
logo: 'https://cdn.lux.network/bridge/networks/base_mainnet.png',
is_testnet: false,
is_featured: false,
average_completion_time: '00:01:04.0494430',
chain_id: 8453,
status: 'active',
type: 'evm',
refuel_amount_in_usd: 0.5,
transaction_explorer_template: 'https://basescan.org/tx/{0}',
account_explorer_template: 'https://basescan.org/address/{0}',
node: 'https://mainnet.base.org',
currencies: [
{
name: 'ETH',
asset: 'ETH',
logo: 'https://cdn.lux.network/bridge/currencies/ethereum_eth.svg',
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: 'WETH',
asset: 'WETH',
logo: 'https://cdn.lux.network/bridge/currencies/ethereum_eth.svg',
contract_address: '0x4200000000000000000000000000000000000006',
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: 'USDT',
asset: 'USDT',
logo: 'https://cdn.lux.network/bridge/currencies/usdt.png',
contract_address: '0xfde4C96c8593536E31F229EA8f37b2ADa2699bb2',
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',
logo: 'https://cdn.lux.network/bridge/currencies/usdc.png',
contract_address: '0x833589fcd6edb6e08f4c7c32d4f71b54bda02913',
decimals: 6,
status: 'active',
is_deposit_enabled: true,
is_withdrawal_enabled: true,
is_refuel_enabled: true,
max_withdrawal_amount: 3000,
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',
logo: 'https://cdn.lux.network/bridge/currencies/dai.png',
contract_address: '0x50c5725949A6F0c72E6C4a641F24049A917DB0Cb',
decimals: 18,
status: 'active',
is_deposit_enabled: true,
is_withdrawal_enabled: true,
is_refuel_enabled: true,
max_withdrawal_amount: 3000,
deposit_fee: 0.1,
withdrawal_fee: 0.1,
source_base_fee: 0.1,
destination_base_fee: 0.1,
is_native: false,
},
],
},
{
display_name: 'Optimism',
internal_name: 'OPTIMISM_MAINNET',
native_currency: 'ETH',
logo: 'https://cdn.lux.network/bridge/networks/optimism_mainnet.png',
is_testnet: false,
is_featured: true,
average_completion_time: '00:00:07.7777777',
chain_id: 10,
status: 'active',
type: 'evm',
refuel_amount_in_usd: 1,
transaction_explorer_template: 'https://optimistic.etherscan.io/tx/{0}',
account_explorer_template: 'https://optimistic.etherscan.io//address/{0}',
node: 'https://eth-mainnet.g.alchemy.com/v2/-z4Zrujiou9ajXAplVapFFWWrPuLPSm7',
currencies: [
{
name: 'ETH',
asset: 'ETH',
logo: 'https://cdn.lux.network/bridge/currencies/ethereum_eth.svg',
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: 'WETH',
asset: 'WETH',
logo: 'https://cdn.lux.network/bridge/currencies/ethereum_eth.svg',
contract_address: '0x4200000000000000000000000000000000000006',
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: 'USDT',
asset: 'USDT',
logo: 'https://cdn.lux.network/bridge/currencies/usdt.png',
contract_address: '0x94b008aa00579c1307b0ef2c499ad98a8ce58e58',
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',
logo: 'https://cdn.lux.network/bridge/currencies/usdc.png',
contract_address: '0x0b2c639c533813f4aa9d7837caf62653d097ff85',
decimals: 6,
status: 'active',
is_deposit_enabled: true,
is_withdrawal_enabled: true,
is_refuel_enabled: true,
max_withdrawal_amount: 3000,
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',
logo: 'https://cdn.lux.network/bridge/currencies/dai.png',
contract_address: '0xda10009cbd5d07dd0cecc66161fc93d7c9000da1',
decimals: 18,
status: 'active',
is_deposit_enabled: true,
is_withdrawal_enabled: true,
is_refuel_enabled: true,
max_withdrawal_amount: 3000,
deposit_fee: 0.1,
withdrawal_fee: 0.1,
source_base_fee: 0.1,
destination_base_fee: 0.1,
is_native: false,
},
],
},
{
display_name: 'Polygon',
internal_name: 'POLYGON_MAINNET',
native_currency: 'POL',
logo: 'https://cdn.lux.network/bridge/networks/polygon_mainnet.png',
is_testnet: false,
is_featured: true,
average_completion_time: '00:00:07.7777777',
chain_id: 137,
status: 'active',
type: 'evm',
refuel_amount_in_usd: 1,
transaction_explorer_template: 'https://polygonscan.com/tx/{0}',
account_explorer_template: 'https://polygonscan.com/address/{0}',
node: 'https://polygon-bor-rpc.publicnode.com/',
currencies: [
{
name: 'POL',
asset: 'POL',
logo: 'https://cdn.lux.network/bridge/currencies/pol.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: false,
},
{
name: 'WETH',
asset: 'WETH',
logo: 'https://cdn.lux.network/bridge/currencies/ethereum_eth.svg',
contract_address: '0x7ceb23fd6bc0add59e62ac25578270cff1b9f619',
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: 'USDT',
asset: 'USDT',
logo: 'https://cdn.lux.network/bridge/currencies/usdt.png',
contract_address: '0xc2132d05d31c914a87c6611c10748aeb04b58e8f',
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',
logo: 'https://cdn.lux.network/bridge/currencies/usdc.png',
contract_address: '0x3c499c542cef5e3811e1192ce70d8cc03d5c3359',
decimals: 6,
status: 'active',
is_deposit_enabled: true,
is_withdrawal_enabled: true,
is_refuel_enabled: true,
max_withdrawal_amount: 3000,
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',
logo: 'https://cdn.lux.network/bridge/currencies/dai.png',
contract_address: '0x8f3Cf7ad23Cd3CaDbD9735AFf958023239c6A063',
decimals: 18,
status: 'active',
is_deposit_enabled: true,
is_withdrawal_enabled: true,
is_refuel_enabled: true,
max_withdrawal_amount: 3000,
deposit_fee: 0.1,
withdrawal_fee: 0.1,
source_base_fee: 0.1,
destination_base_fee: 0.1,
is_native: false,
},
],
},
{
display_name: 'Arbitrum One',
internal_name: 'ARBITRUM_MAINNET',
native_currency: 'ETH',
logo: 'https://cdn.lux.network/bridge/networks/arbitrum_mainnet.png',
is_testnet: false,
is_featured: false,
average_completion_time: '00:01:04.0494430',
chain_id: 42161,
status: 'inactive',
type: 'evm',
refuel_amount_in_usd: 0.5,
transaction_explorer_template: 'https://arbiscan.io/tx/{0}',
account_explorer_template: 'https://arbiscan.io/address/{0}',
node: 'https://eth-mainnet.g.alchemy.com/v2/-z4Zrujiou9ajXAplVapFFWWrPuLPSm7',
currencies: [],
},
{
display_name: 'Celo',
internal_name: 'CELO_MAINNET',
native_currency: 'CELO',
logo: 'https://cdn.lux.network/bridge/networks/celo_mainnet.svg',
is_testnet: false,
is_featured: false,
average_completion_time: '00:01:04.0494430',
chain_id: 42220,
status: 'inactive',
type: 'evm',
refuel_amount_in_usd: 0.5,
transaction_explorer_template: 'https://celoscan.io/tx/{0}',
account_explorer_template: 'https://celoscan.io/address/{0}',
node: 'https://celo.drpc.org',
currencies: [],
},
{
display_name: 'Binance Smart Chain',
internal_name: 'BSC_MAINNET',
native_currency: 'BNB',
logo: 'https://cdn.lux.network/bridge/networks/bsc_mainnet.png',
is_testnet: false,
is_featured: false,
average_completion_time: '00:01:04.0494430',
chain_id: 56,
status: 'active',
type: 'evm',
refuel_amount_in_usd: 0.5,
transaction_explorer_template: 'https://bscscan.com/tx/{0}',
account_explorer_template: 'https://bscscan.com/address/{0}',
node: 'https://data-seed-prebsc-1-s1.bnbchain.org:8545',
currencies: [
{
name: 'BNB',
asset: 'BNB',
logo: 'https://cdn.lux.network/bridge/currencies/bnb.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: 'WETH',
asset: 'WETH',
logo: 'https://cdn.lux.network/bridge/currencies/ethereum_eth.svg',
contract_address: '0x7b03a103fc847348e5e59f8d3b0740c48d597973',
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: 'USDT',
asset: 'USDT',
logo: 'https://cdn.lux.network/bridge/currencies/usdt.png',
contract_address: '0x9e5AAC1Ba1a2e6aEd6b32689DFcF62A509Ca96f3',
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',
logo: 'https://cdn.lux.network/bridge/currencies/usdc.png',
contract_address: '0x8ac76a51cc950d9822d68b83fe1ad97b32cd580d',
decimals: 6,
status: 'active',
is_deposit_enabled: true,
is_withdrawal_enabled: true,
is_refuel_enabled: true,
max_withdrawal_amount: 3000,
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',
logo: 'https://cdn.lux.network/bridge/currencies/dai.png',
contract_address: '0x1af3f329e8be154074d8769d1ffa4ee058b1dbc3',
decimals: 18,
status: 'active',
is_deposit_enabled: true,
is_withdrawal_enabled: true,
is_refuel_enabled: true,
max_withdrawal_amount: 3000,
deposit_fee: 0.1,
withdrawal_fee: 0.1,
source_base_fee: 0.1,
destination_base_fee: 0.1,
is_native: false,
},
],
},
{
display_name: 'Gnosis',
internal_name: 'GNOSIS_MAINNET',
native_currency: 'XDAI',
logo: 'https://cdn.lux.network/bridge/networks/gnosis_mainnet.png',
is_testnet: false,
is_featured: false,
average_completion_time: '00:01:04.0494430',
chain_id: 100,
status: 'inactive',
type: 'evm',
refuel_amount_in_usd: 0.5,
transaction_explorer_template: 'https://gnosisscan.io/tx/{0}',
account_explorer_template: 'https://gnosisscan.io/address/{0}',
node: 'https://rpc.gnosischain.com',
currencies: [],
},
{
display_name: 'Avalanche',
internal_name: 'AVAX_MAINNET',
native_currency: 'AVAX',
logo: 'https://cdn.lux.network/bridge/networks/avax_mainnet.png',
is_testnet: false,
is_featured: true,
average_completion_time: '00:00:07.7777777',
chain_id: 43114,
status: 'inactive',
type: 'evm',
refuel_amount_in_usd: 1,
transaction_explorer_template: 'https://snowtrace.io/tx/{0}',
account_explorer_template: 'https://snowtrace.io/address/{0}',
node: 'https://api.avax.network/ext/bc/c/rpc',
currencies: [],
},
{
display_name: 'Fantom',
internal_name: 'FANTOM_MAINNET',
native_currency: 'FTM',
logo: 'https://cdn.lux.network/bridge/networks/fantom_mainnet.svg',
is_testnet: false,
is_featured: true,
average_completion_time: '00:00:07.7777777',
chain_id: 250,
status: 'inactive',
type: 'evm',
refuel_amount_in_usd: 1,
transaction_explorer_template: 'https://ftmscan.io/tx/{0}',
account_explorer_template: 'https://ftmscan.io/address/{0}',
node: 'https://rpcapi.fantom.network',
currencies: [],
},
{
display_name: 'Aurora',
internal_name: 'AURORA_MAINNET',
native_currency: 'ETH',
logo: 'https://cdn.lux.network/bridge/networks/aurora_mainnet.png',
is_testnet: false,
is_featured: true,
average_completion_time: '00:00:07.7777777',
chain_id: 1313161554,
status: 'inactive',
type: 'evm',
refuel_amount_in_usd: 1,
transaction_explorer_template: 'https://explorer.aurora.dev/tx/{0}',
account_explorer_template: 'https://explorer.aurora.dev/address/{0}',
node: 'https://mainnet.aurora.dev',
currencies: [],
},
{
display_name: 'Zora',
internal_name: 'ZORA_MAINNET',
native_currency: 'ETH',
logo: 'https://cdn.lux.network/bridge/networks/zora_mainnet.png',
is_testnet: false,
is_featured: false,
average_completion_time: '00:01:04.0494430',
chain_id: 7777777,
status: 'inactive',
type: 'evm',
refuel_amount_in_usd: 0.5,
transaction_explorer_template: 'https://explorer.zora.energy/tx/{0}',
account_explorer_template: 'https://explorer.zora.energy/address/{0}',
node: 'https://rpc.zora.energy',
currencies: [],
},
{
display_name: 'Blast',
internal_name: 'BLAST_MAINNET',
native_currency: 'ETH',
logo: 'https://cdn.lux.network/bridge/networks/blast_mainnet.png',
is_testnet: false,
is_featured: false,
average_completion_time: '00:01:04.0494430',
chain_id: 81457,
status: 'inactive',
type: 'evm',
refuel_amount_in_usd: 0.5,
transaction_explorer_template: 'https://blastscan.io/tx/{0}',
account_explorer_template: 'https://blastscan.io/address/{0}',
node: 'https://rpc.blast.io',
currencies: [],
},
{
display_name: 'Linea',
internal_name: 'LINEA_MAINNET',
native_currency: 'ETH',
logo: 'https://cdn.lux.network/bridge/networks/linea_mainnet.png',
is_testnet: false,
is_featured: false,
average_completion_time: '00:01:12.1184390',
chain_id: 59144,
status: 'inactive',
type: 'evm',
refuel_amount_in_usd: 1,
transaction_explorer_template: 'https://lineascan.build/tx/{0}',
account_explorer_template: 'https://lineascan.build/address/{0}',
node: 'https://rpc.linea.build',
currencies: [],
},
{
display_name: 'Lux',
internal_name: 'LUX_MAINNET',
native_currency: 'LUX',
logo: 'https://cdn.lux.network/bridge/networks/lux_mainnet.png',
is_testnet: false,
is_featured: true,
average_completion_time: '00:00:07.7777777',
chain_id: 7777,
status: 'active',
type: 'evm',
refuel_amount_in_usd: 1,
transaction_explorer_template: 'https://explore.lux.network/tx/{0}',
account_explorer_template: 'https://explore.lux.network/address/{0}',
node: 'https://api.lux.network',
currencies: [
{
name: 'LUX',
asset: 'LUX',
logo: 'https://cdn.lux.network/bridge/currencies/lux/lux.svg',
contract_address: '0x0000000000000000000000000000000000000000',
decimals: 18,
status: 'inactive',
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: 'Lux BTC',
asset: 'LBTC',
logo: 'https://cdn.lux.network/bridge/currencies/lux/lbtc.svg',
contract_address: '0xebD1Ee9BCAaeE50085077651c1a2dD452fc6b72e',
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 ETH',
asset: 'LETH',
logo: 'https://cdn.lux.network/bridge/currencies/lux/leth.svg',
contract_address: '0x2951A9386df11a4EA8ae5A823B94DC257dEb35Cb',
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 POL',
asset: 'LPOL',
logo: 'https://cdn.lux.network/bridge/currencies/lux/lpol.svg',
contract_address: '0x9F47CeB09cb88362f0274Bb354a9807Fd976D963',
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',
logo: 'https://cdn.lux.network/bridge/currencies/lux/lbnb.svg',
contract_address: '0xcf963Fe4E4cE126047147661e6e06e171f366506',
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 FTM',
asset: 'LFTM',
logo: 'https://cdn.lux.network/bridge/currencies/lux/lftm.svg',
contract_address: '0x15BA7dCA26c63029E33C81f7B3978B54Bc0CB08B',
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 CELO',
asset: 'LCELO',
logo: 'https://cdn.lux.network/bridge/currencies/lux/lcelo.svg',
contract_address: '0xD257ADA332da217c78959A609e97c71ce5214925',
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 xDAI',
asset: 'LXDAI',
logo: 'https://cdn.lux.network/bridge/currencies/lux/ldai.svg',
contract_address: '0x0D15251ad56cE56cC22588F6645c20ee7d77aE39',
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 SOL',
asset: 'LSOL',
logo: 'https://cdn.lux.network/bridge/currencies/lux/lsol.svg',
contract_address: '0x372b3B7Cb87A7aE9Cb024861775f01015A71058C',
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 TON',
asset: 'LTON',
logo: 'https://cdn.lux.network/bridge/currencies/lux/lton.svg',
contract_address: '0xa4AA40ff2F2Cbe4FFcDfa5fF2A466fa7aF3390e5',
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 Dollar',
asset: 'LUSD',
logo: 'https://cdn.lux.network/bridge/currencies/lux/lusd.svg',
contract_address: '0x42b733cA4b3A8FC0237dBE39A47441cfD525f0F1',
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,
},
],
},
]
@@ -0,0 +1,570 @@
import { type Network } from "@/domain/types"
export const networks: Network[] = [
{
display_name: 'Ethereum Sepolia',
internal_name: 'ETHEREUM_SEPOLIA',
native_currency: 'ETH',
logo: 'https://cdn.lux.network/bridge/networks/ethereum_sepolia.png',
is_testnet: true,
is_featured: true,
average_completion_time: '00:01:04.0494430',
chain_id: 11155111,
status: 'active',
type: 'evm',
refuel_amount_in_usd: 0.5,
transaction_explorer_template: 'https://sepolia.etherscan.io/tx/{0}',
account_explorer_template: 'https://sepolia.etherscan.io/address/{0}',
node: 'https://old-green-glade.ethereum-sepolia.quiknode.pro/0523b575936957f0e7eae638096d19465aae8f8c/',
currencies: [
{
name: 'ETH',
asset: 'ETH',
logo: 'https://cdn.lux.network/bridge/currencies/ethereum_eth.svg',
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: 'USDT',
asset: 'USDT',
logo: 'https://cdn.lux.network/bridge/currencies/usdt.png',
contract_address: '0xE9FF4E487ffcA25a765D5445CC8665128Ac35820',
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: 1,
destination_base_fee: 1,
is_native: false,
},
{
name: 'USDC',
asset: 'USDC',
logo: 'https://cdn.lux.network/bridge/currencies/usdc.png',
contract_address: '0x299e04DE65090D3C48019893e369A7983124c514',
decimals: 6,
status: 'active',
is_deposit_enabled: true,
is_withdrawal_enabled: true,
is_refuel_enabled: true,
max_withdrawal_amount: 3000,
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',
logo: 'https://cdn.lux.network/bridge/currencies/dai.png',
contract_address: '0x3FADaC51B852273e11Da42Db30714FddA785b8C5',
decimals: 18,
status: 'active',
is_deposit_enabled: true,
is_withdrawal_enabled: true,
is_refuel_enabled: true,
max_withdrawal_amount: 3000,
deposit_fee: 0.1,
withdrawal_fee: 0.1,
source_base_fee: 0.1,
destination_base_fee: 0.1,
is_native: false,
},
],
},
{
display_name: 'Holesky Testnet',
internal_name: 'HOLESKY_TESTNET',
native_currency: 'ETH',
logo: 'https://cdn.lux.network/bridge/networks/holesky_testnet.png',
is_testnet: true,
is_featured: true,
average_completion_time: '00:01:04.0494430',
chain_id: 17000,
status: 'active',
type: 'evm',
refuel_amount_in_usd: 0.5,
transaction_explorer_template: 'https://holesky.etherscan.io/tx/{0}',
account_explorer_template: 'https://holesky.etherscan.io/address/{0}',
node: 'https://ethereum-holesky-rpc.publicnode.com/',
currencies: [
{
name: 'ETH',
asset: 'ETH',
logo: 'https://cdn.lux.network/bridge/currencies/ethereum_eth.svg',
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: 'WETH',
asset: 'WETH',
logo: 'https://cdn.lux.network/bridge/currencies/ethereum_eth.svg',
contract_address: '0xcf963Fe4E4cE126047147661e6e06e171f366506',
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: 'USDT',
asset: 'USDT',
logo: 'https://cdn.lux.network/bridge/currencies/usdt.png',
contract_address: '0xD257ADA332da217c78959A609e97c71ce5214925',
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: 1,
destination_base_fee: 1,
is_native: false,
},
{
name: 'USDC',
asset: 'USDC',
logo: 'https://cdn.lux.network/bridge/currencies/usdc.png',
contract_address: '0x15BA7dCA26c63029E33C81f7B3978B54Bc0CB08B',
decimals: 6,
status: 'active',
is_deposit_enabled: true,
is_withdrawal_enabled: true,
is_refuel_enabled: true,
max_withdrawal_amount: 3000,
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',
logo: 'https://cdn.lux.network/bridge/currencies/dai.png',
contract_address: '0x9F47CeB09cb88362f0274Bb354a9807Fd976D963',
decimals: 18,
status: 'active',
is_deposit_enabled: true,
is_withdrawal_enabled: true,
is_refuel_enabled: true,
max_withdrawal_amount: 3000,
deposit_fee: 0.1,
withdrawal_fee: 0.1,
source_base_fee: 0.1,
destination_base_fee: 0.1,
is_native: false,
},
],
},
{
display_name: 'Base Sepolia',
internal_name: 'BASE_SEPOLIA',
native_currency: 'ETH',
logo: 'https://cdn.lux.network/bridge/networks/base_mainnet.png',
is_testnet: true,
is_featured: true,
average_completion_time: '00:01:04.0494430',
chain_id: 84532, //base sepolia
status: 'active',
type: 'evm',
refuel_amount_in_usd: 0.5,
transaction_explorer_template: 'https://sepolia.basescan.org/tx/{0}', // sepolia
account_explorer_template: 'https://sepolia.basescan.org/address/{0}', // sepolia
node: 'https://sepolia.base.org', // sepolia
currencies: [
{
name: 'ETH',
asset: 'ETH',
logo: 'https://cdn.lux.network/bridge/currencies/ethereum_eth.svg',
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: 'USDT',
asset: 'USDT',
logo: 'https://cdn.lux.network/bridge/currencies/usdt.png',
contract_address: '0x46390FA219b22f739C63F0bF1c165a1FBc30B57c',
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',
logo: 'https://cdn.lux.network/bridge/currencies/usdc.png',
contract_address: '0xE49355609F94A4B8a2EfC6FBd077542F8EC90080', //sepolia
decimals: 6,
status: 'active',
is_deposit_enabled: true,
is_withdrawal_enabled: true,
is_refuel_enabled: true,
max_withdrawal_amount: 3000,
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',
logo: 'https://cdn.lux.network/bridge/currencies/dai.png',
contract_address: '0x568BF299E115D78a1fBa57BafdAe0fD8A26BFb7e',
decimals: 18,
status: 'active',
is_deposit_enabled: true,
is_withdrawal_enabled: true,
is_refuel_enabled: true,
max_withdrawal_amount: 3000,
deposit_fee: 0.1,
withdrawal_fee: 0.1,
source_base_fee: 0.1,
destination_base_fee: 0.1,
is_native: false,
},
],
},
{
display_name: 'BSC Testnet',
internal_name: 'BSC_TESTNET',
native_currency: 'BNB',
logo: 'https://cdn.lux.network/bridge/networks/bsc_mainnet.png',
is_testnet: true,
is_featured: false,
average_completion_time: '00:01:04.0494430',
chain_id: 97,
status: 'active',
type: 'evm',
refuel_amount_in_usd: 0.5,
transaction_explorer_template: 'https://testnet.bscscan.com/tx/{0}',
account_explorer_template: 'https://testnet.bscscan.com/address/{0}',
node: 'https://data-seed-prebsc-1-s1.bnbchain.org:8545',
currencies: [
{
name: 'BNB',
asset: 'BNB',
logo: 'https://cdn.lux.network/bridge/networks/bsc_mainnet.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: 'USDT',
asset: 'USDT',
logo: 'https://cdn.lux.network/bridge/currencies/usdt.png',
contract_address: '0x5519582dde6eb1f53F92298622c2ecb39A64369A',
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',
logo: 'https://cdn.lux.network/bridge/currencies/usdc.png',
contract_address: '0x6a49DbeD52B9Bd9a53E21C3bCb67dc2697cD6697',
decimals: 6,
status: 'active',
is_deposit_enabled: true,
is_withdrawal_enabled: true,
is_refuel_enabled: true,
max_withdrawal_amount: 3000,
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',
logo: 'https://cdn.lux.network/bridge/currencies/dai.png',
contract_address: '0x2E8A24dE21105772FD161BF56471A0470A8AF45e',
decimals: 18,
status: 'active',
is_deposit_enabled: true,
is_withdrawal_enabled: true,
is_refuel_enabled: false,
max_withdrawal_amount: 500,
deposit_fee: 0.1,
withdrawal_fee: 0.1,
source_base_fee: 0.1,
destination_base_fee: 0.1,
is_native: false,
},
],
},
{
display_name: 'Lux Testnet',
internal_name: 'LUX_TESTNET',
native_currency: 'LUX',
logo: 'https://cdn.lux.network/bridge/networks/lux_mainnet.png',
is_testnet: true,
is_featured: true,
average_completion_time: '00:00:07.7777777',
chain_id: 8888,
status: 'active',
type: 'evm',
refuel_amount_in_usd: 1,
transaction_explorer_template: 'https://explore.lux-test.network/tx/{0}',
account_explorer_template: 'https://explore.lux-test.network/address/{0}',
node: 'https://api.lux-test.network',
currencies: [
{
name: 'LUX',
asset: 'LUX',
logo: 'https://cdn.lux.network/bridge/currencies/lux/lux.svg',
contract_address: '0x0000000000000000000000000000000000000000',
decimals: 18,
status: 'inactive',
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: 'Lux BTC',
asset: 'LBTC',
logo: 'https://cdn.lux.network/bridge/currencies/lux/lbtc.svg',
contract_address: '0xd7bE6F0E47acb95944fcc357a4392cAa5670B9e4',
decimals: 18,
status: 'inactive',
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 ETH',
asset: 'LETH',
logo: 'https://cdn.lux.network/bridge/currencies/lux/leth.svg',
contract_address: '0x999Ab39dF1Ae0F0069303B430A52f16FFdaAC69C',
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 POL',
asset: 'LPOL',
logo: 'https://cdn.lux.network/bridge/currencies/lux/lpol.svg',
contract_address: '0x305B062C74F92d05de7Cbccd1923f19c7B27eAB1',
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',
logo: 'https://cdn.lux.network/bridge/currencies/lux/lbnb.svg',
contract_address: '0x2c04439Dc52080E56882f61B2C4fb059A412fD5b',
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 FTM',
asset: 'LFTM',
logo: 'https://cdn.lux.network/bridge/currencies/lux/lftm.svg',
contract_address: '0xE1276a2F675A1D7F69FC2C78Ca6a39d1D951fD35',
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 CELO',
asset: 'LCELO',
logo: 'https://cdn.lux.network/bridge/currencies/lux/lcelo.svg',
contract_address: '0xe0feC703840364714b97272973B8945FD5eB5600',
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 xDAI',
asset: 'LXDAI',
logo: 'https://cdn.lux.network/bridge/currencies/lux/ldai.svg',
contract_address: '0xFdAad51cE3C28bfCCC5217AFddCEFc2a3Da6Ab54',
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 SOL',
asset: 'LSOL',
logo: 'https://cdn.lux.network/bridge/currencies/lux/lsol.svg',
contract_address: '0x4516dcca0EeE9021A1fe6BBe5deE68B501246Cd1',
decimals: 18,
status: 'inactive',
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 TON',
asset: 'LTON',
logo: 'https://cdn.lux.network/bridge/currencies/lux/lton.svg',
contract_address: '0xf41380968E9D408a143ddC63322565793d0750f8',
decimals: 18,
status: 'inactive',
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 Dollar',
asset: 'LUSD',
logo: 'https://cdn.lux.network/bridge/currencies/lux/lusd.svg',
contract_address: '0xA7EF94FfacA04aA51aCB66Ad93691a10Ce6eAcf4',
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,
},
],
},
]
@@ -0,0 +1,143 @@
export const CONTRACTS = {
7777: {
name: 'LUX_MAINNET',
chain_id: 7777,
teleporter: '0xC58E07f1C07627af94ad77549499b642aeFf0a3C',
vault: '0x7C6e3BE7B72805f0f52d788b96695b9d7e59A00c',
},
1: {
name: 'ETHEREUM_MAINNET',
chain_id: 1,
teleporter: '0xebD1Ee9BCAaeE50085077651c1a2dD452fc6b72e',
vault: '0xcf963Fe4E4cE126047147661e6e06e171f366506',
},
137: {
name: 'POLYGON_MAINNET',
chain_id: 137,
teleporter: '0xE09C9b6Ed2BADAa97AB00652dF75da05adc6dAeF',
vault: '0x217feE2a1a6A31Dda68433270531F56C91EC8D2B',
},
10: {
name: 'OPTIMISM_MAINNET',
chain_id: 10,
teleporter: '0xbdCE894aEd7d30BA0C0D0B51604ee9d225fc8b95',
vault: '0x37d9fB96722ebDDbC8000386564945864675099B',
},
42161: {
name: 'ARBITRUM_MAINNET',
chain_id: 42161,
teleporter: '',
vault: '',
},
42220: {
name: 'CELO_MAINNET',
chain_id: 42220,
teleporter: '',
vault: '',
},
8453: {
name: 'BASE_MAINNET',
chain_id: 8453,
teleporter: '0x37d9fB96722ebDDbC8000386564945864675099B',
vault: '0x3226bb1d3055685EFC1b0E49718B909a1c6Ce18d',
},
56: {
name: 'BSC_MAINNET',
chain_id: 56,
teleporter: '0xebD1Ee9BCAaeE50085077651c1a2dD452fc6b72e',
vault: '0xcf963Fe4E4cE126047147661e6e06e171f366506',
},
100: {
name: 'GNOSIS_MAINNET',
chain_id: 100,
teleporter: '',
vault: '',
},
43114: {
name: 'AVAX_MAINNET',
chain_id: 43114,
teleporter: '',
vault: '',
},
250: {
name: 'FANTOM_MAINNET',
chain_id: 250,
teleporter: '',
vault: '',
},
1313161554: {
name: 'AURORA_MAINNET',
chain_id: 1313161554,
teleporter: '',
vault: '',
},
7777777: {
name: 'ZORA_MAINNET',
chain_id: 7777777,
teleporter: '',
vault: '',
},
81457: {
name: 'BLAST_MAINNET',
chain_id: 81457,
teleporter: '',
vault: '',
},
59144: {
name: 'LINEA_MAINNET',
chain_id: 59144,
teleporter: '',
vault: '',
},
///////////////////////////////////////// testnets ///////////////////////////////////////////
11155111: {
name: 'ETHEREUM_SEPOLIA',
chain_id: 11155111,
teleporter: '0xb34e8a93A56De724c432fD41052E715657Fb0B1D',
vault: '0x63139CFe43cEe881332a2264851940108333e8D0',
},
17000: {
name: 'HOLESKY_TESTNET',
chain_id: 17000,
teleporter: '0x2951A9386df11a4EA8ae5A823B94DC257dEb35Cb',
vault: '0xebD1Ee9BCAaeE50085077651c1a2dD452fc6b72e',
},
84532: {
name: 'BASE_SEPOLIA',
chain_id: 84532,
teleporter: '0xE139056397091c15F860E94b20cCc169520b086A',
vault: '0x2c4908f1B607A4448272ea29A054bf9AA08A1D76',
},
97: {
name: 'BSC_TESTNET',
chain_id: 97,
teleporter: '0xD293337c79A951C0e93aEb6a5E255097d65b671f',
vault: '0xe0feC703840364714b97272973B8945FD5eB5600',
},
8888: {
name: 'LUX_TESTNET',
chain_id: 8888,
teleporter: '0x7d462c69057E404a172690E8C5021563382CAa78',
vault: '0xD1496b961855c3F554F3F71A653915EEe035c55e',
},
}
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'],
}
@@ -0,0 +1,8 @@
interface Bridge {
name: string
logo: string
}
export {
type Bridge as default
}
@@ -0,0 +1,8 @@
interface Deposit {
address: string,
memo?: string
}
export {
type Deposit as default
}
+4
View File
@@ -0,0 +1,4 @@
export type { default as Bridge } from './bridge'
export type { default as Deposit } from './deposit'
export type { default as Network } from './network'
export type { default as Token } from './token'
@@ -0,0 +1,25 @@
import Deposit from './deposit'
import Token from './token'
interface Network {
display_name: string,
internal_name: string,
native_currency: string,
logo: string,
is_testnet: boolean,
is_featured: boolean,
average_completion_time: string,
chain_id: number | null,
status: string,
type: string,
deposit_address?: Deposit,
refuel_amount_in_usd: number,
transaction_explorer_template: string,
account_explorer_template: string,
node: string,
currencies: Token[],
}
export {
type Network as default
}
+21
View File
@@ -0,0 +1,21 @@
interface Token {
name: string,
asset: string,
logo: string,
contract_address: string | null,
decimals: number,
status: string,
is_deposit_enabled: boolean,
is_withdrawal_enabled: boolean,
is_refuel_enabled: boolean,
max_withdrawal_amount: number,
deposit_fee: number,
withdrawal_fee: number,
source_base_fee: number,
destination_base_fee: number,
is_native: boolean
}
export {
type Token as default
}
+80
View File
@@ -0,0 +1,80 @@
import { type LinkDescriptor } from '@remix-run/node'
type CrossOrigin = "anonymous" | "use-credentials"
// https://github.com/remix-run/remix/discussions/4963#discussioncomment-4556820
export default [
{
rel: "preload",
as: "font",
href: "/fonts/Druk-Wide-Medium.ttf",
type: "font/ttf",
crossOrigin: "anonymous" as CrossOrigin
},
{
rel: "preload",
as: "font",
href: "/fonts/Druk-Wide-Bold.ttf",
type: "font/ttf",
crossOrigin: "anonymous" as CrossOrigin,
},
{
rel: "preload",
as: "font",
href: "/fonts/InterVariable.woff2",
type: "font/woff2",
crossOrigin: "anonymous" as CrossOrigin,
},
{
rel: "preload",
as: "font",
href: "/fonts/InterVariable.ttf",
type: "font/ttf",
crossOrigin: "anonymous" as CrossOrigin,
},
{
rel: "preload",
as: "font",
href: "/fonts/InterVariable-Italic.woff2",
type: "font/woff2",
crossOrigin: "anonymous" as CrossOrigin,
},
{
rel: "preload",
as: "font",
href: "/fonts/InterVariable-Italic.ttf",
type: "font/ttf",
crossOrigin: "anonymous" as CrossOrigin,
},
{
rel: 'icon',
type: 'image/png',
sizes: '16x16',
href: '/lux-site-icons/favicon-16x16.png'
},
{
rel: 'icon',
type: 'image/png',
sizes: '32x32',
href: '/lux-site-icons/favicon-32x32.png'
},
{
rel: 'icon',
type: 'image/png',
sizes: '192x192',
href: '/lux-site-icons/android-chrome-192x192.png'
},
{
rel: 'icon',
type: 'image/png',
sizes: '512x512',
href: '/lux-site-icons/android-chrome-512x512.png'
},
{
rel: 'apple-touch-icon',
type: 'image/png',
sizes: "180x180",
href: '/lux-site-icons/apple-touch-icon.png'
},
] satisfies LinkDescriptor[]
+40
View File
@@ -0,0 +1,40 @@
// see https://remix.run/docs/ru/main/route/meta
export default [
{
title: 'Lux Bridge'
},
{
name: "description",
content: 'Lux Bridge is the only quantum safe and private platform for real world assets (RWAs)',
},
{
name: "application-name",
content: 'Lux Bridge',
},
{
name: "author",
content: 'Lux Partners Limited',
},
{
name: "keywords",
content: "Lux Network, Blockchain Bridge, Multi-Chain, EVM, Solana, Bitcoin, Cross-Chain, Interoperability, Cryptocurrency, Blockchain Technology",
},
/*
openGraph: {
title: 'Lux Bridge Explorer - Explore your swaps',
description: "Connect across EVM, Solana, Bitcoin, and other blockchains with Lux Network's advanced bridge technology. Experience secure and efficient cross-chain functionality.",
images: 'https://explorer.bridge.lux.network/assets/img/opengraph-lux.jpg',
type: 'website',
href: "https://explorer.bridge.lux.network",
},
twitter: {
card: 'summary_large_image',
title: 'Lux Bridge Explorer - Explore your swaps',
description: "Experience seamless multi-chain connectivity with Lux Network's Blockchain Bridge. EVM, Solana, Bitcoin, and more, united.",
images: 'https://explorer.bridge.lux.network/assets/img/opengraph-lux.jpg',
site: '@luxdefi'
},
*/
]
+70
View File
@@ -0,0 +1,70 @@
import React, { PropsWithChildren } from 'react'
import {
Links,
Meta,
Outlet,
Scripts,
ScrollRestoration,
type MetaFunction,
LiveReload
} from '@remix-run/react'
import type { LinksFunction } from '@vercel/remix'
import { Analytics } from '@vercel/analytics/react';
import { BreakpointIndicator } from '@hanzo/ui/primitives-common'
import '@luxfi/ui/style/lux-global-non-next.css'
import '@luxfi/ui/style/cart-animation.css'
import '@luxfi/ui/style/checkout-animation.css'
import Main from 'app/components/main'
import _links from './links';
import metadata from './metadata';
export const config = { runtime: 'edge' }
const bodyClasses = 'bg-background text-foreground flex flex-col min-h-full '
export const links: LinksFunction = () => (_links)
export const meta: MetaFunction = () => (metadata)
const Layout: React.FC<PropsWithChildren> = ({
children
}) => (
<html
lang='en'
suppressHydrationWarning
className='hanzo-ui-dark-theme'
style={{backgroundColor: '#000'}}
>
<head>
<meta charSet='utf-8' />
<meta name='viewport' content='width=device-width, initial-scale=1' />
<Meta />
<Links />
</head>
<body className={bodyClasses} >
<Main className='gap-4 '>
{children}
</Main>
<ScrollRestoration />
<Scripts />
{/* https://github.com/remix-run/remix/issues/2958#issuecomment-2188876125
process.env.NODE_ENV === 'development' && <LiveReload />
*/}
{process.env.NODE_ENV === 'development' && <BreakpointIndicator />}
<Analytics />
</body>
</html>
)
const App: React.FC = () => (
<Outlet />
)
export {
Layout,
App as default
}
+24
View File
@@ -0,0 +1,24 @@
import SwapCard from '@/components/swap-card'
import { ApplyTypography } from '@hanzo/ui/primitives-common'
import { networks } from '@/domain/settings/teleport/networks.mainnets'
import type { Network } from '@/domain/types'
const fromInitial = networks.find((el: Network) => (el.display_name === 'Base'))
const toInitial = networks.find((el: Network) => (el.display_name === 'Ethereum'))
const Index: React.FC = () => (<>
<ApplyTypography>
<h3>Lorem ipsum dolor sit amet, consectetur</h3>
</ApplyTypography>
<SwapCard
className='w-[500px] h-[530px]'
fromNetworks={networks}
fromInitial={fromInitial}
toNetworks={networks}
toInitial={toInitial}
/>
</>)
export default Index
+47
View File
@@ -0,0 +1,47 @@
{
"name": "@luxbridge/app",
"private": true,
"scripts": {
"build": "remix vite:build",
"dev": "remix vite:dev",
"start": "remix-serve ./build/server/index.js",
"tc": "tsc",
"typecheck": "tsc",
"clean": "rm -rf ./node_modules"
},
"sideEffects": false,
"type": "module",
"dependencies": {
"@hanzo/ui": "catalog:",
"@luxfi/ui": "catalog:",
"@remix-run/node": "^2.11.2",
"@remix-run/react": "^2.11.2",
"@remix-run/serve": "^2.11.2",
"@vercel/analytics": "^1.3.1",
"@vercel/remix": "^2.11.2",
"isbot": "^4.4.0",
"lucide-react": "catalog:",
"mobx": "^6.12.3",
"mobx-react-lite": "^4.0.7",
"mobx-utils": "^6.1.0",
"react": "catalog:",
"react-currency-input-field": "^3.9.0",
"react-dom": "catalog:"
},
"devDependencies": {
"@originjs/vite-plugin-commonjs": "^1.0.3",
"@remix-run/dev": "^2.11.2",
"@remix-run/server-runtime": "^2.11.2",
"@types/react": "catalog:",
"@types/react-dom": "catalog:",
"autoprefixer": "^10.4.20",
"postcss": "^8.4.49",
"tailwindcss": "catalog:",
"typescript": "catalog:",
"vite": "5.4.11",
"vite-tsconfig-paths": "5.1.2"
},
"engines": {
"node": "20.x"
}
}
+6
View File
@@ -0,0 +1,6 @@
export default {
plugins: {
tailwindcss: {},
autoprefixer: {},
},
};
Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.

After

Width:  |  Height:  |  Size: 7.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 426 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 831 B

+40
View File
@@ -0,0 +1,40 @@
import type { Config } from 'tailwindcss'
import { preset } from '@luxfi/ui/tailwind'
const fontFamily = {
sans: 'inter',
heading: 'DrukWide',
nav: 'DrukWide',
serif: ['ui-serif', 'Georgia', 'Cambria', '"Times New Roman"', 'Times'],
mono: [
'ui-monospace',
'SFMono-Regular',
'Menlo',
'Monaco',
'Consolas',
'"Liberation Mono"',
'"Courier New"',
'monospace',
]
}
export default {
presets: [preset],
content: {
files: [
'app/**/*.tsx',
'./node_modules/@luxfi/ui/**/*.{ts,tsx}',
'./node_modules/@hanzo/**/*.{ts,tsx}'
]
},
theme: {
fontFamily,
extend: {
colors: {
white: "#ffffff",
black: "#000000",
gray: "#e5e7eb",
}
},
}
} satisfies Config
+39
View File
@@ -0,0 +1,39 @@
{
"compilerOptions": {
"allowJs": true,
"baseUrl": ".",
"esModuleInterop": true,
"forceConsistentCasingInFileNames": true,
"isolatedModules": true,
"jsx": "react-jsx",
"lib": [
"DOM",
"DOM.Iterable",
"ES2022"
],
"module": "ESNext",
"moduleResolution": "Bundler",
"noEmit": true,
"paths": {
"@/*": [
"./app/*"
]
},
"resolveJsonModule": true,
"skipLibCheck": true,
"strict": true,
"target": "ES2022",
"types": [
"@remix-run/node",
"vite/client",
]
},
"include": [
"**/*.ts",
"**/*.tsx",
"**/.server/**/*.ts",
"**/.server/**/*.tsx",
"**/.client/**/*.ts",
"**/.client/**/*.tsx"
]
}
+33
View File
@@ -0,0 +1,33 @@
import { vitePlugin as remix } from '@remix-run/dev'
import { vercelPreset } from '@vercel/remix/vite'
import { defineConfig } from 'vite'
import tsconfigPaths from 'vite-tsconfig-paths'
import { viteCommonjs } from '@originjs/vite-plugin-commonjs'
export default defineConfig({
define: {
'process.env': {}
},
plugins: [
remix({
future: {
v3_fetcherPersist: true,
v3_relativeSplatPath: true,
v3_throwAbortReason: true,
},
presets: [vercelPreset()],
}),
tsconfigPaths(),
viteCommonjs(),
],
optimizeDeps: {
include: ['react-dom'],
// Not excluding these seem to:
// a) always force a refresh after initial load (cf(?): https://github.com/vitejs/vite/discussions/14801)
// b) optimize an old version!
exclude: [
'@hanzo/ui/primitives-common',
'@hanzo/ui/util',
]
},
})
+8 -7
View File
@@ -14,20 +14,21 @@
"swap"
],
"scripts": {
"build": "pnpm build:all",
"build:all": "pnpm build:app && pnpm build:explorer && pnpm build:sdk",
"build:app": "pnpm --filter @luxbridge/app build",
"build:all": "pnpm build:bridge && pnpm build:bridge-old && pnpm build:explorer",
"build:bridge-old": "pnpm --filter @luxbridge/app-old build",
"build:bridge": "pnpm --filter @luxbridge/app build",
"build:explorer": "pnpm --filter @luxbridge/explorer build",
"build:sdk": "pnpm --filter @luxbridge/sdk build",
"build:storybook": "pnpm --filter @luxbridge/app build:storybook",
"build:storybook": "pnpm --filter @luxbridge/app-old build:storybook",
"start": "pnpm --filter @luxbridge/app start",
"dev": "pnpm --filter @luxbridge/app dev"
"dev": "pnpm --filter @luxbridge/app dev",
"clean:nm": "find . -name 'node_modules' -type d -prune -exec rm -rf '{}' +",
"clean:all": "pnpm clean:nm && rm pnpm-lock.yaml"
},
"engines": {
"node": ">=20",
"pnpm": ">=9"
},
"packageManager": "[email protected]0.0",
"packageManager": "[email protected]5.0",
"pnpm": {
"allowedDeprecatedVersions": {
"request": "*"
-1
View File
@@ -26,7 +26,6 @@
"peerDependencies": {
"@hanzo/auth": "catalog:",
"@hanzo/commerce": "catalog:",
"@hanzo/ui": "catalog:",
"react": "catalog:",
"react-dom": "catalog:"
},
+5933 -3552
View File
File diff suppressed because it is too large Load Diff
+1 -1
View File
@@ -5,7 +5,7 @@ packages:
catalog:
'@hanzo/auth': 2.5.2
'@hanzo/commerce': 7.3.4
'@hanzo/ui': 4.1.0
'@hanzo/ui': 4.2.0
'@luxfi/ui': 5.4.1
'@luxfi/data': 1.0.9
'@types/node': 20.14.15