{"version":3,"sources":["context/reducer.tsx","context/index.tsx","helpers/nominate.ts","context/state.tsx","helpers/entireBalance.ts","helpers/contractDataDefinitions.ts","helpers/decodePem.tsx","components/ContinueAndCloseButtons/index.tsx","components/Overview/OwnerActionModal.tsx","components/Denominate/formatters.tsx","storage/session.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","components/Overview/Header/SetAgencyMetaDataModal.tsx","components/ModalActionButton/index.tsx","../node_modules/@elrondnetwork/bls-wasm sync /^/.//.*/.js$","helpers/ledgerErrorCodes.ts","contracts/ContractViews.ts","components/Layout/APRCalculation.ts","components/Layout/Footer/index.jsx","components/Denominate/index.tsx","assets/images/logo.svg","components/Layout/Navbar/index.tsx","components/Layout/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","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","components/Overview/Cards/index.tsx","components/Overview/Header/index.tsx","components/Overview/index.tsx","pages/Dashboard/index.tsx","pages/Home/Login/Wallet.tsx","pages/Home/Login/WalletConnect.tsx","pages/Home/index.tsx","components/PageTitle/index.tsx","pages/Owner/Nodes/helpers/nodeTypes.ts","pages/Owner/Nodes/helpers/stakeHooks.ts","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","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","apiProvider","ApiProvider","getItem","index","entireBalance","gasLimit","gasPrice","bnBalance","bnMinDust","minDust","bnGasPrice","bnGasLimit","entireBn","minus","times","entireBnMinusDust","comparedTo","denominate","showLastNonZeroDecimal","addCommas","entireBalanceMinusDust","ContractOverview","this","NetworkStake","totalValidators","activeValidators","queueSize","totalStaked","Stats","epoch","NetworkConfig","AgencyMetadata","AccountType","DelegationTransactionType","args","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","ContinueAndCloseButtons","actionTitle","color","handleContinue","handleClose","className","onClick","OwnerActionModal","show","title","description","extraDescription","Modal","onHide","animation","centered","data-testid","big","array","unshift","splice","indexOf","nonZeroDigitIndex","decimalsIndex","sliceIndex","Math","max","slice","reverse","reference","floor","position","allDecimalsZero","every","digit","string","format","item","ttl","expires","moment","unix","sessionStorage","JSON","stringify","data","deserializedItem","parse","hasOwnProperty","Delegation","signer","contract","proxyProvider","signerProvider","SmartContract","delegationTransactionType","constructor","HWProvider","WalletConnectProvider","sendTransactionBasedOnType","warn","delegationContractData","find","d","funcName","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","SetAgencyMetaDataModal","showDelegateModal","setShowDelegateModal","initialValues","onSubmit","values","handleReDelegationCapActivation","validationSchema","object","shape","required","test","RegExp","match","props","handleSubmit","handleBlur","handleChange","errors","touched","htmlFor","autoComplete","onChange","onBlur","component","ModalActionButton","isHandleActionDisabled","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","rel","Denominate","showErd","configDecimals","denominatedValue","valueParts","hasNoDecimals","zeros","_extends","assign","arguments","source","prototype","call","apply","_objectWithoutProperties","excluded","sourceKeys","_objectWithoutPropertiesLoose","getOwnPropertySymbols","sourceSymbolKeys","propertyIsEnumerable","fill","fillRule","SvgLogo","_ref","svgRef","titleId","xmlns","width","height","viewBox","ref","ForwardRef","Navbar","style","minWidth","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","DelegateModal","displayDelegationCapMessage","setDisplayDelegationCapMessage","maxPressed","setMaxPressed","available","isFullDelegationCapContract","bnTotalActiveStake","bnMaxDelegationCap","String","getAvailableToDelegate","bnAvailable","totalActive","availableToDelegate","onShow","amount","bnAmount","setFieldValue","step","preventDefault","DelegateAction","UndelegateModal","UndelegateSchema","UndelegateAction","showModal","setShowModal","ClaimRewardsModal","handleClaimRewards","isRedelegateEnable","handleRedelegateRewards","ClaimRewardsAction","showClaimRewardsModal","setShowClaimRewardsModal","State","iconClass","size","MyDelegation","getClaimableRewards","getUserActiveStake","userActiveStake","setUserActiveStake","userActiveNominatedStake","setUserActiveNominatedStake","claimableRewards","setClaimableRewards","displayRewards","setDisplayRewards","displayUndelegate","setDisplayUndelegate","faCircleNotch","UndelegatedValueRow","undelegatedValue","isDisabled","setIsDisabled","timeLeft","counter","setCounter","setTimeout","timeLeftInMiliseconds","duration","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","src","OverlayTrigger","placement","hide","overlay","Tooltip","faInfoCircle","SetPercentageFeeSchema","SetPercentageFeeModal","SetPercentageFeeAction","showUpdateFeeModal","setShowUpdateFeeModal","perc","nominateVal","DelegationCapModal","number","UpdateDelegationCapAction","showDelegationCapModal","setShowDelegationCapModal","Views","setNetworkStake","getPercentage","amountOutOfTotal","total","isOwner","hex","localeCompare","isOwnerPath","location","pathname","includes","TotalStaked","Header","useLocation","to","Overview","Dashboard","isLedgerLogin","isWalletConnect","getAccount","PendingUndelegated","WalletLogin","init","initialised","err","login","WalletConnectLogin","process","platform","os","family","Home","faBan","Wallet","withPageTitle","Component","Memoized","memo","document","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","queueIndex","Dropdown","Toggle","variant","faCaretDown","Menu","entry","actionAllowed","Item","handleAction","NodeType","getAllNodesStatus","nodes","mapNodes","getBlsKeysStatus","getQueueSize","getQueueIndex","caller","responseValues","forEach","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","loginType","ConfirmedAddress","x1","x2","y1","y2","offset","stopColor","stroke","strokeWidth","transform","y","rx","xlinkHref","fillOpacity","strokeLinejoin","cx","cy","ry","SvgLedgerNano","xmlnsXlink","LedgerConnect","ledgerError","Ledger","showAddressTable","wrappedRoutes","path","qrSvg","setQrSvg","wcUri","setWcUri","isFromMobile","URLSearchParams","search","svgQr","dangerouslySetInnerHTML","__html","QRCode","handleOnLogin","handleOnLogout","walletConnectInit","walletConnect","walletConnectBridge","onClientLogin","onClientLogout","walletConectUri","route","App","basename","routes","exact","MountedApp","ReactDOM","render","getElementById","defined","validate","strict"],"mappings":"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","file":"static/js/main.5def2ce0.chunk.js","sourcesContent":["import { initialState, StateType } from './state';\nimport { setItem, removeItem } from '../storage/session';\n\nexport type DispatchType = (action: ActionType) => void;\n\nexport type ActionType =\n | { type: 'login'; address: StateType['address'] }\n | { type: 'ledgerLogin'; ledgerLogin: StateType['ledgerLogin'] }\n | { type: 'logout'; provider: StateType['dapp']['provider'] }\n | { type: 'loading'; loading: StateType['loading'] }\n | { type: 'setProvider'; provider: StateType['dapp']['provider'] }\n | { type: 'setAccount'; account: StateType['account'] }\n | { type: 'setContractOverview'; contractOverview: StateType['contractOverview'] }\n | { type: 'setNetworkConfig'; networkConfig: StateType['networkConfig'] }\n | { type: 'setAgencyMetaData'; agencyMetaData: StateType['agencyMetaData'] }\n | { type: 'setNumberOfActiveNodes'; numberOfActiveNodes: StateType['numberOfActiveNodes'] }\n | { type: 'setNumUsers'; numUsers: StateType['numUsers'] }\n | { type: 'setMinDelegationAmount'; minDelegationAmount: StateType['minDelegationAmount'] }\n | { type: 'setTotalActiveStake'; totalActiveStake: StateType['totalActiveStake'] }\n | { type: 'setAprPercentage'; aprPercentage: StateType['aprPercentage'] }\n | { type: 'setLedgerAccount'; ledgerAccount: StateType['ledgerAccount'] }\n | {\n type: 'setWalletConnectLogin';\n walletConnectLogin: StateType['walletConnectLogin'];\n }\n | {\n type: 'setWalletConnectAccount';\n walletConnectAccount: StateType['walletConnectAccount'];\n };\n\nexport function reducer(state: StateType, action: ActionType): StateType {\n switch (action.type) {\n case 'login': {\n const { address } = action;\n let loggedIn = address || address !== '' ? true : false;\n setItem('logged_in', loggedIn);\n setItem('address', address);\n return {\n ...state,\n address,\n loggedIn: loggedIn,\n };\n }\n case 'ledgerLogin': {\n const { ledgerLogin } = action;\n setItem('ledgerLogin', ledgerLogin);\n return {\n ...state,\n ledgerLogin,\n };\n }\n\n case 'loading': {\n const { loading } = action;\n return {\n ...state,\n loading,\n };\n }\n\n case 'setProvider': {\n const { provider } = action;\n return {\n ...state,\n dapp: {\n ...state.dapp,\n provider: provider,\n },\n };\n }\n\n case 'setAccount': {\n const { account } = action;\n return {\n ...state,\n account,\n };\n }\n\n case 'setContractOverview': {\n const { contractOverview } = action;\n return {\n ...state,\n contractOverview,\n };\n }\n\n case 'setNetworkConfig': {\n const { networkConfig } = action;\n return {\n ...state,\n networkConfig,\n };\n }\n\n case 'setAgencyMetaData': {\n const { agencyMetaData } = action;\n return {\n ...state,\n agencyMetaData,\n };\n }\n\n case 'setNumberOfActiveNodes': {\n const { numberOfActiveNodes } = action;\n return {\n ...state,\n numberOfActiveNodes,\n };\n }\n\n case 'setNumUsers': {\n const { numUsers } = action;\n return {\n ...state,\n numUsers,\n };\n }\n\n case 'setMinDelegationAmount': {\n const { minDelegationAmount } = action;\n return {\n ...state,\n minDelegationAmount,\n };\n }\n\n case 'setTotalActiveStake': {\n const { totalActiveStake } = action;\n return {\n ...state,\n totalActiveStake,\n };\n }\n\n case 'setAprPercentage': {\n const { aprPercentage } = action;\n return {\n ...state,\n aprPercentage,\n };\n }\n\n case 'setLedgerAccount': {\n const { ledgerAccount } = action;\n return {\n ...state,\n ledgerAccount,\n };\n }\n\n case 'setWalletConnectLogin': {\n const { walletConnectLogin } = action;\n setItem('walletConnectLogin', walletConnectLogin);\n return {\n ...state,\n walletConnectLogin,\n };\n }\n\n case 'setWalletConnectAccount': {\n const { walletConnectAccount } = action;\n return {\n ...state,\n walletConnectAccount,\n };\n }\n\n case 'logout': {\n const { provider } = action;\n provider\n .logout()\n .then()\n .catch(e => console.error('logout', e));\n removeItem('logged_in');\n removeItem('address');\n removeItem('ledgerLogin');\n removeItem('walletConnectLogin');\n return initialState();\n }\n\n default: {\n throw new Error(`Unhandled action type: ${action!.type}`);\n }\n }\n}\n","import React from 'react';\nimport { StateType, initialState } from './state';\nimport { DispatchType, reducer } from './reducer';\n\nexport interface ContextType {\n children: React.ReactNode;\n}\n\nconst Context = React.createContext(undefined);\nconst Dispatch = React.createContext(undefined);\n\nfunction ContextProvider({ children }: ContextType) {\n const [state, dispatch] = React.useReducer(reducer, initialState());\n return (\n \n {children}\n \n );\n}\n\nfunction useContext() {\n const context = React.useContext(Context);\n if (context === undefined) {\n throw new Error('useState must be used within a Context.Provider');\n }\n return context;\n}\n\nfunction useDispatch() {\n const context = React.useContext(Dispatch);\n if (context === undefined) {\n throw new Error('useDispatch must be used within a Dispatch.Provider');\n }\n return context;\n}\n\nexport { ContextProvider, useContext, useDispatch };\n","import BigNumber from 'bignumber.js';\n\nexport default function nominate(input: string, paramDenomination?: number) {\n const parts = input.toString().split('.');\n const denomination = paramDenomination !== undefined ? paramDenomination : 18;\n\n if (parts[1]) {\n // remove trailing zeros\n while (parts[1].substring(parts[1].length - 1) === '0' && parts[1].length > 1) {\n parts[1] = parts[1].substring(0, parts[1].length - 1);\n }\n }\n\n let count = parts[1] ? denomination - parts[1].length : denomination;\n\n count = count < 0 ? 0 : count;\n\n let transformed = parts.join('') + '0'.repeat(count);\n\n // remove beginning zeros\n while (transformed.substring(0, 1) === '0' && transformed.length > 1) {\n transformed = transformed.substring(1);\n }\n\n return transformed;\n}\n\nexport const nominateValToHex = (value: string) => {\n let val = value && value.length > 0 ? new BigNumber(nominate(value)).toString(16) : '0';\n\n if (val.length % 2 !== 0) {\n val = '0' + val;\n }\n\n return val;\n};\n","import {\n IDappProvider,\n ProxyProvider,\n ApiProvider,\n WalletProvider,\n Nonce,\n ChainID,\n HWProvider,\n WalletConnectProvider,\n} from '@elrondnetwork/erdjs';\nimport BigNumber from 'bignumber.js';\nimport {\n AccountType,\n AgencyMetadata,\n ContractOverview,\n NetworkConfig,\n} from 'helpers/contractDataDefinitions';\nimport { denomination, decimals, network, NetworkType } from '../config';\nimport { getItem } from '../storage/session';\nconst defaultGatewayAddress = 'https://gateway.elrond.com';\nconst defaultApiAddress = 'https://gateway.elrond.com';\nconst defaultExplorerAddress = 'https://gateway.elrond.com';\n\nexport const defaultNetwork: NetworkType = {\n id: 'not-configured',\n name: 'NOT CONFIGURED',\n egldLabel: '',\n walletAddress: '',\n apiAddress: '',\n gatewayAddress: '',\n explorerAddress: '',\n delegationContract: '',\n};\n\nexport interface DappState {\n provider: IDappProvider;\n proxy: ProxyProvider;\n apiProvider: ApiProvider;\n}\n\nexport interface StateType {\n dapp: DappState;\n loading: boolean;\n error: string;\n loggedIn: boolean;\n ledgerLogin: {\n index: number;\n loginType: string;\n };\n walletConnectLogin: {\n loginType: string;\n };\n address: string;\n egldLabel: string;\n denomination: number;\n decimals: number;\n account: AccountType;\n explorerAddress: string;\n delegationContract?: string;\n totalActiveStake: string;\n numberOfActiveNodes: string;\n numUsers: number;\n minDelegationAmount: number;\n aprPercentage: string;\n contractOverview: ContractOverview;\n networkConfig: NetworkConfig;\n agencyMetaData: AgencyMetadata;\n ledgerAccount?: {\n index: number;\n address: string;\n };\n walletConnectAccount?: string;\n}\nexport const emptyAccount: AccountType = {\n balance: '...',\n nonce: new Nonce(0),\n};\n\nexport const emptyAgencyMetaData: AgencyMetadata = {\n name: '',\n website: '',\n keybase: '',\n};\n\nexport const emptyNetworkConfig: NetworkConfig = {\n roundDuration: -1,\n roundsPerEpoch: -1,\n roundsPassedInCurrentEpoch: -1,\n topUpFactor: -1,\n topUpRewardsGradientPoint: new BigNumber('-1'),\n chainId: new ChainID('-1'),\n};\n\nexport const emptyContractOverview: ContractOverview = {\n ownerAddress: '',\n serviceFee: '',\n maxDelegationCap: '',\n initialOwnerFunds: '',\n automaticActivation: 'false',\n withDelegationCap: 'false',\n changeableServiceFee: 'false',\n reDelegationCap: 'false',\n createdNounce: 'false',\n unBondPeriod: 0,\n};\n\nexport const initialState = (): {\n denomination: number;\n decimals: number;\n dapp: {\n provider: HWProvider | WalletProvider | WalletConnectProvider;\n proxy: ProxyProvider;\n apiProvider: ApiProvider;\n };\n loading: boolean;\n error: string;\n loggedIn: boolean;\n ledgerLogin: any;\n walletConnectLogin: any;\n address: any;\n account: AccountType;\n egldLabel: string;\n explorerAddress: string;\n delegationContract: string | undefined;\n contractOverview: ContractOverview;\n networkConfig: NetworkConfig;\n agencyMetaData: AgencyMetadata;\n numberOfActiveNodes: string;\n numUsers: number;\n minDelegationAmount: number;\n totalActiveStake: string;\n aprPercentage: string;\n ledgerAccount: { index: any; address: any } | undefined;\n walletConnectAccount: any;\n} => {\n const sessionNetwork = network || defaultNetwork;\n return {\n denomination: denomination,\n decimals: decimals,\n dapp: {\n provider: new WalletProvider(sessionNetwork.walletAddress),\n proxy: new ProxyProvider(\n sessionNetwork.gatewayAddress !== undefined\n ? sessionNetwork?.gatewayAddress\n : defaultGatewayAddress,\n 4000\n ),\n apiProvider: new ApiProvider(\n sessionNetwork.apiAddress !== undefined ? sessionNetwork?.apiAddress : defaultApiAddress,\n 4000\n ),\n },\n loading: false,\n error: '',\n loggedIn: !!getItem('logged_in'),\n ledgerLogin: getItem('ledgerLogin'),\n walletConnectLogin: getItem('walletConnectLogin'),\n address: getItem('address'),\n account: emptyAccount,\n egldLabel: sessionNetwork?.egldLabel,\n explorerAddress: sessionNetwork.explorerAddress || defaultExplorerAddress,\n delegationContract: sessionNetwork.delegationContract,\n contractOverview: emptyContractOverview,\n networkConfig: emptyNetworkConfig,\n agencyMetaData: emptyAgencyMetaData,\n numberOfActiveNodes: '...',\n numUsers: 0,\n minDelegationAmount: -1,\n totalActiveStake: '...',\n aprPercentage: '...',\n ledgerAccount:\n getItem('ledgerAccountIndex') && getItem('address')\n ? {\n index: getItem('ledgerAccountIndex'),\n address: getItem('address'),\n }\n : undefined,\n\n walletConnectAccount: getItem('address'),\n };\n};\n","import BigNumber from 'bignumber.js';\nimport { minDust } from 'config';\nimport denominate from '../components/Denominate/formatters';\n\ninterface EntireBalanceType {\n balance: string;\n gasPrice: string;\n gasLimit: string;\n denomination: number;\n decimals: number;\n}\n\nexport default function entireBalance({\n balance,\n gasLimit,\n gasPrice,\n denomination,\n decimals,\n}: EntireBalanceType) {\n const bnBalance = new BigNumber(balance);\n const bnMinDust = new BigNumber(minDust);\n const bnGasPrice = new BigNumber(gasPrice);\n const bnGasLimit = new BigNumber(gasLimit);\n const entireBn = bnBalance.minus(bnGasPrice.times(bnGasLimit));\n const entireBnMinusDust = entireBn.minus(bnMinDust);\n\n const entireBalance =\n // entireBalance >= 0\n entireBn.comparedTo(0) === 1\n ? denominate({\n input: entireBn.toString(10),\n denomination,\n decimals,\n showLastNonZeroDecimal: true,\n addCommas: false,\n })\n : '0';\n\n const entireBalanceMinusDust =\n entireBnMinusDust.comparedTo(0) === 1\n ? denominate({\n input: entireBnMinusDust.toString(10),\n denomination,\n decimals,\n showLastNonZeroDecimal: true,\n addCommas: false,\n })\n : entireBalance;\n\n return {\n entireBalance,\n entireBalanceMinusDust,\n };\n}\n","import { ChainID, Nonce } from '@elrondnetwork/erdjs';\nimport BigNumber from 'bignumber.js';\n\nexport class ContractOverview {\n ownerAddress: string;\n serviceFee?: string;\n maxDelegationCap: string;\n initialOwnerFunds?: string;\n automaticActivation: string;\n withDelegationCap?: string;\n changeableServiceFee?: string;\n reDelegationCap: string;\n createdNounce?: string;\n unBondPeriod?: number;\n public constructor(\n ownerAddress: string = '',\n serviceFee?: string,\n maxDelegationCap: string = '',\n initialOwnerFunds?: string,\n automaticActivation: string = 'false',\n withDelegationCap: string = 'false',\n changeableServiceFee?: string,\n reDelegationCap: string = 'false',\n createdNounce?: string,\n unBondPeriod?: number\n ) {\n this.ownerAddress = ownerAddress;\n this.serviceFee = serviceFee;\n this.maxDelegationCap = maxDelegationCap;\n this.initialOwnerFunds = initialOwnerFunds;\n this.automaticActivation = automaticActivation;\n this.withDelegationCap = withDelegationCap;\n this.changeableServiceFee = changeableServiceFee;\n this.reDelegationCap = reDelegationCap;\n this.createdNounce = createdNounce;\n this.unBondPeriod = unBondPeriod;\n }\n}\n\nexport class NetworkStake {\n totalValidators: number;\n activeValidators: number;\n queueSize: number;\n totalStaked: BigNumber;\n public constructor(\n totalValidators: number,\n activeValidators: number,\n queueSize: number,\n totalStaked: BigNumber\n ) {\n this.totalValidators = totalValidators;\n this.activeValidators = activeValidators;\n this.queueSize = queueSize;\n this.totalStaked = totalStaked;\n }\n}\n\nexport class Stats {\n epoch: number;\n public constructor(epoch: number) {\n this.epoch = epoch;\n }\n}\n\nexport class NetworkConfig {\n topUpFactor: number;\n roundDuration: number;\n roundsPerEpoch: number;\n roundsPassedInCurrentEpoch: number;\n topUpRewardsGradientPoint: BigNumber;\n chainId: ChainID;\n public constructor(\n topUpFactor: number,\n roundDuration: number,\n roundsPerEpoch: number,\n roundsPassedInCurrentEpoch: number,\n topUpRewardsGradientPoint: BigNumber,\n chainId: ChainID\n ) {\n this.topUpFactor = topUpFactor;\n this.roundDuration = roundDuration;\n this.roundsPerEpoch = roundsPerEpoch;\n this.roundsPassedInCurrentEpoch = roundsPassedInCurrentEpoch;\n this.topUpRewardsGradientPoint = topUpRewardsGradientPoint;\n this.chainId = chainId;\n }\n}\n\nexport class AgencyMetadata {\n name: string;\n website: string;\n keybase: string;\n public constructor(name: string = '', website: string = '', keybase: string = '') {\n this.name = name;\n this.website = website;\n this.keybase = keybase;\n }\n}\n\nexport class AccountType {\n balance: string;\n nonce: Nonce;\n public constructor(balance: string = '', nonce: Nonce) {\n this.balance = balance;\n this.nonce = nonce;\n }\n}\n\nexport class DelegationTransactionType {\n value: string;\n type: string;\n chainId?: ChainID;\n args?: string;\n public constructor(\n value: string = '',\n type: string,\n args: string = '',\n chainId: ChainID = new ChainID('T')\n ) {\n this.value = value;\n this.type = type;\n this.args = args;\n this.chainId = chainId;\n }\n}\n","import { Address, BLS, ValidatorSecretKey } from '@elrondnetwork/erdjs';\n\nfunction hexStringToByte(str: string) {\n if (!str) {\n return new Uint8Array();\n }\n const a = [];\n for (let i = 0, len = str.length; i < len; i += 2) {\n a.push(parseInt(str.substr(i, 2), 16));\n }\n return new Uint8Array(a);\n}\n\nfunction getPubKey(file: string, indices: any[]) {\n const headerParts = file\n .toString()\n .substring(indices[0], indices[1])\n .split(' ');\n return headerParts[4] ? headerParts[4] : '';\n}\n\nexport default async function decodePem(file: string, delegationContract?: string) {\n await BLS.initIfNecessary();\n let myKey = ValidatorSecretKey.fromPem(file);\n let dsc = new Address(delegationContract);\n let signature = myKey.sign(Buffer.from(dsc.pubkey())).toString('hex');\n\n const regex = /-----/gi;\n let result;\n const indices = [];\n while ((result = regex.exec(file.toString()))) {\n indices.push(result.index);\n }\n\n const key = file.toString().substring(indices[1] + 6, indices[2] - 1);\n const decoded = window.atob(key);\n\n const value = hexStringToByte(decoded);\n\n const pubKey = getPubKey(file, indices);\n\n return { value, pubKey, signature };\n}\n","interface ContinueAndCloseButtonsType {\n actionTitle: string;\n color: string;\n handleContinue: () => void;\n handleClose: () => void;\n}\n\nconst ContinueAndCloseButtons = ({\n actionTitle,\n color,\n handleContinue,\n handleClose,\n}: ContinueAndCloseButtonsType) => {\n return (\n
\n {\n handleContinue();\n }}\n className={`btn btn-${color} mx-2`}\n >\n {actionTitle}\n \n \n
\n );\n};\n\nexport default ContinueAndCloseButtons;\n","import { Modal } from 'react-bootstrap';\nimport ContinueAndCloseButtons from 'components/ContinueAndCloseButtons';\n\nexport interface OwnerActionModalType {\n show: boolean;\n title: string;\n actionTitle: string;\n description: string;\n extraDescription?: string;\n handleClose: () => void;\n handleContinue: () => void;\n}\n\nconst OwnerActionModal = ({\n show,\n title,\n actionTitle,\n description,\n extraDescription,\n handleClose,\n handleContinue,\n}: OwnerActionModalType) => {\n return (\n \n
\n
\n

\n {title}\n

\n {description &&

{description}

}\n {extraDescription &&

{extraDescription}

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

\n {error}\n

\n )}\n
\n \n Close\n \n
\n
\n
\n \n \n \n );\n};\n\nexport default ConfirmTransactionModal;\n","import ConfirmTransactionModal from 'components/ConfirmTransactionModal';\nimport OwnerActionModal from 'components/Overview/OwnerActionModal';\nimport { useContext } from 'context';\nimport { DelegationTransactionType } from 'helpers/contractDataDefinitions';\nimport { useDelegationWallet } from 'helpers/useDelegation';\nimport React, { useState } from 'react';\n\nconst AutomaticActivationAction = ({ automaticFlag }: { automaticFlag: string }) => {\n const { ledgerAccount, walletConnectAccount } = useContext();\n const [showAutomaticActivationModal, setShowAutomaticActivationModal] = useState(false);\n const [showCheckYourLedgerModal, setShowCheckYourLedgerModal] = useState(false);\n const [transactionArguments, setTransactionArguments] = useState(\n new DelegationTransactionType('', '')\n );\n const { sendTransactionWallet } = useDelegationWallet();\n\n const handleAutomaticActivation = () => {\n let activation = Buffer.from(automaticFlag === 'true' ? 'false' : 'true').toString('hex');\n let txArguments = new DelegationTransactionType('0', 'setAutomaticActivation', activation);\n if (ledgerAccount || walletConnectAccount) {\n setShowAutomaticActivationModal(false);\n setTransactionArguments(txArguments);\n setShowCheckYourLedgerModal(true);\n } else {\n sendTransactionWallet(txArguments);\n }\n };\n return (\n
\n setShowAutomaticActivationModal(true)}\n className=\"btn btn-primary text-white btn-sm mr-n1\"\n >\n Change\n \n {\n setShowAutomaticActivationModal(false);\n }}\n handleContinue={handleAutomaticActivation}\n />\n {\n setShowCheckYourLedgerModal(false);\n }}\n />\n
\n );\n};\n\nexport default AutomaticActivationAction;\n","import ConfirmTransactionModal from 'components/ConfirmTransactionModal';\nimport OwnerActionModal from 'components/Overview/OwnerActionModal';\nimport { useContext } from 'context';\nimport { DelegationTransactionType } from 'helpers/contractDataDefinitions';\nimport { useDelegationWallet } from 'helpers/useDelegation';\nimport React, { useState } from 'react';\n\nconst ReDelegateCapActivationAction = ({ automaticFlag }: { automaticFlag: string }) => {\n const { ledgerAccount, walletConnectAccount } = useContext();\n const [showReDelegationCapActivationModal, setShowReDelegationCapActivationModal] = useState(\n false\n );\n const [showCheckYourLedgerModal, setShowCheckYourLedgerModal] = useState(false);\n const [transactionArguments, setTransactionArguments] = useState(\n new DelegationTransactionType('', '')\n );\n const { sendTransactionWallet } = useDelegationWallet();\n const handleReDelegationCapActivation = () => {\n let redelegateRewardsActivation = Buffer.from(\n automaticFlag === 'true' ? 'false' : 'true'\n ).toString('hex');\n let txArguments = new DelegationTransactionType(\n '0',\n 'setReDelegateCapActivation',\n redelegateRewardsActivation\n );\n\n if (ledgerAccount || walletConnectAccount) {\n setShowReDelegationCapActivationModal(false);\n setTransactionArguments(txArguments);\n setShowCheckYourLedgerModal(true);\n } else {\n sendTransactionWallet(txArguments);\n }\n };\n\n return (\n
\n setShowReDelegationCapActivationModal(true)}\n className=\"btn btn-primary text-white btn-sm mr-n1\"\n >\n Change\n \n {\n setShowReDelegationCapActivationModal(false);\n }}\n handleContinue={handleReDelegationCapActivation}\n />\n {\n setShowCheckYourLedgerModal(false);\n }}\n />\n
\n );\n};\n\nexport default ReDelegateCapActivationAction;\n","import React, { useState } from 'react';\nimport { Modal } from 'react-bootstrap';\nimport { ErrorMessage, Formik } from 'formik';\nimport { object, string } from 'yup';\nimport { useContext } from 'context';\nimport { AgencyMetadata, DelegationTransactionType } from 'helpers/contractDataDefinitions';\nimport ModalActionButton from 'components/ModalActionButton';\nimport { useDelegationWallet } from 'helpers/useDelegation';\nimport ConfirmTransactionModal from 'components/ConfirmTransactionModal';\n\nconst SetAgencyMetaDataModal = () => {\n const { agencyMetaData, ledgerAccount, walletConnectAccount } = useContext();\n const [showDelegateModal, setShowDelegateModal] = useState(false);\n const [showCheckYourLedgerModal, setShowCheckYourLedgerModal] = useState(false);\n const [transactionArguments, setTransactionArguments] = useState(\n new DelegationTransactionType('', '')\n );\n const { sendTransactionWallet } = useDelegationWallet();\n\n const handleReDelegationCapActivation = (values: AgencyMetadata) => {\n const hexName = Buffer.from(values.name).toString('hex');\n const hexWeb = Buffer.from(values.website).toString('hex');\n const hexKeyBase = Buffer.from(values.keybase).toString('hex');\n const data = hexName + '@' + hexWeb + '@' + hexKeyBase;\n let txArguments = new DelegationTransactionType('0', 'setMetaData', data);\n if (ledgerAccount || walletConnectAccount) {\n setShowDelegateModal(false);\n setTransactionArguments(txArguments);\n setShowCheckYourLedgerModal(true);\n } else {\n sendTransactionWallet(txArguments);\n }\n };\n\n return (\n <>\n {\n setShowDelegateModal(true);\n }}\n className=\"btn btn-primary btn-sm ml-3\"\n >\n Identity\n \n setShowDelegateModal(false)}\n className=\"modal-container\"\n animation={false}\n centered\n >\n
\n
\n

\n Agency Details\n

\n

\n Update or set your agency details in order to validate your identity.\n

\n {\n handleReDelegationCapActivation(values);\n }}\n validationSchema={object().shape({\n website: string()\n .required('Required')\n .test('URL', 'URL is not valid!', value => {\n var expression = /^((?:http(?:s)?:\\/\\/)?[a-zA-Z0-9_-]+(?:.[a-zA-Z0-9_-]+)*.[a-zA-Z]{2,4}(?:\\/[a-zA-Z0-9_]+)*(?:\\/[a-zA-Z0-9_]+.[a-zA-Z]{2,4}(?:\\?[a-zA-Z0-9_]+=[a-zA-Z0-9_]+)?)?(?:&[a-zA-Z0-9_]+=[a-zA-Z0-9_]+)*)$/;\n var regex = new RegExp(expression);\n if (value?.match(regex)) {\n return true;\n } else {\n return false;\n }\n }),\n })}\n >\n {props => {\n const { handleSubmit, values, handleBlur, handleChange, errors, touched } = props;\n\n return (\n
\n
\n \n
\n \n \n
\n \n
\n \n \n
\n \n
\n \n \n
\n
\n {\n setShowDelegateModal(false);\n }}\n />\n \n );\n }}\n \n
\n
\n \n {\n setShowCheckYourLedgerModal(false);\n }}\n />\n \n );\n};\n\nexport default SetAgencyMetaDataModal;\n","interface SubmitAndCloseButtonsType {\n action: string;\n actionTitle: string;\n isHandleActionDisabled?: boolean;\n handleClose: () => void;\n}\n\nconst ModalActionButton = ({\n action,\n actionTitle,\n isHandleActionDisabled,\n handleClose,\n}: SubmitAndCloseButtonsType) => {\n return (\n <>\n
\n \n {actionTitle}\n \n \n
\n \n );\n};\n\nexport default ModalActionButton;\n","var map = {\n\t\"./bls.js\": 340,\n\t\"./bls_c.js\": 373\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 = 708;","export const ledgerErrorCodes = {\n 0x9000: {\n code: 'codeSuccess',\n message: 'Success',\n },\n 0x6985: {\n code: 'ERR_USER_DENIED',\n message: 'Rejected by user',\n },\n 0x6d00: {\n code: 'ERR_UNKNOWN_INSTRUCTION',\n message: 'Unknown instruction',\n },\n 0x6e00: {\n code: 'ERR_WRONG_CLA',\n message: 'Wrong CLA',\n },\n 0x6e01: {\n code: 'ERR_INVALID_ARGUMENTS',\n message: 'Invalid arguments',\n },\n 0x6e02: {\n code: 'ERR_INVALID_MESSAGE',\n message: 'Invalid message',\n },\n 0x6e03: {\n code: 'ERR_INVALID_P1',\n message: 'Invalid P1',\n },\n 0x6e04: {\n code: 'ERR_MESSAGE_TOO_LONG',\n message: 'Message too long',\n },\n 0x6e05: {\n code: 'ERR_RECEIVER_TOO_LONG',\n message: 'Receiver too long',\n },\n 0x6e06: {\n code: 'ERR_AMOUNT_TOO_LONG',\n message: 'Amount too long',\n },\n 0x6e07: {\n code: 'ERR_CONTRACT_DATA_DISABLED',\n message: 'Contract data disabled in app options',\n },\n 0x6e08: {\n code: 'ERR_MESSAGE_INCOMPLETE',\n message: 'Message incomplete',\n },\n 0x6e10: {\n code: 'ERR_SIGNATURE_FAILED',\n message: 'Signature failed',\n },\n 0x6e09: {\n code: 'ERR_WRONG_TX_VERSION',\n message: 'Wrong TX version',\n },\n 0x6e0a: {\n code: 'ERR_NONCE_TOO_LONG',\n message: 'Nonce too long',\n },\n 0x6e0b: {\n code: 'ERR_INVALID_AMOUNT',\n message: 'Invalid amount',\n },\n 0x6e0c: {\n code: 'ERR_INVALID_FEE',\n message: 'Invalid fee',\n },\n 0x6e0d: {\n code: 'ERR_PRETTY_FAILED',\n message: 'Pretty failed',\n },\n 0x6e0e: {\n code: 'ERR_DATA_TOO_LONG',\n message: 'Data too long',\n },\n 0x6e0f: {\n code: 'ERR_WRONG_TX_OPTIONS',\n message: 'Invalid transaction options',\n },\n 0x6e11: {\n code: 'ERR_SIGN_TX_DEPRECATED',\n message: 'Regular transaction signing is deprecated in this version. Use hash signing.',\n },\n};\n","import { Address, AddressValue, ContractFunction, Query } from '@elrondnetwork/erdjs';\nimport { auctionContract, delegationManagerContract } from 'config';\nimport { DappState } from '../context/state';\n\nexport const contractViews = {\n getUserActiveStake: (dapp: DappState, address: string, delegationContract?: string) => {\n const query = new Query({\n address: new Address(delegationContract),\n func: new ContractFunction('getUserActiveStake'),\n args: [new AddressValue(new Address(address))],\n });\n return dapp.proxy.queryContract(query);\n },\n getUserUnDelegatedList: (dapp: DappState, address: string, delegationContract?: string) => {\n const query = new Query({\n address: new Address(delegationContract),\n func: new ContractFunction('getUserUnDelegatedList'),\n args: [new AddressValue(new Address(address))],\n });\n return dapp.proxy.queryContract(query);\n },\n getClaimableRewards: (dapp: DappState, address: string, delegationContract?: string) => {\n const query = new Query({\n address: new Address(delegationContract),\n func: new ContractFunction('getClaimableRewards'),\n args: [new AddressValue(new Address(address))],\n });\n return dapp.proxy.queryContract(query);\n },\n getTotalActiveStake: (dapp: DappState, delegationContract?: string) => {\n const query = new Query({\n address: new Address(delegationContract),\n func: new ContractFunction('getTotalActiveStake'),\n });\n return dapp.proxy.queryContract(query);\n },\n getNumNodes: (dapp: DappState, delegationContract?: string) => {\n const query = new Query({\n address: new Address(delegationContract),\n func: new ContractFunction('getNumNodes'),\n });\n return dapp.proxy.queryContract(query);\n },\n getNumUsers: (dapp: DappState, delegationContract?: string) => {\n const query = new Query({\n address: new Address(delegationContract),\n func: new ContractFunction('getNumUsers'),\n });\n return dapp.proxy.queryContract(query);\n },\n getContractConfig: (dapp: DappState, delegationContract?: string) => {\n const query = new Query({\n address: new Address(delegationContract),\n func: new ContractFunction('getContractConfig'),\n });\n return dapp.proxy.queryContract(query);\n },\n getMetaData: (dapp: DappState, delegationContract?: string) => {\n const query = new Query({\n address: new Address(delegationContract),\n func: new ContractFunction('getMetaData'),\n });\n return dapp.proxy.queryContract(query);\n },\n getBlsKeys: (dapp: DappState, delegationContract?: string) => {\n const query = new Query({\n address: new Address(auctionContract),\n func: new ContractFunction('getBlsKeysStatus'),\n args: [new AddressValue(new Address(delegationContract))],\n });\n return dapp.proxy.queryContract(query);\n },\n getDelegationManagerContractConfig: (dapp: DappState) => {\n const query = new Query({\n address: new Address(delegationManagerContract),\n func: new ContractFunction('getContractConfig'),\n });\n return dapp.proxy.queryContract(query);\n },\n};\n","import { decodeString } from '@elrondnetwork/erdjs';\nimport denominate from 'components/Denominate/formatters';\nimport {\n yearSettings,\n genesisTokenSuply,\n denomination,\n decimals,\n feesInEpoch,\n protocolSustainabilityRewards,\n stakePerNode,\n} from 'config';\nimport { NetworkConfig, NetworkStake, Stats } from 'helpers/contractDataDefinitions';\n\nconst denominateValue = (value: string) => {\n const denominatedValueString = denominate({\n input: value,\n denomination,\n decimals,\n });\n const valueWithoutComma = denominatedValueString.replace(/,/g, '');\n return valueWithoutComma;\n};\n\nconst calculateAPR = ({\n stats,\n networkConfig,\n networkStake,\n blsKeys,\n totalActiveStake,\n}: {\n stats: Stats;\n networkConfig: NetworkConfig;\n networkStake: NetworkStake;\n blsKeys: Buffer[];\n totalActiveStake: string;\n}) => {\n const allNodes = blsKeys.filter(\n key =>\n decodeString(key) === 'staked' ||\n decodeString(key) === 'jailed' ||\n decodeString(key) === 'queued'\n ).length;\n const allActiveNodes = blsKeys.filter(key => decodeString(key) === 'staked').length;\n if (allActiveNodes <= 0) {\n return '0.00';\n }\n\n const epochDurationInSeconds =\n (networkConfig.roundDuration / 1000) * networkConfig.roundsPerEpoch;\n const secondsInYear = 365 * 24 * 3600;\n const epochsInYear = secondsInYear / epochDurationInSeconds;\n const inflationRate =\n yearSettings.find(x => x.year === Math.floor(stats.epoch / epochsInYear) + 1)\n ?.maximumInflation || 0;\n const rewardsPerEpoch = Math.max((inflationRate * genesisTokenSuply) / epochsInYear, feesInEpoch);\n const rewardsPerEpochWithoutProtocolSustainability =\n (1 - protocolSustainabilityRewards) * rewardsPerEpoch;\n const topUpRewardsLimit =\n networkConfig.topUpFactor * rewardsPerEpochWithoutProtocolSustainability;\n\n const networkBaseStake = networkStake.activeValidators * stakePerNode;\n const networkTotalStake = parseInt(denominateValue(networkStake.totalStaked.toFixed()));\n const networkTopUpStake =\n networkTotalStake -\n networkStake.totalValidators * stakePerNode -\n networkStake.queueSize * stakePerNode;\n const topUpReward =\n ((2 * topUpRewardsLimit) / Math.PI) *\n Math.atan(\n networkTopUpStake /\n (2 * parseInt(denominateValue(networkConfig.topUpRewardsGradientPoint.toFixed())))\n );\n const baseReward = rewardsPerEpochWithoutProtocolSustainability - topUpReward;\n const validatorTotalStake = parseInt(denominateValue(totalActiveStake));\n const actualNumberOfNodes = Math.min(\n Math.floor(validatorTotalStake / stakePerNode),\n allActiveNodes\n );\n const validatorBaseStake = actualNumberOfNodes * stakePerNode;\n const validatorTopUpStake = validatorTotalStake - allNodes * stakePerNode;\n const validatorTopUpReward =\n networkTopUpStake > 0 ? (validatorTopUpStake / networkTopUpStake) * topUpReward : 0;\n const validatorBaseReward = (validatorBaseStake / networkBaseStake) * baseReward;\n const anualPercentageRate =\n (epochsInYear * (validatorTopUpReward + validatorBaseReward)) / validatorTotalStake;\n return (anualPercentageRate * 100).toFixed(2);\n};\n\nexport { calculateAPR };\n","import React from 'react';\n\nconst Footer = () => {\n return (\n \n );\n};\n\nexport default Footer;\n","import React from 'react';\nimport { useContext } from '../../context';\nimport denominate from './formatters';\n\ninterface DenominateType {\n value: string;\n showLastNonZeroDecimal?: boolean;\n showErd?: boolean;\n decimals?: number;\n}\n\nconst Denominate = ({\n value,\n showLastNonZeroDecimal = false,\n showErd = true,\n decimals,\n}: DenominateType) => {\n const { denomination, decimals: configDecimals, egldLabel } = useContext();\n\n decimals = decimals !== undefined ? decimals : configDecimals;\n\n const denominatedValue = denominate({\n input: value,\n denomination,\n decimals,\n showLastNonZeroDecimal,\n });\n\n const valueParts = denominatedValue.split('.');\n const hasNoDecimals = valueParts.length === 1;\n const isNotZero = denominatedValue !== '0';\n\n if (decimals > 0 && hasNoDecimals && isNotZero) {\n let zeros = '';\n\n for (let i = 1; i <= decimals; i++) {\n zeros = zeros + '0';\n }\n\n valueParts.push(zeros);\n }\n\n return (\n \n {valueParts[0]}\n {valueParts.length > 1 && .{valueParts[1]}}\n {showErd &&  {egldLabel}}\n \n );\n};\n\nexport default Denominate;\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(\"g\", {\n fill: \"\",\n fillRule: \"evenodd\"\n}, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M30.93 7.908a.737.737 0 0 1-.205-.503.707.707 0 0 1 1.206-.504c.141.142.213.32.213.504a.717.717 0 0 1-.71.71.713.713 0 0 1-.503-.207m-2.008 2.008a.74.74 0 0 1-.206-.504c0-.184.071-.361.206-.503a.715.715 0 0 1 1.007 0c.135.142.206.32.206.503 0 .178-.07.362-.206.504a.725.725 0 0 1-.503.206.725.725 0 0 1-.504-.206m-2.007 2a.71.71 0 1 1 1.007 0 .704.704 0 0 1-1.007 0m-2.008 2.008a.713.713 0 0 1 0-1 .716.716 0 0 1 1.007 0 .71.71 0 0 1 0 1 .696.696 0 0 1-.503.206.708.708 0 0 1-.504-.206m-2 2.008a.694.694 0 0 1 0-1 .693.693 0 0 1 1 0 .68.68 0 0 1 .205.496.685.685 0 0 1-.205.504.684.684 0 0 1-.504.205.68.68 0 0 1-.497-.205m-2.22 1.504c0-.178.072-.363.213-.504a.706.706 0 0 1 1.206.504.696.696 0 0 1-.206.503.713.713 0 0 1-1.213-.503zm-1.794 2.51a.697.697 0 0 1-.206-.503.705.705 0 1 1 1.411 0 .697.697 0 0 1-.205.504.71.71 0 0 1-1 0m-2.008 2a.71.71 0 0 1 0-1 .707.707 0 0 1 1 0c.142.141.213.318.213.503a.687.687 0 0 1-.213.497.685.685 0 0 1-.496.212.7.7 0 0 1-.504-.212m-2.007 2.007a.709.709 0 1 1 1.007 0 .703.703 0 0 1-1.007 0m-2.008 2.007a.707.707 0 0 1 0-1 .715.715 0 0 1 1.008 0 .71.71 0 0 1 0 1 .695.695 0 0 1-.504.207.695.695 0 0 1-.504-.207m-2 2.008a.692.692 0 0 1-.213-.504c0-.177.071-.36.213-.503a.72.72 0 0 1 1 0 .739.739 0 0 1 .206.503.713.713 0 0 1-.206.504.697.697 0 0 1-.504.206.681.681 0 0 1-.496-.206m-2.008 2.008a.693.693 0 0 1-.212-.504c0-.177.07-.362.212-.504a.72.72 0 0 1 1 0 .708.708 0 0 1 .207.504.686.686 0 0 1-.206.504.714.714 0 0 1-1 0m-2.008 2.007a.696.696 0 0 1-.206-.503.706.706 0 0 1 1.206-.504.704.704 0 0 1 0 1.007.712.712 0 0 1-1 0\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M7.862 7.908a.737.737 0 0 0 .206-.503.707.707 0 0 0-1.206-.504.706.706 0 0 0-.213.504.717.717 0 0 0 .71.71c.184 0 .369-.071.503-.207M9.87 9.916a.74.74 0 0 0 .205-.504.727.727 0 0 0-.205-.503.715.715 0 0 0-1.007 0 .726.726 0 0 0-.206.503c0 .178.07.362.206.504.142.135.319.206.503.206s.362-.07.504-.206m2.007 2a.71.71 0 1 0-1.007 0 .704.704 0 0 0 1.007 0m2.008 2.008a.713.713 0 0 0 0-1 .716.716 0 0 0-1.007 0 .71.71 0 0 0 0 1c.142.142.319.206.503.206a.708.708 0 0 0 .504-.206m2 2.008a.694.694 0 0 0 0-1 .693.693 0 0 0-1 0 .68.68 0 0 0-.206.496c0 .184.064.369.206.504.135.142.32.205.504.205a.68.68 0 0 0 .496-.205m2.22 1.504a.718.718 0 0 0-.212-.504.706.706 0 0 0-1.206.504c0 .184.064.361.206.503a.713.713 0 0 0 1.213-.503zm1.795 2.51a.697.697 0 0 0 .206-.503.705.705 0 1 0-1.411 0c0 .184.063.362.205.504a.71.71 0 0 0 1 0m2.007 2a.71.71 0 0 0 0-1 .707.707 0 0 0-1 0 .704.704 0 0 0-.213.503c0 .177.072.362.214.497a.685.685 0 0 0 .496.212.7.7 0 0 0 .503-.212m2.008 2.007a.709.709 0 1 0-1.008 0 .703.703 0 0 0 1.007 0m2.008 2.007a.707.707 0 0 0 0-1 .715.715 0 0 0-1.007 0 .71.71 0 0 0 0 1c.142.143.32.207.504.207a.695.695 0 0 0 .503-.207m2 2.008a.692.692 0 0 0 .213-.504.716.716 0 0 0-.212-.503.72.72 0 0 0-1 0 .739.739 0 0 0-.206.503c0 .185.07.37.206.504.142.142.32.206.503.206a.681.681 0 0 0 .497-.206m2.007 2.008a.693.693 0 0 0 .213-.504.716.716 0 0 0-.213-.504.72.72 0 0 0-1 0 .708.708 0 0 0-.206.504c0 .184.064.369.206.504a.714.714 0 0 0 1 0m2.008 2.007a.696.696 0 0 0 .206-.503.706.706 0 0 0-1.206-.504.704.704 0 0 0 0 1.007.712.712 0 0 0 1 0M12.634 8.452L8.326 4.143C11.655 1.58 15.334.295 19.363.291c4.008-.004 7.69 1.284 11.045 3.86l-4.316 4.315c-2.06-1.34-4.304-2.01-6.733-2.005-2.46.005-4.7.671-6.725 1.99zM8.387 26.17l-4.305 4.305C1.54 27.142.267 23.463.272 19.435c.003-4.065 1.27-7.745 3.798-11.04L8.373 12.7c-1.35 2.042-2.03 4.286-2.035 6.733-.004 2.415.681 4.66 2.05 6.739zm17.74 4.282l4.291 4.291c-3.288 2.534-6.951 3.817-10.989 3.849-4.077.032-7.782-1.25-11.115-3.84l4.285-4.286c2.064 1.403 4.332 2.1 6.805 2.083 2.435-.017 4.675-.718 6.723-2.097zm4.243-17.756l4.31-4.311c2.592 3.332 3.873 7.037 3.841 11.115-.032 4.021-1.317 7.682-3.854 10.984l-4.306-4.306c1.329-2.02 2.01-4.227 2.04-6.625.029-2.486-.65-4.771-2.031-6.857zM34.843 31.836a2.994 2.994 0 1 1 0 5.989 2.994 2.994 0 0 1 0-5.989M3.986 31.842a2.994 2.994 0 1 1 0 5.989 2.994 2.994 0 0 1 0-5.989M34.871.957a2.994 2.994 0 1 1 0 5.988 2.994 2.994 0 0 1 0-5.988M3.91.904a2.994 2.994 0 1 1 0 5.988 2.994 2.994 0 0 1 0-5.988\"\n}));\n\nfunction SvgLogo(_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 xmlns: \"http://www.w3.org/2000/svg\",\n width: 39,\n height: 39,\n viewBox: \"0 0 39 39\",\n className: \"logo show-sm\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _ref2);\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgLogo);\nexport default __webpack_public_path__ + \"static/media/logo.3d758557.svg\";\nexport { ForwardRef as ReactComponent };","import Denominate from 'components/Denominate';\nimport React from 'react';\nimport { ReactComponent as Logo } from 'assets/images/logo.svg';\nimport { useContext, useDispatch } from 'context';\n\nconst Navbar = () => {\n const { loggedIn, dapp, address, account } = useContext();\n const dispatch = useDispatch();\n\n const logOut = () => {\n dispatch({ type: 'logout', provider: dapp.provider });\n };\n\n return (\n
\n
\n
\n \n Delegation Manager\n
\n {loggedIn && (\n
\n Balance: \n \n \n \n Wallet address: \n {address}\n \n Close\n \n
\n )}\n
\n
\n );\n};\n\nexport default Navbar;\n","import BigNumber from 'bignumber.js';\nimport denominate from 'components/Denominate/formatters';\nimport { denomination, decimals, auctionContract, network } from 'config';\nimport { useContext, useDispatch } from 'context';\nimport { emptyAgencyMetaData } from 'context/state';\nimport { contractViews } from 'contracts/ContractViews';\nimport {\n AgencyMetadata,\n ContractOverview,\n NetworkConfig,\n NetworkStake,\n Stats,\n} from 'helpers/contractDataDefinitions';\nimport React from 'react';\nimport { calculateAPR } from './APRCalculation';\nimport Footer from './Footer';\nimport Navbar from './Navbar';\nimport axios from 'axios';\nimport {\n QueryResponse,\n decodeUnsignedNumber,\n decodeBigNumber,\n decodeString,\n} from '@elrondnetwork/erdjs';\n\nconst getStakingSCBalance = async (): Promise => {\n const result = await axios.get(`${network.apiAddress}/accounts/${auctionContract}`);\n if (result.status) {\n return result.data.balance;\n } else {\n return 'N/A';\n }\n};\n\nconst Layout = ({ children, page }: { children: React.ReactNode; page: string }) => {\n const dispatch = useDispatch();\n const { dapp, delegationContract } = useContext();\n const {\n getContractConfig,\n getTotalActiveStake,\n getBlsKeys,\n getNumUsers,\n getMetaData,\n getDelegationManagerContractConfig,\n } = contractViews;\n\n const getContractOverviewType = (value: QueryResponse) => {\n let untypedResponse = value.outputUntyped();\n let initialOwnerFunds = denominate({\n decimals,\n denomination,\n input: decodeBigNumber(untypedResponse[3]).toFixed(),\n });\n return new ContractOverview(\n untypedResponse[0].toString('hex'),\n (decodeUnsignedNumber(untypedResponse[1]) / 100).toString(),\n decodeBigNumber(untypedResponse[2]).toFixed(),\n initialOwnerFunds,\n decodeString(untypedResponse[4]),\n decodeString(untypedResponse[5]),\n decodeString(untypedResponse[6]),\n decodeString(untypedResponse[7]),\n decodeString(untypedResponse[8]),\n decodeUnsignedNumber(untypedResponse[9]) * 6\n );\n };\n\n const getAgencyMetaDataType = (value: QueryResponse) => {\n if (value && value.returnData && value.returnData.length === 0) {\n return emptyAgencyMetaData;\n }\n const untypedResponse = value.outputUntyped();\n return new AgencyMetadata(\n decodeString(untypedResponse[0]),\n decodeString(untypedResponse[1]),\n decodeString(untypedResponse[2])\n );\n };\n React.useEffect(\n () => {\n Promise.all([\n getMetaData(dapp, delegationContract),\n getNumUsers(dapp, delegationContract),\n getContractConfig(dapp, delegationContract),\n getTotalActiveStake(dapp, delegationContract),\n getBlsKeys(dapp, delegationContract),\n dapp.apiProvider.getNetworkStats(),\n dapp.apiProvider.getNetworkStake(),\n dapp.proxy.getNetworkConfig(),\n dapp.proxy.getNetworkStatus(),\n getDelegationManagerContractConfig(dapp),\n ])\n .then(\n async ([\n metaData,\n numUsers,\n contractOverview,\n activeStake,\n blsKeysResponse,\n networkStats,\n networkStake,\n networkConfig,\n networkStatus,\n delegationManager,\n ]) => {\n dispatch({\n type: 'setNumUsers',\n numUsers: decodeUnsignedNumber(numUsers.outputUntyped()[0]),\n });\n dispatch({\n type: 'setMinDelegationAmount',\n minDelegationAmount: decodeUnsignedNumber(delegationManager.outputUntyped()[0]),\n });\n const contract = getContractOverviewType(contractOverview);\n dispatch({\n type: 'setContractOverview',\n contractOverview: contract,\n });\n dispatch({\n type: 'setAgencyMetaData',\n agencyMetaData: getAgencyMetaDataType(metaData),\n });\n dispatch({\n type: 'setTotalActiveStake',\n totalActiveStake: decodeBigNumber(activeStake.outputUntyped()[0]).toFixed(),\n });\n dispatch({\n type: 'setNumberOfActiveNodes',\n numberOfActiveNodes: blsKeysResponse\n .outputUntyped()\n .filter(key => decodeString(key) === 'staked')\n .length.toString(),\n });\n dispatch({\n type: 'setNetworkConfig',\n networkConfig: new NetworkConfig(\n networkConfig.TopUpFactor,\n networkConfig.RoundDuration,\n networkConfig.RoundsPerEpoch,\n networkStatus.RoundsPassedInCurrentEpoch,\n new BigNumber(networkConfig.TopUpRewardsGradientPoint),\n networkConfig.ChainID\n ),\n });\n const stakingBalance = await getStakingSCBalance(); // Delete it after we migrate to erdjs 4.x\n const APR = parseFloat(\n calculateAPR({\n stats: new Stats(networkStats.Epoch),\n networkConfig: new NetworkConfig(\n networkConfig.TopUpFactor,\n networkConfig.RoundDuration,\n networkConfig.RoundsPerEpoch,\n networkStatus.RoundsPassedInCurrentEpoch,\n new BigNumber(networkConfig.TopUpRewardsGradientPoint),\n networkConfig.ChainID\n ),\n networkStake: new NetworkStake(\n networkStake.TotalValidators,\n networkStake.ActiveValidators,\n networkStake.QueueSize,\n new BigNumber(stakingBalance) // Replace with the economics value from erdjs 4.x\n ),\n blsKeys: blsKeysResponse.outputUntyped(),\n totalActiveStake: decodeBigNumber(activeStake.outputUntyped()[0]).toFixed(),\n })\n );\n\n dispatch({\n type: 'setAprPercentage',\n aprPercentage: (\n APR -\n APR *\n ((contract && contract.serviceFee ? parseFloat(contract.serviceFee) : 0) / 100)\n )\n .toFixed(2)\n .toString(),\n });\n }\n )\n .catch(e => {\n console.error('To do ', e);\n });\n },\n /* eslint-disable react-hooks/exhaustive-deps */ []\n );\n\n return (\n
\n {page !== 'home' && }\n
{children}
\n
\n
\n );\n};\n\nexport default Layout;\n","import React, { useState } from 'react';\nimport { ErrorMessage, Formik } from 'formik';\nimport BigNumber from 'bignumber.js';\nimport { object, string } from 'yup';\nimport { Modal } from 'react-bootstrap';\nimport { useContext } from 'context';\nimport Denominate from 'components/Denominate';\nimport { entireBalance } from 'helpers';\nimport { denomination, decimals } from 'config';\nimport denominate from 'components/Denominate/formatters';\nimport ModalActionButton from 'components/ModalActionButton';\n\ninterface DelegateModalType {\n show: boolean;\n balance: string;\n handleClose: () => void;\n handleContinue: (value: string) => void;\n}\n\nconst DelegateModal = ({ show, balance, handleClose, handleContinue }: DelegateModalType) => {\n const { egldLabel, contractOverview, totalActiveStake, minDelegationAmount } = useContext();\n const [displayDelegationCapMessage, setDisplayDelegationCapMessage] = useState(false);\n const [maxPressed, setMaxPressed] = React.useState(false);\n\n const { entireBalance: available, entireBalanceMinusDust } = entireBalance({\n balance: balance,\n gasPrice: '12000000',\n gasLimit: '12000000',\n denomination,\n decimals,\n });\n\n const isFullDelegationCapContract = () => {\n const bnTotalActiveStake = new BigNumber(totalActiveStake);\n const bnMaxDelegationCap = new BigNumber(contractOverview.maxDelegationCap);\n return (\n bnTotalActiveStake.comparedTo(bnMaxDelegationCap) >= 0 &&\n contractOverview.maxDelegationCap !== String(0)\n );\n };\n\n const getAvailableToDelegate = () => {\n if (contractOverview && contractOverview.withDelegationCap === 'true') {\n const bnAvailable = new BigNumber(entireBalanceMinusDust);\n const totalActive = denominate({\n input: totalActiveStake,\n denomination,\n decimals,\n }).replace(/,/g, '');\n const maxDelegationCap = denominate({\n input: contractOverview.maxDelegationCap,\n denomination,\n decimals,\n }).replace(/,/g, '');\n const availableToDelegate = new BigNumber(maxDelegationCap).minus(new BigNumber(totalActive));\n if (bnAvailable.comparedTo(availableToDelegate) >= 0) {\n setDisplayDelegationCapMessage(true);\n return availableToDelegate.toFixed();\n }\n }\n return entireBalanceMinusDust;\n };\n\n const handleOnShow = () => {\n setDisplayDelegationCapMessage(false);\n setMaxPressed(false);\n };\n\n return (\n \n
\n
\n

\n Delegate now\n

\n {isFullDelegationCapContract() ? (\n

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

\n ) : (\n

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

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

\n {title}\n

\n

{description}

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

\n {title}\n

\n

{description}

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

{title}

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

My Stake

\n {userActiveStake !== String(0) && (\n
\n \n {displayUndelegate && }\n
\n )}\n
\n
\n {userActiveStake === String(0) ? (\n }\n />\n ) : (\n
\n

Active Delegation

\n

\n {userActiveStake} {egldLabel}\n

\n
\n )}\n
\n

\n {claimableRewards} {egldLabel} Claimable rewards\n

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

Pending Withdrawals

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

\n {value} {valueUnit}\n

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

\n Change service fee\n

\n

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

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

\n {title}\n

\n

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

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

Contract Address

\n {delegationContract}\n
\n
\n {isOwner() && !isOwnerPath() ? (\n \n Admin\n \n ) : null}\n {pathname !== '/dashboard' ? (\n \n Dashboard\n \n ) : null}\n {isOwner() && isOwnerPath() ? : null}\n
\n
\n );\n};\n\nexport default Header;\n","import React from 'react';\nimport Views from './Cards';\nimport Header from './Header';\n\nconst Overview = () => {\n return (\n <>\n
\n \n \n );\n};\n\nexport default Overview;\n","import React, { useEffect } from 'react';\nimport { useContext, useDispatch } from 'context';\nimport Delegation from './Delegation';\nimport PendingUndelegated from './PendingUndelegated';\nimport { Redirect } from 'react-router-dom';\nimport Overview from 'components/Overview';\nimport { Address } from '@elrondnetwork/erdjs';\nimport { AccountType } from 'helpers/contractDataDefinitions';\nimport State from 'components/State';\nimport { faCircleNotch } from '@fortawesome/free-solid-svg-icons';\nimport { getItem } from 'storage/session';\n\nconst Dashboard = () => {\n const {\n loggedIn,\n dapp,\n address,\n networkConfig,\n ledgerAccount,\n walletConnectAccount,\n } = useContext();\n const dispatch = useDispatch();\n\n const fetchAccount = () => {\n dapp.proxy.getAccount(new Address(address)).then(account => {\n dispatch({\n type: 'setAccount',\n account: new AccountType(account.balance.toString(), account.nonce),\n });\n });\n };\n\n const isLedgerLogin = getItem('ledgerLogin') && !ledgerAccount;\n const isWalletConnect = getItem('walletConnectLogin') && !walletConnectAccount;\n const dispatchLoginType = () => {\n if (isLedgerLogin) {\n const ledgerLogin = getItem('ledgerLogin');\n dispatch({\n type: 'setLedgerAccount',\n ledgerAccount: {\n index: ledgerLogin.index,\n address: address,\n },\n });\n }\n if (isWalletConnect) {\n dispatch({\n type: 'setWalletConnectAccount',\n walletConnectAccount: address,\n });\n }\n };\n useEffect(fetchAccount, /* eslint-disable react-hooks/exhaustive-deps */ []);\n\n useEffect(dispatchLoginType, /* eslint-disable react-hooks/exhaustive-deps */ []);\n if (!loggedIn) {\n return ;\n }\n return (\n
\n
\n \n {networkConfig.roundDuration === -1 ? (\n \n ) : (\n
\n \n \n
\n )}\n
\n
\n );\n};\n\nexport default Dashboard;\n","import { Address } from '@elrondnetwork/erdjs';\nimport React, { useEffect } from 'react';\nimport { useContext, useDispatch } from 'context';\nimport { getItem, removeItem, setItem } from 'storage/session';\nimport { AccountType } from 'helpers/contractDataDefinitions';\n\nconst WalletLogin = () => {\n const dispatch = useDispatch();\n const { dapp } = useContext();\n const handleOnClick = () => {\n dispatch({ type: 'loading', loading: true });\n dapp.provider\n .init()\n .then(initialised => {\n if (initialised) {\n // Wallet provider will redirect, we can set a session information so we know when we are getting back\n // that we initiated a wallet provider login\n setItem('wallet_login', {}, 60); // Set a 60s session only\n dapp.provider.login();\n } else {\n dispatch({ type: 'loading', loading: true });\n console.warn('Something went wrong trying to redirect to wallet login..');\n }\n })\n .catch(err => {\n dispatch({ type: 'loading', loading: false });\n console.warn(err);\n });\n };\n\n // The wallet login component can check for the session and the address get param\n useEffect(\n () => {\n if (getItem('wallet_login')) {\n dispatch({ type: 'loading', loading: true });\n dapp.provider.init().then(initialised => {\n if (!initialised) {\n dispatch({ type: 'loading', loading: false });\n return;\n }\n\n dapp.provider\n .getAddress()\n .then(address => {\n removeItem('wallet_login');\n dispatch({ type: 'login', address });\n })\n .then(value =>\n dapp.proxy.getAccount(new Address(getItem('address'))).then(account =>\n dispatch({\n type: 'setAccount',\n account: new AccountType(account.balance.toString(), account.nonce),\n })\n )\n )\n .catch(err => {\n dispatch({ type: 'loading', loading: false });\n });\n });\n }\n },\n /* eslint-disable react-hooks/exhaustive-deps */ [dapp.provider, dapp.proxy]\n );\n\n return (\n \n );\n};\n\nexport default WalletLogin;\n","// @ts-ignore\nimport platform from 'platform';\n\nconst WalletConnectLogin = () => {\n return (\n \n Maiar\n \n );\n};\n\nexport default WalletConnectLogin;\n","import React from 'react';\nimport { Redirect } from 'react-router-dom';\nimport { faBan, faCircleNotch } from '@fortawesome/free-solid-svg-icons';\nimport { ReactComponent as Logo } from 'assets/images/logo.svg';\nimport State from 'components/State';\nimport { useContext } from 'context';\nimport WalletLogin from './Login/Wallet';\nimport WalletConnectLogin from './Login/WalletConnect';\n\nconst Home = () => {\n const { loading, error, loggedIn, egldLabel } = useContext();\n\n const ref = React.useRef(null);\n\n return (\n
\n {error ? (\n \n ) : loggedIn ? (\n \n ) : loading ? (\n \n ) : (\n
\n
\n
\n \n

Elrond Delegation Manager

\n

\n Delegate {egldLabel} and earn up to 14.8% APY!\n

\n

Please select your login method:

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

\n {name}\n

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

\n {errors[fieldName]}\n

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

\n {name}\n

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

My Nodes

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

Confirm Ledger Address

\n

For security, please confirm that your address:

\n

{ledgerAccount?.address}

\n

is the one shown on your Ledger device screen now.

\n

Select Approve on your device to confirm.

\n

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

\n
\n
\n
\n );\n};\n\nexport default ConfirmedAddress;\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.86e629a6.svg\";\nexport { ForwardRef as ReactComponent };","import * as React from 'react';\nimport { ReactComponent as LedgerLogo } from 'assets/images/ledger-nano.svg';\n\nconst LedgerConnect = ({ onClick, error }: { onClick: () => void; error: string }) => {\n const [ledgerError] = React.useState(error);\n return (\n
\n
\n
\n \n

Connect Ledger

\n

Unlock your device & open the Elrond App.

\n
\n {ledgerError && (\n

\n {ledgerError}\n

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

Connect Maiar

\n

\n {isFromMobile\n ? 'Confirm the connection in the Maiar app'\n : 'Scan the QR code using Maiar'}\n

\n
\n {error && (\n

\n {error}\n

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