{"version":3,"sources":["context/reducer.tsx","context/index.tsx","helpers/nominate.ts","context/state.tsx","helpers/entireBalance.ts","helpers/decodePem.tsx","helpers/contractDataDefinitions.ts","components/ContinueAndCloseButtons/index.tsx","components/Overview/OwnerActionModal.tsx","storage/session.tsx","components/Denominate/formatters.tsx","contracts/Delegation.tsx","helpers/useDelegation.ts","helpers/useInterval.ts","components/TransactionStatus/StatusTxDetails.tsx","components/TransactionStatus/txStatus.tsx","components/TransactionStatus/index.tsx","components/ConfirmTransactionModal/index.tsx","components/Overview/Cards/AutomaticActivationAction/index.tsx","components/Overview/Cards/ReDelegateCapActivationAction/index.tsx","../node_modules/@elrondnetwork/bls-wasm sync /^/.*/.js$","helpers/ledgerErrorCodes.ts","contracts/ContractViews.ts","components/Layout/APRCalculation.ts","assets/images/facebook-icon.svg","assets/images/twitter-icon.svg","assets/images/telegram-icon.svg","assets/images/cslabs-logo.svg","components/Layout/Footer/index.jsx","assets/images/exit-wallet.svg","assets/images/wallet-menu-icon.svg","components/Layout/Navbar/index.tsx","components/Layout/index.tsx","components/Denominate/index.tsx","components/ModalActionButton/index.tsx","pages/Dashboard/Actions/DelegateAction/DelegateModal.tsx","pages/Dashboard/Actions/DelegateAction/index.tsx","pages/Dashboard/Actions/UndelegateAction/UndelegateModal.tsx","pages/Dashboard/Actions/UndelegateAction/index.tsx","pages/Dashboard/Actions/ClaimRewardsAction/ClaimRewardsModal.tsx","pages/Dashboard/Actions/ClaimRewardsAction/index.tsx","components/State/index.tsx","components/StakeGraph/index.tsx","assets/images/lock-icon.svg","assets/images/trophy-icon.svg","pages/Dashboard/Delegation/index.tsx","pages/Dashboard/PendingUndelegated/UndelegatedValueRow.tsx","pages/Dashboard/PendingUndelegated/UndelegatedValueType.ts","pages/Dashboard/PendingUndelegated/index.tsx","components/StatCard/index.tsx","components/Overview/Cards/SetPercentageFeeAction/SetPercentageFeeModal.tsx","components/Overview/Cards/SetPercentageFeeAction/index.tsx","components/Overview/Cards/UpdateDelegationCapAction/DelegationCapModal.tsx","components/Overview/Cards/UpdateDelegationCapAction/index.tsx","assets/images/pie-delegation.svg","assets/images/users-icon.svg","assets/images/nodes-icon.svg","assets/images/apr-icon.svg","assets/images/fee-icon.svg","assets/images/auto-activation.svg","assets/images/redelegation-cap.svg","components/Overview/Cards/index.tsx","assets/images/copy-icon.svg","assets/images/share-icon.svg","assets/images/settings-icon.svg","components/Overview/Header/index.tsx","components/Overview/index.tsx","pages/Dashboard/index.tsx","pages/Home/Login/Wallet.tsx","assets/images/wallet-icon.png","pages/Home/Login/WalletConnect.tsx","assets/images/xportal-icon.png","assets/images/close-login.svg","pages/Home/index.tsx","assets/images/ledger-icon.png","components/PageTitle/index.tsx","pages/Owner/Nodes/helpers/nodeTypes.ts","pages/Owner/Nodes/helpers/stakeHooks.ts","assets/images/arrow-down.svg","assets/images/node-icon.svg","pages/Owner/Nodes/NodeRow.tsx","pages/Owner/Nodes/helpers/nodeType.ts","pages/Owner/Nodes/helpers/keysFunctions.ts","components/DropzonePem/index.tsx","components/DropzonePem/PemUpload.tsx","components/DropzonePem/RequestVariablesModal.tsx","pages/Owner/Nodes/AddNodeAction.tsx","pages/Owner/Nodes/index.tsx","pages/Owner/index.tsx","pages/Ledger/AddressRow.tsx","pages/Ledger/AddressTable.tsx","pages/Ledger/ConfirmedAddress.tsx","assets/images/ledger-nano.svg","pages/Ledger/LedgerConnect.tsx","pages/Ledger/index.tsx","routes.ts","pages/WalletConnect/index.tsx","App.tsx","index.tsx","config.ts"],"names":["reducer","state","action","type","address","loggedIn","setItem","ledgerLogin","loading","provider","dapp","account","contractOverview","networkConfig","agencyMetaData","numberOfActiveNodes","numUsers","minDelegationAmount","totalActiveStake","aprPercentage","ledgerAccount","walletConnectLogin","walletConnectAccount","logout","then","catch","e","console","error","removeItem","initialState","Error","Context","React","createContext","undefined","Dispatch","ContextProvider","children","useReducer","dispatch","Provider","value","useContext","context","useDispatch","nominate","input","paramDenomination","parts","toString","split","denomination","substring","length","count","transformed","join","repeat","nominateValToHex","val","BigNumber","defaultNetwork","id","name","egldLabel","walletAddress","apiAddress","gatewayAddress","explorerAddress","delegationContract","emptyAccount","balance","username","nonce","Nonce","emptyAgencyMetaData","website","keybase","emptyNetworkConfig","roundDuration","roundsPerEpoch","roundsPassedInCurrentEpoch","topUpFactor","topUpRewardsGradientPoint","chainId","ChainID","emptyContractOverview","ownerAddress","serviceFee","maxDelegationCap","initialOwnerFunds","automaticActivation","withDelegationCap","changeableServiceFee","reDelegationCap","createdNounce","unBondPeriod","sessionNetwork","network","decimals","WalletProvider","proxy","ProxyProvider","timeout","apiProvider","ApiProvider","getItem","index","entireBalance","gasLimit","gasPrice","bnBalance","bnMinDust","minDust","bnGasPrice","bnGasLimit","entireBn","minus","times","entireBnMinusDust","comparedTo","denominate","showLastNonZeroDecimal","addCommas","entireBalanceMinusDust","hexStringToByte","str","Uint8Array","a","i","len","push","parseInt","substr","getPubKey","file","indices","headerParts","decodePem","BLS","initIfNecessary","myKey","ValidatorSecretKey","fromPem","dsc","Address","signature","sign","Buffer","from","pubkey","regex","result","exec","key","decoded","window","atob","pubKey","ContractOverview","this","NetworkStake","totalValidators","activeValidators","queueSize","totalStaked","Stats","epoch","NetworkConfig","AgencyMetadata","AccountType","DelegationTransactionType","args","ContinueAndCloseButtons","actionTitle","color","handleContinue","handleClose","className","onClick","OwnerActionModal","show","title","description","extraDescription","Modal","onHide","animation","centered","data-testid","item","ttl","expires","moment","unix","sessionStorage","JSON","stringify","data","deserializedItem","parse","hasOwnProperty","big","array","unshift","splice","indexOf","nonZeroDigitIndex","decimalsIndex","sliceIndex","Math","max","slice","reverse","reference","floor","position","allDecimalsZero","every","digit","string","format","Delegation","signer","contract","proxyProvider","signerProvider","SmartContract","delegationTransactionType","constructor","HWProvider","WalletConnectProvider","sendTransactionBasedOnType","warn","delegationContractData","find","d","funcName","nodeKeys","numNodes","func","ContractFunction","payload","TransactionPayload","contractCall","setFunction","build","transaction","Transaction","chainID","receiver","getAddress","Balance","egld","GasLimit","sendTransaction","useDelegation","setTransactionError","setError","delegation","transactionArguments","getHash","statusCode","ledgerErrorCodes","message","useDelegationWallet","sendTransactionWallet","useInterval","callback","delay","savedCallback","useRef","useEffect","current","setInterval","clearInterval","StatusTxDetails","txHash","href","target","icon","faSearch","txStatus","pending","notExecuted","invalid","success","fail","TransactionStatusModal","useState","lastTxStatus","setLastTxStatus","spin","setSpin","faHourglass","status","txDStatus","setTxStatus","history","useHistory","handleCloseModal","getStatus","toLowerCase","getTransactionStatus","currentSpin","hash","isEmpty","getTransaction","faCheck","faTimes","valueOf","log","disabled","ConfirmTransactionModal","showTransactionStatus","setShowTransactionStatus","TransactionHash","setTxHash","TransactionStatus","AutomaticActivationAction","automaticFlag","showAutomaticActivationModal","setShowAutomaticActivationModal","showCheckYourLedgerModal","setShowCheckYourLedgerModal","setTransactionArguments","activation","txArguments","ReDelegateCapActivationAction","showReDelegationCapActivationModal","setShowReDelegationCapActivationModal","redelegateRewardsActivation","map","webpackContext","req","webpackContextResolve","__webpack_require__","o","code","keys","Object","resolve","module","exports","contractViews","query","Query","AddressValue","queryContract","auctionContract","delegationManagerContract","denominateValue","replace","calculateAPR","stats","networkStake","blsKeys","allNodes","filter","decodeString","allActiveNodes","epochsInYear","inflationRate","yearSettings","x","year","maximumInflation","rewardsPerEpoch","genesisTokenSuply","feesInEpoch","rewardsPerEpochWithoutProtocolSustainability","protocolSustainabilityRewards","topUpRewardsLimit","networkBaseStake","stakePerNode","networkTopUpStake","toFixed","topUpReward","PI","atan","baseReward","validatorTotalStake","validatorBaseStake","min","validatorTopUpStake","Footer","src","logo","alt","twitterIcon","telegramIcon","facebookIcon","Navbar","setShow","logOut","document","querySelector","width","height","viewBox","walletIcon","exitWallet","getStakingSCBalance","axios","get","Layout","page","getContractConfig","getTotalActiveStake","getBlsKeys","getNumUsers","getMetaData","getDelegationManagerContractConfig","getContractOverviewType","untypedResponse","outputUntyped","decodeBigNumber","decodeUnsignedNumber","getAgencyMetaDataType","returnData","Promise","all","getNetworkStats","getNetworkStake","getNetworkConfig","getNetworkStatus","metaData","activeStake","blsKeysResponse","networkStats","networkStatus","delegationManager","TopUpFactor","RoundDuration","RoundsPerEpoch","RoundsPassedInCurrentEpoch","TopUpRewardsGradientPoint","stakingBalance","APR","parseFloat","Epoch","TotalValidators","ActiveValidators","QueueSize","Denominate","showErd","configDecimals","denominatedValue","valueParts","hasNoDecimals","zeros","ModalActionButton","isHandleActionDisabled","DelegateModal","displayDelegationCapMessage","setDisplayDelegationCapMessage","maxPressed","setMaxPressed","available","isFullDelegationCapContract","bnTotalActiveStake","bnMaxDelegationCap","String","getAvailableToDelegate","bnAvailable","totalActive","availableToDelegate","onShow","initialValues","amount","onSubmit","values","validationSchema","object","shape","required","test","bnAmount","props","handleSubmit","handleBlur","handleChange","setFieldValue","errors","touched","htmlFor","step","autoComplete","onChange","onBlur","preventDefault","component","DelegateAction","showDelegateModal","setShowDelegateModal","UndelegateModal","UndelegateSchema","UndelegateAction","showModal","setShowModal","ClaimRewardsModal","handleClaimRewards","isRedelegateEnable","handleRedelegateRewards","ClaimRewardsAction","showClaimRewardsModal","setShowClaimRewardsModal","State","iconClass","extraClass","size","date","Date","setMonth","getMonth","getTime","now","months","k","forEach","dateFormat","timestamp","currentDate","includes","StakeGraph","setTotalActiveStake","totalActiveStakeToday","toLocaleString","month","llabels","options","chart","zoom","enabled","toolbar","grid","borderColor","row","opacity","column","xaxis","lines","yaxis","padding","top","right","bottom","left","markers","colors","fill","gradient","shade","shadeIntensity","opacityFrom","opacityTo","dataLabels","stroke","curve","crosshairs","labels","style","fontSize","fontFamily","fontWeight","cssClass","opposite","tooltip","theme","custom","series","seriesIndex","dataPointIndex","w","MyDelegation","getClaimableRewards","getUserActiveStake","userActiveStake","setUserActiveStake","userActiveNominatedStake","setUserActiveNominatedStake","claimableRewards","setClaimableRewards","displayRewards","setDisplayRewards","displayUndelegate","setDisplayUndelegate","faCircleNotch","lockIcon","trophyIcon","UndelegatedValueRow","undelegatedValue","isDisabled","setIsDisabled","timeLeft","counter","setCounter","setTimeout","waitingStartDate","duration","asDays","timeLeftInMiliseconds","asMilliseconds","utc","getTimeLeft","UndelegatedValueType","UndelegatedListView","getUserUnDelegatedList","Array","userUnstakeValue","setUserUnstakedValue","mapUndelegetedValueType","undelegatedList","roundsRemainingInEpoch","epochsChangesRemaining","element","denomintateValue","arrayWithdraw","withdrawValue","reduce","b","groupUndelegateValuesForTimeLeftZero","sort","StatCard","valueUnit","svg","percentage","tooltipText","image","SetPercentageFeeSchema","SetPercentageFeeModal","SetPercentageFeeAction","showUpdateFeeModal","setShowUpdateFeeModal","perc","nominateVal","DelegationCapModal","number","UpdateDelegationCapAction","showDelegationCapModal","setShowDelegationCapModal","Views","setNetworkStake","getPercentage","amountOutOfTotal","total","isOwner","hex","localeCompare","isOwnerPath","location","pathname","pieDelegation","usersIcon","nodesIcon","aprIcon","feeIcon","autoActivation","redelegCap","Header","useLocation","navigator","clipboard","writeText","copyIcon","shareIcon","to","settingsIcon","Overview","Dashboard","isLedgerLogin","isWalletConnect","getAccount","userName","PendingUndelegated","WalletLogin","search","init","initialised","urlSearchParams","URLSearchParams","params","fromEntries","err","login","WalletConnectLogin","process","platform","os","family","Home","ref","faBan","closeLogin","Wallet","withPageTitle","Component","Memoized","memo","nodeActions","unJail","label","unStake","reStake","unBond","stake","remove","NodeStatus","notStaked","unStaked","staked","jailed","queued","nodeTransactions","blsKey","allowedActions","NodeRow","remaining","setRemaining","stakingContract","BytesValue","fromHex","remainingUnBondPeriod","newRemaining","statusColor","nodeIcon","queueIndex","Dropdown","Toggle","variant","arrowDown","Menu","entry","actionAllowed","Item","handleAction","NodeType","getAllNodesStatus","nodes","mapNodes","getBlsKeysStatus","getQueueSize","getQueueIndex","caller","responseValues","isStatus","DropzonePem","fieldName","pubKeyLength","multiple","unique","files","setFiles","updatedFiles","existing","getKeyErrors","getUpdatedFiles","updated","useDropzone","accept","onDrop","onload","fileReader","FileReader","readAsText","getRootProps","getInputProps","isDragActive","onclick","disabledOnClick","stopPropagation","isInvalid","fileWord","inputProps","cursor","userSelect","verticalAlign","aria-hidden","PemUpload","pemFiles","of","mixed","RequestVariablesModal","variables","triggerDispatchEvent","modalValues","setModalValues","variable","vals","AddNodeAction","showAddNodes","setAddNodesModal","addNodesRequest","keysData","getPemPubKeysWithSignature","variablesData","handleAddNodes","Nodes","setKeys","setQueuedKeys","adaptedNodesStatus","found","nodesStatus","findIndex","Owner","AddressRow","setSelectedAddress","selectedAddress","setSelectedIndex","checked","AddressTable","setShowAddressTable","startIndex","setStartIndex","accounts","setAccounts","selectedIndex","hwWalletP","getAccounts","faChevronLeft","faChevronRight","hwWalletProvider","addressIndex","loginType","ConfirmedAddress","_extends","assign","arguments","source","prototype","call","apply","_objectWithoutProperties","excluded","sourceKeys","_objectWithoutPropertiesLoose","getOwnPropertySymbols","sourceSymbolKeys","propertyIsEnumerable","x1","x2","y1","y2","offset","stopColor","fillRule","strokeWidth","transform","y","rx","xlinkHref","fillOpacity","strokeLinejoin","cx","cy","ry","SvgLedgerNano","_ref","svgRef","titleId","xmlns","xmlnsXlink","ForwardRef","LedgerConnect","ledgerError","Ledger","showAddressTable","wrappedRoutes","path","qrSvg","setQrSvg","wcUri","setWcUri","isFromMobile","svgQr","dangerouslySetInnerHTML","__html","QRCode","handleOnLogin","handleOnLogout","walletConnectInit","walletConnect","walletConnectBridge","onClientLogin","onClientLogout","walletConectUri","walletConnectDeepLink","encodeURIComponent","rel","route","App","basename","routes","exact","MountedApp","ReactDOM","render","getElementById","defined","validate","strict"],"mappings":"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","file":"static/js/main.aec3eb76.chunk.js","sourcesContent":["import { initialState, StateType } from './state';\r\nimport { setItem, removeItem } from '../storage/session';\r\n\r\nexport type DispatchType = (action: ActionType) => void;\r\n\r\nexport type ActionType =\r\n | { type: 'login'; address: StateType['address'] }\r\n | { type: 'ledgerLogin'; ledgerLogin: StateType['ledgerLogin'] }\r\n | { type: 'logout'; provider: StateType['dapp']['provider'] }\r\n | { type: 'loading'; loading: StateType['loading'] }\r\n | { type: 'setProvider'; provider: StateType['dapp']['provider'] }\r\n | { type: 'setAccount'; account: StateType['account'] }\r\n | { type: 'setContractOverview'; contractOverview: StateType['contractOverview'] }\r\n | { type: 'setNetworkConfig'; networkConfig: StateType['networkConfig'] }\r\n | { type: 'setAgencyMetaData'; agencyMetaData: StateType['agencyMetaData'] }\r\n | { type: 'setNumberOfActiveNodes'; numberOfActiveNodes: StateType['numberOfActiveNodes'] }\r\n | { type: 'setNumUsers'; numUsers: StateType['numUsers'] }\r\n | { type: 'setMinDelegationAmount'; minDelegationAmount: StateType['minDelegationAmount'] }\r\n | { type: 'setTotalActiveStake'; totalActiveStake: StateType['totalActiveStake'] }\r\n | { type: 'setAprPercentage'; aprPercentage: StateType['aprPercentage'] }\r\n | { type: 'setLedgerAccount'; ledgerAccount: StateType['ledgerAccount'] }\r\n | {\r\n type: 'setWalletConnectLogin';\r\n walletConnectLogin: StateType['walletConnectLogin'];\r\n }\r\n | {\r\n type: 'setWalletConnectAccount';\r\n walletConnectAccount: StateType['walletConnectAccount'];\r\n };\r\n\r\nexport function reducer(state: StateType, action: ActionType): StateType {\r\n switch (action.type) {\r\n case 'login': {\r\n const { address } = action;\r\n let loggedIn = address || address !== '' ? true : false;\r\n setItem('logged_in', loggedIn);\r\n setItem('address', address);\r\n return {\r\n ...state,\r\n address,\r\n loggedIn: loggedIn,\r\n };\r\n }\r\n case 'ledgerLogin': {\r\n const { ledgerLogin } = action;\r\n setItem('ledgerLogin', ledgerLogin);\r\n return {\r\n ...state,\r\n ledgerLogin,\r\n };\r\n }\r\n\r\n case 'loading': {\r\n const { loading } = action;\r\n return {\r\n ...state,\r\n loading,\r\n };\r\n }\r\n\r\n case 'setProvider': {\r\n const { provider } = action;\r\n return {\r\n ...state,\r\n dapp: {\r\n ...state.dapp,\r\n provider: provider,\r\n },\r\n };\r\n }\r\n\r\n case 'setAccount': {\r\n const { account } = action;\r\n return {\r\n ...state,\r\n account,\r\n };\r\n }\r\n\r\n case 'setContractOverview': {\r\n const { contractOverview } = action;\r\n return {\r\n ...state,\r\n contractOverview,\r\n };\r\n }\r\n\r\n case 'setNetworkConfig': {\r\n const { networkConfig } = action;\r\n return {\r\n ...state,\r\n networkConfig,\r\n };\r\n }\r\n\r\n case 'setAgencyMetaData': {\r\n const { agencyMetaData } = action;\r\n return {\r\n ...state,\r\n agencyMetaData,\r\n };\r\n }\r\n\r\n case 'setNumberOfActiveNodes': {\r\n const { numberOfActiveNodes } = action;\r\n return {\r\n ...state,\r\n numberOfActiveNodes,\r\n };\r\n }\r\n\r\n case 'setNumUsers': {\r\n const { numUsers } = action;\r\n return {\r\n ...state,\r\n numUsers,\r\n };\r\n }\r\n\r\n case 'setMinDelegationAmount': {\r\n const { minDelegationAmount } = action;\r\n return {\r\n ...state,\r\n minDelegationAmount,\r\n };\r\n }\r\n\r\n case 'setTotalActiveStake': {\r\n const { totalActiveStake } = action;\r\n return {\r\n ...state,\r\n totalActiveStake,\r\n };\r\n }\r\n\r\n case 'setAprPercentage': {\r\n const { aprPercentage } = action;\r\n return {\r\n ...state,\r\n aprPercentage,\r\n };\r\n }\r\n\r\n case 'setLedgerAccount': {\r\n const { ledgerAccount } = action;\r\n return {\r\n ...state,\r\n ledgerAccount,\r\n };\r\n }\r\n\r\n case 'setWalletConnectLogin': {\r\n const { walletConnectLogin } = action;\r\n setItem('walletConnectLogin', walletConnectLogin);\r\n return {\r\n ...state,\r\n walletConnectLogin,\r\n };\r\n }\r\n\r\n case 'setWalletConnectAccount': {\r\n const { walletConnectAccount } = action;\r\n return {\r\n ...state,\r\n walletConnectAccount,\r\n };\r\n }\r\n\r\n case 'logout': {\r\n const { provider } = action;\r\n provider\r\n .logout()\r\n .then()\r\n .catch(e => console.error('logout', e));\r\n removeItem('logged_in');\r\n removeItem('address');\r\n removeItem('ledgerLogin');\r\n removeItem('walletConnectLogin');\r\n return initialState();\r\n }\r\n\r\n default: {\r\n throw new Error(`Unhandled action type: ${action}`);\r\n }\r\n }\r\n}\r\n","import React from 'react';\r\nimport { StateType, initialState } from './state';\r\nimport { DispatchType, reducer } from './reducer';\r\n\r\nexport interface ContextType {\r\n children: React.ReactNode;\r\n}\r\n\r\nconst Context = React.createContext(undefined);\r\nconst Dispatch = React.createContext(undefined);\r\n\r\nfunction ContextProvider({ children }: ContextType) {\r\n const [state, dispatch] = React.useReducer(reducer, initialState());\r\n return (\r\n \r\n {children}\r\n \r\n );\r\n}\r\n\r\nfunction useContext() {\r\n const context = React.useContext(Context);\r\n if (context === undefined) {\r\n throw new Error('useState must be used within a Context.Provider');\r\n }\r\n return context;\r\n}\r\n\r\nfunction useDispatch() {\r\n const context = React.useContext(Dispatch);\r\n if (context === undefined) {\r\n throw new Error('useDispatch must be used within a Dispatch.Provider');\r\n }\r\n return context;\r\n}\r\n\r\nexport { ContextProvider, useContext, useDispatch };\r\n","import BigNumber from 'bignumber.js';\r\n\r\nexport default function nominate(input: string, paramDenomination?: number) {\r\n const parts = input.toString().split('.');\r\n const denomination = paramDenomination !== undefined ? paramDenomination : 18;\r\n\r\n if (parts[1]) {\r\n // remove trailing zeros\r\n while (parts[1].substring(parts[1].length - 1) === '0' && parts[1].length > 1) {\r\n parts[1] = parts[1].substring(0, parts[1].length - 1);\r\n }\r\n }\r\n\r\n let count = parts[1] ? denomination - parts[1].length : denomination;\r\n\r\n count = count < 0 ? 0 : count;\r\n\r\n let transformed = parts.join('') + '0'.repeat(count);\r\n\r\n // remove beginning zeros\r\n while (transformed.substring(0, 1) === '0' && transformed.length > 1) {\r\n transformed = transformed.substring(1);\r\n }\r\n\r\n return transformed;\r\n}\r\n\r\nexport const nominateValToHex = (value: string) => {\r\n let val = value && value.length > 0 ? new BigNumber(nominate(value)).toString(16) : '0';\r\n\r\n if (val.length % 2 !== 0) {\r\n val = '0' + val;\r\n }\r\n\r\n return val;\r\n};\r\n","import {\r\n IDappProvider,\r\n ProxyProvider,\r\n ApiProvider,\r\n WalletProvider,\r\n Nonce,\r\n ChainID,\r\n HWProvider,\r\n WalletConnectProvider,\r\n} from '@elrondnetwork/erdjs';\r\nimport BigNumber from 'bignumber.js';\r\nimport {\r\n AccountType,\r\n AgencyMetadata,\r\n ContractOverview,\r\n NetworkConfig,\r\n} from 'helpers/contractDataDefinitions';\r\nimport { denomination, decimals, network, NetworkType } from '../config';\r\nimport { getItem } from '../storage/session';\r\nconst defaultGatewayAddress = 'https://gateway.multiversx.com';\r\nconst defaultApiAddress = 'https://gateway.multiversx.com';\r\nconst defaultExplorerAddress = 'https://gateway.multiversx.com';\r\n\r\nexport const defaultNetwork: NetworkType = {\r\n id: 'not-configured',\r\n name: 'NOT CONFIGURED',\r\n egldLabel: '',\r\n walletAddress: '',\r\n apiAddress: '',\r\n gatewayAddress: '',\r\n explorerAddress: '',\r\n delegationContract: '',\r\n};\r\n\r\nexport interface DappState {\r\n provider: IDappProvider;\r\n proxy: ProxyProvider;\r\n apiProvider: ApiProvider;\r\n}\r\n\r\nexport interface StateType {\r\n dapp: DappState;\r\n loading: boolean;\r\n error: string;\r\n loggedIn: boolean;\r\n ledgerLogin: {\r\n index: number;\r\n loginType: string;\r\n };\r\n walletConnectLogin: {\r\n loginType: string;\r\n };\r\n address: string;\r\n egldLabel: string;\r\n denomination: number;\r\n decimals: number;\r\n account: AccountType;\r\n explorerAddress: string;\r\n delegationContract?: string;\r\n totalActiveStake: string;\r\n numberOfActiveNodes: string;\r\n numUsers: number;\r\n minDelegationAmount: number;\r\n aprPercentage: string;\r\n contractOverview: ContractOverview;\r\n networkConfig: NetworkConfig;\r\n agencyMetaData: AgencyMetadata;\r\n ledgerAccount?: {\r\n index: number;\r\n address: string;\r\n };\r\n walletConnectAccount?: string;\r\n}\r\nexport const emptyAccount: AccountType = {\r\n balance: '...',\r\n username: '...',\r\n nonce: new Nonce(0),\r\n};\r\n\r\nexport const emptyAgencyMetaData: AgencyMetadata = {\r\n name: '',\r\n website: '',\r\n keybase: '',\r\n};\r\n\r\nexport const emptyNetworkConfig: NetworkConfig = {\r\n roundDuration: -1,\r\n roundsPerEpoch: -1,\r\n roundsPassedInCurrentEpoch: -1,\r\n topUpFactor: -1,\r\n topUpRewardsGradientPoint: new BigNumber('-1'),\r\n chainId: new ChainID('-1'),\r\n};\r\n\r\nexport const emptyContractOverview: ContractOverview = {\r\n ownerAddress: '',\r\n serviceFee: '',\r\n maxDelegationCap: '',\r\n initialOwnerFunds: '',\r\n automaticActivation: 'false',\r\n withDelegationCap: 'false',\r\n changeableServiceFee: 'false',\r\n reDelegationCap: 'false',\r\n createdNounce: 'false',\r\n unBondPeriod: 0,\r\n};\r\n\r\nexport const initialState = (): {\r\n denomination: number;\r\n decimals: number;\r\n dapp: {\r\n provider: HWProvider | WalletProvider | WalletConnectProvider;\r\n proxy: ProxyProvider;\r\n apiProvider: ApiProvider;\r\n };\r\n loading: boolean;\r\n error: string;\r\n loggedIn: boolean;\r\n ledgerLogin: any;\r\n walletConnectLogin: any;\r\n address: any;\r\n account: AccountType;\r\n egldLabel: string;\r\n explorerAddress: string;\r\n delegationContract: string | undefined;\r\n contractOverview: ContractOverview;\r\n networkConfig: NetworkConfig;\r\n agencyMetaData: AgencyMetadata;\r\n numberOfActiveNodes: string;\r\n numUsers: number;\r\n minDelegationAmount: number;\r\n totalActiveStake: string;\r\n aprPercentage: string;\r\n ledgerAccount: { index: any; address: any } | undefined;\r\n walletConnectAccount: any;\r\n} => {\r\n const sessionNetwork = network || defaultNetwork;\r\n return {\r\n denomination: denomination,\r\n decimals: decimals,\r\n dapp: {\r\n provider: new WalletProvider(sessionNetwork.walletAddress),\r\n proxy: new ProxyProvider(\r\n sessionNetwork.gatewayAddress !== undefined\r\n ? sessionNetwork?.gatewayAddress\r\n : defaultGatewayAddress,\r\n { timeout: 4000 }\r\n ),\r\n apiProvider: new ApiProvider(\r\n sessionNetwork.apiAddress !== undefined ? sessionNetwork?.apiAddress : defaultApiAddress,\r\n { timeout: 4000 }\r\n ),\r\n },\r\n loading: false,\r\n error: '',\r\n loggedIn: !!getItem('logged_in'),\r\n ledgerLogin: getItem('ledgerLogin'),\r\n walletConnectLogin: getItem('walletConnectLogin'),\r\n address: getItem('address'),\r\n account: emptyAccount,\r\n egldLabel: sessionNetwork?.egldLabel,\r\n explorerAddress: sessionNetwork.explorerAddress || defaultExplorerAddress,\r\n delegationContract: sessionNetwork.delegationContract,\r\n contractOverview: emptyContractOverview,\r\n networkConfig: emptyNetworkConfig,\r\n agencyMetaData: emptyAgencyMetaData,\r\n numberOfActiveNodes: '...',\r\n numUsers: 0,\r\n minDelegationAmount: -1,\r\n totalActiveStake: '...',\r\n aprPercentage: '...',\r\n ledgerAccount:\r\n getItem('ledgerAccountIndex') && getItem('address')\r\n ? {\r\n index: getItem('ledgerAccountIndex'),\r\n address: getItem('address'),\r\n }\r\n : undefined,\r\n\r\n walletConnectAccount: getItem('walletConnectLogin') ? getItem('address') : undefined,\r\n };\r\n};\r\n","import BigNumber from 'bignumber.js';\r\nimport { minDust } from 'config';\r\nimport denominate from '../components/Denominate/formatters';\r\n\r\ninterface EntireBalanceType {\r\n balance: string;\r\n gasPrice: string;\r\n gasLimit: string;\r\n denomination: number;\r\n decimals: number;\r\n}\r\n\r\nexport default function entireBalance({\r\n balance,\r\n gasLimit,\r\n gasPrice,\r\n denomination,\r\n decimals,\r\n}: EntireBalanceType) {\r\n const bnBalance = new BigNumber(balance);\r\n const bnMinDust = new BigNumber(minDust);\r\n const bnGasPrice = new BigNumber(gasPrice);\r\n const bnGasLimit = new BigNumber(gasLimit);\r\n const entireBn = bnBalance.minus(bnGasPrice.times(bnGasLimit));\r\n const entireBnMinusDust = entireBn.minus(bnMinDust);\r\n\r\n const entireBalance =\r\n // entireBalance >= 0\r\n entireBn.comparedTo(0) === 1\r\n ? denominate({\r\n input: entireBn.toString(10),\r\n denomination,\r\n decimals,\r\n showLastNonZeroDecimal: true,\r\n addCommas: false,\r\n })\r\n : '0';\r\n\r\n const entireBalanceMinusDust =\r\n entireBnMinusDust.comparedTo(0) === 1\r\n ? denominate({\r\n input: entireBnMinusDust.toString(10),\r\n denomination,\r\n decimals,\r\n showLastNonZeroDecimal: true,\r\n addCommas: false,\r\n })\r\n : entireBalance;\r\n\r\n return {\r\n entireBalance,\r\n entireBalanceMinusDust,\r\n };\r\n}\r\n","import { Address, BLS, ValidatorSecretKey } from '@elrondnetwork/erdjs';\r\n\r\nfunction hexStringToByte(str: string) {\r\n if (!str) {\r\n return new Uint8Array();\r\n }\r\n const a = [];\r\n for (let i = 0, len = str.length; i < len; i += 2) {\r\n a.push(parseInt(str.substr(i, 2), 16));\r\n }\r\n return new Uint8Array(a);\r\n}\r\n\r\nfunction getPubKey(file: string, indices: any[]) {\r\n const headerParts = file\r\n .toString()\r\n .substring(indices[0], indices[1])\r\n .split(' ');\r\n return headerParts[4] ? headerParts[4] : '';\r\n}\r\n\r\nexport default async function decodePem(file: string, delegationContract?: string) {\r\n await BLS.initIfNecessary();\r\n let myKey = ValidatorSecretKey.fromPem(file);\r\n let dsc = new Address(delegationContract);\r\n let signature = myKey.sign(Buffer.from(dsc.pubkey())).toString('hex');\r\n\r\n const regex = /-----/gi;\r\n let result;\r\n const indices = [];\r\n while ((result = regex.exec(file.toString()))) {\r\n indices.push(result.index);\r\n }\r\n\r\n const key = file.toString().substring(indices[1] + 6, indices[2] - 1);\r\n const decoded = window.atob(key);\r\n\r\n const value = hexStringToByte(decoded);\r\n\r\n const pubKey = getPubKey(file, indices);\r\n\r\n return { value, pubKey, signature };\r\n}\r\n","import { ChainID, Nonce } from '@elrondnetwork/erdjs';\r\nimport BigNumber from 'bignumber.js';\r\n\r\nexport class ContractOverview {\r\n ownerAddress: string;\r\n serviceFee?: string;\r\n maxDelegationCap: string;\r\n initialOwnerFunds?: string;\r\n automaticActivation: string;\r\n withDelegationCap?: string;\r\n changeableServiceFee?: string;\r\n reDelegationCap: string;\r\n createdNounce?: string;\r\n unBondPeriod?: number;\r\n public constructor(\r\n ownerAddress: string = '',\r\n serviceFee?: string,\r\n maxDelegationCap: string = '',\r\n initialOwnerFunds?: string,\r\n automaticActivation: string = 'false',\r\n withDelegationCap: string = 'false',\r\n changeableServiceFee?: string,\r\n reDelegationCap: string = 'false',\r\n createdNounce?: string,\r\n unBondPeriod?: number\r\n ) {\r\n this.ownerAddress = ownerAddress;\r\n this.serviceFee = serviceFee;\r\n this.maxDelegationCap = maxDelegationCap;\r\n this.initialOwnerFunds = initialOwnerFunds;\r\n this.automaticActivation = automaticActivation;\r\n this.withDelegationCap = withDelegationCap;\r\n this.changeableServiceFee = changeableServiceFee;\r\n this.reDelegationCap = reDelegationCap;\r\n this.createdNounce = createdNounce;\r\n this.unBondPeriod = unBondPeriod;\r\n }\r\n}\r\n\r\nexport class NetworkStake {\r\n totalValidators: number;\r\n activeValidators: number;\r\n queueSize: number;\r\n totalStaked: BigNumber;\r\n public constructor(\r\n totalValidators: number,\r\n activeValidators: number,\r\n queueSize: number,\r\n totalStaked: BigNumber\r\n ) {\r\n this.totalValidators = totalValidators;\r\n this.activeValidators = activeValidators;\r\n this.queueSize = queueSize;\r\n this.totalStaked = totalStaked;\r\n }\r\n}\r\n\r\nexport class Stats {\r\n epoch: number;\r\n public constructor(epoch: number) {\r\n this.epoch = epoch;\r\n }\r\n}\r\n\r\nexport class NetworkConfig {\r\n topUpFactor: number;\r\n roundDuration: number;\r\n roundsPerEpoch: number;\r\n roundsPassedInCurrentEpoch: number;\r\n topUpRewardsGradientPoint: BigNumber;\r\n chainId: ChainID;\r\n public constructor(\r\n topUpFactor: number,\r\n roundDuration: number,\r\n roundsPerEpoch: number,\r\n roundsPassedInCurrentEpoch: number,\r\n topUpRewardsGradientPoint: BigNumber,\r\n chainId: ChainID\r\n ) {\r\n this.topUpFactor = topUpFactor;\r\n this.roundDuration = roundDuration;\r\n this.roundsPerEpoch = roundsPerEpoch;\r\n this.roundsPassedInCurrentEpoch = roundsPassedInCurrentEpoch;\r\n this.topUpRewardsGradientPoint = topUpRewardsGradientPoint;\r\n this.chainId = chainId;\r\n }\r\n}\r\n\r\nexport class AgencyMetadata {\r\n name: string;\r\n website: string;\r\n keybase: string;\r\n public constructor(name: string = '', website: string = '', keybase: string = '') {\r\n this.name = name;\r\n this.website = website;\r\n this.keybase = keybase;\r\n }\r\n}\r\n\r\nexport class AccountType {\r\n balance: string;\r\n username: string;\r\n nonce: Nonce;\r\n public constructor(balance: string = '', username: string = '', nonce: Nonce) {\r\n this.balance = balance;\r\n this.username = username;\r\n this.nonce = nonce;\r\n }\r\n}\r\n\r\nexport class DelegationTransactionType {\r\n value: string;\r\n type: string;\r\n chainId?: ChainID;\r\n args?: string;\r\n public constructor(\r\n value: string = '',\r\n type: string,\r\n args: string = '',\r\n chainId: ChainID = new ChainID('T')\r\n ) {\r\n this.value = value;\r\n this.type = type;\r\n this.args = args;\r\n this.chainId = chainId;\r\n }\r\n}\r\n","interface ContinueAndCloseButtonsType {\r\n actionTitle: string;\r\n color: string;\r\n handleContinue: () => void;\r\n handleClose: () => void;\r\n}\r\n\r\nconst ContinueAndCloseButtons = ({\r\n actionTitle,\r\n color,\r\n handleContinue,\r\n handleClose,\r\n}: ContinueAndCloseButtonsType) => {\r\n return (\r\n
\r\n {\r\n handleContinue();\r\n }}\r\n className={`btn btn-${color} mx-2`}\r\n >\r\n {actionTitle}\r\n \r\n \r\n
\r\n );\r\n};\r\n\r\nexport default ContinueAndCloseButtons;\r\n","import { Modal } from 'react-bootstrap';\r\nimport ContinueAndCloseButtons from 'components/ContinueAndCloseButtons';\r\n\r\nexport interface OwnerActionModalType {\r\n show: boolean;\r\n title: string;\r\n actionTitle: string;\r\n description: string;\r\n extraDescription?: string;\r\n handleClose: () => void;\r\n handleContinue: () => void;\r\n}\r\n\r\nconst OwnerActionModal = ({\r\n show,\r\n title,\r\n actionTitle,\r\n description,\r\n extraDescription,\r\n handleClose,\r\n handleContinue,\r\n}: OwnerActionModalType) => {\r\n return (\r\n \r\n
\r\n
\r\n

\r\n {title}\r\n

\r\n {description &&

{description}

}\r\n {extraDescription &&

{extraDescription}

}\r\n \r\n
\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default OwnerActionModal;\r\n","import moment from 'moment';\r\n\r\nexport const setItem = (key: string, item: any, ttl: number = 3600) => {\r\n const expires = moment().unix() + ttl;\r\n sessionStorage.setItem(\r\n key,\r\n JSON.stringify({\r\n expires,\r\n data: item,\r\n })\r\n );\r\n};\r\n\r\nexport const getItem = (key: string): any => {\r\n const item = sessionStorage.getItem(key);\r\n if (!item) {\r\n return null;\r\n }\r\n\r\n const deserializedItem = JSON.parse(item);\r\n if (!deserializedItem) {\r\n return null;\r\n }\r\n\r\n if (!deserializedItem.hasOwnProperty('expires') || !deserializedItem.hasOwnProperty('data')) {\r\n return null;\r\n }\r\n\r\n const expired = moment().unix() >= deserializedItem.expires;\r\n if (expired) {\r\n sessionStorage.removeItem(key);\r\n return null;\r\n }\r\n\r\n return deserializedItem.data;\r\n};\r\n\r\nexport const removeItem = (key: string) => sessionStorage.removeItem(key);\r\n","function format(\r\n big: string,\r\n denomination: number,\r\n decimals: number,\r\n showLastNonZeroDecimal: boolean,\r\n addCommas: boolean\r\n) {\r\n showLastNonZeroDecimal =\r\n typeof showLastNonZeroDecimal !== 'undefined' ? showLastNonZeroDecimal : false;\r\n let array = big.toString().split('');\r\n if (denomination !== 0) {\r\n // make sure we have enough characters\r\n while (array.length < denomination + 1) {\r\n array.unshift('0');\r\n }\r\n // add our dot\r\n array.splice(array.length - denomination, 0, '.');\r\n // make sure there are enough decimals after the dot\r\n while (array.length - array.indexOf('.') <= decimals) {\r\n array.push('0');\r\n }\r\n\r\n if (showLastNonZeroDecimal) {\r\n let nonZeroDigitIndex = 0;\r\n for (let i = array.length - 1; i > 0; i--) {\r\n if (array[i] !== '0') {\r\n nonZeroDigitIndex = i + 1;\r\n break;\r\n }\r\n }\r\n const decimalsIndex = array.indexOf('.') + decimals + 1;\r\n const sliceIndex = Math.max(decimalsIndex, nonZeroDigitIndex);\r\n array = array.slice(0, sliceIndex);\r\n } else {\r\n // trim unnecessary characters after the dot\r\n array = array.slice(0, array.indexOf('.') + decimals + 1);\r\n }\r\n }\r\n if (addCommas) {\r\n // add comas every 3 characters\r\n array = array.reverse();\r\n const reference = denomination ? array.length - array.indexOf('.') - 1 : array.length;\r\n const count = Math.floor(reference / 3);\r\n for (let i = 1; i <= count; i++) {\r\n const position = array.indexOf('.') + 3 * i + i;\r\n if (position !== array.length) {\r\n array.splice(position, 0, ',');\r\n }\r\n }\r\n array = array.reverse();\r\n }\r\n\r\n const allDecimalsZero = array\r\n .slice(array.indexOf('.') + 1)\r\n .every(digit => digit.toString() === '0');\r\n\r\n const string = array.join('');\r\n\r\n if (allDecimalsZero) {\r\n return string.split('.')[0];\r\n }\r\n\r\n return decimals === 0 ? string.split('.').join('') : string;\r\n}\r\n\r\ninterface DenominateType {\r\n input: string;\r\n denomination: number;\r\n decimals: number;\r\n showLastNonZeroDecimal?: boolean;\r\n addCommas?: boolean;\r\n}\r\n\r\nexport default function denominate({\r\n input,\r\n denomination,\r\n decimals,\r\n showLastNonZeroDecimal = false,\r\n addCommas = true,\r\n}: DenominateType): string {\r\n if (input === '...') {\r\n return input;\r\n }\r\n if (input === '' || input === '0' || input === undefined) {\r\n input = '0';\r\n }\r\n return format(input, denomination, decimals, showLastNonZeroDecimal, addCommas);\r\n}\r\n","import {\r\n ProxyProvider,\r\n ContractFunction,\r\n Transaction,\r\n TransactionPayload,\r\n Balance,\r\n GasLimit,\r\n IDappProvider,\r\n WalletProvider,\r\n WalletConnectProvider,\r\n HWProvider,\r\n Address,\r\n SmartContract,\r\n} from '@elrondnetwork/erdjs';\r\nimport { setItem } from '../storage/session';\r\nimport { delegationContractData } from '../config';\r\nimport { AccountType, DelegationTransactionType } from 'helpers/contractDataDefinitions';\r\n\r\nexport default class Delegation {\r\n contract: SmartContract;\r\n proxyProvider: ProxyProvider;\r\n signerProvider?: IDappProvider;\r\n account?: AccountType;\r\n\r\n constructor(\r\n provider: ProxyProvider,\r\n delegationContract?: string,\r\n signer?: IDappProvider,\r\n account?: AccountType\r\n ) {\r\n const address = new Address(delegationContract);\r\n this.contract = new SmartContract({ address });\r\n this.proxyProvider = provider;\r\n this.signerProvider = signer;\r\n this.account = account;\r\n }\r\n\r\n async sendTransaction(\r\n delegationTransactionType: DelegationTransactionType\r\n ): Promise {\r\n if (!this.signerProvider) {\r\n throw new Error(\r\n 'You need a singer to send a transaction, use either WalletProvider or LedgerProvider'\r\n );\r\n }\r\n\r\n switch (this.signerProvider.constructor) {\r\n case WalletProvider:\r\n // Can use something like this to handle callback redirect\r\n setItem('transaction_identifier', true, 120);\r\n return this.sendTransactionBasedOnType(delegationTransactionType);\r\n case HWProvider:\r\n return this.sendTransactionBasedOnType(delegationTransactionType);\r\n case WalletConnectProvider:\r\n return this.sendTransactionBasedOnType(delegationTransactionType);\r\n default:\r\n console.warn('invalid signerProvider');\r\n }\r\n\r\n throw new Error('invalid signerProvider');\r\n }\r\n\r\n private async sendTransactionBasedOnType(\r\n delegationTransactionType: DelegationTransactionType\r\n ): Promise {\r\n let delegationContract = delegationContractData.find(\r\n d => d.name === delegationTransactionType.type\r\n );\r\n if (!delegationContract) {\r\n throw new Error('The contract for this action in not defined');\r\n } else {\r\n let funcName = delegationContract.data;\r\n let gasLimit = delegationContract.gasLimit;\r\n if (delegationTransactionType.args !== '') {\r\n funcName = `${delegationContract.data}${delegationTransactionType.args}`;\r\n }\r\n if (delegationContract.data === 'addNodes' && delegationTransactionType.args) {\r\n const nodeKeys = delegationTransactionType.args.split('@').slice(1);\r\n const numNodes = nodeKeys.length / 2;\r\n gasLimit = delegationContract.gasLimit * numNodes;\r\n }\r\n const func = new ContractFunction(funcName);\r\n let payload = TransactionPayload.contractCall()\r\n .setFunction(func)\r\n .build();\r\n let transaction = new Transaction({\r\n chainID: delegationTransactionType.chainId,\r\n receiver: this.contract.getAddress(),\r\n value: Balance.egld(delegationTransactionType.value),\r\n gasLimit: new GasLimit(gasLimit),\r\n data: payload,\r\n nonce: this.account?.nonce,\r\n });\r\n\r\n // @ts-ignore\r\n\r\n return await this.signerProvider.sendTransaction(transaction);\r\n }\r\n }\r\n}\r\n","import { TransactionHash } from '@elrondnetwork/erdjs';\r\nimport { useContext } from 'context';\r\nimport { Delegation } from 'contracts';\r\nimport { DelegationTransactionType } from './contractDataDefinitions';\r\nimport { ledgerErrorCodes } from './ledgerErrorCodes';\r\nexport interface UseDelegationType {\r\n handleClose: (txHash: TransactionHash) => void;\r\n setError: (error: string) => void;\r\n}\r\nexport default function useDelegation({\r\n handleClose,\r\n setError: setTransactionError,\r\n}: UseDelegationType) {\r\n const { dapp, delegationContract, account, networkConfig } = useContext();\r\n const delegation = new Delegation(dapp.proxy, delegationContract, dapp.provider, account);\r\n\r\n const sendTransaction = (transactionArguments: DelegationTransactionType) => {\r\n transactionArguments.chainId = networkConfig.chainId;\r\n delegation\r\n .sendTransaction(transactionArguments)\r\n .then(transaction => {\r\n handleClose(transaction.getHash());\r\n })\r\n .catch(e => {\r\n if (e.statusCode in ledgerErrorCodes) {\r\n setTransactionError((ledgerErrorCodes as any)[e.statusCode].message);\r\n }\r\n if (e.message === 'HWApp not initialised, call init() first') {\r\n setTransactionError('Your session has expired. Please login again');\r\n }\r\n if (e.message === 'Failed or Rejected Request') {\r\n setTransactionError('Failed or Rejected Request. Please try again');\r\n }\r\n if (e.message === 'cancel') {\r\n setTransactionError('Transaction Cancelled');\r\n }\r\n\r\n console.error(`${transactionArguments.type}`, e);\r\n });\r\n };\r\n\r\n return { sendTransaction };\r\n}\r\n\r\nexport function useDelegationWallet() {\r\n const { dapp, delegationContract, account } = useContext();\r\n const delegation = new Delegation(dapp.proxy, delegationContract, dapp.provider, account);\r\n const sendTransactionWallet = (transactionArguments: DelegationTransactionType) => {\r\n delegation\r\n .sendTransaction(transactionArguments)\r\n .then()\r\n .catch(e => {\r\n console.error(`${transactionArguments.type}`, e);\r\n });\r\n };\r\n\r\n return { sendTransactionWallet };\r\n}\r\n","import { useEffect, useRef } from 'react';\r\n\r\nfunction useInterval(callback: () => void, delay: number | null) {\r\n const savedCallback = useRef<() => void | null>();\r\n\r\n useEffect(() => {\r\n savedCallback.current = callback;\r\n });\r\n\r\n useEffect(() => {\r\n function tick() {\r\n if (typeof savedCallback?.current !== 'undefined') {\r\n savedCallback?.current();\r\n }\r\n }\r\n\r\n if (delay !== null) {\r\n const id = setInterval(tick, delay);\r\n return () => clearInterval(id);\r\n }\r\n }, [delay]);\r\n}\r\n\r\nexport default useInterval;\r\n","import { faSearch } from '@fortawesome/free-solid-svg-icons';\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\r\nimport { useContext } from 'context';\r\nimport * as React from 'react';\r\n\r\nconst StatusTxDetails = ({ txHash }: { txHash: string }) => {\r\n const { explorerAddress } = useContext();\r\n return (\r\n <>\r\n
Transaction hash:
{' '}\r\n \r\n {txHash}\r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default StatusTxDetails;\r\n","const txStatus = {\r\n pending: 'Pending',\r\n notExecuted: 'Not Executed',\r\n invalid: 'Invalid',\r\n success: 'Success',\r\n fail: 'Fail',\r\n};\r\n\r\nexport default txStatus;\r\n","import { TransactionHash } from '@elrondnetwork/erdjs';\r\nimport { faCheck, faHourglass, faTimes } from '@fortawesome/free-solid-svg-icons';\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\r\nimport { useContext } from 'context';\r\nimport useInterval from 'helpers/useInterval';\r\nimport { useEffect, useState } from 'react';\r\nimport { Modal } from 'react-bootstrap';\r\nimport { useHistory } from 'react-router-dom';\r\nimport StatusTxDetails from './StatusTxDetails';\r\nimport txStatus from './txStatus';\r\nexport interface TransactionStatusModalType {\r\n show: boolean;\r\n txHash: TransactionHash;\r\n}\r\nconst TransactionStatusModal = ({ show, txHash }: TransactionStatusModalType) => {\r\n const [lastTxStatus, setLastTxStatus] = useState(txStatus.pending);\r\n const [spin, setSpin] = useState(false);\r\n const [delay] = useState(1000);\r\n const [txDStatus, setTxStatus] = useState({\r\n icon: faHourglass,\r\n status: txStatus.pending,\r\n title: 'Procesing request',\r\n });\r\n const { dapp } = useContext();\r\n const history = useHistory();\r\n\r\n const handleCloseModal = () => {\r\n history.push('');\r\n };\r\n const getStatus = (current: string) => lastTxStatus === current.toLowerCase();\r\n\r\n useInterval(\r\n () => {\r\n getTransactionStatus(txHash);\r\n setSpin(currentSpin => !currentSpin);\r\n },\r\n txDStatus.status.toLowerCase() === 'pending' ? delay : null\r\n );\r\n\r\n useEffect(() => {}, [lastTxStatus]);\r\n\r\n const getTransactionStatus = (hash: TransactionHash) => {\r\n if (!txHash.isEmpty()) {\r\n dapp.apiProvider\r\n .getTransaction(hash)\r\n .then(transaction => {\r\n switch (true) {\r\n case getStatus(txStatus.success):\r\n setTxStatus({ icon: faCheck, status: 'Success', title: 'Success' });\r\n break;\r\n\r\n case getStatus(txStatus.notExecuted):\r\n case getStatus(txStatus.invalid):\r\n case getStatus(txStatus.fail):\r\n setTxStatus({ icon: faTimes, status: 'Failed', title: 'Request failed' });\r\n break;\r\n default:\r\n setTxStatus({ icon: faHourglass, status: 'Pending', title: 'Procesing request' });\r\n }\r\n setLastTxStatus(transaction.status.status.valueOf().toLowerCase());\r\n })\r\n .catch(e => console.log('error ', e));\r\n }\r\n };\r\n\r\n return (\r\n \r\n
\r\n
\r\n
\r\n {txDStatus.title}\r\n
\r\n
\r\n \r\n \r\n
\r\n\r\n \r\n Close\r\n \r\n
\r\n
\r\n \r\n );\r\n};\r\n\r\nexport default TransactionStatusModal;\r\n","import React, { useEffect, useState } from 'react';\r\nimport { Modal } from 'react-bootstrap';\r\nimport { useDelegation } from 'helpers';\r\nimport { DelegationTransactionType } from 'helpers/contractDataDefinitions';\r\nimport { TransactionHash } from '@elrondnetwork/erdjs';\r\nimport TransactionStatusModal from 'components/TransactionStatus';\r\nimport { useHistory } from 'react-router-dom';\r\nimport { useContext, useDispatch } from 'context';\r\nexport interface ConfirmTransactionModalType {\r\n show: boolean;\r\n transactionArguments: DelegationTransactionType;\r\n handleClose: () => void;\r\n}\r\nconst ConfirmTransactionModal = ({\r\n show,\r\n transactionArguments,\r\n handleClose,\r\n}: ConfirmTransactionModalType) => {\r\n const dispatch = useDispatch();\r\n const { egldLabel, delegationContract, dapp } = useContext();\r\n const [error, setError] = useState('');\r\n const [showTransactionStatus, setShowTransactionStatus] = useState(false);\r\n const [txHash, setTxHash] = useState(new TransactionHash(''));\r\n const closeTransactionModal = (txHash: TransactionHash) => {\r\n setTxHash(txHash);\r\n handleClose();\r\n setShowTransactionStatus(true);\r\n };\r\n const history = useHistory();\r\n\r\n const handleCloseModal = () => {\r\n setShowTransactionStatus(false);\r\n if (error === 'Your session has expired. Please login again') {\r\n dispatch({ type: 'logout', provider: dapp.provider });\r\n }\r\n history.push('');\r\n };\r\n const { sendTransaction } = useDelegation({\r\n handleClose: closeTransactionModal,\r\n setError: setError,\r\n });\r\n\r\n useEffect(\r\n () => {\r\n if (transactionArguments.type !== '') {\r\n sendTransaction(transactionArguments);\r\n }\r\n },\r\n /* eslint-disable react-hooks/exhaustive-deps */\r\n [transactionArguments]\r\n );\r\n return (\r\n <>\r\n \r\n
\r\n
\r\n
\r\n Confirm transaction on device\r\n
\r\n
\r\n To: \r\n {delegationContract}\r\n
\r\n
\r\n Amount: \r\n {transactionArguments.value} {egldLabel}\r\n
\r\n
\r\n Data: \r\n {transactionArguments.type}\r\n {`${transactionArguments.args !== '' ? '@' + transactionArguments.args : ''}`}\r\n
\r\n {error && (\r\n

\r\n {error}\r\n

\r\n )}\r\n
\r\n \r\n Close\r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default ConfirmTransactionModal;\r\n","import ConfirmTransactionModal from 'components/ConfirmTransactionModal';\r\nimport OwnerActionModal from 'components/Overview/OwnerActionModal';\r\nimport { useContext } from 'context';\r\nimport { DelegationTransactionType } from 'helpers/contractDataDefinitions';\r\nimport { useDelegationWallet } from 'helpers/useDelegation';\r\nimport React, { useState } from 'react';\r\n\r\nconst AutomaticActivationAction = ({ automaticFlag }: { automaticFlag: string }) => {\r\n const { ledgerAccount, walletConnectAccount } = useContext();\r\n const [showAutomaticActivationModal, setShowAutomaticActivationModal] = useState(false);\r\n const [showCheckYourLedgerModal, setShowCheckYourLedgerModal] = useState(false);\r\n const [transactionArguments, setTransactionArguments] = useState(\r\n new DelegationTransactionType('', '')\r\n );\r\n const { sendTransactionWallet } = useDelegationWallet();\r\n\r\n const handleAutomaticActivation = () => {\r\n let activation = Buffer.from(automaticFlag === 'true' ? 'false' : 'true').toString('hex');\r\n let txArguments = new DelegationTransactionType('0', 'setAutomaticActivation', activation);\r\n if (ledgerAccount || walletConnectAccount) {\r\n setShowAutomaticActivationModal(false);\r\n setTransactionArguments(txArguments);\r\n setShowCheckYourLedgerModal(true);\r\n } else {\r\n sendTransactionWallet(txArguments);\r\n }\r\n };\r\n return (\r\n
\r\n setShowAutomaticActivationModal(true)}\r\n className=\"btn btn-primary text-white btn-sm mr-n1\"\r\n >\r\n Change\r\n \r\n {\r\n setShowAutomaticActivationModal(false);\r\n }}\r\n handleContinue={handleAutomaticActivation}\r\n />\r\n {\r\n setShowCheckYourLedgerModal(false);\r\n }}\r\n />\r\n
\r\n );\r\n};\r\n\r\nexport default AutomaticActivationAction;\r\n","import ConfirmTransactionModal from 'components/ConfirmTransactionModal';\r\nimport OwnerActionModal from 'components/Overview/OwnerActionModal';\r\nimport { useContext } from 'context';\r\nimport { DelegationTransactionType } from 'helpers/contractDataDefinitions';\r\nimport { useDelegationWallet } from 'helpers/useDelegation';\r\nimport React, { useState } from 'react';\r\n\r\nconst ReDelegateCapActivationAction = ({ automaticFlag }: { automaticFlag: string }) => {\r\n const { ledgerAccount, walletConnectAccount } = useContext();\r\n const [showReDelegationCapActivationModal, setShowReDelegationCapActivationModal] = useState(\r\n false\r\n );\r\n const [showCheckYourLedgerModal, setShowCheckYourLedgerModal] = useState(false);\r\n const [transactionArguments, setTransactionArguments] = useState(\r\n new DelegationTransactionType('', '')\r\n );\r\n const { sendTransactionWallet } = useDelegationWallet();\r\n const handleReDelegationCapActivation = () => {\r\n let redelegateRewardsActivation = Buffer.from(\r\n automaticFlag === 'true' ? 'false' : 'true'\r\n ).toString('hex');\r\n let txArguments = new DelegationTransactionType(\r\n '0',\r\n 'setReDelegateCapActivation',\r\n redelegateRewardsActivation\r\n );\r\n\r\n if (ledgerAccount || walletConnectAccount) {\r\n setShowReDelegationCapActivationModal(false);\r\n setTransactionArguments(txArguments);\r\n setShowCheckYourLedgerModal(true);\r\n } else {\r\n sendTransactionWallet(txArguments);\r\n }\r\n };\r\n\r\n return (\r\n
\r\n setShowReDelegationCapActivationModal(true)}\r\n className=\"btn btn-primary text-white btn-sm mr-n1\"\r\n >\r\n Change\r\n \r\n {\r\n setShowReDelegationCapActivationModal(false);\r\n }}\r\n handleContinue={handleReDelegationCapActivation}\r\n />\r\n {\r\n setShowCheckYourLedgerModal(false);\r\n }}\r\n />\r\n
\r\n );\r\n};\r\n\r\nexport default ReDelegateCapActivationAction;\r\n","var map = {\n\t\"./bls.js\": 353,\n\t\"./bls_c.js\": 386\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 741;","export const ledgerErrorCodes = {\r\n 0x9000: {\r\n code: 'codeSuccess',\r\n message: 'Success',\r\n },\r\n 0x6985: {\r\n code: 'ERR_USER_DENIED',\r\n message: 'Rejected by user',\r\n },\r\n 0x6d00: {\r\n code: 'ERR_UNKNOWN_INSTRUCTION',\r\n message: 'Unknown instruction',\r\n },\r\n 0x6e00: {\r\n code: 'ERR_WRONG_CLA',\r\n message: 'Wrong CLA',\r\n },\r\n 0x6e01: {\r\n code: 'ERR_INVALID_ARGUMENTS',\r\n message: 'Invalid arguments',\r\n },\r\n 0x6e02: {\r\n code: 'ERR_INVALID_MESSAGE',\r\n message: 'Invalid message',\r\n },\r\n 0x6e03: {\r\n code: 'ERR_INVALID_P1',\r\n message: 'Invalid P1',\r\n },\r\n 0x6e04: {\r\n code: 'ERR_MESSAGE_TOO_LONG',\r\n message: 'Message too long',\r\n },\r\n 0x6e05: {\r\n code: 'ERR_RECEIVER_TOO_LONG',\r\n message: 'Receiver too long',\r\n },\r\n 0x6e06: {\r\n code: 'ERR_AMOUNT_TOO_LONG',\r\n message: 'Amount too long',\r\n },\r\n 0x6e07: {\r\n code: 'ERR_CONTRACT_DATA_DISABLED',\r\n message: 'Contract data disabled in app options',\r\n },\r\n 0x6e08: {\r\n code: 'ERR_MESSAGE_INCOMPLETE',\r\n message: 'Message incomplete',\r\n },\r\n 0x6e10: {\r\n code: 'ERR_SIGNATURE_FAILED',\r\n message: 'Signature failed',\r\n },\r\n 0x6e09: {\r\n code: 'ERR_WRONG_TX_VERSION',\r\n message: 'Wrong TX version',\r\n },\r\n 0x6e0a: {\r\n code: 'ERR_NONCE_TOO_LONG',\r\n message: 'Nonce too long',\r\n },\r\n 0x6e0b: {\r\n code: 'ERR_INVALID_AMOUNT',\r\n message: 'Invalid amount',\r\n },\r\n 0x6e0c: {\r\n code: 'ERR_INVALID_FEE',\r\n message: 'Invalid fee',\r\n },\r\n 0x6e0d: {\r\n code: 'ERR_PRETTY_FAILED',\r\n message: 'Pretty failed',\r\n },\r\n 0x6e0e: {\r\n code: 'ERR_DATA_TOO_LONG',\r\n message: 'Data too long',\r\n },\r\n 0x6e0f: {\r\n code: 'ERR_WRONG_TX_OPTIONS',\r\n message: 'Invalid transaction options',\r\n },\r\n 0x6e11: {\r\n code: 'ERR_SIGN_TX_DEPRECATED',\r\n message: 'Regular transaction signing is deprecated in this version. Use hash signing.',\r\n },\r\n};\r\n","import { Address, AddressValue, ContractFunction, Query } from '@elrondnetwork/erdjs';\r\nimport { auctionContract, delegationManagerContract } from 'config';\r\nimport { DappState } from '../context/state';\r\n\r\nexport const contractViews = {\r\n getUserActiveStake: (dapp: DappState, address: string, delegationContract?: string) => {\r\n const query = new Query({\r\n address: new Address(delegationContract),\r\n func: new ContractFunction('getUserActiveStake'),\r\n args: [new AddressValue(new Address(address))],\r\n });\r\n return dapp.proxy.queryContract(query);\r\n },\r\n getUserUnDelegatedList: (dapp: DappState, address: string, delegationContract?: string) => {\r\n const query = new Query({\r\n address: new Address(delegationContract),\r\n func: new ContractFunction('getUserUnDelegatedList'),\r\n args: [new AddressValue(new Address(address))],\r\n });\r\n return dapp.proxy.queryContract(query);\r\n },\r\n getClaimableRewards: (dapp: DappState, address: string, delegationContract?: string) => {\r\n const query = new Query({\r\n address: new Address(delegationContract),\r\n func: new ContractFunction('getClaimableRewards'),\r\n args: [new AddressValue(new Address(address))],\r\n });\r\n return dapp.proxy.queryContract(query);\r\n },\r\n getTotalActiveStake: (dapp: DappState, delegationContract?: string) => {\r\n const query = new Query({\r\n address: new Address(delegationContract),\r\n func: new ContractFunction('getTotalActiveStake'),\r\n });\r\n return dapp.proxy.queryContract(query);\r\n },\r\n getNumNodes: (dapp: DappState, delegationContract?: string) => {\r\n const query = new Query({\r\n address: new Address(delegationContract),\r\n func: new ContractFunction('getNumNodes'),\r\n });\r\n return dapp.proxy.queryContract(query);\r\n },\r\n getNumUsers: (dapp: DappState, delegationContract?: string) => {\r\n const query = new Query({\r\n address: new Address(delegationContract),\r\n func: new ContractFunction('getNumUsers'),\r\n });\r\n return dapp.proxy.queryContract(query);\r\n },\r\n getContractConfig: (dapp: DappState, delegationContract?: string) => {\r\n const query = new Query({\r\n address: new Address(delegationContract),\r\n func: new ContractFunction('getContractConfig'),\r\n });\r\n return dapp.proxy.queryContract(query);\r\n },\r\n getMetaData: (dapp: DappState, delegationContract?: string) => {\r\n const query = new Query({\r\n address: new Address(delegationContract),\r\n func: new ContractFunction('getMetaData'),\r\n });\r\n return dapp.proxy.queryContract(query);\r\n },\r\n getBlsKeys: (dapp: DappState, delegationContract?: string) => {\r\n const query = new Query({\r\n address: new Address(auctionContract),\r\n func: new ContractFunction('getBlsKeysStatus'),\r\n args: [new AddressValue(new Address(delegationContract))],\r\n });\r\n return dapp.proxy.queryContract(query);\r\n },\r\n getDelegationManagerContractConfig: (dapp: DappState) => {\r\n const query = new Query({\r\n address: new Address(delegationManagerContract),\r\n func: new ContractFunction('getContractConfig'),\r\n });\r\n return dapp.proxy.queryContract(query);\r\n },\r\n};\r\n","import { decodeString } from '@elrondnetwork/erdjs';\r\nimport denominate from 'components/Denominate/formatters';\r\nimport {\r\n yearSettings,\r\n genesisTokenSuply,\r\n denomination,\r\n decimals,\r\n feesInEpoch,\r\n protocolSustainabilityRewards,\r\n stakePerNode,\r\n} from 'config';\r\nimport { NetworkConfig, NetworkStake, Stats } from 'helpers/contractDataDefinitions';\r\n\r\nconst denominateValue = (value: string) => {\r\n const denominatedValueString = denominate({\r\n input: value,\r\n denomination,\r\n decimals,\r\n });\r\n const valueWithoutComma = denominatedValueString.replace(/,/g, '');\r\n return valueWithoutComma;\r\n};\r\n\r\nconst calculateAPR = ({\r\n stats,\r\n networkConfig,\r\n networkStake,\r\n blsKeys,\r\n totalActiveStake,\r\n}: {\r\n stats: Stats;\r\n networkConfig: NetworkConfig;\r\n networkStake: NetworkStake;\r\n blsKeys: Buffer[];\r\n totalActiveStake: string;\r\n}) => {\r\n const allNodes = blsKeys.filter(\r\n key =>\r\n decodeString(key) === 'staked' ||\r\n decodeString(key) === 'jailed' ||\r\n decodeString(key) === 'queued'\r\n ).length;\r\n const allActiveNodes = blsKeys.filter(key => decodeString(key) === 'staked').length;\r\n if (allActiveNodes <= 0) {\r\n return '0.00';\r\n }\r\n\r\n const epochDurationInSeconds =\r\n (networkConfig.roundDuration / 1000) * networkConfig.roundsPerEpoch;\r\n const secondsInYear = 365 * 24 * 3600;\r\n const epochsInYear = secondsInYear / epochDurationInSeconds;\r\n const inflationRate =\r\n yearSettings.find(x => x.year === Math.floor(stats.epoch / epochsInYear) + 1)\r\n ?.maximumInflation || 0;\r\n const rewardsPerEpoch = Math.max((inflationRate * genesisTokenSuply) / epochsInYear, feesInEpoch);\r\n const rewardsPerEpochWithoutProtocolSustainability =\r\n (1 - protocolSustainabilityRewards) * rewardsPerEpoch;\r\n const topUpRewardsLimit =\r\n networkConfig.topUpFactor * rewardsPerEpochWithoutProtocolSustainability;\r\n\r\n const networkBaseStake = networkStake.activeValidators * stakePerNode;\r\n const networkTotalStake = parseInt(denominateValue(networkStake.totalStaked.toFixed()));\r\n const networkTopUpStake =\r\n networkTotalStake -\r\n networkStake.totalValidators * stakePerNode -\r\n networkStake.queueSize * stakePerNode;\r\n const topUpReward =\r\n ((2 * topUpRewardsLimit) / Math.PI) *\r\n Math.atan(\r\n networkTopUpStake /\r\n (2 * parseInt(denominateValue(networkConfig.topUpRewardsGradientPoint.toFixed())))\r\n );\r\n const baseReward = rewardsPerEpochWithoutProtocolSustainability - topUpReward;\r\n const validatorTotalStake = parseInt(denominateValue(totalActiveStake));\r\n const actualNumberOfNodes = Math.min(\r\n Math.floor(validatorTotalStake / stakePerNode),\r\n allActiveNodes\r\n );\r\n const validatorBaseStake = actualNumberOfNodes * stakePerNode;\r\n const validatorTopUpStake = validatorTotalStake - allNodes * stakePerNode;\r\n const validatorTopUpReward =\r\n networkTopUpStake > 0 ? (validatorTopUpStake / networkTopUpStake) * topUpReward : 0;\r\n const validatorBaseReward = (validatorBaseStake / networkBaseStake) * baseReward;\r\n const anualPercentageRate =\r\n (epochsInYear * (validatorTopUpReward + validatorBaseReward)) / validatorTotalStake;\r\n return (anualPercentageRate * 100).toFixed(2);\r\n};\r\n\r\nexport { calculateAPR };\r\n","export default __webpack_public_path__ + \"static/media/facebook-icon.1d5785a4.svg\";","export default __webpack_public_path__ + \"static/media/twitter-icon.9364e2ed.svg\";","export default __webpack_public_path__ + \"static/media/telegram-icon.671d4d67.svg\";","export default __webpack_public_path__ + \"static/media/cslabs-logo.00624aa7.svg\";","import React from \"react\";\r\nimport facebookIcon from \"assets/images/facebook-icon.svg\";\r\nimport twitterIcon from \"assets/images/twitter-icon.svg\";\r\nimport telegramIcon from \"assets/images/telegram-icon.svg\";\r\nimport logo from \"assets/images/cslabs-logo.svg\";\r\n\r\nconst Footer = () => {\r\n return (\r\n \r\n );\r\n};\r\n\r\nexport default Footer;\r\n","export default __webpack_public_path__ + \"static/media/exit-wallet.63e89d7e.svg\";","export default __webpack_public_path__ + \"static/media/wallet-menu-icon.7177311d.svg\";","import Denominate from \"components/Denominate\";\r\nimport React from \"react\";\r\nimport { ReactComponent as Logo } from \"assets/images/logo.svg\";\r\nimport { useContext, useDispatch } from \"context\";\r\nimport { useState } from \"react\";\r\nimport facebookIcon from \"assets/images/facebook-icon.svg\";\r\nimport twitterIcon from \"assets/images/twitter-icon.svg\";\r\nimport telegramIcon from \"assets/images/telegram-icon.svg\";\r\nimport logo from \"assets/images/cslabs-logo.svg\";\r\nimport exitWallet from \"assets/images/exit-wallet.svg\";\r\nimport walletIcon from \"assets/images/wallet-menu-icon.svg\";\r\n\r\nconst Navbar = () => {\r\n const { loggedIn, dapp, address, account, delegationContract } = useContext();\r\n const [show, setShow] = useState(false);\r\n\r\n const dispatch = useDispatch();\r\n let chainNav = document.querySelector(\"chainnav\");\r\n\r\n const logOut = () => {\r\n dispatch({ type: \"logout\", provider: dapp.provider });\r\n };\r\n\r\n function toggleShow() {\r\n setShow(!show);\r\n }\r\n\r\n return (\r\n
\r\n {/*
\r\n \"\"\r\n {loggedIn && (\r\n
\r\n Balance: \r\n \r\n \r\n *\r\n\r\n
\r\n
\r\n

Wallet:

\r\n

{address}

\r\n
\r\n \r\n
\r\n
\r\n )}\r\n
*/}\r\n \r\n \r\n
\r\n\r\n \r\n
\r\n \r\n
\r\n \r\n \"Twitter\"\r\n \r\n \r\n \"Telegram\"\r\n \r\n \r\n \"Facebook\"\r\n \r\n
\r\n
\r\n
\r\n {loggedIn && (\r\n
\r\n

\r\n \"Wallet{\" \"}\r\n {delegationContract}\r\n

\r\n
\r\n )}\r\n \r\n \"Exit\"\r\n \r\n
\r\n
\r\n
\r\n \r\n\r\n
\r\n \r\n );\r\n};\r\n\r\nexport default Navbar;\r\n","import BigNumber from \"bignumber.js\";\r\nimport denominate from \"components/Denominate/formatters\";\r\nimport { denomination, decimals, auctionContract, network } from \"config\";\r\nimport { useContext, useDispatch } from \"context\";\r\nimport { emptyAgencyMetaData } from \"context/state\";\r\nimport { contractViews } from \"contracts/ContractViews\";\r\nimport {\r\n AgencyMetadata,\r\n ContractOverview,\r\n NetworkConfig,\r\n NetworkStake,\r\n Stats,\r\n} from \"helpers/contractDataDefinitions\";\r\nimport React from \"react\";\r\nimport { calculateAPR } from \"./APRCalculation\";\r\nimport Footer from \"./Footer\";\r\nimport Navbar from \"./Navbar\";\r\nimport axios from \"axios\";\r\nimport {\r\n QueryResponse,\r\n decodeUnsignedNumber,\r\n decodeBigNumber,\r\n decodeString,\r\n} from \"@elrondnetwork/erdjs\";\r\n\r\nimport loginBackground from \"assets/images/login-body-bg.jpg\";\r\n\r\nconst getStakingSCBalance = async (): Promise => {\r\n const result = await axios.get(\r\n `${network.apiAddress}/accounts/${auctionContract}`\r\n );\r\n if (result.status) {\r\n return result.data.balance;\r\n } else {\r\n return \"N/A\";\r\n }\r\n};\r\n\r\nconst Layout = ({\r\n children,\r\n page,\r\n}: {\r\n children: React.ReactNode;\r\n page: string;\r\n}) => {\r\n const dispatch = useDispatch();\r\n const { dapp, delegationContract } = useContext();\r\n const {\r\n getContractConfig,\r\n getTotalActiveStake,\r\n getBlsKeys,\r\n getNumUsers,\r\n getMetaData,\r\n getDelegationManagerContractConfig,\r\n } = contractViews;\r\n\r\n const getContractOverviewType = (value: QueryResponse) => {\r\n let untypedResponse = value.outputUntyped();\r\n let initialOwnerFunds = denominate({\r\n decimals,\r\n denomination,\r\n input: decodeBigNumber(untypedResponse[3]).toFixed(),\r\n });\r\n return new ContractOverview(\r\n untypedResponse[0].toString(\"hex\"),\r\n (decodeUnsignedNumber(untypedResponse[1]) / 100).toString(),\r\n decodeBigNumber(untypedResponse[2]).toFixed(),\r\n initialOwnerFunds,\r\n decodeString(untypedResponse[4]),\r\n decodeString(untypedResponse[5]),\r\n decodeString(untypedResponse[6]),\r\n decodeString(untypedResponse[7]),\r\n decodeString(untypedResponse[8]),\r\n decodeUnsignedNumber(untypedResponse[9]) * 6\r\n );\r\n };\r\n\r\n const getAgencyMetaDataType = (value: QueryResponse) => {\r\n if (value && value.returnData && value.returnData.length === 0) {\r\n return emptyAgencyMetaData;\r\n }\r\n const untypedResponse = value.outputUntyped();\r\n return new AgencyMetadata(\r\n decodeString(untypedResponse[0]),\r\n decodeString(untypedResponse[1]),\r\n decodeString(untypedResponse[2])\r\n );\r\n };\r\n React.useEffect(\r\n () => {\r\n Promise.all([\r\n getMetaData(dapp, delegationContract),\r\n getNumUsers(dapp, delegationContract),\r\n getContractConfig(dapp, delegationContract),\r\n getTotalActiveStake(dapp, delegationContract),\r\n getBlsKeys(dapp, delegationContract),\r\n dapp.apiProvider.getNetworkStats(),\r\n dapp.apiProvider.getNetworkStake(),\r\n dapp.proxy.getNetworkConfig(),\r\n dapp.proxy.getNetworkStatus(),\r\n getDelegationManagerContractConfig(dapp),\r\n ])\r\n .then(\r\n async ([\r\n metaData,\r\n numUsers,\r\n contractOverview,\r\n activeStake,\r\n blsKeysResponse,\r\n networkStats,\r\n networkStake,\r\n networkConfig,\r\n networkStatus,\r\n delegationManager,\r\n ]) => {\r\n dispatch({\r\n type: \"setNumUsers\",\r\n numUsers: decodeUnsignedNumber(numUsers.outputUntyped()[0]),\r\n });\r\n dispatch({\r\n type: \"setMinDelegationAmount\",\r\n minDelegationAmount: decodeUnsignedNumber(\r\n delegationManager.outputUntyped()[0]\r\n ),\r\n });\r\n const contract = getContractOverviewType(contractOverview);\r\n dispatch({\r\n type: \"setContractOverview\",\r\n contractOverview: contract,\r\n });\r\n dispatch({\r\n type: \"setAgencyMetaData\",\r\n agencyMetaData: getAgencyMetaDataType(metaData),\r\n });\r\n dispatch({\r\n type: \"setTotalActiveStake\",\r\n totalActiveStake: decodeBigNumber(\r\n activeStake.outputUntyped()[0]\r\n ).toFixed(),\r\n });\r\n dispatch({\r\n type: \"setNumberOfActiveNodes\",\r\n numberOfActiveNodes: blsKeysResponse\r\n .outputUntyped()\r\n .filter((key) => decodeString(key) === \"staked\")\r\n .length.toString(),\r\n });\r\n dispatch({\r\n type: \"setNetworkConfig\",\r\n networkConfig: new NetworkConfig(\r\n networkConfig.TopUpFactor,\r\n networkConfig.RoundDuration,\r\n networkConfig.RoundsPerEpoch,\r\n networkStatus.RoundsPassedInCurrentEpoch,\r\n new BigNumber(networkConfig.TopUpRewardsGradientPoint),\r\n networkConfig.ChainID\r\n ),\r\n });\r\n const stakingBalance = await getStakingSCBalance(); // Delete it after we migrate to erdjs 4.x\r\n const APR = parseFloat(\r\n calculateAPR({\r\n stats: new Stats(networkStats.Epoch),\r\n networkConfig: new NetworkConfig(\r\n networkConfig.TopUpFactor,\r\n networkConfig.RoundDuration,\r\n networkConfig.RoundsPerEpoch,\r\n networkStatus.RoundsPassedInCurrentEpoch,\r\n new BigNumber(networkConfig.TopUpRewardsGradientPoint),\r\n networkConfig.ChainID\r\n ),\r\n networkStake: new NetworkStake(\r\n networkStake.TotalValidators,\r\n networkStake.ActiveValidators,\r\n networkStake.QueueSize,\r\n new BigNumber(stakingBalance) // Replace with the economics value from erdjs 4.x\r\n ),\r\n blsKeys: blsKeysResponse.outputUntyped(),\r\n totalActiveStake: decodeBigNumber(\r\n activeStake.outputUntyped()[0]\r\n ).toFixed(),\r\n })\r\n );\r\n\r\n dispatch({\r\n type: \"setAprPercentage\",\r\n aprPercentage: (\r\n APR -\r\n APR *\r\n ((contract && contract.serviceFee\r\n ? parseFloat(contract.serviceFee)\r\n : 0) /\r\n 100)\r\n )\r\n .toFixed(2)\r\n .toString(),\r\n });\r\n }\r\n )\r\n .catch((e) => {\r\n console.error(\"To do \", e);\r\n });\r\n },\r\n /* eslint-disable react-hooks/exhaustive-deps */ []\r\n );\r\n\r\n return (\r\n
\r\n {page !== \"home\" && }\r\n
\r\n
{children}
\r\n
\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default Layout;\r\n","import React from 'react';\r\nimport { useContext } from '../../context';\r\nimport denominate from './formatters';\r\n\r\ninterface DenominateType {\r\n value: string;\r\n showLastNonZeroDecimal?: boolean;\r\n showErd?: boolean;\r\n decimals?: number;\r\n}\r\n\r\nconst Denominate = ({\r\n value,\r\n showLastNonZeroDecimal = false,\r\n showErd = true,\r\n decimals,\r\n}: DenominateType) => {\r\n const { denomination, decimals: configDecimals, egldLabel } = useContext();\r\n\r\n decimals = decimals !== undefined ? decimals : configDecimals;\r\n\r\n const denominatedValue = denominate({\r\n input: value,\r\n denomination,\r\n decimals,\r\n showLastNonZeroDecimal,\r\n });\r\n\r\n const valueParts = denominatedValue.split('.');\r\n const hasNoDecimals = valueParts.length === 1;\r\n const isNotZero = denominatedValue !== '0';\r\n\r\n if (decimals > 0 && hasNoDecimals && isNotZero) {\r\n let zeros = '';\r\n\r\n for (let i = 1; i <= decimals; i++) {\r\n zeros = zeros + '0';\r\n }\r\n\r\n valueParts.push(zeros);\r\n }\r\n\r\n return (\r\n \r\n {valueParts[0]}\r\n {valueParts.length > 1 && .{valueParts[1]}}\r\n {showErd &&  {egldLabel}}\r\n \r\n );\r\n};\r\n\r\nexport default Denominate;\r\n","interface SubmitAndCloseButtonsType {\r\n action: string;\r\n actionTitle: string;\r\n isHandleActionDisabled?: boolean;\r\n handleClose: () => void;\r\n}\r\n\r\nconst ModalActionButton = ({\r\n action,\r\n actionTitle,\r\n isHandleActionDisabled,\r\n handleClose,\r\n}: SubmitAndCloseButtonsType) => {\r\n return (\r\n <>\r\n
\r\n \r\n {actionTitle}\r\n \r\n \r\n
\r\n \r\n );\r\n};\r\n\r\nexport default ModalActionButton;\r\n","import React, { useState } from \"react\";\r\nimport { ErrorMessage, Formik } from \"formik\";\r\nimport BigNumber from \"bignumber.js\";\r\nimport { object, string } from \"yup\";\r\nimport { Modal } from \"react-bootstrap\";\r\nimport { useContext } from \"context\";\r\nimport Denominate from \"components/Denominate\";\r\nimport { entireBalance } from \"helpers\";\r\nimport { denomination, decimals } from \"config\";\r\nimport denominate from \"components/Denominate/formatters\";\r\nimport ModalActionButton from \"components/ModalActionButton\";\r\n\r\ninterface DelegateModalType {\r\n show: boolean;\r\n balance: string;\r\n handleClose: () => void;\r\n handleContinue: (value: string) => void;\r\n}\r\n\r\nconst DelegateModal = ({\r\n show,\r\n balance,\r\n handleClose,\r\n handleContinue,\r\n}: DelegateModalType) => {\r\n const {\r\n egldLabel,\r\n contractOverview,\r\n totalActiveStake,\r\n minDelegationAmount,\r\n } = useContext();\r\n const [\r\n displayDelegationCapMessage,\r\n setDisplayDelegationCapMessage,\r\n ] = useState(false);\r\n const [maxPressed, setMaxPressed] = React.useState(false);\r\n\r\n const { entireBalance: available, entireBalanceMinusDust } = entireBalance({\r\n balance: balance,\r\n gasPrice: \"12000000\",\r\n gasLimit: \"12000000\",\r\n denomination,\r\n decimals,\r\n });\r\n\r\n const isFullDelegationCapContract = () => {\r\n const bnTotalActiveStake = new BigNumber(totalActiveStake);\r\n const bnMaxDelegationCap = new BigNumber(contractOverview.maxDelegationCap);\r\n return (\r\n bnTotalActiveStake.comparedTo(bnMaxDelegationCap) >= 0 &&\r\n contractOverview.maxDelegationCap !== String(0)\r\n );\r\n };\r\n\r\n const getAvailableToDelegate = () => {\r\n if (contractOverview && contractOverview.withDelegationCap === \"true\") {\r\n const bnAvailable = new BigNumber(entireBalanceMinusDust);\r\n const totalActive = denominate({\r\n input: totalActiveStake,\r\n denomination,\r\n decimals,\r\n }).replace(/,/g, \"\");\r\n const maxDelegationCap = denominate({\r\n input: contractOverview.maxDelegationCap,\r\n denomination,\r\n decimals,\r\n }).replace(/,/g, \"\");\r\n const availableToDelegate = new BigNumber(maxDelegationCap).minus(\r\n new BigNumber(totalActive)\r\n );\r\n if (bnAvailable.comparedTo(availableToDelegate) >= 0) {\r\n setDisplayDelegationCapMessage(true);\r\n return availableToDelegate.toFixed();\r\n }\r\n }\r\n return entireBalanceMinusDust;\r\n };\r\n\r\n const handleOnShow = () => {\r\n setDisplayDelegationCapMessage(false);\r\n setMaxPressed(false);\r\n };\r\n\r\n return (\r\n \r\n
\r\n
\r\n

\r\n Delegate now\r\n

\r\n {isFullDelegationCapContract() ? (\r\n

\r\n The maximum delegation cap was reached you can not delegate more\r\n

\r\n ) : (\r\n

{`Select the amount of ${egldLabel} you want to delegate.`}

\r\n )}\r\n {\r\n handleContinue(values.amount);\r\n }}\r\n validationSchema={object().shape({\r\n amount: string()\r\n .required(\"Required\")\r\n .test(\r\n \"minimum\",\r\n `Minimum ${denominate({\r\n input: minDelegationAmount.toFixed(),\r\n denomination,\r\n decimals,\r\n })} ${egldLabel}`,\r\n (value) => {\r\n const bnAmount = new BigNumber(\r\n value !== undefined ? value : \"\"\r\n );\r\n return bnAmount.comparedTo(1) >= 0;\r\n }\r\n )\r\n .test(\r\n \"maximum\",\r\n `Maximum ${available} ${egldLabel}`,\r\n (value) => {\r\n const bnAmount = new BigNumber(\r\n value !== undefined ? value : \"\"\r\n );\r\n const bnAvailable = new BigNumber(available);\r\n return bnAmount.comparedTo(bnAvailable) <= 0;\r\n }\r\n )\r\n .test(\r\n \"maximum\",\r\n \"Max delegation cap set, use the max button to delegate the maximum amount\",\r\n (value) => {\r\n const bnAmount = new BigNumber(\r\n value !== undefined ? value : \"\"\r\n );\r\n const bnAvailable = new BigNumber(getAvailableToDelegate());\r\n return bnAmount.comparedTo(bnAvailable) <= 0;\r\n }\r\n ),\r\n })}\r\n >\r\n {(props) => {\r\n const {\r\n handleSubmit,\r\n values,\r\n handleBlur,\r\n handleChange,\r\n setFieldValue,\r\n errors,\r\n touched,\r\n } = props;\r\n\r\n const getEntireBalance = (e: React.MouseEvent) => {\r\n e.preventDefault();\r\n if (entireBalanceMinusDust !== undefined) {\r\n setMaxPressed(true);\r\n const availableToDelegate = getAvailableToDelegate();\r\n setFieldValue(\"amount\", availableToDelegate);\r\n }\r\n };\r\n return (\r\n
\r\n {!isFullDelegationCapContract() && (\r\n
\r\n \r\n
\r\n \r\n {values.amount !== available && available !== \"0\" && (\r\n \r\n \r\n Max\r\n \r\n \r\n )}\r\n \r\n
\r\n {!(errors.amount && touched.amount) && (\r\n \r\n Available: \r\n \r\n )}\r\n {displayDelegationCapMessage && maxPressed && (\r\n \r\n Max delegation cap reached. That is the maximum amount\r\n you can delegate:{\" \"}\r\n \r\n )}\r\n
\r\n )}\r\n
\r\n \r\n
\r\n
\r\n );\r\n }}\r\n \r\n
\r\n
\r\n \r\n );\r\n};\r\n\r\nexport default DelegateModal;\r\n","import { useState } from \"react\";\r\nimport { useContext } from \"context\";\r\nimport DelegateModal from \"./DelegateModal\";\r\nimport { DelegationTransactionType } from \"helpers/contractDataDefinitions\";\r\nimport ConfirmTransactionModal from \"components/ConfirmTransactionModal\";\r\nimport { useDelegationWallet } from \"helpers/useDelegation\";\r\n\r\nconst DelegateAction = () => {\r\n const { account, ledgerAccount, walletConnectAccount } = useContext();\r\n const [showDelegateModal, setShowDelegateModal] = useState(false);\r\n const [showCheckYourLedgerModal, setShowCheckYourLedgerModal] = useState(\r\n false\r\n );\r\n const [transactionArguments, setTransactionArguments] = useState(\r\n new DelegationTransactionType(\"\", \"\")\r\n );\r\n const { sendTransactionWallet } = useDelegationWallet();\r\n\r\n const handleDelegate = (value: string) => {\r\n const txArguments = new DelegationTransactionType(value, \"delegate\");\r\n if (ledgerAccount || walletConnectAccount) {\r\n setShowDelegateModal(false);\r\n setTransactionArguments(txArguments);\r\n setShowCheckYourLedgerModal(true);\r\n } else {\r\n sendTransactionWallet(txArguments);\r\n }\r\n };\r\n\r\n return (\r\n
\r\n {\r\n setShowDelegateModal(true);\r\n }}\r\n className=\"btn btn-primary mb-3\"\r\n >\r\n { account.balance === String(0) ? (\r\n Delegate\r\n ) : (\r\n Stake more\r\n )}\r\n\r\n \r\n {\r\n setShowDelegateModal(false);\r\n }}\r\n handleContinue={handleDelegate}\r\n />\r\n {\r\n setShowCheckYourLedgerModal(false);\r\n }}\r\n />\r\n
\r\n );\r\n};\r\n\r\nexport default DelegateAction;\r\n","import React from 'react';\r\nimport { Modal } from 'react-bootstrap';\r\nimport { useContext } from 'context';\r\nimport BigNumber from 'bignumber.js';\r\nimport { ErrorMessage, Formik } from 'formik';\r\nimport { entireBalance } from 'helpers';\r\nimport Denominate from 'components/Denominate';\r\nimport { denomination, decimals } from 'config';\r\nimport { object, string } from 'yup';\r\nimport { ActionModalType } from 'helpers/types';\r\nimport denominate from 'components/Denominate/formatters';\r\nimport ModalActionButton from 'components/ModalActionButton';\r\n\r\nconst UndelegateModal = ({\r\n show,\r\n title,\r\n balance,\r\n description,\r\n handleClose,\r\n handleContinue,\r\n}: ActionModalType) => {\r\n const { egldLabel, minDelegationAmount } = useContext();\r\n const { entireBalance: available } = entireBalance({\r\n balance: balance as string,\r\n gasPrice: '0',\r\n gasLimit: '0',\r\n denomination,\r\n decimals,\r\n });\r\n\r\n const UndelegateSchema = object().shape({\r\n amount: string()\r\n .required('Required')\r\n .test(\r\n 'minimum',\r\n `Minimum ${denominate({\r\n input: minDelegationAmount.toFixed(),\r\n denomination,\r\n decimals,\r\n })} ${egldLabel}`,\r\n value => {\r\n const bnAmount = new BigNumber(value !== undefined ? value : '');\r\n return bnAmount.comparedTo(1) >= 0;\r\n }\r\n )\r\n .test('dustLeft', `You can not keep under 1 ${egldLabel}. Use the Max option.`, value => {\r\n const bnAmount = new BigNumber(value !== undefined ? value : '');\r\n const bnAvailable = new BigNumber(available);\r\n return (\r\n bnAvailable.minus(bnAmount).comparedTo(1) >= 0 || bnAvailable.comparedTo(bnAmount) === 0\r\n );\r\n }),\r\n });\r\n return (\r\n \r\n
\r\n
\r\n

\r\n {title}\r\n

\r\n

{description}

\r\n {\r\n handleContinue(values.amount.toString());\r\n }}\r\n validationSchema={UndelegateSchema}\r\n >\r\n {props => {\r\n const {\r\n handleSubmit,\r\n values,\r\n handleBlur,\r\n handleChange,\r\n setFieldValue,\r\n errors,\r\n touched,\r\n } = props;\r\n\r\n const getEntireBalance = (e: React.MouseEvent) => {\r\n e.preventDefault();\r\n if (available !== undefined) {\r\n setFieldValue('amount', available);\r\n }\r\n };\r\n\r\n return (\r\n
\r\n
\r\n \r\n
\r\n \r\n {values.amount !== available && available !== '0' && (\r\n \r\n \r\n Max\r\n \r\n \r\n )}\r\n \r\n
\r\n {!(errors.amount && touched.amount) && (\r\n \r\n Available: \r\n \r\n )}\r\n
\r\n \r\n \r\n );\r\n }}\r\n \r\n
\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default UndelegateModal;\r\n","import React, { useState } from \"react\";\r\nimport { useContext } from \"context\";\r\nimport { nominateValToHex } from \"helpers/nominate\";\r\nimport UndelegateModal from \"./UndelegateModal\";\r\nimport { DelegationTransactionType } from \"helpers/contractDataDefinitions\";\r\nimport { useDelegationWallet } from \"helpers/useDelegation\";\r\nimport ConfirmTransactionModal from \"components/ConfirmTransactionModal\";\r\n\r\ninterface UndelegateModalType {\r\n balance: string;\r\n}\r\n\r\nconst UndelegateAction = ({ balance }: UndelegateModalType) => {\r\n const { egldLabel, ledgerAccount, walletConnectAccount } = useContext();\r\n const [showModal, setShowModal] = useState(false);\r\n const [showCheckYourLedgerModal, setShowCheckYourLedgerModal] = useState(\r\n false\r\n );\r\n const [transactionArguments, setTransactionArguments] = useState(\r\n new DelegationTransactionType(\"\", \"\")\r\n );\r\n const { sendTransactionWallet } = useDelegationWallet();\r\n\r\n const handleUndelegate = (value: string) => {\r\n let txArguments = new DelegationTransactionType(\r\n \"0\",\r\n \"unDelegate\",\r\n nominateValToHex(value)\r\n );\r\n if (ledgerAccount || walletConnectAccount) {\r\n setShowModal(false);\r\n setTransactionArguments(txArguments);\r\n setShowCheckYourLedgerModal(true);\r\n } else {\r\n sendTransactionWallet(txArguments);\r\n }\r\n };\r\n return (\r\n
\r\n
\r\n setShowModal(true)}\r\n className=\"btn btn-primary ml-3 mb-3\"\r\n >\r\n Unstake\r\n \r\n {\r\n setShowModal(false);\r\n }}\r\n handleContinue={handleUndelegate}\r\n />\r\n {\r\n setShowCheckYourLedgerModal(false);\r\n }}\r\n />\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default UndelegateAction;\r\n","import React, { useState } from \"react\";\r\nimport { Modal } from \"react-bootstrap\";\r\nimport { useContext } from \"context\";\r\nimport BigNumber from \"bignumber.js\";\r\nimport { DelegationTransactionType } from \"helpers/contractDataDefinitions\";\r\nimport { useDelegationWallet } from \"helpers/useDelegation\";\r\nimport ConfirmTransactionModal from \"components/ConfirmTransactionModal\";\r\nexport interface ClaimRewardsModalType {\r\n show: boolean;\r\n title: string;\r\n description: string;\r\n handleClose: () => void;\r\n}\r\nconst ClaimRewardsModal = ({\r\n show,\r\n title,\r\n description,\r\n handleClose,\r\n}: ClaimRewardsModalType) => {\r\n const {\r\n totalActiveStake,\r\n contractOverview,\r\n ledgerAccount,\r\n walletConnectAccount,\r\n } = useContext();\r\n const [showCheckYourLedgerModal, setShowCheckYourLedgerModal] = useState(\r\n false\r\n );\r\n const [transactionArguments, setTransactionArguments] = useState(\r\n new DelegationTransactionType(\"\", \"\")\r\n );\r\n const { sendTransactionWallet } = useDelegationWallet();\r\n\r\n const handleClaimRewards = (): void => {\r\n let txArguments = new DelegationTransactionType(\"0\", \"claimRewards\");\r\n if (ledgerAccount || walletConnectAccount) {\r\n handleClose();\r\n setTransactionArguments(txArguments);\r\n setShowCheckYourLedgerModal(true);\r\n } else {\r\n sendTransactionWallet(txArguments);\r\n }\r\n };\r\n\r\n const isRedelegateEnable = () => {\r\n const bnTotalActiveStake = new BigNumber(totalActiveStake);\r\n const bnMaxDelegationCap = new BigNumber(contractOverview.maxDelegationCap);\r\n if (\r\n bnTotalActiveStake.comparedTo(bnMaxDelegationCap) >= 0 &&\r\n contractOverview.reDelegationCap === \"true\"\r\n ) {\r\n return false;\r\n }\r\n return true;\r\n };\r\n\r\n const handleRedelegateRewards = () => {\r\n let txArguments = new DelegationTransactionType(\"0\", \"reDelegateRewards\");\r\n if (ledgerAccount || walletConnectAccount) {\r\n handleClose();\r\n setTransactionArguments(txArguments);\r\n setShowCheckYourLedgerModal(true);\r\n } else {\r\n sendTransactionWallet(txArguments);\r\n }\r\n };\r\n\r\n return (\r\n <>\r\n \r\n
\r\n
\r\n

\r\n {title}\r\n

\r\n

{description}

\r\n
\r\n {\r\n handleClaimRewards();\r\n }}\r\n >\r\n Claim Rewards\r\n \r\n {isRedelegateEnable() && (\r\n {\r\n handleRedelegateRewards();\r\n }}\r\n >\r\n Restake Rewards\r\n \r\n )}\r\n
\r\n \r\n Close\r\n \r\n
\r\n
\r\n \r\n {\r\n setShowCheckYourLedgerModal(false);\r\n }}\r\n />\r\n \r\n );\r\n};\r\n\r\nexport default ClaimRewardsModal;\r\n","import React, { useState } from \"react\";\r\nimport ClaimRewardsModal from \"./ClaimRewardsModal\";\r\n\r\nconst ClaimRewardsAction = () => {\r\n const [showClaimRewardsModal, setShowClaimRewardsModal] = useState(false);\r\n\r\n return (\r\n
\r\n
\r\n {\r\n setShowClaimRewardsModal(true);\r\n }}\r\n className=\"btn btn-primary mt-2\"\r\n >\r\n Claim Rewards\r\n \r\n {\r\n setShowClaimRewardsModal(false);\r\n }}\r\n />\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default ClaimRewardsAction;\r\n","import * as React from 'react';\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\r\n\r\nconst State = ({\r\n icon,\r\n iconClass,\r\n title,\r\n description,\r\n action,\r\n extraClass\r\n}: {\r\n icon?: any;\r\n iconClass?: string;\r\n title?: string;\r\n description?: string | React.ReactNode;\r\n action?: React.ReactNode;\r\n extraClass?: string;\r\n}) => (\r\n
\r\n {icon && }\r\n {title &&

{title}

}\r\n {description &&
{description}
}\r\n {action && <>{action}}\r\n
\r\n);\r\n\r\nexport default State;\r\n","import React, { useState, useEffect } from 'react';\r\nimport axios from \"axios\";\r\nimport ReactApexChart from \"react-apexcharts\";\r\nimport { ApexOptions } from \"apexcharts\";\r\n\r\nconst getTotalActiveStake = async (): Promise => {\r\n\r\n var totalActiveStake: any[] = [];\r\n var date = new Date();\r\n date.setMonth(date.getMonth() - 5);\r\n\r\n const result = await axios.get(\r\n `https://api-v2.egldscan.com/staking-providers/period?contract=erd1qqqqqqqqqqqqqqqpqqqqqqqqqqqqqqqqqqqqqqqqqqqqqphllllsndz99p&dateStart=` + date.getTime() + `&dateEnd=` + Date.now()\r\n );\r\n\r\n let months: number[] = [];\r\n let k = 0;\r\n if (result) {\r\n Object.values(result.data).forEach(val => {\r\n // @ts-ignore\r\n let dateFormat = new Date(val.timestamp);\r\n let currentDate = new Date( Date.now());\r\n\r\n // @ts-ignore\r\n if(!months.includes(dateFormat.getMonth()) && dateFormat.getMonth() !== currentDate.getMonth()){\r\n months.push(dateFormat.getMonth());\r\n // @ts-ignore\r\n totalActiveStake.push(parseInt(val.totalActiveStake / 1000000000000000000));\r\n }\r\n k++;\r\n if(result.data.length === k){\r\n // add last value - the most recent\r\n // @ts-ignore\r\n totalActiveStake.push(parseInt(val.totalActiveStake / 1000000000000000000));\r\n }\r\n });\r\n\r\n return totalActiveStake;\r\n }\r\n\r\n return [];\r\n};\r\n\r\nconst StakeGraph = () => {\r\n\r\n const [totalActiveStake, setTotalActiveStake] = useState([]);\r\n\r\n\r\n React.useEffect( () => {\r\n if(totalActiveStake.length === 0) {\r\n getTotalActiveStake().then((totalActiveStake) => setTotalActiveStake(totalActiveStake));\r\n }\r\n });\r\n let totalActiveStakeToday = parseInt(totalActiveStake[totalActiveStake.length-1]).toLocaleString();\r\n\r\n\r\n const months = [\r\n 'January',\r\n 'February',\r\n 'March',\r\n 'April',\r\n 'May',\r\n 'June',\r\n 'July ',\r\n 'August',\r\n 'September',\r\n 'October',\r\n 'November',\r\n 'December'\r\n ];\r\n const d = new Date();\r\n let month = months[d.getMonth()];\r\n\r\n let llabels = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun'];\r\n\r\n if(month === 'January') {\r\n llabels = ['Aug', 'Sep', 'Oct', 'Nov', 'Dec', 'Jan'];\r\n }\r\n if(month === 'February') {\r\n llabels = [ 'Sep', 'Oct', 'Nov', 'Dec', 'Jan', 'Feb'];\r\n }\r\n if(month === 'March') {\r\n llabels = ['Oct', 'Nov', 'Dec','Jan', 'Feb', 'Mar'];\r\n }\r\n if(month === 'April') {\r\n llabels = ['Nov', 'Dec','Jan', 'Feb', 'Mar', 'Apr'];\r\n }\r\n if(month === 'May') {\r\n llabels = ['Dec', 'Jan', 'Feb', 'Mar', 'Apr', 'May'];\r\n }\r\n if(month === 'June') {\r\n llabels = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun'];\r\n }\r\n if(month === 'July') {\r\n llabels = ['Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul'];\r\n }\r\n if(month === 'August') {\r\n llabels = ['Mar', 'Apr', 'May', 'Jun', 'Jul ', 'Aug'];\r\n }\r\n if(month === 'September') {\r\n llabels = ['Apr', 'May', 'Jun', 'Jul ', 'Aug', 'Sep'];\r\n }\r\n if(month === 'October') {\r\n llabels = ['May', 'Jun', 'Jul ', 'Aug', 'Sep', 'Oct'];\r\n }\r\n if(month === 'November') {\r\n llabels = ['Jun', 'Jul ', 'Aug', 'Sep', 'Oct', 'Nov'];\r\n }\r\n if(month === 'December') {\r\n llabels = ['Jul ', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];\r\n }\r\n\r\n\r\n const options: ApexOptions = {\r\n chart: {\r\n height: 330,\r\n type: 'area',\r\n zoom: {\r\n enabled: false\r\n },\r\n toolbar: {\r\n show: false\r\n },\r\n },\r\n grid: {\r\n show: true,\r\n borderColor: '#101010',\r\n row: {\r\n opacity: 1\r\n },\r\n column: {\r\n opacity: 0\r\n },\r\n xaxis: {\r\n lines: {\r\n show: true\r\n }\r\n },\r\n yaxis: {\r\n lines: {\r\n show: false\r\n }\r\n },\r\n padding: {\r\n top: 0,\r\n right: 15,\r\n bottom: 0,\r\n left: 30\r\n },\r\n },\r\n markers: {\r\n colors: ['#fdb25a', '#fdb25a', '#fdb25a']\r\n },\r\n fill: {\r\n type: \"gradient\",\r\n gradient: {\r\n shade: \"light\",\r\n type: \"vertical\",\r\n shadeIntensity: 0,\r\n opacityFrom: 0.4,\r\n opacityTo: 0\r\n }\r\n },\r\n colors: ['#fdb25a', '#fdb25a', '#fdb25a'],\r\n dataLabels: {\r\n enabled: false\r\n },\r\n stroke: {\r\n curve: 'smooth'\r\n },\r\n xaxis: {\r\n crosshairs: {\r\n show: false\r\n },\r\n labels: {\r\n style: {\r\n colors: ['#C2C2C2', '#C2C2C2', '#C2C2C2', '#C2C2C2', '#C2C2C2', '#C2C2C2', '#C2C2C2', '#C2C2C2', '#C2C2C2', '#C2C2C2', '#C2C2C2', '#C2C2C2'],\r\n fontSize: '12px',\r\n fontFamily: 'Helvetica, Arial, sans-serif',\r\n fontWeight: 400,\r\n cssClass: 'apexcharts-xaxis-label',\r\n }\r\n }\r\n },\r\n yaxis: {\r\n opposite: false,\r\n crosshairs: {\r\n show: false\r\n },\r\n labels: {\r\n style: {\r\n colors: ['#C2C2C2', '#C2C2C2', '#C2C2C2', '#C2C2C2', '#C2C2C2', '#C2C2C2', '#C2C2C2'],\r\n fontSize: '12px',\r\n fontFamily: 'Helvetica, Arial, sans-serif',\r\n fontWeight: 400,\r\n cssClass: 'apexcharts-xaxis-label',\r\n }\r\n }\r\n },\r\n labels: llabels,\r\n tooltip: {\r\n theme: 'dark',\r\n custom: function ({series, seriesIndex, dataPointIndex, w}) {\r\n return '
' +\r\n '' + series[seriesIndex][dataPointIndex] + '' +\r\n '
'\r\n }\r\n },\r\n\r\n };\r\n\r\n const series = [\r\n {\r\n data: totalActiveStake\r\n }\r\n ];\r\n return (\r\n <>\r\n

Contract stake

\r\n

{totalActiveStakeToday} EGLD

\r\n\r\n \r\n \r\n );\r\n};\r\n\r\nexport default StakeGraph;\r\n","export default __webpack_public_path__ + \"static/media/lock-icon.ef948081.svg\";","export default __webpack_public_path__ + \"static/media/trophy-icon.2d1ac8f8.svg\";","import * as React from \"react\";\r\nimport { useContext, useDispatch } from \"context\";\r\nimport denominate from \"components/Denominate/formatters\";\r\nimport DelegateAction from \"../Actions/DelegateAction\";\r\nimport UndelegateAction from \"../Actions/UndelegateAction\";\r\nimport { contractViews } from \"contracts/ContractViews\";\r\nimport ClaimRewardsAction from \"../Actions/ClaimRewardsAction\";\r\nimport { faCircleNotch } from \"@fortawesome/free-solid-svg-icons\";\r\nimport State from \"components/State\";\r\nimport { denomination, decimals, network, auctionContract } from \"config\";\r\nimport { decodeBigNumber, decodeUnsignedNumber } from \"@elrondnetwork/erdjs\";\r\nimport axios from \"axios\";\r\nimport StakeGraph from \"../../../components/StakeGraph\";\r\nimport lockIcon from \"../../../assets/images/lock-icon.svg\";\r\nimport trophyIcon from \"../../../assets/images/trophy-icon.svg\";\r\n\r\nconst MyDelegation = () => {\r\n const {\r\n dapp,\r\n address,\r\n egldLabel,\r\n delegationContract,\r\n loading,\r\n } = useContext();\r\n const dispatch = useDispatch();\r\n const { getClaimableRewards, getUserActiveStake } = contractViews;\r\n const [userActiveStake, setUserActiveStake] = React.useState(\"0\");\r\n const [\r\n userActiveNominatedStake,\r\n setUserActiveNominatedStake,\r\n ] = React.useState(\"0\");\r\n const [claimableRewards, setClaimableRewards] = React.useState(\"0\");\r\n const [displayRewards, setDisplayRewards] = React.useState(false);\r\n const [displayUndelegate, setDisplayUndelegate] = React.useState(false);\r\n\r\n const getAllData = () => {\r\n dispatch({ type: \"loading\", loading: true });\r\n getClaimableRewards(dapp, address, delegationContract)\r\n .then((value) => {\r\n const untypedResponse = value.outputUntyped();\r\n if (\r\n untypedResponse.length > 0 &&\r\n decodeUnsignedNumber(untypedResponse[0]) !== 0\r\n ) {\r\n setDisplayRewards(true);\r\n }\r\n setClaimableRewards(\r\n denominate({\r\n denomination,\r\n decimals: 4,\r\n input: decodeBigNumber(untypedResponse[0]).toFixed(),\r\n }) || \"\"\r\n );\r\n })\r\n .catch((e) => console.error(\"getClaimableRewards error\", e));\r\n getUserActiveStake(dapp, address, delegationContract)\r\n .then((value) => {\r\n const untypedResponse = value.outputUntyped();\r\n setUserActiveStake(\r\n denominate({\r\n denomination,\r\n decimals,\r\n input: decodeBigNumber(untypedResponse[0]).toFixed(),\r\n }) || \"\"\r\n );\r\n setUserActiveNominatedStake(\r\n decodeBigNumber(untypedResponse[0]).toFixed()\r\n );\r\n if (\r\n untypedResponse.length > 0 &&\r\n decodeUnsignedNumber(untypedResponse[0]) !== 0\r\n ) {\r\n setDisplayUndelegate(true);\r\n }\r\n\r\n dispatch({ type: \"loading\", loading: false });\r\n })\r\n .catch((e) => {\r\n console.error(\"getUserActiveStake error\", e);\r\n dispatch({\r\n type: \"loading\",\r\n loading: false,\r\n });\r\n });\r\n };\r\n\r\n React.useEffect(\r\n getAllData,\r\n /* eslint-disable react-hooks/exhaustive-deps */ []\r\n );\r\n\r\n return (\r\n <>\r\n {loading ? (\r\n \r\n ) : (\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n

My Stake

\r\n

Welcome to our delegation platform.

\r\n

Currently, you don't have any EGLD staked.

\r\n
\r\n
\r\n
\r\n
\r\n
\r\n {/*

Active Delegation

*/}\r\n

\r\n {userActiveStake} {egldLabel}\r\n

\r\n
\r\n {/*

~$0

*/}\r\n

\r\n \"Lock My stake\r\n

\r\n {userActiveStake !== String(0) && (\r\n
\r\n
\r\n {displayUndelegate && (\r\n \r\n )}\r\n
\r\n\r\n \r\n
\r\n )}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n

\r\n {claimableRewards} {egldLabel}\r\n

\r\n {/*

~$0

*/}\r\n

\r\n \"Trophy\r\n Claimable rewards\r\n

\r\n
\r\n {displayRewards ? : null}\r\n
\r\n
\r\n {userActiveStake === String(0) ? (\r\n }\r\n extraClass=\"pb-0-important\"\r\n />\r\n ) : ('')}\r\n
\r\n\r\n
\r\n
\r\n
\r\n )}\r\n \r\n );\r\n};\r\n\r\nexport default MyDelegation;\r\n","import React, { useEffect, useState } from \"react\";\r\nimport moment from \"moment\";\r\nimport { useContext } from \"context\";\r\nimport { UndelegatedValueType } from \"./UndelegatedValueType\";\r\nimport { DelegationTransactionType } from \"helpers/contractDataDefinitions\";\r\nimport { useDelegationWallet } from \"helpers/useDelegation\";\r\nimport ConfirmTransactionModal from \"components/ConfirmTransactionModal\";\r\n\r\nconst UndelegatedValueRow = ({\r\n undelegatedValue: value,\r\n}: {\r\n undelegatedValue: UndelegatedValueType;\r\n}) => {\r\n const [isDisabled, setIsDisabled] = React.useState(true);\r\n const { egldLabel, ledgerAccount, walletConnectAccount } = useContext();\r\n const [counter, setCounter] = React.useState(value.timeLeft);\r\n const [showCheckYourLedgerModal, setShowCheckYourLedgerModal] = useState(\r\n false\r\n );\r\n const [transactionArguments, setTransactionArguments] = useState(\r\n new DelegationTransactionType(\"\", \"\")\r\n );\r\n const { sendTransactionWallet } = useDelegationWallet();\r\n\r\n const handleWithdraw = () => {\r\n let txArguments = new DelegationTransactionType(\"0\", \"withdraw\");\r\n if (ledgerAccount || walletConnectAccount) {\r\n setTransactionArguments(txArguments);\r\n setShowCheckYourLedgerModal(true);\r\n } else {\r\n sendTransactionWallet(txArguments);\r\n }\r\n };\r\n\r\n useEffect(() => {\r\n counter > 0 && setTimeout(() => setCounter(counter - 1), 1000);\r\n counter === 0 && setIsDisabled(false);\r\n }, [counter]);\r\n\r\n const getTimeLeft = () => {\r\n if (counter === 0) setCounter(value.timeLeft);\r\n let waitingStartDate = moment.duration(counter, \"seconds\");\r\n if (waitingStartDate.asDays() >= 1) {\r\n return (waitingStartDate.asDays() | 0) + \" days\";\r\n }\r\n const timeLeftInMiliseconds = waitingStartDate.asMilliseconds();\r\n return moment.utc(timeLeftInMiliseconds).format(\"HH:mm:ss\");\r\n };\r\n return (\r\n <>\r\n \r\n \r\n
\r\n {value.value} {egldLabel}\r\n
\r\n \r\n \r\n
\r\n {value.timeLeft > 0 ? (\r\n \r\n {getTimeLeft()} left\r\n \r\n ) : (\r\n \r\n Completed\r\n \r\n )}\r\n
\r\n \r\n \r\n \r\n Withdraw\r\n \r\n \r\n \r\n {\r\n setShowCheckYourLedgerModal(false);\r\n }}\r\n />\r\n \r\n );\r\n};\r\nexport default UndelegatedValueRow;\r\n","export class UndelegatedValueType {\r\n value: string;\r\n timeLeft: number;\r\n public constructor(value: string, timeLeft: number) {\r\n this.value = value;\r\n this.timeLeft = timeLeft;\r\n }\r\n}\r\n","import {\r\n QueryResponse,\r\n decodeBigNumber,\r\n decodeString,\r\n decodeUnsignedNumber,\r\n} from \"@elrondnetwork/erdjs\";\r\nimport * as React from \"react\";\r\nimport { useContext } from \"context\";\r\nimport { contractViews } from \"contracts/ContractViews\";\r\nimport denominate from \"components/Denominate/formatters\";\r\nimport { denomination, decimals } from \"config\";\r\nimport UndelegatedValueRow from \"./UndelegatedValueRow\";\r\nimport { UndelegatedValueType } from \"./UndelegatedValueType\";\r\n\r\nconst UndelegatedListView = () => {\r\n const { dapp, address, delegationContract, networkConfig } = useContext();\r\n const { getUserUnDelegatedList } = contractViews;\r\n const [userUnstakeValue, setUserUnstakedValue] = React.useState(\r\n Array()\r\n );\r\n\r\n const denomintateValue = (value: string): string => {\r\n return denominate({ denomination, decimals, input: value });\r\n };\r\n\r\n const getTimeLeft = (\r\n value: QueryResponse,\r\n index: number,\r\n timeLeft: number\r\n ) => {\r\n const untypedResponse = value.outputUntyped();\r\n let roundsRemainingInEpoch =\r\n networkConfig.roundsPerEpoch - networkConfig.roundsPassedInCurrentEpoch;\r\n let roundEpochComplete = 0;\r\n let epochsChangesRemaining = decodeUnsignedNumber(\r\n untypedResponse[index + 1]\r\n );\r\n if (epochsChangesRemaining > 1) {\r\n roundEpochComplete =\r\n (epochsChangesRemaining - 1) * networkConfig.roundsPerEpoch;\r\n } else {\r\n roundEpochComplete = 0;\r\n }\r\n\r\n let totalRounds = roundsRemainingInEpoch + roundEpochComplete;\r\n timeLeft = (totalRounds * networkConfig.roundDuration) / 1000;\r\n return timeLeft;\r\n };\r\n\r\n const mapUndelegetedValueType = (\r\n value: QueryResponse,\r\n index: number,\r\n undelegatedList: UndelegatedValueType[]\r\n ) => {\r\n let timeLeft = 0;\r\n const untypedResponse = value.outputUntyped();\r\n if (decodeString(untypedResponse[index + 1]) !== \"\") {\r\n timeLeft = getTimeLeft(value, index, timeLeft);\r\n }\r\n const element = new UndelegatedValueType(\r\n denomintateValue(decodeBigNumber(untypedResponse[index]).toFixed()),\r\n timeLeft\r\n );\r\n undelegatedList.push(element);\r\n return index;\r\n };\r\n\r\n const groupUndelegateValuesForTimeLeftZero = (\r\n undelegatedList: UndelegatedValueType[]\r\n ) => {\r\n let arrayWithdraw = undelegatedList.filter((x) => x.timeLeft !== 0);\r\n const withdrawValue = undelegatedList\r\n .filter((x) => x.timeLeft === 0)\r\n .reduce((a, b) => a + (parseInt(b.value.replace(/,/g, \"\")) || 0), 0);\r\n if (withdrawValue !== 0) {\r\n arrayWithdraw.push(new UndelegatedValueType(withdrawValue.toString(), 0));\r\n }\r\n return arrayWithdraw;\r\n };\r\n\r\n const getUserUnDelegated = () => {\r\n getUserUnDelegatedList(dapp, address, delegationContract)\r\n .then((value) => {\r\n let undelegatedList = new Array();\r\n for (let index = 0; index < value.returnData.length; index++) {\r\n mapUndelegetedValueType(value, index, undelegatedList);\r\n index++;\r\n }\r\n let arrayWithdraw = groupUndelegateValuesForTimeLeftZero(\r\n undelegatedList\r\n );\r\n setUserUnstakedValue(\r\n arrayWithdraw.sort((a, b) => a.timeLeft - b.timeLeft)\r\n );\r\n })\r\n .catch((e) => console.error(\"getUserUnDelegatedList error\", e));\r\n };\r\n\r\n React.useEffect(\r\n getUserUnDelegated,\r\n /* eslint-disable react-hooks/exhaustive-deps */ [networkConfig]\r\n );\r\n\r\n return (\r\n <>\r\n {userUnstakeValue.length > 0 && (\r\n
\r\n
\r\n
\r\n

Pending Withdrawals

\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {userUnstakeValue.map((undelegatedValue, i) => (\r\n \r\n ))}\r\n \r\n
Undelegated AmountWait timeAction
\r\n
\r\n
\r\n
\r\n )}\r\n \r\n );\r\n};\r\n\r\nexport default UndelegatedListView;\r\n","import SVG from \"react-inlinesvg\";\r\nimport { StatCardType } from \"helpers/types\";\r\nimport React from \"react\";\r\nimport { faInfoCircle } from \"@fortawesome/free-solid-svg-icons\";\r\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\r\nimport { OverlayTrigger, Tooltip } from \"react-bootstrap\";\r\n\r\nconst StatCard = ({\r\n title = \"\",\r\n value = \"0\",\r\n valueUnit = \"\",\r\n color = \"\",\r\n svg = \"\",\r\n percentage = \"\",\r\n tooltipText = \"\",\r\n children = null,\r\n image = null,\r\n}: StatCardType) => {\r\n return (\r\n
\r\n
\r\n
\r\n

\r\n {value} {valueUnit}\r\n

\r\n

\r\n\r\n\r\n \"Icon\"\r\n\r\n {title}\r\n

\r\n\r\n
\r\n
{children}
\r\n
\r\n
\r\n
\r\n\r\n {/* \r\n {percentage}\r\n {tooltipText !== \"\" && (\r\n (\r\n \r\n {tooltipText}\r\n \r\n )}\r\n >\r\n \r\n \r\n )}\r\n */}\r\n
\r\n );\r\n};\r\n\r\nexport default StatCard;\r\n","import React from 'react';\r\nimport { Modal } from 'react-bootstrap';\r\nimport { ErrorMessage, Formik } from 'formik';\r\nimport { object, string } from 'yup';\r\nimport ModalActionButton from 'components/ModalActionButton';\r\n\r\nconst SetPercentageFeeSchema = object().shape({\r\n amount: string()\r\n .required('Required')\r\n .test('minimum', 'Minimum fee percentage is 0.01', value => {\r\n const feeAmount = parseFloat(value !== undefined ? value : '');\r\n return feeAmount > 0;\r\n })\r\n .test('minimum', 'Maximum fee percentage is 100', value => {\r\n const feeAmount = parseFloat(value !== undefined ? value : '');\r\n return feeAmount <= 100;\r\n }),\r\n});\r\n\r\ninterface SetPercentageFeeModalType {\r\n show: boolean;\r\n handleClose: () => void;\r\n handleContinue: (value: string) => void;\r\n}\r\n\r\nconst SetPercentageFeeModal = ({\r\n show,\r\n handleClose,\r\n handleContinue,\r\n}: SetPercentageFeeModalType) => {\r\n return (\r\n \r\n
\r\n
\r\n

\r\n Change service fee\r\n

\r\n

\r\n Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt\r\n mollit anim id est laborum.\r\n

\r\n {\r\n handleContinue(values.amount);\r\n }}\r\n validationSchema={SetPercentageFeeSchema}\r\n >\r\n {props => {\r\n const { handleSubmit, values, handleBlur, handleChange, errors, touched } = props;\r\n\r\n return (\r\n
\r\n
\r\n \r\n \r\n {!(errors.amount && touched.amount) && (\r\n For example: 12.30\r\n )}\r\n \r\n
\r\n \r\n \r\n );\r\n }}\r\n \r\n
\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default SetPercentageFeeModal;\r\n","import ConfirmTransactionModal from 'components/ConfirmTransactionModal';\r\nimport { useContext } from 'context';\r\nimport { DelegationTransactionType } from 'helpers/contractDataDefinitions';\r\nimport { useDelegationWallet } from 'helpers/useDelegation';\r\nimport React, { useState } from 'react';\r\nimport SetPercentageFeeModal from './SetPercentageFeeModal';\r\n\r\nconst SetPercentageFeeAction = () => {\r\n const { ledgerAccount, walletConnectAccount } = useContext();\r\n\r\n const [showUpdateFeeModal, setShowUpdateFeeModal] = useState(false);\r\n const [showCheckYourLedgerModal, setShowCheckYourLedgerModal] = useState(false);\r\n const [transactionArguments, setTransactionArguments] = useState(\r\n new DelegationTransactionType('', '')\r\n );\r\n const { sendTransactionWallet } = useDelegationWallet();\r\n\r\n const nominateVal = (value: string) => {\r\n let perc = (parseFloat(value) * 100).toString(16);\r\n if (perc.length % 2 !== 0) {\r\n perc = '0' + perc;\r\n }\r\n return perc;\r\n };\r\n const handleUpdateFee = (value: string) => {\r\n let txArguments = new DelegationTransactionType('0', 'changeServiceFee', nominateVal(value));\r\n if (ledgerAccount || walletConnectAccount) {\r\n setShowUpdateFeeModal(false);\r\n setTransactionArguments(txArguments);\r\n setShowCheckYourLedgerModal(true);\r\n } else {\r\n sendTransactionWallet(txArguments);\r\n }\r\n };\r\n return (\r\n
\r\n setShowUpdateFeeModal(true)}\r\n className=\"btn btn-primary text-white btn-sm mr-n1\"\r\n >\r\n Change\r\n \r\n {\r\n setShowUpdateFeeModal(false);\r\n }}\r\n handleContinue={handleUpdateFee}\r\n />\r\n {\r\n setShowCheckYourLedgerModal(false);\r\n }}\r\n />\r\n
\r\n );\r\n};\r\n\r\nexport default SetPercentageFeeAction;\r\n","import React from 'react';\r\nimport { Modal } from 'react-bootstrap';\r\nimport { useContext } from 'context';\r\nimport { ErrorMessage, Formik } from 'formik';\r\nimport BigNumber from 'bignumber.js';\r\nimport { object, number } from 'yup';\r\nimport denominate from 'components/Denominate/formatters';\r\nimport { ActionModalType } from 'helpers/types';\r\nimport { denomination, decimals } from 'config';\r\nimport ModalActionButton from 'components/ModalActionButton';\r\n\r\nconst DelegationCapModal = ({\r\n show,\r\n title,\r\n description,\r\n handleClose,\r\n handleContinue,\r\n}: ActionModalType) => {\r\n const { egldLabel, totalActiveStake } = useContext();\r\n\r\n return (\r\n \r\n
\r\n
\r\n

\r\n {title}\r\n

\r\n

\r\n The delegation cap is the maximum amount of {egldLabel} your agency can stake from\r\n delegators.\r\n

\r\n {\r\n handleContinue(values.amount.toString());\r\n }}\r\n validationSchema={object().shape({\r\n amount: number()\r\n .required('Required')\r\n .test(\r\n 'minimum',\r\n `Minimum ${denominate({\r\n input: totalActiveStake,\r\n denomination,\r\n decimals,\r\n addCommas: false,\r\n })} ${egldLabel} or 0 ${egldLabel}`,\r\n value => {\r\n const bnAmount = new BigNumber(value !== undefined ? value : '');\r\n const comparationResult = bnAmount.comparedTo(\r\n denominate({\r\n input: totalActiveStake,\r\n denomination,\r\n decimals,\r\n addCommas: false,\r\n })\r\n );\r\n return comparationResult >= 0 || bnAmount.comparedTo(0) === 0;\r\n }\r\n ),\r\n })}\r\n >\r\n {props => {\r\n const { handleSubmit, values, handleBlur, handleChange, errors, touched } = props;\r\n return (\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n \r\n \r\n );\r\n }}\r\n \r\n
\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default DelegationCapModal;\r\n","import BigNumber from 'bignumber.js';\r\nimport React, { useState } from 'react';\r\nimport nominate from 'helpers/nominate';\r\nimport DelegationCapModal from './DelegationCapModal';\r\nimport { DelegationTransactionType } from 'helpers/contractDataDefinitions';\r\nimport { useContext } from 'context';\r\nimport { useDelegationWallet } from 'helpers/useDelegation';\r\nimport ConfirmTransactionModal from 'components/ConfirmTransactionModal';\r\n\r\nconst UpdateDelegationCapAction = () => {\r\n const { ledgerAccount, walletConnectAccount } = useContext();\r\n const [showDelegationCapModal, setShowDelegationCapModal] = useState(false);\r\n const [showCheckYourLedgerModal, setShowCheckYourLedgerModal] = useState(false);\r\n const [transactionArguments, setTransactionArguments] = useState(\r\n new DelegationTransactionType('', '')\r\n );\r\n const { sendTransactionWallet } = useDelegationWallet();\r\n\r\n const nominateValToHex = (value: string) => {\r\n let val = value && value.length > 0 ? new BigNumber(nominate(value)).toString(16) : '0';\r\n\r\n if (val.length % 2 !== 0) {\r\n val = '0' + val;\r\n }\r\n return val;\r\n };\r\n\r\n const handleUpdateDelegationCap = (value: string) => {\r\n let txArguments = new DelegationTransactionType(\r\n '0',\r\n 'modifyTotalDelegationCap',\r\n nominateValToHex(value)\r\n );\r\n if (ledgerAccount || walletConnectAccount) {\r\n setShowDelegationCapModal(false);\r\n setTransactionArguments(txArguments);\r\n setShowCheckYourLedgerModal(true);\r\n } else {\r\n sendTransactionWallet(txArguments);\r\n }\r\n };\r\n\r\n return (\r\n
\r\n setShowDelegationCapModal(true)}\r\n className=\"btn btn-primary btn-sm text-white mr-n1\"\r\n >\r\n Change\r\n \r\n {\r\n setShowDelegationCapModal(false);\r\n }}\r\n handleContinue={handleUpdateDelegationCap}\r\n />\r\n {\r\n setShowCheckYourLedgerModal(false);\r\n }}\r\n />\r\n
\r\n );\r\n};\r\n\r\nexport default UpdateDelegationCapAction;\r\n","export default __webpack_public_path__ + \"static/media/pie-delegation.6fe737f1.svg\";","export default __webpack_public_path__ + \"static/media/users-icon.6909cbad.svg\";","export default __webpack_public_path__ + \"static/media/nodes-icon.65fd51b8.svg\";","export default __webpack_public_path__ + \"static/media/apr-icon.0193615d.svg\";","export default __webpack_public_path__ + \"static/media/fee-icon.cf9dc66c.svg\";","export default __webpack_public_path__ + \"static/media/auto-activation.1a26c44d.svg\";","export default __webpack_public_path__ + \"static/media/redelegation-cap.5a4fcb01.svg\";","import * as React from \"react\";\r\nimport { decimals, denomination } from \"config\";\r\nimport { useContext } from \"context\";\r\nimport denominate from \"components/Denominate/formatters\";\r\nimport StatCard from \"components/StatCard\";\r\nimport { Address, NetworkStake } from \"@elrondnetwork/erdjs\";\r\nimport { useState } from \"react\";\r\n\r\nimport SetPercentageFeeAction from \"./SetPercentageFeeAction\";\r\nimport UpdateDelegationCapAction from \"./UpdateDelegationCapAction\";\r\nimport AutomaticActivationAction from \"./AutomaticActivationAction\";\r\nimport ReDelegateCapActivationAction from \"./ReDelegateCapActivationAction\";\r\nimport pieDelegation from \"assets/images/pie-delegation.svg\";\r\nimport usersIcon from \"assets/images/users-icon.svg\";\r\nimport nodesIcon from \"assets/images/nodes-icon.svg\";\r\nimport aprIcon from \"assets/images/apr-icon.svg\";\r\nimport feeIcon from \"assets/images/fee-icon.svg\";\r\nimport autoActivation from \"assets/images/auto-activation.svg\";\r\nimport redelegCap from \"assets/images/redelegation-cap.svg\";\r\n\r\nconst Views = () => {\r\n const {\r\n dapp,\r\n egldLabel,\r\n totalActiveStake,\r\n numberOfActiveNodes,\r\n address,\r\n contractOverview,\r\n aprPercentage,\r\n numUsers,\r\n } = useContext();\r\n const [networkStake, setNetworkStake] = useState(new NetworkStake());\r\n\r\n const getPercentage = (amountOutOfTotal: string, total: string) => {\r\n let percentage =\r\n (parseInt(amountOutOfTotal.replace(/,/g, \"\")) /\r\n parseInt(total.replace(/,/g, \"\"))) *\r\n 100;\r\n if (percentage < 1) {\r\n return \"<1\";\r\n }\r\n return percentage ? percentage.toFixed(2) : \"...\";\r\n };\r\n\r\n const isOwner = () => {\r\n let loginAddress = new Address(address).hex();\r\n return loginAddress.localeCompare(contractOverview.ownerAddress) === 0;\r\n };\r\n\r\n const isOwnerPath = () => {\r\n let currentURL = window.location.pathname;\r\n return currentURL.includes(\"owner\") === true;\r\n };\r\n\r\n const getNetworkStake = () => {\r\n dapp.apiProvider\r\n .getNetworkStake()\r\n .then((value) => {\r\n setNetworkStake(value);\r\n })\r\n .catch((e) => {\r\n console.error(\"getTotalStake error \", e);\r\n });\r\n };\r\n\r\n React.useEffect(\r\n () => {\r\n getNetworkStake();\r\n },\r\n /* eslint-disable react-hooks/exhaustive-deps */ []\r\n );\r\n\r\n return (\r\n
\r\n
\r\n {isOwner() && isOwnerPath() ? (\r\n \r\n \r\n \r\n ) : (\r\n denominate({\r\n decimals,\r\n denomination,\r\n input: contractOverview.maxDelegationCap,\r\n }) !== \"0\" &&\r\n denominate({\r\n decimals,\r\n denomination,\r\n input: contractOverview.maxDelegationCap,\r\n }) !== \"\" && (\r\n \r\n )\r\n )}\r\n {/* */}\r\n \r\n \r\n \r\n \r\n {isOwnerPath() && }\r\n \r\n
\r\n
\r\n {isOwner() && isOwnerPath() && (\r\n \r\n \r\n \r\n )}\r\n\r\n {isOwner() && isOwnerPath() && (\r\n \r\n \r\n \r\n )}\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default Views;\r\n","export default __webpack_public_path__ + \"static/media/copy-icon.6349603d.svg\";","export default __webpack_public_path__ + \"static/media/share-icon.2ad3fca2.svg\";","export default __webpack_public_path__ + \"static/media/settings-icon.59872ef6.svg\";","import React, { useEffect } from \"react\";\r\nimport { Link, useLocation } from \"react-router-dom\";\r\nimport { Address } from \"@elrondnetwork/erdjs\";\r\nimport { useContext, useDispatch } from \"context\";\r\nimport SetAgencyMetaDataModal from \"./SetAgencyMetaDataModal\";\r\nimport { getItem } from \"storage/session\";\r\nimport copyIcon from \"assets/images/copy-icon.svg\";\r\nimport shareIcon from \"assets/images/share-icon.svg\";\r\nimport settingsIcon from \"assets/images/settings-icon.svg\";\r\n\r\nconst Header = () => {\r\n const { pathname } = useLocation();\r\n const dispatch = useDispatch();\r\n const {\r\n address,\r\n delegationContract,\r\n contractOverview,\r\n ledgerAccount,\r\n walletConnectAccount,\r\n account\r\n } = useContext();\r\n\r\n const isOwner = () => {\r\n let loginAddress = new Address(address).hex();\r\n return loginAddress.localeCompare(contractOverview.ownerAddress) === 0;\r\n };\r\n\r\n const isOwnerPath = () => {\r\n let currentURL = window.location.pathname;\r\n return currentURL.includes(\"owner\") === true;\r\n };\r\n\r\n const fetchLedger = () => {\r\n if (getItem(\"ledgerLogin\") && !ledgerAccount) {\r\n const ledgerLogin = getItem(\"ledgerLogin\");\r\n dispatch({\r\n type: \"setLedgerAccount\",\r\n ledgerAccount: {\r\n index: ledgerLogin.index,\r\n address: address,\r\n },\r\n });\r\n }\r\n };\r\n\r\n const fetchWalletConnect = () => {\r\n if (getItem(\"walletConnectLogin\") && !walletConnectAccount) {\r\n dispatch({\r\n type: \"setWalletConnectAccount\",\r\n walletConnectAccount: address,\r\n });\r\n }\r\n };\r\n useEffect(fetchLedger, /* eslint-disable react-hooks/exhaustive-deps */ []);\r\n useEffect(\r\n fetchWalletConnect,\r\n /* eslint-disable react-hooks/exhaustive-deps */ []\r\n );\r\n\r\n return (\r\n
\r\n
\r\n

Welcome back{isOwner() ? \", Admin\" : account.username !== '' ? \", \" + account.username : \"\" }👋

\r\n
\r\n
\r\n
\r\n

\r\n Contract address\r\n \r\n {delegationContract}\r\n \r\n \r\n \r\n navigator.clipboard.writeText(delegationContract + \"\")\r\n }\r\n src={copyIcon}\r\n alt=\"Copy Icon\"\r\n />\r\n \r\n \"Copy\r\n \r\n \r\n \r\n {delegationContract}\r\n \r\n

\r\n
\r\n\r\n {isOwner() && !isOwnerPath() ? (\r\n \r\n Admin Panel\r\n \"Copy\r\n \r\n ) : null}\r\n {/* {pathname !== '/dashboard' ? ( */}\r\n {/* \r\n Dashboard\r\n */}\r\n {/* // ) : null} */}\r\n {/* // {isOwner() && isOwnerPath() ? : null} */}\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default Header;\r\n","import React from 'react';\r\nimport Views from './Cards';\r\nimport Header from './Header';\r\n\r\nconst Overview = () => {\r\n return (\r\n <>\r\n
\r\n \r\n \r\n );\r\n};\r\n\r\nexport default Overview;\r\n","import React, { useEffect } from \"react\";\r\nimport { useContext, useDispatch } from \"context\";\r\nimport Delegation from \"./Delegation\";\r\nimport PendingUndelegated from \"./PendingUndelegated\";\r\nimport { Redirect } from \"react-router-dom\";\r\nimport Overview from \"components/Overview\";\r\nimport { Address } from \"@elrondnetwork/erdjs\";\r\nimport { AccountType } from \"helpers/contractDataDefinitions\";\r\nimport State from \"components/State\";\r\nimport { faCircleNotch } from \"@fortawesome/free-solid-svg-icons\";\r\nimport { getItem } from \"storage/session\";\r\nimport loginBackground from \"assets/images/login-background.jpg\";\r\nimport loginBackgroundMobile from \"assets/images/login-background-mobile.jpg\";\r\n\r\nconst Dashboard = () => {\r\n const {\r\n loggedIn,\r\n dapp,\r\n address,\r\n networkConfig,\r\n ledgerAccount,\r\n walletConnectAccount,\r\n } = useContext();\r\n const dispatch = useDispatch();\r\n\r\n const fetchAccount = () => {\r\n if (loggedIn) {\r\n dapp.proxy.getAccount(new Address(address)).then((account) => {\r\n dispatch({\r\n type: \"setAccount\",\r\n account: new AccountType(account.balance.toString(), account.userName, account.nonce),\r\n });\r\n });\r\n }\r\n };\r\n\r\n const isLedgerLogin = getItem(\"ledgerLogin\") && !ledgerAccount;\r\n const isWalletConnect =\r\n getItem(\"walletConnectLogin\") && !walletConnectAccount;\r\n const dispatchLoginType = () => {\r\n if (isLedgerLogin) {\r\n const ledgerLogin = getItem(\"ledgerLogin\");\r\n dispatch({\r\n type: \"setLedgerAccount\",\r\n ledgerAccount: {\r\n index: ledgerLogin.index,\r\n address: address,\r\n },\r\n });\r\n }\r\n if (isWalletConnect) {\r\n dispatch({\r\n type: \"setWalletConnectAccount\",\r\n walletConnectAccount: address,\r\n });\r\n }\r\n };\r\n useEffect(fetchAccount, /* eslint-disable react-hooks/exhaustive-deps */ []);\r\n\r\n useEffect(\r\n dispatchLoginType,\r\n /* eslint-disable react-hooks/exhaustive-deps */ []\r\n );\r\n if (!loggedIn) {\r\n return ;\r\n }\r\n return (\r\n
\r\n
\r\n
\r\n \r\n {networkConfig.roundDuration === -1 ? (\r\n \r\n ) : (\r\n
\r\n \r\n \r\n
\r\n )}\r\n
\r\n
\r\n\r\n {/*
\r\n
\r\n \r\n {networkConfig.roundDuration === -1 ? (\r\n \r\n ) : (\r\n
\r\n \r\n \r\n
\r\n )}\r\n
\r\n
*/}\r\n
\r\n );\r\n};\r\n\r\nexport default Dashboard;\r\n","import { Address, WalletProvider } from \"@elrondnetwork/erdjs\";\r\nimport React, { useEffect } from \"react\";\r\nimport { useContext, useDispatch } from \"context\";\r\nimport { getItem, removeItem, setItem } from \"storage/session\";\r\nimport { AccountType } from \"helpers/contractDataDefinitions\";\r\nimport { useLocation } from \"react-router-dom\";\r\nimport { network } from \"config\";\r\nimport walletIcon from \"../../../assets/images/wallet-icon.png\";\r\n\r\nconst WalletLogin = () => {\r\n const dispatch = useDispatch();\r\n const { dapp } = useContext();\r\n\r\n const { search } = useLocation();\r\n const handleOnClick = () => {\r\n dispatch({ type: \"loading\", loading: true });\r\n dapp.provider\r\n .init()\r\n .then(async (initialised) => {\r\n if (initialised) {\r\n // Wallet provider will redirect, we can set a session information so we know when we are getting back\r\n // that we initiated a wallet provider login\r\n setItem(\"wallet_login\", {}, 60); // Set a 60s session only\r\n await dapp.provider.login();\r\n } else {\r\n dispatch({ type: \"loading\", loading: true });\r\n console.warn(\r\n \"Something went wrong trying to redirect to wallet login..\"\r\n );\r\n }\r\n })\r\n .catch((err) => {\r\n dispatch({ type: \"loading\", loading: false });\r\n console.warn(err);\r\n });\r\n };\r\n\r\n const walletLogin = () => {\r\n if (getItem(\"wallet_login\")) {\r\n dispatch({ type: \"loading\", loading: true });\r\n dapp.provider.init().then((initialised) => {\r\n if (!initialised) {\r\n dispatch({ type: \"loading\", loading: false });\r\n return;\r\n }\r\n const urlSearchParams = new URLSearchParams(search);\r\n const params = Object.fromEntries(urlSearchParams as any);\r\n const address = params?.address;\r\n if (address !== undefined && new Address(params.address)) {\r\n removeItem(\"wallet_login\");\r\n dispatch({ type: \"login\", address });\r\n dapp.proxy\r\n .getAccount(new Address(address))\r\n .then((account) =>\r\n dispatch({\r\n type: \"setAccount\",\r\n account: new AccountType(\r\n account.balance.toString(),\r\n account.userName,\r\n account.nonce\r\n ),\r\n })\r\n )\r\n .catch((err) => {\r\n console.log({ err });\r\n dispatch({ type: \"loading\", loading: false });\r\n });\r\n }\r\n removeItem(\"wallet_login\");\r\n dispatch({ type: \"loading\", loading: false });\r\n return;\r\n });\r\n }\r\n };\r\n\r\n useEffect(\r\n walletLogin,\r\n /* eslint-disable react-hooks/exhaustive-deps */ [dapp.provider]\r\n );\r\n\r\n return (\r\n \r\n DeFi Wallet\r\n \"Wallet\r\n Extension\r\n \r\n );\r\n};\r\n\r\nexport default WalletLogin;\r\n","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAQHSURBVHgB7ZtLSFRRGMf/9453zJlmHKJkKkkXLapFtKo2WS2KCCrpTdRCJIggqkWrgrIHRC3SKKigCIpgetEbrCAcF+mmpEUJLdJIkjCT1HHGefV9xxmZUROZ+9Dx3B9c7pmZ44zf/3z/79x7Zo6CEfj9/jXxeHyLqqqVyWSyHNODFj4opprOzs62zBeUdMNHaJp2SlGUw5jG0KDWRqPRmh6CHwsBUsG/o+CXQQJIhBYSYS2L4OAnPB7PeQq+EpJAsfrJDjNCoVC9Qp4vTyQS3yAhFPdah8vlukRtKVJ/DHpUyBs8W6FSKSkpSUJiVEiOLQAkxxYAkmMLAMmxBYDkFEAnitcD55FqaDs2irbZJP/2IvrgJQZrb4m2XnQJoJbOhStwFQqdrUIIXr1btCOn66AXXRZwHq22NPiszyYRjMg4XQIUrK9AvqPLAiNHIPa6gfz5irzZB7Nh/096DRgJF6fY60bkE7rWAzzt77MeJ378RPz9B1gBf1b0IWUbnfVgqACTQaSmFoO3AsiVvL8QEjORjtkg7wXg4NUlC5Er9r0AJMe+GYKJ/Np/TJyLD1WhcOmS//YbCDah/9kbxL53wH//GqzENAGi7T/Qe/exaPN5RsUKePdug2ffNvFcoucv+p6/Qe+dRwg3Ng//3UCwGUXU1ypMzABFBMsBMmEKjI8/5+qgUTaEG5tIhOxLWe4/XqaYgWk1QCubj5IbF7CgNTg86ky0vQMhGvnM4HnES5tfiP6qb/w5PUaZZSSmF8G0EP7ANRSUlWa9xoHPq78njsKli8d9H7ZU+6IKOlbj97EzMArLZgH35nUoa21A0aohf6eDn6jf2Uoxyh6m58ptRD59gRFYJgBX+o71ezCQKnhc7L7TiPaTHSZCZvaoPi8cxV4YganTIMOBd5+9nFXp03A96Nx5AO5N6zD74olRFsnEm6ojYXo/z77t1Hc+jMC0u0H27J+zdcNTYRoevaJVyymFW0cVNM/erZh14vC4QoxFaNdBxJs+IhdMs0As4zqAYa9zISz7EqSLneuiHsyh4piuCcxQfwVWYpoFiipWwkWprdFocoqPVew4rflgK/D1AfvaqNSeKHm/IMJMSQvkC7oEMGJVdrLRJQAvgU8F9CzD6xJgsPam7lVZvUTrG5D4/BW54nC73aeQK5FB+h4gCKV4pvieUCkshFWw/WLP3iJy/KL4P3LF/p0gJMcWAJJjCwDJsQWA5NgCQHJYgDbIS4uaTCafQFJ4/yAL8BSSwjtIHaFQqM3lcvkURVkJieAttN3d3QGxc9TpdDY7HI4N1PRDAlJbZ6vChBCAG5qmBXg76XTPhNTm6aqszdOZ+Hy+chLjZGoj9XTZVNnGxZ6Prq6uhswX/gHfmJHKKudFPgAAAABJRU5ErkJggg==\"","// @ts-ignore\r\nimport platform from \"platform\";\r\nimport React from \"react\";\r\nimport xPortalIcon from \"assets/images/xportal-icon.png\";\r\n\r\nconst WalletConnectLogin = () => {\r\n return (\r\n \r\n xPortal App\r\n \"xPortal\r\n Mobile\r\n \r\n );\r\n};\r\n\r\nexport default WalletConnectLogin;\r\n","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAOySURBVHgB7Zs/TBNxFMff3fUKnlQ7kRIdWFx0UScSB2VSYZAYFCYTwM3BEBwx2sjgIKEObpaByQoxOgCBxUBixAWZXBzsYCIDIQTlKL1rz/cuPVOa/rnj97uT9HefpOFHeznufX+/937vvfKToIJEInGtUCjckmW5z7KsTmgONuiFNiU3Nzez5R9IziCOqKr6VJKkh9DE4KSmDMNI7iD0uy1AyfiPaPxFEAAUYQNF6CYRFHojFos9R+P7QBDQ1gS6Q6uu60sS+nxnsVj8AQKCdncrmqZN4ViIpV+FHRnENZ5coU9qb2+3QGBkEJxQABCcUAAQnFAAEJxQABCcUAAQnFAA4ISWeQWtL8ZBOtsBfiHjvVtG78PJxRngRQQ4oPb3gtJ1GV84vtMLhbV1yM8ugDk3Dzyge7eMjtg/HSL4N3ncn0s53PbpXdWZL/78BcZ0BoylVbBw7OnBTsUgOjIA6vBde1zt3ntXbgMrzALQ7LdOjje8zpidBwNnrLD2te511Wa7FvtjE8yrgFkA8n03D+tAM3cwlbbdxFkVNMOR/h6IovvI58+5v9e377B38x6wwCwABSbyR5o1r9CqsHb/YNzoqbrMa2Ht/oZ8Gl1r+q09ZoFbS4yEiKII5BJ+QobnU2lmwx249wT9EsL8vA65RxOeg2kjfGuKUlw4McmeF5Dh+dTrhsHzqPjeFVYxuFHy4lUICpa5sWe+Ge4QWFvcrRDk27RLUP4QBIF+L1Bvx+AZ2b3wX74YofhA+YMDGawPPLD39aAJVIBG6W0+/QbytAI4R/q6zxSEAI0ML8euH2ivb5YYoJZ8/ii7AAVDXhVlLXzNA9wWNfWwhUimwFxeBT/gLgAvwysxl1cgl3x5fDPBoGoBKqAOqBbgJASzAF4CXDm09RnYNZJOt0EEV4vXGMFLCGYBqD/npYan3J6Wszm3eCjhoUxRHR4E5YL7e1FPgfIHFjh0hHqwI/S47jVkqIltMbcdIeoPuHGlfawVzLkFYMHXniBLeksxRem6VLN+ODY9QaJyFfAuYWlVRDHGRK5f/fcej9knuO0C2sKM7dt+FjPOTiOd6YD9QTbfdwj/SwwEJxQABCcUAAQnFAAEJxQABCcUAASHBMiCuGzIlmW9B0Gh84MkwAcQFDpBqui6ntU0LS5JUhcIBB2h3d7eztgnR6PR6BdFUW7gMAECUDo6O5RDbAFooKpqho6TNvtKKB2eHjp0eLqceDzeiWI8KR2kbpZDlVkK9vTa2tpaKf/gL7l9x5KtyHXPAAAAAElFTkSuQmCC\"","export default __webpack_public_path__ + \"static/media/close-login.c8f3ba34.svg\";","import React from \"react\";\r\nimport { Redirect } from \"react-router-dom\";\r\nimport { faBan, faCircleNotch } from \"@fortawesome/free-solid-svg-icons\";\r\nimport { ReactComponent as Logo } from \"assets/images/logo.svg\";\r\nimport State from \"components/State\";\r\nimport { useContext } from \"context\";\r\nimport WalletLogin from \"./Login/Wallet\";\r\nimport WalletConnectLogin from \"./Login/WalletConnect\";\r\nimport closeLogin from \"assets/images/close-login.svg\";\r\nimport ledgerIcon from \"assets/images/ledger-icon.png\";\r\n\r\nconst Home = () => {\r\n const { loading, error, loggedIn, egldLabel } = useContext();\r\n\r\n const ref = React.useRef(null);\r\n\r\n return (\r\n
\r\n {error ? (\r\n \r\n ) : loggedIn ? (\r\n \r\n ) : loading ? (\r\n \r\n ) : (\r\n
\r\n {/* style={{ backgroundImage: `url(${loginBackground})` }} */}\r\n
\r\n {/* */}\r\n\r\n
\r\n \r\n \"Close\"\r\n \r\n
\r\n

Connect your wallet

\r\n\r\n

Please, select your login method.

\r\n\r\n
\r\n \r\n \r\n \r\n Ledger\r\n \"Ledger\r\n Hardware\r\n \r\n
\r\n
\r\n

\r\n or\r\n \r\n Create a Wallet\r\n \r\n

\r\n
\r\n
\r\n
\r\n )}\r\n
\r\n );\r\n};\r\n\r\nexport default Home;\r\n","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAKCSURBVHgB7Zu/ixpBFMe/u5uVsOCPSmwU/4QUFsEq12kVrayvsfUvkOS6gEKCf4Gl1yWVpAopFAIWFlpHsFEQOS2WgOhm3uKCCXfnzngnh28+MDC64zrvOzM7s2/mGfiPVCr1brvdvjdNs+R5XhaXwZCSsOlmNptNDi8YQSYhsG37o2EYNVwwolG/bDabmzsBffYF2Bv/Qxj/BgwQIgyFCFckgkVfRKPRT8L4EpggbE2J4fDadd3vhhjz2d1u9xsMEXZfWY7jfBZ5Fl3/Hu5M8DWehkLJSCaTHhhjgjlaADBHCwDmsBfglUzh+XwOVRqNBprN5tFylUoFrVYLquRyOUyn09DldQ+AAvV6HaPRSOo3YVul3++jXC5Dhng8jna7DRWUBCDjqaLPAQkl04WJdDoNVfQsAOZoAcAcLQCYI+UQCaab1WqF9XoNGarVqp96vR5qtaf3vAd1k51CpdYBsjc/JBaL+ZU8Zc5+DNW66WcAmKMFAHO0AGCOFgDM0QKAOdopijOTyWR81/dD0Jr+ufyN93F2Aehl6DG/f6fTebkCBC3X7XalX4fJk0zGHUPFeHKLFwoFqNRNyh8Q7AyR3/6crXQM6lWDwcDP650hSbQAYI4WAMzRK0EoUCwWpb274/E41JY63Tefz0MGWgeooiQA+fdloRMiYQQg4085ISLL2fYFwq7OqNwp/yOLPioL5mgBwBwtAJijBRBpAr4MTc/zvoIpFD9IAnwDUyiC1HJdd+I4TsIwjLdgBIXQLpfLWz9yNBKJ/LIsi9yqKTBgHzp7/UfgC0AZ27ZvKZz00nvCPnj6+p/g6UMSiURWiPFhH0h9KUGVE3rYU1osFj8PL/wFqqn6dRe/9BMAAAAASUVORK5CYII=\"","import React, { useEffect, memo } from 'react';\r\n\r\nconst withPageTitle = (title: string, Component: React.ComponentType) => () => {\r\n const Memoized = memo(Component);\r\n\r\n useEffect(() => {\r\n document.title = title;\r\n }, []);\r\n return ;\r\n};\r\n\r\nexport default withPageTitle;\r\n","export const nodeActions = {\r\n unJail: { label: 'Unjail', transaction: 'unJail' },\r\n unStake: { label: 'Unstake', transaction: 'unStake' },\r\n reStake: { label: 'ReStake', transaction: 'reSreStakeUnStakedNodestake' },\r\n unBond: { label: 'Unbond', transaction: 'unBond' },\r\n stake: { label: 'Stake', transaction: 'stake' },\r\n remove: { label: 'Remove', transaction: 'remove' },\r\n};\r\n\r\nexport const NodeStatus: { [key: string]: string } = {\r\n notStaked: 'Inactive',\r\n unStaked: 'UnStaked',\r\n staked: 'Staked',\r\n jailed: 'Jail',\r\n queued: 'Queued',\r\n};\r\n","import { DelegationTransactionType } from 'helpers/contractDataDefinitions';\r\nexport interface StakeActionType {\r\n blsKey: string;\r\n}\r\n\r\nexport const nodeTransactions = {\r\n unStake: ({ blsKey }: StakeActionType) => {\r\n let transactionArgs = new DelegationTransactionType('0', 'unStakeNodes', blsKey);\r\n return transactionArgs;\r\n },\r\n reStake: ({ blsKey }: StakeActionType) => {\r\n let transactionArguments = new DelegationTransactionType('0', 'reStakeUnStakedNodes', blsKey);\r\n return transactionArguments;\r\n },\r\n unJail: ({ blsKey }: StakeActionType) => {\r\n let transactionArguments = new DelegationTransactionType('2.5', 'unJailNodes', blsKey);\r\n return transactionArguments;\r\n },\r\n unBond: ({ blsKey }: StakeActionType) => {\r\n let transactionArguments = new DelegationTransactionType('0', 'unBondNodes', blsKey);\r\n return transactionArguments;\r\n },\r\n stake: ({ blsKey }: StakeActionType) => {\r\n let transactionArguments = new DelegationTransactionType('0', 'stakeNodes', `${blsKey}`);\r\n return transactionArguments;\r\n },\r\n remove: ({ blsKey }: StakeActionType) => {\r\n let transactionArguments = new DelegationTransactionType('0', 'removeNodes', `${blsKey}`);\r\n return transactionArguments;\r\n },\r\n};\r\n","export default __webpack_public_path__ + \"static/media/arrow-down.d331800b.svg\";","export default __webpack_public_path__ + \"static/media/node-icon.517ce67b.svg\";","import {\r\n Address,\r\n BytesValue,\r\n ContractFunction,\r\n decodeUnsignedNumber,\r\n Query,\r\n} from \"@elrondnetwork/erdjs\";\r\nimport { faCaretDown, faSearch } from \"@fortawesome/free-solid-svg-icons\";\r\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\r\nimport moment from \"moment\";\r\nimport React, { useState } from \"react\";\r\nimport { Dropdown } from \"react-bootstrap\";\r\nimport { useContext } from \"context\";\r\nimport { nodeActions } from \"./helpers/nodeTypes\";\r\nimport { nodeTransactions } from \"./helpers/stakeHooks\";\r\nimport { stakingContract } from \"config\";\r\nimport { NodeType } from \"./helpers/nodeType\";\r\nimport { DelegationTransactionType } from \"helpers/contractDataDefinitions\";\r\nimport { useDelegationWallet } from \"helpers/useDelegation\";\r\nimport ConfirmTransactionModal from \"components/ConfirmTransactionModal\";\r\nimport arrowDown from \"assets/images/arrow-down.svg\";\r\nimport shareIcon from \"assets/images/share-icon.svg\";\r\nimport nodeIcon from \"assets/images/node-icon.svg\";\r\n\r\ntype ActionType =\r\n | \"unStake\"\r\n | \"unJail\"\r\n | \"unBond\"\r\n | \"reStake\"\r\n | \"stake\"\r\n | \"remove\";\r\n\r\nconst allowedActions: { [key: string]: ActionType[] } = {\r\n staked: [\"unStake\"],\r\n jailed: [\"unJail\"],\r\n unStaked: [\"unBond\", \"reStake\"],\r\n queued: [\"unStake\"],\r\n notStaked: [\"stake\", \"remove\"],\r\n};\r\n\r\nconst NodeRow = ({ blsKey: key }: { blsKey: NodeType; index: number }) => {\r\n const {\r\n explorerAddress,\r\n dapp,\r\n ledgerAccount,\r\n walletConnectAccount,\r\n } = useContext();\r\n const [showCheckYourLedgerModal, setShowCheckYourLedgerModal] = useState(\r\n false\r\n );\r\n const [transactionArguments, setTransactionArguments] = useState(\r\n new DelegationTransactionType(\"\", \"\")\r\n );\r\n\r\n const { sendTransactionWallet } = useDelegationWallet();\r\n\r\n const handleAction = (action: ActionType) => {\r\n const txArguments = nodeTransactions[action]({ blsKey: key.blsKey });\r\n if (ledgerAccount || walletConnectAccount) {\r\n setTransactionArguments(txArguments);\r\n setShowCheckYourLedgerModal(true);\r\n } else {\r\n sendTransactionWallet(txArguments);\r\n }\r\n };\r\n const ref = React.useRef(null);\r\n\r\n const [remaining, setRemaining] = React.useState(0);\r\n const fetchUnBondPeriod = () => {\r\n const query = new Query({\r\n address: new Address(stakingContract),\r\n func: new ContractFunction(\"getRemainingUnBondPeriod\"),\r\n args: [BytesValue.fromHex(key.blsKey)],\r\n });\r\n if (key.status.key === \"unStaked\") {\r\n dapp.proxy\r\n .queryContract(query)\r\n .then((value) => {\r\n const untypedResponse = value.outputUntyped();\r\n const remainingUnBondPeriod = decodeUnsignedNumber(\r\n untypedResponse[0]\r\n );\r\n const newRemaining =\r\n remainingUnBondPeriod !== undefined ? remainingUnBondPeriod : 0;\r\n\r\n if (ref.current !== null) {\r\n setRemaining(newRemaining * 6);\r\n }\r\n })\r\n .catch((e) => console.error(\"fetchUnBondPeriod error \", e));\r\n }\r\n };\r\n\r\n React.useEffect(\r\n fetchUnBondPeriod,\r\n /* eslint-disable react-hooks/exhaustive-deps */ [key.blsKey, key.status]\r\n );\r\n\r\n const statusColor =\r\n key.status.key === \"staked\"\r\n ? \"green\"\r\n : key.status.key === \"jailed\"\r\n ? \"red\"\r\n : \"orange\";\r\n return (\r\n \r\n \r\n
\r\n \"Node\r\n {key.blsKey}\r\n \r\n \"Share\r\n \r\n
\r\n \r\n \r\n {key.status.key === \"queued\" && key.queueIndex && key.queueSize ? (\r\n \r\n {key.status.value} ({key.queueIndex}/{key.queueSize})\r\n \r\n ) : (\r\n \r\n {key.status.value}\r\n \r\n )}\r\n \r\n\r\n \r\n \r\n \r\n Action \"Arrow\r\n \r\n \r\n {Object.keys(nodeActions).map((entry) => {\r\n const action: ActionType = entry as any;\r\n let actionAllowed = allowedActions[key.status.key].includes(\r\n action\r\n );\r\n if (actionAllowed && action === \"unBond\" && remaining !== 0) {\r\n actionAllowed = false;\r\n }\r\n return (\r\n {\r\n e.preventDefault();\r\n if (actionAllowed) {\r\n handleAction(action);\r\n }\r\n }}\r\n >\r\n {nodeActions[action].label}{\" \"}\r\n {action === \"unBond\" && remaining !== 0 && (\r\n \r\n (\r\n {moment\r\n .utc(\r\n moment.duration(remaining, \"seconds\").asMilliseconds()\r\n )\r\n .format(\"HH:mm:ss\")}{\" \"}\r\n left)\r\n \r\n )}\r\n \r\n );\r\n })}\r\n \r\n \r\n \r\n {\r\n setShowCheckYourLedgerModal(false);\r\n }}\r\n />\r\n \r\n );\r\n};\r\n\r\nexport default NodeRow;\r\n","export class NodeType {\r\n blsKey!: string;\r\n status!: { [key: string]: string };\r\n queueIndex?: string;\r\n queueSize?: string;\r\n public constructor(\r\n blsKey: string,\r\n status: { [key: string]: string },\r\n queueIndex?: string,\r\n queueSize?: string\r\n ) {\r\n this.blsKey = blsKey;\r\n this.status = status;\r\n this.queueIndex = queueIndex;\r\n this.queueSize = queueSize;\r\n }\r\n}\r\n","import {\r\n Address,\r\n AddressValue,\r\n BytesValue,\r\n ContractFunction,\r\n decodeString,\r\n Query,\r\n} from '@elrondnetwork/erdjs';\r\nimport { auctionContract, stakingContract } from 'config';\r\nimport { DappState } from 'context/state';\r\nimport { NodeType } from './nodeType';\r\nimport { NodeStatus } from './nodeTypes';\r\n\r\nexport const getAllNodesStatus = (dapp: DappState, delegationContract?: string) => {\r\n const query = new Query({\r\n address: new Address(delegationContract),\r\n func: new ContractFunction('getAllNodeStates'),\r\n });\r\n return new Promise>(resolve => {\r\n dapp.proxy\r\n .queryContract(query)\r\n .then(value => {\r\n let nodes = new Array();\r\n const untypedResponse = value.outputUntyped();\r\n mapNodes(untypedResponse, nodes, []);\r\n return resolve(nodes);\r\n })\r\n .catch(e => console.error('GetAllNodesStatus error ', e));\r\n });\r\n};\r\n\r\nexport const getBlsKeysStatus = (dapp: DappState, queued: any[], delegationContract?: string) => {\r\n const query = new Query({\r\n address: new Address(auctionContract),\r\n func: new ContractFunction('getBlsKeysStatus'),\r\n args: [new AddressValue(new Address(delegationContract))],\r\n });\r\n return new Promise>(resolve => {\r\n dapp.proxy\r\n .queryContract(query)\r\n .then(value => {\r\n let nodes = new Array();\r\n let untypedResponse = value.outputUntyped();\r\n mapNodes(untypedResponse.reverse(), nodes, queued);\r\n return resolve(nodes);\r\n })\r\n .catch(e => console.error('GetBlsKeysStatus error', e));\r\n });\r\n};\r\nexport const getQueueSize = (dapp: DappState) => {\r\n const query = new Query({\r\n address: new Address(stakingContract),\r\n func: new ContractFunction('getQueueSize'),\r\n });\r\n return new Promise(resolve => {\r\n dapp.proxy\r\n .queryContract(query)\r\n .then(value => {\r\n const untypedResponse = value.outputUntyped();\r\n return resolve(decodeString(untypedResponse[0]));\r\n })\r\n .catch(e => console.error('getQueueSize error', e));\r\n });\r\n};\r\n\r\nexport const getQueueIndex = (blsKey: any, dapp: DappState) => {\r\n const query = new Query({\r\n address: new Address(stakingContract),\r\n func: new ContractFunction('getQueueIndex'),\r\n caller: new Address(auctionContract),\r\n args: [BytesValue.fromHex(blsKey)],\r\n });\r\n return new Promise(resolve => {\r\n dapp.proxy\r\n .queryContract(query)\r\n .then(value => {\r\n const untypedResponse = value.outputUntyped();\r\n return resolve(decodeString(untypedResponse[0]));\r\n })\r\n .catch(e => console.error('getQueueIndex error', e));\r\n });\r\n};\r\n\r\nconst isStatus = (value: string) => {\r\n if (NodeStatus[value]) {\r\n return true;\r\n }\r\n return false;\r\n};\r\n\r\nconst mapNodes = (responseValues: Buffer[], nodes: NodeType[], queued: any[]) => {\r\n let status: { [key: string]: string };\r\n responseValues.forEach(value => {\r\n if (isStatus(decodeString(value))) {\r\n status = { key: decodeString(value), value: NodeStatus[decodeString(value)] };\r\n } else {\r\n if (status.key === 'queued') {\r\n queued.push(value.toString('hex'));\r\n }\r\n nodes.push(new NodeType(value.toString('hex'), status));\r\n }\r\n });\r\n};\r\n","import moment from 'moment';\r\nimport * as React from 'react';\r\nimport { useDropzone } from 'react-dropzone';\r\nimport { useContext } from '../../context';\r\nimport decodePem from '../../helpers/decodePem';\r\ninterface DropzonePemType {\r\n setFieldValue: any;\r\n fieldName: string;\r\n errors: any;\r\n pubKeyLength: number;\r\n multiple?: boolean;\r\n unique?: boolean;\r\n blacklist?: string[];\r\n}\r\n\r\nexport interface DropzoneFileType {\r\n id: string;\r\n name: string;\r\n pubKey: string;\r\n value: any;\r\n signature: any;\r\n errors: string[];\r\n}\r\n\r\nconst DropzonePem = ({\r\n setFieldValue,\r\n fieldName,\r\n errors,\r\n pubKeyLength,\r\n multiple,\r\n unique,\r\n}: DropzonePemType) => {\r\n const [files, setFiles] = React.useState([]);\r\n\r\n const getKeyErrors = (pubKey: string, existing: DropzoneFileType[]) => {\r\n const errors: string[] = [];\r\n\r\n if (pubKey.length !== pubKeyLength) {\r\n errors.push('length');\r\n }\r\n\r\n if (unique === true) {\r\n const found = existing.filter(file => file.pubKey === pubKey);\r\n if (found.length > 1) {\r\n errors.push('unique');\r\n }\r\n }\r\n\r\n return errors;\r\n };\r\n\r\n const updateFieldValue = () => {\r\n if (files.length > 0) {\r\n const updatedFiles = [...files];\r\n\r\n updatedFiles.forEach(file => {\r\n file.errors = getKeyErrors(file.pubKey, updatedFiles);\r\n });\r\n\r\n setFieldValue(fieldName, updatedFiles);\r\n }\r\n };\r\n React.useEffect(updateFieldValue, /* eslint-disable react-hooks/exhaustive-deps */ [files]);\r\n\r\n const getUpdatedFiles = ({\r\n existing,\r\n name,\r\n pubKey,\r\n value,\r\n signature,\r\n }: {\r\n existing: DropzoneFileType[];\r\n name: string;\r\n pubKey: string;\r\n value: any;\r\n signature: any;\r\n }) => {\r\n const updated = [...existing];\r\n const file = updated.find(item => item.name === name);\r\n\r\n if (file) {\r\n file.value = value;\r\n } else {\r\n updated.push({\r\n id: `${name}-${moment().unix()}`,\r\n name,\r\n pubKey,\r\n value,\r\n signature,\r\n errors: [],\r\n });\r\n }\r\n return updated;\r\n };\r\n\r\n const { delegationContract } = useContext();\r\n const { getRootProps, getInputProps, isDragActive } = useDropzone({\r\n accept: '.pem',\r\n multiple,\r\n onDrop: async (files: any) => {\r\n const onload = (fileReader: any, name: string) => async (e: any) => {\r\n try {\r\n let { value, pubKey, signature } = await decodePem(\r\n fileReader.result!,\r\n delegationContract\r\n );\r\n setFiles(existing => {\r\n return getUpdatedFiles({ existing, value, pubKey, name, signature });\r\n });\r\n } catch (e) {\r\n console.error('error decode pem', e);\r\n setFiles(existing => {\r\n return getUpdatedFiles({ existing, value: '', pubKey: '', name, signature: '' });\r\n });\r\n return;\r\n }\r\n };\r\n\r\n files.forEach((file: any) => {\r\n const { name } = file;\r\n const fileReader = new FileReader();\r\n fileReader.onload = onload(fileReader, name);\r\n fileReader.readAsText(file);\r\n });\r\n },\r\n });\r\n const onclick = (e: React.MouseEvent) => {\r\n e.preventDefault();\r\n };\r\n const disabledOnClick = (e: React.MouseEvent) => {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n };\r\n const remove = (id: string) => {\r\n setFiles(existing => {\r\n let updated = [...existing];\r\n updated = updated.filter(item => item.id !== id);\r\n setFieldValue(fieldName, updated);\r\n return updated;\r\n });\r\n };\r\n\r\n const isInvalid = errors[fieldName] ? 'is-invalid' : '';\r\n const fileWord = multiple === false ? 'file' : 'files';\r\n const inputProps = getInputProps();\r\n if (multiple === false) {\r\n delete inputProps.multiple;\r\n }\r\n\r\n return (\r\n <>\r\n 0 ? 'p-0' : 'p-3'\r\n } ${isInvalid}`,\r\n })}\r\n >\r\n \r\n {isDragActive ? (\r\n
\r\n Drag and drop your PEM {fileWord} here, or{' '}\r\n \r\n Select {fileWord}\r\n \r\n
\r\n ) : (\r\n <>\r\n {files.length > 0 ? (\r\n
\r\n {files.map(({ id, name, errors }, i) => (\r\n 0 ? 'border-danger' : ''\r\n } `}\r\n onClick={disabledOnClick}\r\n >\r\n
\r\n

\r\n {name}\r\n

\r\n {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n remove(id);\r\n }}\r\n style={{\r\n cursor: 'pointer',\r\n userSelect: 'none',\r\n verticalAlign: '-0.1rem',\r\n }}\r\n >\r\n ×\r\n \r\n
\r\n
\r\n ))}\r\n \r\n ) : (\r\n
\r\n Drag and drop your PEM {fileWord} here, or{' '}\r\n \r\n Select {fileWord}\r\n \r\n
\r\n )}\r\n \r\n )}\r\n \r\n {isInvalid && (\r\n

\r\n {errors[fieldName]}\r\n

\r\n )}\r\n \r\n );\r\n};\r\n\r\nexport default DropzonePem;\r\n","import ModalActionButton from 'components/ModalActionButton';\r\nimport { Formik } from 'formik';\r\nimport * as React from 'react';\r\nimport { object, array, mixed } from 'yup';\r\nimport DropzonePem, { DropzoneFileType } from './index';\r\n\r\nconst PemUpload = ({\r\n handleClose,\r\n onSubmit,\r\n}: {\r\n handleClose: () => void;\r\n onSubmit: (pemFiles: DropzoneFileType[]) => void;\r\n}) => {\r\n const initialValues: { pemFiles: DropzoneFileType[] } = { pemFiles: [] };\r\n const ref = React.useRef(null);\r\n\r\n return (\r\n {\r\n onSubmit(pemFiles);\r\n }}\r\n validationSchema={object().shape({\r\n pemFiles: array()\r\n .of(mixed())\r\n .test('validKeyLength', 'Invalid PEM file', (value: DropzoneFileType[] | undefined) => {\r\n return !!value && value.every(file => !file.errors.includes('length'));\r\n })\r\n .test(\r\n 'keyIsUnique',\r\n 'Duplicate key detected',\r\n (value: DropzoneFileType[] | undefined) => {\r\n return !!value && value.every(file => !file.errors.includes('unique'));\r\n }\r\n )\r\n .required('PEM file is required'),\r\n })}\r\n >\r\n {props => {\r\n const { setFieldValue, handleSubmit, errors } = props;\r\n\r\n return (\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n );\r\n }}\r\n \r\n );\r\n};\r\n\r\nexport default PemUpload;\r\n","import * as React from 'react';\r\nimport { Modal } from 'react-bootstrap';\r\nimport { DropzoneFileType } from '.';\r\nimport PemUpload from './PemUpload';\r\nimport { RequestType } from './Request';\r\n\r\ninterface RequestVariablesModalType {\r\n name: string;\r\n show: boolean;\r\n variables: RequestType['variables'];\r\n data: RequestType['data'];\r\n handleClose: () => void;\r\n triggerDispatchEvent: (variablesData: string) => void;\r\n}\r\n\r\ninterface ModalValuesType {\r\n [key: string]: any;\r\n}\r\n\r\nconst RequestVariablesModal = ({\r\n name,\r\n show,\r\n variables,\r\n data,\r\n handleClose,\r\n triggerDispatchEvent,\r\n}: RequestVariablesModalType) => {\r\n const [modalValues, setModalValues] = React.useState({});\r\n\r\n const onSubmit = (pemFiles?: DropzoneFileType[]) => {\r\n if (typeof data !== 'string') {\r\n triggerDispatchEvent(`${data(pemFiles ? pemFiles : modalValues)}`);\r\n }\r\n };\r\n return (\r\n \r\n
\r\n
\r\n

\r\n {name}\r\n

\r\n
\r\n {variables?.map(variable => {\r\n return (\r\n
\r\n {variable.type === 'input' && (\r\n
\r\n \r\n
\r\n {\r\n const vals = { ...modalValues };\r\n vals[variable.name] = e.target.value;\r\n setModalValues(vals);\r\n }}\r\n autoComplete=\"off\"\r\n />\r\n
\r\n
\r\n )}\r\n \r\n
\r\n );\r\n })}\r\n
\r\n
\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default RequestVariablesModal;\r\n","import React, { useState } from \"react\";\r\nimport { DropzoneFileType } from \"components/DropzonePem\";\r\nimport RequestVariablesModal from \"components/DropzonePem/RequestVariablesModal\";\r\nimport { BLS } from \"@elrondnetwork/erdjs\";\r\nimport { DelegationTransactionType } from \"helpers/contractDataDefinitions\";\r\nimport { useDelegationWallet } from \"helpers/useDelegation\";\r\nimport { useContext } from \"context\";\r\nimport ConfirmTransactionModal from \"components/ConfirmTransactionModal\";\r\n\r\nconst AddNodeAction = () => {\r\n const { ledgerAccount, walletConnectAccount } = useContext();\r\n const [showAddNodes, setAddNodesModal] = useState(false);\r\n const [showCheckYourLedgerModal, setShowCheckYourLedgerModal] = useState(\r\n false\r\n );\r\n const [transactionArguments, setTransactionArguments] = useState(\r\n new DelegationTransactionType(\"\", \"\")\r\n );\r\n const { sendTransactionWallet } = useDelegationWallet();\r\n\r\n const handleAddNodes = (value: string) => {\r\n let txArguments = new DelegationTransactionType(\"0\", \"addNodes\", value);\r\n if (ledgerAccount || walletConnectAccount) {\r\n setAddNodesModal(false);\r\n setTransactionArguments(txArguments);\r\n setShowCheckYourLedgerModal(true);\r\n } else {\r\n sendTransactionWallet(txArguments);\r\n }\r\n };\r\n\r\n const getPemPubKeysWithSignature = (pemFiles: DropzoneFileType[]) => {\r\n let keysData = \"\";\r\n pemFiles.forEach(({ pubKey, signature }) => {\r\n keysData += `@${pubKey}@${signature}`;\r\n });\r\n return keysData;\r\n };\r\n\r\n const addNodesRequest = {\r\n data: (pemFiles: DropzoneFileType[]) => {\r\n return `${getPemPubKeysWithSignature(pemFiles)}`;\r\n },\r\n variables: [\r\n {\r\n name: \"pemFiles\",\r\n type: \"pemUpload\",\r\n },\r\n ],\r\n };\r\n return (\r\n
\r\n {\r\n await BLS.initIfNecessary();\r\n setAddNodesModal(true);\r\n }}\r\n className=\"btn-add-nodes\"\r\n >\r\n + Add nodes\r\n \r\n {\r\n setAddNodesModal(false);\r\n }}\r\n triggerDispatchEvent={(variablesData: string) =>\r\n handleAddNodes(variablesData)\r\n }\r\n variables={addNodesRequest.variables}\r\n data={addNodesRequest.data}\r\n />\r\n {\r\n setShowCheckYourLedgerModal(false);\r\n }}\r\n />\r\n
\r\n );\r\n};\r\n\r\nexport default AddNodeAction;\r\n","import React, { useEffect, useState } from \"react\";\r\nimport { useContext } from \"context\";\r\nimport NodeRow from \"./NodeRow\";\r\nimport {\r\n getAllNodesStatus,\r\n getBlsKeysStatus,\r\n getQueueSize,\r\n getQueueIndex,\r\n} from \"./helpers/keysFunctions\";\r\nimport AddNodeAction from \"./AddNodeAction\";\r\nimport { NodeType } from \"./helpers/nodeType\";\r\n\r\nconst Nodes = () => {\r\n const { dapp, delegationContract } = useContext();\r\n const [keys, setKeys] = useState(new Array());\r\n const queued: any = [];\r\n\r\n const setQueuedKeys = async (queued: any, adaptedNodesStatus: NodeType[]) => {\r\n if (queued.length) {\r\n const results = await Promise.all([\r\n getQueueSize(dapp),\r\n ...queued.map((blsKey: any) => getQueueIndex(blsKey, dapp)),\r\n ]);\r\n\r\n let queueSize: any;\r\n results.forEach((result, index) => {\r\n if (index === 0) {\r\n queueSize = result;\r\n } else {\r\n const [found] = adaptedNodesStatus.filter(({ blsKey }: any) => {\r\n return blsKey === queued[index - 1];\r\n });\r\n\r\n found.queueIndex = result;\r\n found.queueSize = queueSize;\r\n }\r\n });\r\n }\r\n };\r\n\r\n const getDiplayNodes = () => {\r\n Promise.all([\r\n getAllNodesStatus(dapp, delegationContract),\r\n getBlsKeysStatus(dapp, queued, delegationContract),\r\n ])\r\n .then(async ([nodesStatus, blsKeys]) => {\r\n const adaptedNodesStatus = nodesStatus.map((item) => {\r\n let index = blsKeys.findIndex((i) => i.blsKey === item.blsKey);\r\n return {\r\n ...item,\r\n status: index >= 0 ? blsKeys[index].status : item.status,\r\n };\r\n });\r\n await setQueuedKeys(queued, adaptedNodesStatus);\r\n setKeys(adaptedNodesStatus);\r\n })\r\n .catch((error) => console.error(\"getDiplayNodes error\", error));\r\n };\r\n\r\n useEffect(\r\n getDiplayNodes,\r\n /* eslint-disable react-hooks/exhaustive-deps */ []\r\n );\r\n\r\n return (\r\n <>\r\n
\r\n
\r\n
\r\n

My Nodes

\r\n
\r\n \r\n
\r\n
\r\n {keys.length > 0 ? (\r\n
\r\n \r\n {/* \r\n \r\n \r\n \r\n \r\n \r\n */}\r\n \r\n {keys.map((blsKey, i) => (\r\n \r\n ))}\r\n \r\n
Public keyStatusActions
\r\n
\r\n ) : (\r\n No keys found for this contract.\r\n )}\r\n
\r\n
\r\n \r\n );\r\n};\r\nexport default Nodes;\r\n","import { Redirect } from \"react-router-dom\";\r\nimport { Address } from \"@elrondnetwork/erdjs\";\r\nimport { useEffect } from \"react\";\r\nimport { useContext, useDispatch } from \"context\";\r\nimport Overview from \"components/Overview\";\r\nimport Nodes from \"./Nodes\";\r\nimport { AccountType } from \"helpers/contractDataDefinitions\";\r\nimport { getItem } from \"storage/session\";\r\nimport loginBackground from \"assets/images/login-background.jpg\";\r\nimport loginBackgroundMobile from \"assets/images/login-background-mobile.jpg\";\r\n\r\nconst Owner = () => {\r\n const {\r\n address,\r\n contractOverview,\r\n loggedIn,\r\n dapp,\r\n ledgerAccount,\r\n walletConnectAccount,\r\n } = useContext();\r\n const dispatch = useDispatch();\r\n const isOwner = () => {\r\n let loginAddress = new Address(address).hex();\r\n return loginAddress.localeCompare(contractOverview.ownerAddress) === 0;\r\n };\r\n\r\n const fetchAccount = () => {\r\n dapp.proxy.getAccount(new Address(address)).then((account) => {\r\n dispatch({\r\n type: \"setAccount\",\r\n account: new AccountType(\r\n account.balance.toString(),\r\n account.userName,\r\n account.nonce\r\n ),\r\n });\r\n });\r\n };\r\n\r\n useEffect(fetchAccount, /* eslint-disable react-hooks/exhaustive-deps */ []);\r\n\r\n const isLedgerLogin = getItem(\"ledgerLogin\") && !ledgerAccount;\r\n const isWalletConnect =\r\n getItem(\"walletConnectLogin\") && !walletConnectAccount;\r\n const dispatchLoginType = () => {\r\n if (isLedgerLogin) {\r\n const ledgerLogin = getItem(\"ledgerLogin\");\r\n dispatch({\r\n type: \"setLedgerAccount\",\r\n ledgerAccount: {\r\n index: ledgerLogin.index,\r\n address: address,\r\n },\r\n });\r\n }\r\n if (isWalletConnect) {\r\n dispatch({\r\n type: \"setWalletConnectAccount\",\r\n walletConnectAccount: address,\r\n });\r\n }\r\n };\r\n\r\n useEffect(\r\n dispatchLoginType,\r\n /* eslint-disable react-hooks/exhaustive-deps */ []\r\n );\r\n\r\n if (!loggedIn) {\r\n return ;\r\n }\r\n\r\n return (\r\n <>\r\n {isOwner() ? (\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n ) : (\r\n \r\n )}\r\n \r\n );\r\n};\r\n\r\nexport default Owner;\r\n","import * as React from 'react';\r\n\r\ninterface AddressRowType {\r\n setSelectedAddress: React.Dispatch>;\r\n setSelectedIndex: React.Dispatch>;\r\n selectedAddress: string;\r\n index: number;\r\n account: string;\r\n}\r\n\r\nconst AddressRow = ({\r\n account,\r\n index,\r\n setSelectedAddress,\r\n selectedAddress,\r\n setSelectedIndex,\r\n}: AddressRowType) => {\r\n const ref = React.useRef(null);\r\n\r\n const handleChange = (e: React.ChangeEvent) => {\r\n const checked = e.target.checked;\r\n if (checked) {\r\n setSelectedAddress(account);\r\n setSelectedIndex(index);\r\n } else if (selectedAddress === account && !checked) {\r\n setSelectedAddress('');\r\n setSelectedIndex(undefined);\r\n }\r\n };\r\n\r\n return (\r\n \r\n \r\n
\r\n \r\n \r\n
\r\n {account}\r\n
\r\n \r\n
\r\n \r\n {index}\r\n \r\n );\r\n};\r\n\r\nexport default AddressRow;\r\n","import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\r\nimport * as React from 'react';\r\nimport { useContext, useDispatch } from 'context';\r\nimport { HWProvider } from '@elrondnetwork/erdjs';\r\nimport { faChevronLeft, faChevronRight, faCircleNotch } from '@fortawesome/free-solid-svg-icons';\r\nimport AddressRow from './AddressRow';\r\nimport { useHistory } from 'react-router-dom';\r\nimport State from 'components/State';\r\nimport { ledgerErrorCodes } from 'helpers/ledgerErrorCodes';\r\n\r\nconst AddressTable = ({\r\n setShowAddressTable,\r\n onClick,\r\n setError,\r\n}: {\r\n setShowAddressTable: React.Dispatch>;\r\n onClick: () => void;\r\n setError: (error: string) => void;\r\n}) => {\r\n const { dapp, loading } = useContext();\r\n const dispatch = useDispatch();\r\n const [startIndex, setStartIndex] = React.useState(0);\r\n const [accounts, setAccounts] = React.useState([]);\r\n const [selectedAddress, setSelectedAddress] = React.useState('');\r\n const [selectedIndex, setSelectedIndex] = React.useState();\r\n const hwWalletP = new HWProvider(dapp.proxy);\r\n const history = useHistory();\r\n\r\n const fetchAccounts = () => {\r\n dispatch({ type: 'loading', loading: true });\r\n hwWalletP\r\n .init()\r\n .then((success: any) => {\r\n if (!success) {\r\n dispatch({ type: 'loading', loading: false });\r\n setError('could not initialise ledger app, make sure Elrond app is open');\r\n console.warn('could not initialise ledger app, make sure Elrond app is open');\r\n return;\r\n }\r\n hwWalletP\r\n .getAccounts(startIndex, 5)\r\n .then(accounts => {\r\n setAccounts(accounts);\r\n dispatch({ type: 'loading', loading: false });\r\n })\r\n .catch(err => {\r\n setError('Check if Elrond app is open on Ledger');\r\n console.error('error', err);\r\n dispatch({ type: 'loading', loading: false });\r\n });\r\n })\r\n .catch(err => {\r\n if (err.statusCode in ledgerErrorCodes) {\r\n setError((ledgerErrorCodes as any)[err.statusCode].message);\r\n }\r\n console.error('error', err);\r\n dispatch({ type: 'loading', loading: false });\r\n });\r\n };\r\n\r\n React.useEffect(fetchAccounts, /* eslint-disable react-hooks/exhaustive-deps */ [startIndex]);\r\n\r\n const goToNext = () => {\r\n setSelectedAddress('');\r\n setStartIndex(current => current + 1);\r\n };\r\n\r\n const goToPrev = () => {\r\n setSelectedAddress('');\r\n setStartIndex(current => (current === 0 ? 0 : current - 1));\r\n };\r\n\r\n const setAddress = () => {\r\n if (selectedIndex !== undefined) {\r\n dispatch({\r\n type: 'setLedgerAccount',\r\n ledgerAccount: {\r\n index: selectedIndex,\r\n address: selectedAddress,\r\n },\r\n });\r\n dispatch({ type: 'loading', loading: true });\r\n const hwWalletProvider = new HWProvider(dapp.proxy);\r\n hwWalletProvider\r\n .init()\r\n .then((success: any) => {\r\n if (!success) {\r\n setError('could not initialise ledger app, make sure Elrond app is open');\r\n dispatch({ type: 'loading', loading: false });\r\n console.warn('could not initialise ledger app, make sure Elrond app is open');\r\n return;\r\n }\r\n\r\n hwWalletProvider\r\n .login({addressIndex: selectedIndex})\r\n .then(address => {\r\n dispatch({ type: 'setProvider', provider: hwWalletProvider });\r\n dispatch({ type: 'login', address });\r\n\r\n dispatch({\r\n type: 'ledgerLogin',\r\n ledgerLogin: {\r\n index: selectedIndex,\r\n loginType: 'ledger',\r\n },\r\n });\r\n history.push('/dashboard');\r\n })\r\n .catch((err: any) => {\r\n if (err.statusCode in ledgerErrorCodes) {\r\n setError((ledgerErrorCodes as any)[err.statusCode].message);\r\n dispatch({\r\n type: 'setLedgerAccount',\r\n ledgerAccount: undefined,\r\n });\r\n }\r\n dispatch({ type: 'loading', loading: false });\r\n console.warn(err);\r\n });\r\n })\r\n .catch((err: any) => {\r\n if (err.statusCode in ledgerErrorCodes) {\r\n setError((ledgerErrorCodes as any)[err.statusCode].message);\r\n }\r\n dispatch({ type: 'loading', loading: false });\r\n console.warn('could not initialise ledger app, make sure Elrond app is open', err);\r\n });\r\n setShowAddressTable(false);\r\n }\r\n };\r\n\r\n switch (true) {\r\n case loading:\r\n return (\r\n \r\n );\r\n default:\r\n return (\r\n <>\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {accounts.map((account, index) => {\r\n const props = {\r\n account,\r\n index: index + startIndex * 5,\r\n selectedAddress,\r\n setSelectedAddress,\r\n setSelectedIndex,\r\n key: index,\r\n };\r\n return ;\r\n })}\r\n \r\n
Address#
\r\n
\r\n
\r\n \r\n Prev\r\n \r\n \r\n Next \r\n \r\n
\r\n \r\n Confirm\r\n \r\n
\r\n
\r\n
\r\n \r\n );\r\n }\r\n};\r\n\r\nexport default AddressTable;\r\n","import * as React from 'react';\r\nimport { useContext } from 'context';\r\n\r\nconst ConfirmedAddress = () => {\r\n const { ledgerAccount } = useContext();\r\n\r\n return (\r\n
\r\n
\r\n
\r\n

Confirm Ledger Address

\r\n

For security, please confirm that your address:

\r\n

{ledgerAccount?.address}

\r\n

is the one shown on your Ledger device screen now.

\r\n

Select Approve on your device to confirm.

\r\n

\r\n Or, if it does not match, close this page and{' '}\r\n \r\n contact support\r\n \r\n .\r\n

\r\n
\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default ConfirmedAddress;\r\n","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"linearGradient\", {\n id: \"a\",\n x1: \"50%\",\n x2: \"50%\",\n y1: \"0%\",\n y2: \"100%\"\n}, /*#__PURE__*/React.createElement(\"stop\", {\n id: \"gradient-start-color\",\n offset: \"0%\"\n}), /*#__PURE__*/React.createElement(\"stop\", {\n id: \"gradient-stop-color\",\n offset: \"100%\",\n stopColor: \"#FFF\"\n})), /*#__PURE__*/React.createElement(\"path\", {\n id: \"b\",\n d: \"M91 0h34a4 4 0 0 1 4 4v108.144c0 11.519-9.337 20.856-20.856 20.856h-.288C96.337 133 87 123.663 87 112.144V4a4 4 0 0 1 4-4z\"\n}));\n\nvar _ref3 = /*#__PURE__*/React.createElement(\"g\", {\n fill: \"none\",\n fillRule: \"evenodd\"\n}, /*#__PURE__*/React.createElement(\"path\", {\n className: \"ledger-stroke\",\n stroke: \"#1D2027\",\n strokeWidth: 2,\n d: \"M127.856 31.44a1 1 0 0 1-1 1H100.63a5 5 0 0 1-5-5v-8.486a5 5 0 0 1 5-5h26.225a1 1 0 0 1 1 1v16.485z\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n className: \"ledger-stroke\",\n stroke: \"#142533\",\n strokeWidth: 2,\n d: \"M95.247 26.231H84.318v-6.435h10.93v6.435z\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n className: \"ledger-stroke\",\n stroke: \"#1D2027\",\n strokeWidth: 2,\n d: \"M127.923 28.726V17.471l6.977.083a1 1 0 0 1 .988 1V27.82a1 1 0 0 1-1.012.988l-6.953-.083z\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n fill: \"url(#a)\",\n d: \"M6.836 53.925h1.616v82.65H6.836v-82.65zm5.657 0h1.616v82.65h-1.616v-82.65z\",\n transform: \"matrix(0 -1 -1 0 137.5 33.44)\"\n}), /*#__PURE__*/React.createElement(\"g\", {\n transform: \"rotate(-90 128.59 1.975)\"\n}, /*#__PURE__*/React.createElement(\"rect\", {\n className: \"ledger-fill\",\n width: 4.492,\n height: 17.12,\n x: 125.336,\n y: 15.505,\n fill: \"#142533\",\n rx: 2\n}), /*#__PURE__*/React.createElement(\"rect\", {\n className: \"ledger-fill\",\n width: 4.492,\n height: 17.12,\n x: 125.336,\n y: 70.094,\n fill: \"#142533\",\n rx: 2\n}), /*#__PURE__*/React.createElement(\"use\", {\n className: \"ledger-fill-inner-bg\",\n fill: \"#FFF\",\n xlinkHref: \"#b\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n className: \"ledger-stroke\",\n fill: \"#6490F1\",\n fillOpacity: 0.15,\n stroke: \"#142533\",\n strokeLinejoin: \"square\",\n strokeWidth: 2,\n d: \"M91 1a3 3 0 0 0-3 3v108.144C88 123.11 96.89 132 107.856 132h.288C119.11 132 128 123.11 128 112.144V4a3 3 0 0 0-3-3H91z\"\n}), /*#__PURE__*/React.createElement(\"rect\", {\n className: \"ledger-fill-outer-bg\",\n width: 21,\n height: 62,\n x: 97.5,\n y: 21.5,\n fill: \"#FFF\",\n stroke: \"#6490F1\",\n rx: 1.6\n}), /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#6490F1\",\n d: \"M105.5 35h5a.5.5 0 0 1 .5.5v34a.5.5 0 0 1-.5.5h-5a.5.5 0 0 1-.5-.5v-34a.5.5 0 0 1 .5-.5zm1.238 3.042l.774.512v.013l-.774.505.341.466.722-.577h.013l.243.899.551-.177-.328-.88.932.053v-.597l-.932.046.328-.873-.551-.17-.243.892h-.013l-.722-.584-.34.472zm0 3.908l.774.512v.013l-.774.505.341.466.722-.578h.013l.243.9.551-.178-.328-.88.932.053v-.597l-.932.046.328-.872-.551-.17-.243.891h-.013l-.722-.584-.34.473zm0 3.907l.774.512v.013l-.774.505.341.466.722-.577h.013l.243.899.551-.178-.328-.879.932.053v-.597l-.932.046.328-.873-.551-.17-.243.892h-.013l-.722-.584-.34.472zm0 3.908l.774.511v.014l-.774.505.341.466.722-.578h.013l.243.899.551-.177-.328-.88.932.053v-.597l-.932.046.328-.872-.551-.171-.243.892h-.013l-.722-.584-.34.473zm0 3.907l.774.512v.013l-.774.505.341.466.722-.577h.013l.243.898.551-.177-.328-.879.932.053v-.597l-.932.046.328-.873-.551-.17-.243.892h-.013l-.722-.584-.34.472zm0 3.908l.774.511v.013l-.774.506.341.465.722-.577h.013l.243.899.551-.177-.328-.88.932.053v-.597l-.932.046.328-.873-.551-.17-.243.892h-.013l-.722-.584-.34.473zm0 3.907l.774.512v.013l-.774.505.341.466.722-.578h.013l.243.9.551-.178-.328-.879.932.052v-.597l-.932.046.328-.872-.551-.17-.243.891h-.013l-.722-.583-.34.472zm0 3.907l.774.512v.013l-.774.505.341.466.722-.577h.013l.243.899.551-.177-.328-.88.932.053v-.597l-.932.046.328-.873-.551-.17-.243.892h-.013l-.722-.584-.34.472z\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n className: \"ledger-stroke ledger-fill-outer-bg\",\n fill: \"#FFF\",\n stroke: \"#142533\",\n strokeWidth: 2,\n d: \"M123.166 125.105c7.049-8.4 5.953-20.925-2.447-27.974l-90.824-76.21a3 3 0 0 0-4.227.37L4 47.115a3 3 0 0 0 .37 4.227l90.824 76.21c8.4 7.049 20.924 5.953 27.973-2.447z\"\n}), /*#__PURE__*/React.createElement(\"ellipse\", {\n cx: 108.016,\n cy: 111.123,\n stroke: \"#6490F1\",\n rx: 10.57,\n ry: 10.644\n})));\n\nfunction SvgLedgerNano(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, [\"title\", \"titleId\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n id: \"ledger-svg\",\n xmlns: \"http://www.w3.org/2000/svg\",\n xmlnsXlink: \"http://www.w3.org/1999/xlink\",\n width: 110,\n height: 55,\n viewBox: \"0 0 260 129\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _ref2, _ref3);\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgLedgerNano);\nexport default __webpack_public_path__ + \"static/media/ledger-nano.6ece58da.svg\";\nexport { ForwardRef as ReactComponent };","import * as React from 'react';\r\nimport { ReactComponent as LedgerLogo } from 'assets/images/ledger-nano.svg';\r\n\r\nconst LedgerConnect = ({ onClick, error }: { onClick: () => void; error: string }) => {\r\n const [ledgerError] = React.useState(error);\r\n return (\r\n
\r\n
\r\n
\r\n \r\n

Connect Ledger

\r\n

Unlock your device & open the Elrond App.

\r\n
\r\n {ledgerError && (\r\n

\r\n {ledgerError}\r\n

\r\n )}\r\n \r\n Connect Ledger\r\n \r\n
\r\n
\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default LedgerConnect;\r\n","import React from 'react';\r\nimport { useContext, useDispatch } from 'context';\r\nimport AddressTable from './AddressTable';\r\nimport ConfirmedAddress from './ConfirmedAddress';\r\nimport { HWProvider } from '@elrondnetwork/erdjs';\r\nimport { useHistory } from 'react-router-dom';\r\nimport LedgerConnect from './LedgerConnect';\r\n\r\nconst Ledger = () => {\r\n const { dapp } = useContext();\r\n const dispatch = useDispatch();\r\n const history = useHistory();\r\n const { ledgerAccount } = useContext();\r\n const [error, setError] = React.useState('');\r\n const [showAddressTable, setShowAddressTable] = React.useState(false);\r\n\r\n const onClick = () => {\r\n setError('');\r\n if (ledgerAccount !== undefined) {\r\n const hwWalletP = new HWProvider(dapp.proxy);\r\n hwWalletP\r\n .init()\r\n .then((success: any) => {\r\n if (!success) {\r\n dispatch({ type: 'loading', loading: false });\r\n console.warn('could not initialise ledger app, make sure Elrond app is open');\r\n return;\r\n }\r\n\r\n hwWalletP\r\n .login()\r\n .then(address => {\r\n dispatch({ type: 'setProvider', provider: hwWalletP });\r\n dispatch({ type: 'login', address });\r\n history.push('/dashboard');\r\n })\r\n .catch((err: any) => {\r\n setError('Check if Elrond app is open on Ledger');\r\n dispatch({ type: 'loading', loading: false });\r\n console.warn(err);\r\n });\r\n })\r\n .catch(error => {\r\n console.error('error ', error);\r\n });\r\n } else {\r\n setShowAddressTable(true);\r\n }\r\n };\r\n return (\r\n <>\r\n {(() => {\r\n switch (true) {\r\n case ledgerAccount !== undefined && !error:\r\n return ;\r\n case showAddressTable && !error:\r\n return (\r\n \r\n );\r\n case error !== '':\r\n return ;\r\n default:\r\n return ;\r\n }\r\n })()}\r\n \r\n );\r\n};\r\n\r\nexport default Ledger;\r\n","import React from 'react';\r\nimport Dashboard from './pages/Dashboard';\r\nimport Home from './pages/Home';\r\nimport withPageTitle from './components/PageTitle';\r\nimport Owner from 'pages/Owner';\r\nimport Ledger from 'pages/Ledger';\r\nimport WalletConnect from 'pages/WalletConnect';\r\n\r\ninterface RouteType {\r\n path: string;\r\n page: string;\r\n title: string;\r\n component: any;\r\n}\r\n\r\nconst routes: RouteType[] = [\r\n {\r\n path: '/',\r\n page: 'home',\r\n title: '',\r\n component: Home,\r\n },\r\n {\r\n path: '/dashboard',\r\n page: 'dashboard',\r\n title: 'Dashboard',\r\n component: Dashboard,\r\n },\r\n {\r\n path: '/ledger',\r\n page: 'ledger',\r\n title: 'Ledger login',\r\n component: Ledger,\r\n },\r\n {\r\n path: '/walletconnect',\r\n page: 'walletconnect',\r\n title: 'xPortal login',\r\n component: WalletConnect,\r\n },\r\n {\r\n path: '/owner',\r\n page: 'owner',\r\n title: 'Owner',\r\n component: Owner,\r\n },\r\n];\r\n\r\nconst wrappedRoutes = () => {\r\n return routes.map(route => {\r\n const title = route.title ? `${route.title} • Delegation Manager` : 'Delegation Manager';\r\n return {\r\n path: route.path,\r\n page: route.page,\r\n component: (withPageTitle(title, route.component) as any) as React.ComponentClass<{}, any>,\r\n };\r\n });\r\n};\r\n\r\nexport default wrappedRoutes();\r\n","import React, { useEffect, useState } from 'react';\r\nimport { useHistory } from 'react-router-dom';\r\nimport QRCode from 'qrcode';\r\nimport { useContext, useDispatch } from 'context';\r\nimport { WalletConnectProvider } from '@elrondnetwork/erdjs';\r\nimport { walletConnectBridge, walletConnectDeepLink } from 'config';\r\n\r\nconst WalletConnect = () => {\r\n const { dapp } = useContext();\r\n const dispatch = useDispatch();\r\n const history = useHistory();\r\n const [qrSvg, setQrSvg] = useState('');\r\n const [wcUri, setWcUri] = useState('');\r\n const [error, setError] = useState('');\r\n\r\n const urlParams = new URLSearchParams(window.location.search);\r\n const isFromMobile = urlParams.get('mobileplatform') === 'true';\r\n\r\n const svgQr: any = {\r\n dangerouslySetInnerHTML: {\r\n __html: qrSvg,\r\n },\r\n style: {\r\n width: '15rem',\r\n height: '15rem',\r\n },\r\n };\r\n\r\n const buildQrCode = () => {\r\n (async () => {\r\n if (wcUri) {\r\n const svg = await QRCode.toString(wcUri, { type: 'svg' });\r\n setQrSvg(svg);\r\n }\r\n })();\r\n };\r\n\r\n useEffect(buildQrCode, [wcUri]);\r\n const handleOnLogin = () => {\r\n dapp.provider\r\n .getAddress()\r\n .then(address => {\r\n dispatch({\r\n type: 'setWalletConnectLogin',\r\n walletConnectLogin: {\r\n loginType: 'walletConnect',\r\n },\r\n });\r\n dispatch({ type: 'login', address });\r\n history.push('/dashboard');\r\n })\r\n .catch(e => {\r\n setError('Invalid address');\r\n console.log(e);\r\n });\r\n };\r\n\r\n const handleOnLogout = () => {\r\n dispatch({ type: 'logout', provider: dapp.provider });\r\n };\r\n\r\n const walletConnectInit = async () => {\r\n const walletConnect = new WalletConnectProvider(dapp.proxy, walletConnectBridge, {\r\n onClientLogin: handleOnLogin,\r\n onClientLogout: handleOnLogout,\r\n });\r\n dapp.provider = walletConnect;\r\n\r\n const walletConectUri = await walletConnect.login();\r\n setWcUri(walletConectUri);\r\n };\r\n\r\n useEffect(\r\n () => {\r\n walletConnectInit();\r\n },\r\n /* eslint-disable react-hooks/exhaustive-deps */ []\r\n );\r\n\r\n return (\r\n
\r\n
\r\n
\r\n
\r\n\r\n

Connect xPortal

\r\n

\r\n {isFromMobile ? (\r\n <>\r\n

\r\n Scan the QR code using xPortal or click the button below to open the App\r\n

\r\n \r\n xPortal Login\r\n \r\n \r\n ) : (\r\n 'Scan the QR code using xPortal'\r\n )}\r\n

\r\n
\r\n {error && (\r\n

\r\n {error}\r\n

\r\n )}\r\n
\r\n
\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default WalletConnect;\r\n","import React from 'react';\r\nimport { BrowserRouter as Router, Route, Switch } from 'react-router-dom';\r\nimport Layout from './components/Layout';\r\nimport routes from './routes';\r\nimport { ContextProvider } from './context';\r\n\r\nfunction App() {\r\n return (\r\n \r\n \r\n \r\n {routes.map((route, i) => (\r\n \r\n \r\n \r\n \r\n \r\n ))}\r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport default App;\r\n","import React from 'react';\r\nimport ReactDOM from 'react-dom';\r\nimport { StateInspector } from 'reinspect';\r\nimport App from './App';\r\nimport './assets/styles/theme.scss';\r\n\r\nlet MountedApp = ;\r\n\r\nif (process.env.NODE_ENV === 'development') {\r\n MountedApp = (\r\n \r\n \r\n \r\n );\r\n}\r\n\r\nReactDOM.render(MountedApp, document.getElementById('root'));\r\n","import { object, string, InferType } from 'yup';\r\nimport { DelegationContractType } from './helpers/types';\r\n\r\nexport const minDust: string = '5000000000000000'; // 0.005 EGLD\r\nexport const decimals: number = 2;\r\nexport const denomination: number = 18;\r\nexport const genesisTokenSuply: number = 20000000;\r\nexport const feesInEpoch: number = 0;\r\nexport const stakePerNode: number = 2500;\r\nexport const protocolSustainabilityRewards: number = 0.1;\r\nexport const yearSettings = [\r\n { year: 1, maximumInflation: 0.1084513 },\r\n { year: 2, maximumInflation: 0.09703538 },\r\n { year: 3, maximumInflation: 0.08561945 },\r\n { year: 4, maximumInflation: 0.07420352 },\r\n { year: 5, maximumInflation: 0.0627876 },\r\n { year: 6, maximumInflation: 0.05137167 },\r\n { year: 7, maximumInflation: 0.03995574 },\r\n { year: 8, maximumInflation: 0.02853982 },\r\n { year: 9, maximumInflation: 0.01712389 },\r\n { year: 10, maximumInflation: 0.00570796 },\r\n { year: 11, maximumInflation: 0.0 },\r\n];\r\nexport const auctionContract: string =\r\n 'erd1qqqqqqqqqqqqqqqpqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqplllst77y4l';\r\nexport const stakingContract: string =\r\n 'erd1qqqqqqqqqqqqqqqpqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqllls0lczs7';\r\nexport const delegationManagerContract: string =\r\n 'erd1qqqqqqqqqqqqqqqpqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqylllslmq6y6';\r\nexport const walletConnectBridge: string = 'https://bridge.walletconnect.org';\r\nexport const walletConnectDeepLink: string =\r\n 'https://maiar.page.link/?apn=com.elrond.maiar.wallet&isi=1519405832&ibi=com.elrond.maiar.wallet&link=https://maiar.com/';\r\n\r\nexport const network: NetworkType = {\r\n id: 'mainnet',\r\n name: 'Mainnet',\r\n egldLabel: 'EGLD',\r\n walletAddress: 'https://wallet.multiversx.com/dapp/init',\r\n apiAddress: 'https://api.multiversx.com',\r\n gatewayAddress: 'https://gateway.multiversx.com',\r\n explorerAddress: 'https://explorer.multiversx.com/',\r\n delegationContract: 'erd1qqqqqqqqqqqqqqqpqqqqqqqqqqqqqqqqqqqqqqqqqqqqqphllllsndz99p',\r\n};\r\n\r\nconst networkSchema = object({\r\n id: string()\r\n .defined()\r\n .required(),\r\n egldLabel: string()\r\n .defined()\r\n .required(),\r\n name: string()\r\n .defined()\r\n .required(),\r\n delegationContract: string(),\r\n walletAddress: string(),\r\n apiAddress: string(),\r\n gatewayAddress: string(),\r\n explorerAddress: string(),\r\n}).required();\r\n\r\nexport type NetworkType = InferType;\r\n\r\nnetworkSchema.validate(network, { strict: true }).catch(({ errors }) => {\r\n console.error(`Config invalid format for ${network.id}`, errors);\r\n});\r\n\r\nexport const delegationContractData: DelegationContractType[] = [\r\n {\r\n name: 'createNewDelegationContract',\r\n gasLimit: 6000000,\r\n data: 'createNewDelegationContract@',\r\n },\r\n {\r\n name: 'setAutomaticActivation',\r\n gasLimit: 6000000,\r\n data: 'setAutomaticActivation@',\r\n },\r\n {\r\n name: 'setMetaData',\r\n gasLimit: 6000000,\r\n data: 'setMetaData@',\r\n },\r\n {\r\n name: 'setReDelegateCapActivation',\r\n gasLimit: 6000000,\r\n data: 'setCheckCapOnReDelegateRewards@',\r\n },\r\n {\r\n name: 'changeServiceFee',\r\n gasLimit: 6000000,\r\n data: 'changeServiceFee@',\r\n },\r\n {\r\n name: 'modifyTotalDelegationCap',\r\n gasLimit: 6000000,\r\n data: 'modifyTotalDelegationCap@',\r\n },\r\n {\r\n name: 'addNodes',\r\n gasLimit: 12000000,\r\n data: 'addNodes',\r\n },\r\n {\r\n name: 'removeNodes',\r\n gasLimit: 12000000,\r\n data: 'removeNodes@',\r\n },\r\n {\r\n name: 'stakeNodes',\r\n gasLimit: 12000000,\r\n data: 'stakeNodes@',\r\n },\r\n {\r\n name: 'reStakeUnStakedNodes',\r\n gasLimit: 120000000,\r\n data: 'reStakeUnStakedNodes@',\r\n },\r\n {\r\n name: 'unStakeNodes',\r\n gasLimit: 12000000,\r\n data: 'unStakeNodes@',\r\n },\r\n {\r\n name: 'unBondNodes',\r\n gasLimit: 12000000,\r\n data: 'unBondNodes@',\r\n },\r\n {\r\n name: 'unJailNodes',\r\n gasLimit: 12000000,\r\n data: 'unJailNodes@',\r\n },\r\n {\r\n name: 'delegate',\r\n gasLimit: 12000000,\r\n data: 'delegate',\r\n },\r\n {\r\n name: 'unDelegate',\r\n gasLimit: 12000000,\r\n data: 'unDelegate@',\r\n },\r\n {\r\n name: 'withdraw',\r\n gasLimit: 12000000,\r\n data: 'withdraw',\r\n },\r\n {\r\n name: 'claimRewards',\r\n gasLimit: 6000000,\r\n data: 'claimRewards',\r\n },\r\n {\r\n name: 'reDelegateRewards',\r\n gasLimit: 12000000,\r\n data: 'reDelegateRewards',\r\n },\r\n];\r\n"],"sourceRoot":""}