diff --git a/bun.lockb b/bun.lockb
new file mode 100755
index 000000000..3f3b376d1
Binary files /dev/null and b/bun.lockb differ
diff --git a/caminojs b/caminojs
index ae1a21688..460f3a9f6 160000
--- a/caminojs
+++ b/caminojs
@@ -1 +1 @@
-Subproject commit ae1a21688c9ad213328197b3477c2b6f59983f58
+Subproject commit 460f3a9f6724903b682c51dfbc8577a79a12f875
diff --git a/package.json b/package.json
index 0448b6281..5eb82a75d 100644
--- a/package.json
+++ b/package.json
@@ -174,7 +174,7 @@
"weekstart": "1.0.1"
},
"dependencies": {
- "@c4tplatform/signavaultjs": "^1.0.11",
+ "@c4tplatform/signavaultjs": "^1.1",
"@cypress/xpath": "^2.0.3",
"vue": "^2.6.11",
"vue-cli-plugin-vuetify": "^2.0.3",
diff --git a/src/components/Access/AccountsFound.vue b/src/components/Access/AccountsFound.vue
index 095d0842d..b65ce85bf 100644
--- a/src/components/Access/AccountsFound.vue
+++ b/src/components/Access/AccountsFound.vue
@@ -71,10 +71,10 @@ export default class AccountsFound extends Vue {
.savedAccounts {
margin: 0;
- font-family: ClashDisplay;
+ font-family: var(--primary-font);
font-weight: 500;
line-height: 1.5;
- font-size: 1rem;
+ @include mixins.typography-body-2;
margin-bottom: 0.5rem;
}
@@ -82,7 +82,7 @@ export default class AccountsFound extends Vue {
color: var(--primary-color);
width: 20px;
height: 20px;
- font-size: 22px;
+ @include mixins.typography-subtitle-1;
}
.goTo {
diff --git a/src/components/CamBtn.vue b/src/components/CamBtn.vue
index 0343bd951..eaac0814c 100644
--- a/src/components/CamBtn.vue
+++ b/src/components/CamBtn.vue
@@ -15,7 +15,11 @@ import Spinner from '@/components/misc/Spinner.vue'
components: { Spinner },
})
export default class CamBtn extends Vue {
- @Prop({ default: 'primary' }) readonly variant!: 'primary' | 'transparent' | 'negative'
+ @Prop({ default: 'primary' }) readonly variant!:
+ | 'primary'
+ | 'transparent'
+ | 'negative'
+ | 'accent'
@Prop({ default: false }) readonly disabled!: boolean
@Prop({ default: false }) readonly loading!: boolean
@Prop({ default: () => {} }) readonly onClick!: Function
diff --git a/src/components/CamInput.vue b/src/components/CamInput.vue
index 87968caf2..7bb32ade6 100644
--- a/src/components/CamInput.vue
+++ b/src/components/CamInput.vue
@@ -29,7 +29,7 @@
-
-
diff --git a/src/components/NetworkSettings/EditPage.vue b/src/components/NetworkSettings/EditPage.vue
index 33c878339..2781e3a64 100644
--- a/src/components/NetworkSettings/EditPage.vue
+++ b/src/components/NetworkSettings/EditPage.vue
@@ -169,6 +169,7 @@ export default class EditPage extends Vue {
diff --git a/src/components/NetworkSettings/NetworkMenu.vue b/src/components/NetworkSettings/NetworkMenu.vue
index d749adfb6..f1370563e 100644
--- a/src/components/NetworkSettings/NetworkMenu.vue
+++ b/src/components/NetworkSettings/NetworkMenu.vue
@@ -240,7 +240,7 @@ export default class NetworkMenu extends Vue {
}
button {
- font-size: 12px;
+ @include mixins.typography-caption;
padding: 3px 14px;
border-radius: var(--border-radius-sm);
}
diff --git a/src/components/NetworkSettings/NetworkRow.vue b/src/components/NetworkSettings/NetworkRow.vue
index 4363c636e..0688a022f 100644
--- a/src/components/NetworkSettings/NetworkRow.vue
+++ b/src/components/NetworkSettings/NetworkRow.vue
@@ -109,8 +109,9 @@ export default class NetworkRow extends Vue {
diff --git a/src/components/SidePanels/History/ViewTypes/BaseTx.vue b/src/components/SidePanels/History/ViewTypes/BaseTx.vue
index 947ee1e1a..456c6b533 100644
--- a/src/components/SidePanels/History/ViewTypes/BaseTx.vue
+++ b/src/components/SidePanels/History/ViewTypes/BaseTx.vue
@@ -361,8 +361,9 @@ export default class BaseTx extends Vue {
}
diff --git a/src/components/SidePanels/History/ViewTypes/ImportExport.vue b/src/components/SidePanels/History/ViewTypes/ImportExport.vue
index 25c19a4c0..3fd06c3b1 100644
--- a/src/components/SidePanels/History/ViewTypes/ImportExport.vue
+++ b/src/components/SidePanels/History/ViewTypes/ImportExport.vue
@@ -11,13 +11,10 @@
diff --git a/src/components/SidePanels/History/ViewTypes/StakingTx.vue b/src/components/SidePanels/History/ViewTypes/StakingTx.vue
index 33161f2ce..577297800 100644
--- a/src/components/SidePanels/History/ViewTypes/StakingTx.vue
+++ b/src/components/SidePanels/History/ViewTypes/StakingTx.vue
@@ -303,10 +303,11 @@ export default class StakingTx extends Vue {
}
diff --git a/src/components/TestNetBanner.vue b/src/components/TestNetBanner.vue
index d82e4622a..1fceb8185 100644
--- a/src/components/TestNetBanner.vue
+++ b/src/components/TestNetBanner.vue
@@ -21,10 +21,11 @@ export default class TestNetBanner extends Vue {
diff --git a/src/components/misc/AvaxInput.vue b/src/components/misc/AvaxInput.vue
index 5acc9466f..f0d3535d5 100644
--- a/src/components/misc/AvaxInput.vue
+++ b/src/components/misc/AvaxInput.vue
@@ -1,38 +1,63 @@
-
@@ -35,19 +35,23 @@ import { Vue, Component, Prop } from 'vue-property-decorator'
import Modal from '@/components/modals/Modal.vue'
import AvaAsset from '@/js/AvaAsset'
import { bnToBig } from '@/helpers/helper'
+import { ChainIdType } from '@/constants'
@Component({
components: {
Modal,
},
filters: {
- bal(asset: AvaAsset) {
+ bal(asset: AvaAsset, chainId: string) {
+ if (chainId === 'P')
+ return bnToBig(asset.amountExtra, asset.denomination).toLocaleString()
return bnToBig(asset.amount, asset.denomination).toLocaleString()
},
},
})
export default class PrivateKey extends Vue {
@Prop() assets!: AvaAsset[]
+ @Prop() chainId!: ChainIdType
@Prop({ default: () => [] }) disabledIds!: string[] // asset id | if nft the utxo id
open(): void {
@@ -95,7 +99,7 @@ $logo_w: 38px;
}
.token_row {
- font-size: 15px;
+ @include mixins.typography-body-2;
display: grid;
grid-template-columns: max-content max-content 1fr;
column-gap: 12px;
@@ -134,7 +138,7 @@ $logo_w: 38px;
p:last-of-type {
color: var(--primary-color-light);
- font-size: 13px;
+ @include mixins.typography-caption;
}
}
diff --git a/src/components/modals/ClaimRewardModal.vue b/src/components/modals/ClaimRewardModal.vue
new file mode 100644
index 000000000..532d021b1
--- /dev/null
+++ b/src/components/modals/ClaimRewardModal.vue
@@ -0,0 +1,189 @@
+
+
+
+
+
+
+
+
+ {{
+ $t('earn.rewards.claim_modal.note_message', {
+ fee: feeAmt,
+ symbol: nativeAssetSymbol,
+ })
+ }}
+
+
+
+
+ {{ $t('earn.rewards.claim_modal.confirm') }}
+
+
+ {{ $t('earn.rewards.claim_modal.cancel') }}
+
+
+
+
+
+
+ {{
+ $t('earn.rewards.claim_modal.confirmation_message', {
+ amount: confirmedClaimedAmount,
+ symbol: nativeAssetSymbol,
+ })
+ }}
+
+
+
+
+
+
+
+
diff --git a/src/components/modals/EvmTokenSelect/ERCNftRow.vue b/src/components/modals/EvmTokenSelect/ERCNftRow.vue
index bda24815a..0a0029787 100644
--- a/src/components/modals/EvmTokenSelect/ERCNftRow.vue
+++ b/src/components/modals/EvmTokenSelect/ERCNftRow.vue
@@ -52,6 +52,7 @@ export default class ERCNftRow extends Vue {
}
diff --git a/src/components/modals/PrivateKey.vue b/src/components/modals/PrivateKey.vue
index 892d71ed2..50e77c24f 100644
--- a/src/components/modals/PrivateKey.vue
+++ b/src/components/modals/PrivateKey.vue
@@ -55,7 +55,7 @@ export default class PrivateKey extends Vue {
diff --git a/src/components/modals/UtxoSelect/UtxoSelect.vue b/src/components/modals/UtxoSelect/UtxoSelect.vue
index 067c901f4..fa45cce60 100644
--- a/src/components/modals/UtxoSelect/UtxoSelect.vue
+++ b/src/components/modals/UtxoSelect/UtxoSelect.vue
@@ -151,6 +151,7 @@ export default class UtxoSelect extends Vue {
}
diff --git a/src/components/wallet/advanced/SignMessage/SearchAddress.vue b/src/components/wallet/advanced/SignMessage/SearchAddress.vue
index a88e98460..2933549c0 100644
--- a/src/components/wallet/advanced/SignMessage/SearchAddress.vue
+++ b/src/components/wallet/advanced/SignMessage/SearchAddress.vue
@@ -93,7 +93,7 @@ $addrSize: 14px;
padding: 2px 6px;
cursor: pointer;
font-size: $addrSize;
- font-family: 'Inter';
+ font-family: var(--primary-font);
}
input {
diff --git a/src/components/wallet/advanced/SignMessage/SignMessage.vue b/src/components/wallet/advanced/SignMessage/SignMessage.vue
index 7165440bb..315ed0213 100644
--- a/src/components/wallet/advanced/SignMessage/SignMessage.vue
+++ b/src/components/wallet/advanced/SignMessage/SignMessage.vue
@@ -80,6 +80,7 @@ export default class SignMessage extends Vue {
}
diff --git a/src/components/wallet/earn/ChainTransfer/TxState.vue b/src/components/wallet/earn/ChainTransfer/TxState.vue
index def05bf20..826c0fb47 100644
--- a/src/components/wallet/earn/ChainTransfer/TxState.vue
+++ b/src/components/wallet/earn/ChainTransfer/TxState.vue
@@ -49,6 +49,7 @@ export default class TxStateCard extends Vue {
}
diff --git a/src/components/wallet/earn/CreateOfferForm.vue b/src/components/wallet/earn/CreateOfferForm.vue
new file mode 100644
index 000000000..23cc2cf11
--- /dev/null
+++ b/src/components/wallet/earn/CreateOfferForm.vue
@@ -0,0 +1,1245 @@
+
+
+
+
+
+
+
+
+ {{
+ $t('earn.validate.pending_multisig.threshold', {
+ value: sigValue,
+ threshold: pendingCreateOfferMultisigTX?.tx.threshold,
+ })
+ }}
+
+
+ {{ $t('earn.validate.pending_multisig.already_signed') }}
+
+
+
+ {{ $t('edit_multisig.errors.invalid_addresses') }}
+
+
+ {{ $t('earn.rewards.errors.has_exclusive_total_max_amount_or_reward') }}
+
+
+ {{ $t('earn.rewards.errors.is_max_reward_amount_and_interest_rate_is_zero') }}
+
+
+ {{
+ $t('earn.rewards.errors.is_min_duration_less_than_no_rewards_period', {
+ minDuration: offer.minDuration,
+ noRewardsPeriodDuration: offer.noRewardsPeriodDuration,
+ })
+ }}
+
+
+
+ {{
+ $t('earn.rewards.errors.is_min_duration_less_than_unlock_period', {
+ minDuration: offer.minDuration,
+ unlockPeriodDuration: offer.unlockPeriodDuration,
+ })
+ }}
+
+
+ {{
+ $t('earn.rewards.errors.is_max_diration_less_than_min_duration', {
+ minDuration: offer.minDuration,
+ maxDuration: offer.maxDuration,
+ })
+ }}
+
+
+ {{ $t('earn.rewards.errors.is_min_duration_equal_to_zero') }}
+
+
+ {{ $t('earn.rewards.errors.is_start_date_greater_than_end_date') }}
+
+
+ Creating this depositOffer will incurr a fee of
+ {{ feeAmt }} {{ nativeAssetSymbol }}
+
+
+
+
+
+ {{ $t('earn.rewards.create.submit') }}
+
+
+
+
+ {{ $t('transfer.multisig.abort_transaction') }}
+
+
+ {{ $t('transfer.multisig.execute_transaction') }}
+
+
+ {{ $t('transfer.multisig.sign_transaction') }}
+
+
+
+
+
+
+
+
+
+
diff --git a/src/components/wallet/earn/DateForm.vue b/src/components/wallet/earn/DateForm.vue
index 82f522731..26bbf2a42 100644
--- a/src/components/wallet/earn/DateForm.vue
+++ b/src/components/wallet/earn/DateForm.vue
@@ -8,14 +8,14 @@
class="date"
:min-datetime="endDateMin"
:max-datetime="endDateMax"
+ :disabled="pendingTxDate"
>
@@ -162,12 +116,12 @@ export default class DateForm extends Vue {
overflow: hidden;
background-color: var(--bg-light);
color: var(--text-color);
- font-family: 'Inter', sans-serif;
+ font-family: var(--primary-font);
.vdatetime-popup__header {
background-color: #0085ff;
}
.vdatetime-popup__header div {
- font-family: 'ClashDisplay', sans-serif;
+ font-family: var(--primary-font);
}
.vdatetime-calendar__navigation--next svg path,
.vdatetime-calendar__navigation--previous svg path {
@@ -198,12 +152,16 @@ export default class DateForm extends Vue {
grid-template-columns: 1fr;
grid-gap: 15px;
width: 100%;
-
+ border: 1px solid var(--camino-slate-slate-600);
+ border-radius: 8px;
> div {
width: 100%;
display: grid;
grid-template-columns: max-content 1fr;
- background-color: var(--bg-light);
+ background-color: transparent !important;
+ }
+ .vdatetime {
+ background-color: transparent !important;
}
label > span {
diff --git a/src/components/wallet/earn/Delegate/AddDelegator.vue b/src/components/wallet/earn/Delegate/AddDelegator.vue
index 55cf4d284..c190884c6 100644
--- a/src/components/wallet/earn/Delegate/AddDelegator.vue
+++ b/src/components/wallet/earn/Delegate/AddDelegator.vue
@@ -659,13 +659,13 @@ h4 {
label {
margin-top: 6px;
color: var(--primary-color-light);
- font-size: 14px;
+ @include mixins.typography-caption;
margin-bottom: 3px;
}
.close_but {
padding: 2px 14px;
- font-size: 13px;
+ @include mixins.typography-caption;
border-radius: 6px;
margin-bottom: 14px;
}
@@ -748,7 +748,7 @@ label {
.reward_tabs {
margin-bottom: 8px;
- font-size: 13px;
+ @include mixins.typography-caption;
button {
color: var(--primary-color-light);
@@ -767,7 +767,7 @@ label {
}
.desc {
- font-size: 13px;
+ @include mixins.typography-caption;
margin-bottom: 8px !important;
color: var(--primary-color-light);
}
@@ -778,13 +778,13 @@ label {
> div {
margin-bottom: 14px;
p {
- font-size: 24px;
+ @include mixins.typography-subtitle-1;
}
}
.err {
margin: 14px 0 !important;
- font-size: 14px;
+ @include mixins.typography-caption;
}
.v-btn {
@@ -803,7 +803,7 @@ label {
.status_icon {
align-items: center;
display: flex;
- font-size: 24px;
+ @include mixins.typography-subtitle-1;
}
}
@@ -821,7 +821,7 @@ label {
}
.tx_id {
- font-size: 13px;
+ @include mixins.typography-caption;
color: var(--primary-color-light);
word-break: break-all;
margin: 14px 0 !important;
@@ -834,7 +834,7 @@ label {
> div {
margin-bottom: 10px;
p {
- font-size: 18px;
+ @include mixins.typography-body-1;
}
}
}
diff --git a/src/components/wallet/earn/Delegate/ConfirmPage.vue b/src/components/wallet/earn/Delegate/ConfirmPage.vue
index ef382855c..13e30e540 100644
--- a/src/components/wallet/earn/Delegate/ConfirmPage.vue
+++ b/src/components/wallet/earn/Delegate/ConfirmPage.vue
@@ -68,6 +68,7 @@ export default class ConfirmPage extends Vue {
}
diff --git a/src/components/wallet/earn/Delegate/NodeCard.vue b/src/components/wallet/earn/Delegate/NodeCard.vue
index cb9119d7e..ad2237dfc 100644
--- a/src/components/wallet/earn/Delegate/NodeCard.vue
+++ b/src/components/wallet/earn/Delegate/NodeCard.vue
@@ -140,7 +140,7 @@ export default class NodeCard extends Vue {
.node_id {
word-break: break-all;
//width: max-content;
- font-size: 13px;
+ @include mixins.typography-caption;
padding: 6px 14px;
background-color: var(--bg-light);
border-bottom: 2px solid var(--bg);
@@ -152,10 +152,10 @@ export default class NodeCard extends Vue {
column-gap: 14px;
}
label {
- font-size: 13px;
+ @include mixins.typography-caption;
}
p {
- font-size: 15px;
+ @include mixins.typography-body-2;
color: var(--primary-color-light);
}
@@ -163,7 +163,7 @@ p {
display: grid;
grid-template-columns: 1fr 1fr;
p {
- font-size: 13px;
+ @include mixins.typography-caption;
}
}
diff --git a/src/components/wallet/earn/DepositOfferCard.vue b/src/components/wallet/earn/DepositOfferCard.vue
index 562bd819b..9b0f9ffab 100644
--- a/src/components/wallet/earn/DepositOfferCard.vue
+++ b/src/components/wallet/earn/DepositOfferCard.vue
@@ -1,9 +1,9 @@
-
{{ rewardTitle }}
+
{{ rewardTitle }}
-
+
@@ -11,74 +11,108 @@
-
+
{{ formatDate(offer.start) }}
-
+
{{ formatDate(offer.end) }}
-
+
{{ cleanAvaxBN(offer.minAmount) }} CAM
-
+
{{ rewardPercent }} %
-
+
{{ formatDuration(offer.minDuration) }}
-
+
{{ formatDuration(offer.maxDuration) }}
-
+
{{ formatDuration(offer.unlockPeriodDuration) }}
-
+
{{ formatDuration(offer.noRewardsPeriodDuration) }}
-
+
+
+
+
+
diff --git a/src/components/wallet/earn/ModalAbortSigning.vue b/src/components/wallet/earn/ModalAbortSigning.vue
index f90693544..31da33611 100644
--- a/src/components/wallet/earn/ModalAbortSigning.vue
+++ b/src/components/wallet/earn/ModalAbortSigning.vue
@@ -9,12 +9,12 @@
{{ modalText }}
-
+
{{ $t('earn.rewards.abort_modal.cancel') }}
-
-
+
+
{{ $t('earn.rewards.abort_modal.abort') }}
-
+
@@ -24,10 +24,12 @@ import 'reflect-metadata'
import { Vue, Component, Prop } from 'vue-property-decorator'
import Modal from '../../modals/Modal.vue'
import { MultisigWallet } from '@/js/wallets/MultisigWallet'
+import CamBtn from '@/components/CamBtn.vue'
@Component({
components: {
Modal,
+ CamBtn,
},
})
export default class ModalAbortSigning extends Vue {
diff --git a/src/components/wallet/earn/ModalClaimDepositReward.vue b/src/components/wallet/earn/ModalClaimDepositReward.vue
index 4fa98e7b8..b2893186f 100644
--- a/src/components/wallet/earn/ModalClaimDepositReward.vue
+++ b/src/components/wallet/earn/ModalClaimDepositReward.vue
@@ -54,23 +54,23 @@
diff --git a/src/components/wallet/earn/ModalDepositFunds.vue b/src/components/wallet/earn/ModalDepositFunds.vue
new file mode 100644
index 000000000..f3766b89d
--- /dev/null
+++ b/src/components/wallet/earn/ModalDepositFunds.vue
@@ -0,0 +1,725 @@
+
+
+
+
+
+
+
+
+
+
+
+ {{ progressText }}
+
+
+
+
+
{{ formatDate(offer.start) }}
+
+
+
+
{{ formatDate(offer.end) }}
+
+
+
+
{{ cleanAvaxBN(offer.minAmount) }} CAM
+
+
+
+
{{ rewardPercent }} %
+
+
+
+
+
+
+ {{ formatDuration(offer.minDuration) }}
+
+
+
+
+
+ {{ formatDuration(offer.maxDuration) }}
+
+
+
+
+
+ {{ formatDuration(offer.unlockPeriodDuration) }}
+
+
+
+
+
+ {{ formatDuration(offer.noRewardsPeriodDuration) }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/components/wallet/earn/UserRewardRow.vue b/src/components/wallet/earn/UserRewardRow.vue
index e5791cea7..fb6fb1347 100644
--- a/src/components/wallet/earn/UserRewardRow.vue
+++ b/src/components/wallet/earn/UserRewardRow.vue
@@ -113,7 +113,7 @@ export default class UserRewardRow extends Vue {
.reward_row {
border-radius: var(--border-radius-sm);
overflow: hidden;
- font-size: 14px;
+ @include mixins.typography-caption;
//border: 2px solid var(--bg-light);
background-color: var(--bg-light);
}
diff --git a/src/components/wallet/earn/UserRewards.vue b/src/components/wallet/earn/UserRewards.vue
index 89c23afc1..3454fe3af 100644
--- a/src/components/wallet/earn/UserRewards.vue
+++ b/src/components/wallet/earn/UserRewards.vue
@@ -1,226 +1,83 @@
-
-
-
+
+
+
+
+
+ >
- No Active Earning
+
No Active Earning
diff --git a/src/components/wallet/earn/Validate/PendingMultisig.vue b/src/components/wallet/earn/Validate/PendingMultisig.vue
index 25259c1ba..ca08a01f1 100644
--- a/src/components/wallet/earn/Validate/PendingMultisig.vue
+++ b/src/components/wallet/earn/Validate/PendingMultisig.vue
@@ -1,14 +1,6 @@
-
-
-
-
-
-
-
+
{{ $t('validator.transaction_reward.title') }}
@@ -61,62 +53,66 @@
-
-
-
-
-
{{ owner.address }}
-
- ({{ $t('earn.validate.pending_multisig.signed') }})
-
-
- ({{ $t('earn.validate.pending_multisig.pending') }})
-
+
+
+
+
+
+
{{ owner.address }}
+
+ ({{ $t('earn.validate.pending_multisig.signed') }})
+
+
+ ({{ $t('earn.validate.pending_multisig.pending') }})
+
+
+
+
+ {{ $t('earn.validate.pending_multisig.sign') }}
+
-
- {{ $t('earn.validate.pending_multisig.sign') }}
-
+
+ {{
+ $t('earn.validate.pending_multisig.threshold', {
+ value: sigValue,
+ threshold: multisigTx?.tx.threshold,
+ })
+ }}
+
+
+ {{ $t('earn.validate.pending_multisig.already_signed') }}
+
+
+ {{ $t('earn.validate.pending_multisig.sign_transaction') }}
+
+
+
+
+
+
+ {{ $t('earn.rewards.abort_modal.abort') }}
+
+
+
+
+
+ {{ $t('earn.validate.pending_multisig.execute_transaction') }}
+
+
-
-
- {{
- $t('earn.validate.pending_multisig.threshold', {
- value: sigValue,
- threshold: multisigTx?.tx.threshold,
- })
- }}
-
-
- {{ $t('earn.validate.pending_multisig.already_signed') }}
-
-
- {{ $t('earn.validate.pending_multisig.sign_transaction') }}
-
-
-
-
- {{ $t('earn.validate.pending_multisig.execute_transaction') }}
-
-
-
-
-
- {{ $t('earn.rewards.abort_modal.abort') }}
-
-
div {
background-color: var(--bg-light);
margin: 14px 0;
padding: 6px 14px;
+ border-radius: var(--border-radius-sm);
label {
font-size: 14px;
@@ -456,4 +468,20 @@ export default class PendingMultisig extends Vue {
.mt2 {
margin: 2rem 0 1rem 0;
}
+
+@media screen and (max-width: 1200px) {
+ .container {
+ flex-direction: column;
+ gap: 1rem;
+ }
+
+ .signatures {
+ order: 2;
+ }
+
+ .transaction_details {
+ width: 100%;
+ order: 1;
+ }
+}
diff --git a/src/components/wallet/earn/Validate/RegisterNode.vue b/src/components/wallet/earn/Validate/RegisterNode.vue
index 5aa161493..afdce60a1 100644
--- a/src/components/wallet/earn/Validate/RegisterNode.vue
+++ b/src/components/wallet/earn/Validate/RegisterNode.vue
@@ -1,13 +1,5 @@
-
-
-
-
-
-
{{ $t('earn.validate.requirements_introduction') }}
@@ -94,14 +86,21 @@
-
+ {{
+ $t('earn.validate.warns.node_registration_fee', {
+ fee: feeAmt,
+ symbol: nativeAssetSymbol,
+ })
+ }}
+
+
{{ $t('earn.validate.register_validator_node') }}
-
+
@@ -157,10 +163,15 @@ import Big from 'big.js'
import Spinner from '@/components/misc/Spinner.vue'
import { MultisigWallet } from '@/js/wallets/MultisigWallet'
import { WalletType } from '@/js/wallets/types'
+import CamBtn from '@/components/CamBtn.vue'
+import Alert from '@/components/Alert.vue'
+import AvaAsset from '@/js/AvaAsset'
@Component({
components: {
Spinner,
+ CamBtn,
+ Alert,
},
})
export default class RegisterNode extends Vue {
@@ -171,6 +182,7 @@ export default class RegisterNode extends Vue {
@Prop() isNodeRegistered!: boolean
@Prop() loadingRefreshRegisterNode!: boolean
+ // @ts-ignore
helpers = this.globalHelper()
nodePrivateKey = ''
loadingRegisterNode: boolean = false
@@ -198,6 +210,22 @@ export default class RegisterNode extends Vue {
return big.toLocaleString()
}
+ formattedAmount(val: BN): string {
+ return `${(Number(val.toString()) / Number(ONEAVAX.toString())).toLocaleString()}`
+ }
+
+ get feeAmt(): string {
+ return this.formattedAmount(ava.PChain().getTxFee())
+ }
+
+ get nativeAssetSymbol(): string {
+ return this.ava_asset?.symbol ?? ''
+ }
+
+ get ava_asset(): AvaAsset | null {
+ return this.$store.getters['Assets/AssetAVA']
+ }
+
get addresses() {
let wallet: MnemonicWallet = this.$store.state.activeWallet
return wallet.getAllAddressesP()
@@ -247,6 +275,7 @@ export default class RegisterNode extends Vue {
: this.$t('notifications.register_node_initiated'),
type: 'success',
})
+ this.refresh()
} catch (error) {
console.error(error)
this.helpers.dispatchNotification({
@@ -281,19 +310,7 @@ export default class RegisterNode extends Vue {
input {
color: var(--primary-color);
background-color: var(--bg-light);
- padding: 6px 14px;
-}
-
-.disabled_input {
- display: inline-block;
- border-radius: var(--border-radius-sm);
- color: gray;
- background-color: var(--bg-light);
- padding: 6px 14px;
-}
-
-.disabled_input:focus-visible {
- outline: 0;
+ padding: 10px 14px;
}
a {
@@ -330,40 +347,6 @@ input::placeholder {
transform: translateY(-50%);
}
-@media only screen and (max-width: variables.$mobile_width) {
- .high_input {
- line-height: 4;
- }
-}
-
-.refresh {
- width: 20px;
- height: 20px;
-
- .v-icon {
- color: var(--primary-color);
- }
-
- button {
- outline: none !important;
- }
-
- img {
- object-fit: contain;
- width: 100%;
- }
-
- .spinner {
- color: var(--primary-color) !important;
- }
-}
-
-.refresh_div {
- position: relative;
- float: right;
- margin-top: -5%;
-}
-
.mt2 {
margin-top: 1rem;
}
diff --git a/src/components/wallet/earn/Validate/ValidatorInfo.vue b/src/components/wallet/earn/Validate/ValidatorInfo.vue
index 0b8171d22..6249674fb 100644
--- a/src/components/wallet/earn/Validate/ValidatorInfo.vue
+++ b/src/components/wallet/earn/Validate/ValidatorInfo.vue
@@ -3,53 +3,44 @@
-
-
-
-
-
-
+
-
-
-
- mdi-calendar-blank
-
-
+
+
mdi-calendar-blank
+
+
+ {{ startTime }}
+
-
-
- mdi-calendar-remove-outline
-
-
+
+
mdi-calendar-remove
+
+
+ {{ endTime }}
+
-
-
- mdi-arrow-up-bold
-
-
+
+
mdi-clock-time-three
+
+
+ {{ reaminingValidation }}
+
-
-
- mdi-clock-time-five-outline
-
-
+
+
mdi-percent
+
+
+ {{ upTime.toFixed() }} %
+
+
-
@@ -77,14 +68,15 @@
diff --git a/src/components/wallet/earn/Validate/ValidatorPending.vue b/src/components/wallet/earn/Validate/ValidatorPending.vue
index ab962a2a4..bef54a5fd 100644
--- a/src/components/wallet/earn/Validate/ValidatorPending.vue
+++ b/src/components/wallet/earn/Validate/ValidatorPending.vue
@@ -1,12 +1,5 @@
-
@@ -61,6 +54,7 @@ export default class ValidatorPending extends Vue {
diff --git a/src/components/wallet/manage/AddMultisigAlias.vue b/src/components/wallet/manage/AddMultisigAlias.vue
index be4b7be32..c9accdc0b 100644
--- a/src/components/wallet/manage/AddMultisigAlias.vue
+++ b/src/components/wallet/manage/AddMultisigAlias.vue
@@ -132,9 +132,10 @@ export default class AddMultisigAlias extends Vue {
}
diff --git a/src/views/wallet/Portfolio.vue b/src/views/wallet/Portfolio.vue
index d264fcd2e..5090dc319 100644
--- a/src/views/wallet/Portfolio.vue
+++ b/src/views/wallet/Portfolio.vue
@@ -85,7 +85,7 @@ export default {
button {
padding: 8px 24px;
- font-size: 14px;
+ @include mixins.typography-caption;
font-weight: bold;
margin: 0px 5px;
text-transform: uppercase;
@@ -107,7 +107,7 @@ export default {
padding: 5px;
display: flex;
align-items: center;
- font-size: 13px;
+ @include mixins.typography-caption;
flex-basis: 420px;
flex-shrink: 1;
border: 1px solid transparent;
@@ -150,7 +150,7 @@ export default {
flex-grow: 1;
border-radius: 0px;
margin: 0;
- font-size: 12px;
+ @include mixins.typography-caption;
}
}
@@ -162,7 +162,7 @@ export default {
@include mixins.medium-device {
.header {
button {
- font-size: 13px;
+ @include mixins.typography-caption;
&[active] {
border-bottom-width: 2px;
diff --git a/src/views/wallet/Studio.vue b/src/views/wallet/Studio.vue
index 9ff4ebbca..0eaac03a9 100644
--- a/src/views/wallet/Studio.vue
+++ b/src/views/wallet/Studio.vue
@@ -124,7 +124,6 @@ export default class Studio extends Vue {
.subtitle {
margin-left: 0.5em;
- /*font-size: 20px;*/
color: var(--primary-color-light);
font-weight: lighter;
}
diff --git a/src/views/wallet/Transfer.vue b/src/views/wallet/Transfer.vue
index b12366b87..ba52a8277 100644
--- a/src/views/wallet/Transfer.vue
+++ b/src/views/wallet/Transfer.vue
@@ -729,6 +729,7 @@ export default class Transfer extends Vue {
@@ -769,7 +769,7 @@ $padTop: 8px;
}
.explain {
- font-size: 12px;
+ @include mixins.typography-caption;
color: var(--primary-color-light);
}
h1 {
@@ -778,7 +778,7 @@ h1 {
h4 {
display: block;
text-align: left;
- font-size: 12px;
+ @include mixins.typography-caption;
font-weight: bold;
margin: 12px 0;
}
@@ -793,7 +793,7 @@ h4 {
padding: 5px 6px !important;
text-align: center;
letter-spacing: 2px;
- font-size: 12px;
+ @include mixins.typography-caption;
}
.addressIn >>> input::-webkit-input-placeholder {
@@ -820,7 +820,7 @@ h4 {
}
.memo {
- font-size: 14px;
+ @include mixins.typography-caption;
background-color: var(--bg-light);
resize: none;
width: 100%;
@@ -835,7 +835,7 @@ h4 {
.tx_info {
text-align: left;
- font-size: 14px;
+ @include mixins.typography-caption;
}
.new_order_Form {
@@ -865,7 +865,7 @@ h4 {
.fees p {
text-align: left;
- font-size: 13px;
+ @include mixins.typography-caption;
color: var(--primary-color-light);
}
@@ -875,7 +875,7 @@ h4 {
label {
color: var(--primary-color-light);
- font-size: 12px;
+ @include mixins.typography-caption;
font-weight: bold;
margin: 2px 0 !important;
}
@@ -894,7 +894,7 @@ label {
}
.err_list {
- font-size: 12px;
+ @include mixins.typography-caption;
color: var(--error);
margin: 6px 0;
}
diff --git a/src/views/wallet/Validator.vue b/src/views/wallet/Validator.vue
index 88e0a1f95..f412bc255 100644
--- a/src/views/wallet/Validator.vue
+++ b/src/views/wallet/Validator.vue
@@ -13,6 +13,12 @@
{{ $t('validator.info.validator_running') }}
+
+
+
+
@@ -82,12 +88,33 @@
-
+
-
+
@@ -117,8 +144,15 @@ import { MultisigTx as SignavaultTx } from '@/store/modules/signavault/types'
import { BN } from '@c4tplatform/caminojs/dist'
import { AddressState } from '@c4tplatform/caminojs/dist/apis/platformvm'
import Big from 'big.js'
+import axios from 'axios'
import 'reflect-metadata'
import { Component, Vue, Watch } from 'vue-property-decorator'
+import { AvaNetwork } from '@/js/AvaNetwork'
+import Spinner from '@/components/misc/Spinner.vue'
+import moment from 'moment'
+import { ava } from '@/AVA'
+import { MultisigWallet } from '@/js/wallets/MultisigWallet'
+import { WalletType } from '@/js/wallets/types'
@Component({
name: 'validator',
@@ -131,6 +165,7 @@ import { Component, Vue, Watch } from 'vue-property-decorator'
PendingMultisig,
ValidatorPending,
RewardsNotAvailable,
+ Spinner,
},
})
export default class Validator extends Vue {
@@ -146,6 +181,25 @@ export default class Validator extends Vue {
loadingRefreshRegisterNode: boolean = false
tab: string = 'opt-validator'
pendingValidator: ValidatorRaw | null = null
+ loading: boolean = false
+
+ nodeVersion: string = ''
+ initialized: boolean = false
+
+ startTime: string = ''
+ endTime: string = ''
+ upTime: number = 0
+ reaminingValidation: string = ''
+ bondedAmount: BN = new BN(0)
+ txID: string = ''
+
+ rewardAmount: BN = new BN(0)
+ pChainddress: string = ''
+ isMultisignTx: boolean = false
+ pendingTx: any = undefined
+
+ // @ts-ignore
+ helpers = this.globalHelper()
get multisigPendingNodeTx(): SignavaultTx | undefined {
return this.$store.getters['Signavault/transactions'].find(
@@ -157,6 +211,33 @@ export default class Validator extends Vue {
)
}
+ @Watch('$store.state.activeWallet')
+ async onActiveWalletChange() {
+ this.nodeInfo = null
+ this.nodeId = ''
+ this.pendingValidator = null
+ this.isNodeRegistered = false
+ this.isSuspended = false
+ this.registeredNodeID = ''
+ this.isKycVerified = false
+ this.isConsortiumMember = false
+ this.validatorIsSuspended = false
+ this.loadingRefreshRegisterNode = false
+ this.tab = 'opt-validator'
+ this.loading = false
+ this.nodeVersion = ''
+ this.initialized = false
+ this.startTime = ''
+ this.endTime = ''
+ this.upTime = 0
+ this.reaminingValidation = ''
+ this.bondedAmount = new BN(0)
+ this.txID = ''
+
+ this.evaluateCanRegisterNode()
+ this.updateValidators()
+ }
+
verifyValidatorIsReady(val: ValidatorRaw) {
this.nodeInfo = val
}
@@ -182,8 +263,11 @@ export default class Validator extends Vue {
clearInterval(this.intervalID)
}
- @Watch('$store.state.networkName')
- @Watch('$store.state.activeWallet')
+ hrp() {
+ return ava.getHRP()
+ }
+
+ @Watch('addresses')
async evaluateCanRegisterNode() {
const BN_ONE = new BN(1)
const result = await WalletHelper.getAddressState(this.addresses[0])
@@ -244,6 +328,7 @@ export default class Validator extends Vue {
return (this.$store.state.activeWallet as WalletCore).getStaticAddress('P')
}
+ @Watch('activeNetwork')
get addresses() {
let wallet: MnemonicWallet = this.$store.state.activeWallet
return wallet.getAllAddressesP()
@@ -302,16 +387,197 @@ export default class Validator extends Vue {
}
async refresh() {
- this.loadingRefreshRegisterNode = true
- await this.evaluateCanRegisterNode()
- await this.updateValidators()
- await this.$store.dispatch('Signavault/updateTransaction')
- this.loadingRefreshRegisterNode = false
+ if (this.tab == 'opt-rewards') {
+ await this.getClaimableReward()
+ } else {
+ if (this.multisigPendingNodeTx) {
+ await this.$store.dispatch('Signavault/updateTransaction')
+ await this.evaluateCanRegisterNode()
+ }
+ this.loadingRefreshRegisterNode = true
+ this.loading = true
+ this.$store.dispatch('updateBalances')
+ await this.evaluateCanRegisterNode()
+ await this.updateValidators()
+ await this.$store.dispatch('Signavault/updateTransaction')
+ if (this.nodeInfo) await this.getInformationValidator()
+ this.loading = false
+ this.loadingRefreshRegisterNode = false
+ }
+ }
+
+ async getPendingTransaction() {
+ if (this.isMultisignTx) {
+ let txClaim = this.$store.getters['Signavault/transactions'].find(
+ (item: any) =>
+ item?.tx?.alias === this.pChainddress &&
+ WalletHelper.getUnsignedTxType(item?.tx?.unsignedTx) === 'ClaimTx'
+ )
+ this.pendingTx = txClaim
+ } else {
+ this.pendingTx = undefined
+ }
+ }
+
+ async getClaimableReward() {
+ if (this.nodeInfo == null) return
+
+ let responseClaimable = await WalletHelper.getClaimables(
+ this.nodeInfo.rewardOwner.addresses[0].toString(),
+ this.nodeInfo.txID
+ )
+
+ if (responseClaimable != null && responseClaimable != undefined) {
+ this.rewardAmount = responseClaimable.validatorRewards
+ } else {
+ this.rewardAmount = new BN(0)
+ }
+ }
+
+ async getPChainAddress() {
+ try {
+ if (this.$store.state.activeWallet instanceof MultisigWallet) {
+ let activeWallet: MultisigWallet = this.$store.state.activeWallet
+ let address = activeWallet.getCurrentAddressPlatform()
+ this.pChainddress = address
+ this.isMultisignTx = true
+ } else {
+ let activeWallet: WalletType = this.$store.state.activeWallet
+ let address = await activeWallet.getAllAddressesP()
+ this.pChainddress = address[0]
+ this.isMultisignTx = false
+ }
+ } catch (e) {
+ console.error(e)
+ }
}
get hasValidator(): boolean {
return this.$store.getters['Platform/isValidator'](this.registeredNodeID)
}
+
+ get activeNetwork(): null | AvaNetwork {
+ return this.$store?.state?.Network?.selectedNetwork
+ }
+
+ async fetchNodeVersion() {
+ if (this.activeNetwork && this.activeNetwork.url) {
+ await axios
+ .post(this.activeNetwork.url + '/ext/info', {
+ jsonrpc: '2.0',
+ id: 1,
+ method: 'info.getNodeVersion',
+ })
+ .then((res) => {
+ const data = res.data
+ if (data && data.result && data.result.gitVersion) {
+ this.nodeVersion = data.result.gitVersion.slice(1) // remove v
+ }
+ })
+ .finally(() => {
+ this.initialized = true
+ })
+ }
+ }
+
+ checkNodeVersionFlag(targetVersion: string): boolean {
+ if (!this.initialized) {
+ throw new Error('Provider not initialized yet')
+ }
+
+ if (!this.nodeVersion) {
+ throw new Error('Node version not exists, function uncallable')
+ }
+
+ const versionRegex = /^\d+\.\d+\.\d+(-rc\d+)?$/
+ if (!versionRegex.test(targetVersion)) {
+ throw new Error(
+ `Invalid version format: ${targetVersion}. Correct version is of type major.minor.path e.g 1.2.3-rc2`
+ )
+ }
+
+ const [coreTargetVersion, targetVariant] = targetVersion.split('-')
+ const [coreNodeVersion, nodeVariant] = this.nodeVersion.split('-')
+
+ const [targetMajor, targetMinor, targetPatch] = coreTargetVersion.split('.').map(Number)
+ const [nodeMajor, nodeMinor, nodePatch] = coreNodeVersion.split('.').map(Number)
+
+ if (targetMajor !== nodeMajor) {
+ return targetMajor < nodeMajor
+ }
+
+ if (targetMinor !== nodeMinor) {
+ return targetMinor < nodeMinor
+ }
+
+ if (targetPatch !== nodePatch) {
+ return targetPatch < nodePatch
+ }
+
+ if (nodeVariant) {
+ return targetVariant <= nodeVariant
+ }
+
+ return true
+ }
+
+ formatUptime(uptime: string): number {
+ const versionFlag = this.checkNodeVersionFlag('0.4.10-rc3')
+ const value = versionFlag
+ ? Math.round(parseFloat(uptime))
+ : Math.round(parseFloat(uptime) * 100)
+
+ return value
+ }
+
+ humanizeDuration(duration: moment.Duration) {
+ const years = duration.years()
+ const months = duration.months()
+ const days = duration.days()
+ const hours = duration.hours()
+ const minutes = duration.minutes()
+ const seconds = duration.seconds()
+
+ let result = ''
+ if (years > 0) result += years + (years === 1 ? ' Year ' : ' Years ')
+ if (months > 0) result += months + (months === 1 ? ' Month ' : ' Months ')
+ if (days > 0) result += days + (days === 1 ? ' Day ' : ' Days ')
+ if (hours > 0) result += hours + ' h '
+ if (minutes > 0) result += minutes + ' m '
+ if (seconds > 0) result += seconds + ' s'
+
+ return result.trim()
+ }
+
+ async getInformationValidator() {
+ try {
+ await this.fetchNodeVersion()
+ this.loading = true
+ let today = moment()
+
+ if (this.nodeInfo === null) throw new Error('Node info is null')
+
+ this.startTime = moment(new Date(parseInt(this.nodeInfo.startTime) * 1000)).format(
+ 'MMM Do YYYY, h:mm:ss A'
+ )
+ this.endTime = moment(new Date(parseInt(this.nodeInfo.endTime) * 1000)).format(
+ 'MMM Do YYYY, h:mm:ss A'
+ )
+ this.upTime = this.formatUptime(this.nodeInfo.uptime)
+
+ var reaminingValidationDuration = moment.duration(
+ moment(new Date(parseInt(this.nodeInfo.endTime) * 1000)).diff(today)
+ )
+
+ this.reaminingValidation = this.humanizeDuration(reaminingValidationDuration)
+ this.bondedAmount = new BN(parseFloat(this.nodeInfo.stakeAmount) / 1000000000)
+ this.txID = this.nodeInfo.txID
+ } catch (e) {
+ console.error(e)
+ } finally {
+ this.loading = false
+ }
+ }
}
+
diff --git a/vue.config.js b/vue.config.js
deleted file mode 100644
index e69de29bb..000000000
diff --git a/webpack.common.js b/webpack.common.js
index 0f1d8c85d..fe81a2467 100644
--- a/webpack.common.js
+++ b/webpack.common.js
@@ -81,6 +81,7 @@ module.exports = {
'./mountsaveKyesButton': './src/views/wallet/mountSaveKeysButton.ts',
'./mountMultisigWalletSetting': './src/views/mountMultisigWalletSetting.ts',
'./mountVersionComponent': './src/components/misc/mountVersion.ts',
+ './mountCreateOfferForm': './src/components/wallet/earn/mountCreateOfferForm.ts',
},
}),
new HtmlWebPackPlugin({
diff --git a/yarn.lock b/yarn.lock
index 488bf38a6..798026e4d 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -11,6 +11,11 @@
event-pubsub "4.3.0"
js-message "1.0.7"
+"@adraffy/ens-normalize@1.8.9":
+ version "1.8.9"
+ resolved "https://registry.yarnpkg.com/@adraffy/ens-normalize/-/ens-normalize-1.8.9.tgz#67b3acadebbb551669c9a1da15fac951db795b85"
+ integrity sha512-93OmGCV0vO8+JQ3FHG+gZk/MPHzzMPDRiCiFcCQNTCnHaaxsacO3ScTPGlu2wX2dOtgfalbchPcw1cOYYjHCYQ==
+
"@ampproject/remapping@^2.2.0":
version "2.2.1"
resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-2.2.1.tgz#99e8e11851128b8702cd57c33684f1d0f260b630"
@@ -1062,25 +1067,25 @@
assert "2.0.0"
axios "^0.26.1"
bech32 "^2.0.0"
- bip39 "^3.0.4"
+ bip39 "3.1.0"
bn.js "5.1.1"
buffer "^5.5.0"
create-hash "1.2.0"
crypto-browserify "3.12.0"
elliptic "6.5.4"
- ethers "^5.7.0"
- hdkey "2.0.1"
+ ethers "6.0.8"
+ hdkey "2.1.0"
isomorphic-ws "5.0.0"
randombytes "^2.1.0"
store2 "2.14.2"
stream-browserify "3.0.0"
- ws "8.8.1"
+ ws "8.12.1"
xss "1.0.14"
-"@c4tplatform/signavaultjs@^1.0.11":
- version "1.0.11"
- resolved "https://registry.yarnpkg.com/@c4tplatform/signavaultjs/-/signavaultjs-1.0.11.tgz#6471a657c3ef6ed23b7c2f29953a72caf1050f90"
- integrity sha512-t0vb7mmKgqTyfzUvtGgZ78yPuTJOfgLpXnK9JZ4hGH1w7k+2eCtaWXwxf+VFvfDpArCK06xgZzya0HZrM6mn/w==
+"@c4tplatform/signavaultjs@^1.1":
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/@c4tplatform/signavaultjs/-/signavaultjs-1.1.0.tgz#cae4bf9bce1d270cb7f538775f7f7dde29ba8c1a"
+ integrity sha512-Aykw4Dad3f/6eRbhExZoitLrLhRMmeXauSbXJCItnqlf1h+4T4yDhDi3rQ8P99D8KCrY+OFBD379+x0UhtuVNg==
dependencies:
axios "^1.3.4"
create-hash "^1.2.0"
@@ -2295,6 +2300,11 @@
dependencies:
"@noble/hashes" "1.3.0"
+"@noble/hashes@1.1.2":
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.1.2.tgz#e9e035b9b166ca0af657a7848eb2718f0f22f183"
+ integrity sha512-KYRCASVTv6aeUi1tsF8/vpyR7zpfs3FUzy2Jqm+MU+LmUKhQ0y2FpfwqkCcxSg2ua4GALJd8k2R76WxwZGbQpA==
+
"@noble/hashes@1.3.0":
version "1.3.0"
resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.3.0.tgz#085fd70f6d7d9d109671090ccae1d3bec62554a1"
@@ -2305,6 +2315,11 @@
resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.3.1.tgz#8831ef002114670c603c458ab8b11328406953a9"
integrity sha512-EbqwksQwz9xDRGfDST86whPBgM65E0OH/pCgqW0GBVzO22bNE+NuIbeTb714+IfSjU3aRk47EUvXIb5bTsenKA==
+"@noble/secp256k1@1.7.1":
+ version "1.7.1"
+ resolved "https://registry.yarnpkg.com/@noble/secp256k1/-/secp256k1-1.7.1.tgz#b251c70f824ce3ca7f8dc3df08d58f005cc0507c"
+ integrity sha512-hOUk6AyBFmqVrv7k5WAw/LpszxVbj9gGN4JRkIX52fdFAj1UA61KXmZDvqVEm+pOyec3+fIeZB02LYa/pWOArw==
+
"@node-ipc/js-queue@2.0.3":
version "2.0.3"
resolved "https://registry.yarnpkg.com/@node-ipc/js-queue/-/js-queue-2.0.3.tgz#ac7fe33d766fa53e233ef8fedaf3443a01c5a4cd"
@@ -4037,6 +4052,11 @@ aes-js@3.0.0:
resolved "https://registry.yarnpkg.com/aes-js/-/aes-js-3.0.0.tgz#e21df10ad6c2053295bcbb8dab40b09dbea87e4d"
integrity sha512-H7wUZRn8WpTq9jocdxQ2c8x2sKo9ZVmzfRE13GiNJXfp7NcKYEdvl3vspKjXox6RIG2VtaRe4JFvxG4rqp2Zuw==
+aes-js@4.0.0-beta.3:
+ version "4.0.0-beta.3"
+ resolved "https://registry.yarnpkg.com/aes-js/-/aes-js-4.0.0-beta.3.tgz#da2253f0ff03a0b3a9e445c8cbdf78e7fda7d48c"
+ integrity sha512-/xJX0/VTPcbc5xQE2VUP91y1xN8q/rDfhEzLm+vLc3hYvb5+qHCnpJRuFcrKn63zumK/sCwYYzhG8HP78JYSTA==
+
agent-base@6, agent-base@^6.0.0, agent-base@^6.0.2:
version "6.0.2"
resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77"
@@ -4866,7 +4886,7 @@ bip32@^2.0.6:
typeforce "^1.11.5"
wif "^2.0.6"
-bip39@^3.0.4:
+bip39@3.1.0, bip39@^3.0.4:
version "3.1.0"
resolved "https://registry.yarnpkg.com/bip39/-/bip39-3.1.0.tgz#c55a418deaf48826a6ceb34ac55b3ee1577e18a3"
integrity sha512-c9kiwdk45Do5GL0vJMe7tS95VjCii65mYAH7DfWl3uW8AVzXKQVUm64i3hzVybBDMp9r7j9iNxR85+ul8MdN/A==
@@ -7890,7 +7910,19 @@ ethereumjs-util@^7.0.7, ethereumjs-util@^7.1.0, ethereumjs-util@^7.1.1, ethereum
ethereum-cryptography "^0.1.3"
rlp "^2.2.4"
-ethers@^5.7.0, ethers@^5.7.2:
+ethers@6.0.8:
+ version "6.0.8"
+ resolved "https://registry.yarnpkg.com/ethers/-/ethers-6.0.8.tgz#a02e31f2771b66ecab6c731c1141b30d9de09174"
+ integrity sha512-j5smdMwn4t4vEARcfUv54mTJ2NMCorYLL51wPjFInEnrRr2SF5Sl9a7Z4DXS8UO1fBJVGHnjDDrF1b7msY3f7Q==
+ dependencies:
+ "@adraffy/ens-normalize" "1.8.9"
+ "@noble/hashes" "1.1.2"
+ "@noble/secp256k1" "1.7.1"
+ aes-js "4.0.0-beta.3"
+ tslib "2.4.0"
+ ws "8.5.0"
+
+ethers@^5.7.2:
version "5.7.2"
resolved "https://registry.yarnpkg.com/ethers/-/ethers-5.7.2.tgz#3a7deeabbb8c030d4126b24f84e525466145872e"
integrity sha512-wswUsmWo1aOK8rR7DIKiWSw9DbLWe6x98Jrn8wcTflTVvaXhAMaB5zGAXy0GYQEQp9iO1iSHWVyARQm11zUtyg==
@@ -9279,6 +9311,16 @@ hdkey@2.0.1:
safe-buffer "^5.1.1"
secp256k1 "^4.0.0"
+hdkey@2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/hdkey/-/hdkey-2.1.0.tgz#755b30b73f54e93c31919c1b2f19205a8e57cb92"
+ integrity sha512-i9Wzi0Dy49bNS4tXXeGeu0vIcn86xXdPQUpEYg+SO1YiO8HtomjmmRMaRyqL0r59QfcD4PfVbSF3qmsWFwAemA==
+ dependencies:
+ bs58check "^2.1.2"
+ ripemd160 "^2.0.2"
+ safe-buffer "^5.1.1"
+ secp256k1 "^4.0.0"
+
he@1.2.x, he@^1.2.0:
version "1.2.0"
resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f"
@@ -14755,7 +14797,7 @@ rimraf@^3.0.0, rimraf@^3.0.2:
dependencies:
glob "^7.1.3"
-ripemd160@^2.0.0, ripemd160@^2.0.1:
+ripemd160@^2.0.0, ripemd160@^2.0.1, ripemd160@^2.0.2:
version "2.0.2"
resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.2.tgz#a1c1a6f624751577ba5d07914cbc92850585890c"
integrity sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==
@@ -16350,6 +16392,11 @@ tsconfig@^7.0.0:
strip-bom "^3.0.0"
strip-json-comments "^2.0.0"
+tslib@2.4.0:
+ version "2.4.0"
+ resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.4.0.tgz#7cecaa7f073ce680a05847aa77be941098f36dc3"
+ integrity sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==
+
tslib@^1.8.0, tslib@^1.8.1, tslib@^1.9.0:
version "1.14.1"
resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00"
@@ -18134,10 +18181,15 @@ ws@7.4.6:
resolved "https://registry.yarnpkg.com/ws/-/ws-7.4.6.tgz#5654ca8ecdeee47c33a9a4bf6d28e2be2980377c"
integrity sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==
-ws@8.8.1:
- version "8.8.1"
- resolved "https://registry.yarnpkg.com/ws/-/ws-8.8.1.tgz#5dbad0feb7ade8ecc99b830c1d77c913d4955ff0"
- integrity sha512-bGy2JzvzkPowEJV++hF07hAD6niYSr0JzBNo/J29WsB57A2r7Wlc1UFcTR9IzrPvuNVO4B8LGqF8qcpsVOhJCA==
+ws@8.12.1:
+ version "8.12.1"
+ resolved "https://registry.yarnpkg.com/ws/-/ws-8.12.1.tgz#c51e583d79140b5e42e39be48c934131942d4a8f"
+ integrity sha512-1qo+M9Ba+xNhPB+YTWUlK6M17brTut5EXbcBaMRN5pH5dFrXz7lzz1ChFSUq3bOUl8yEvSenhHmYUNJxFzdJew==
+
+ws@8.5.0:
+ version "8.5.0"
+ resolved "https://registry.yarnpkg.com/ws/-/ws-8.5.0.tgz#bfb4be96600757fe5382de12c670dab984a1ed4f"
+ integrity sha512-BWX0SWVgLPzYwF8lTzEy1egjhS4S4OEAHfsO8o65WOVsrnSRGaSiUaa9e0ggGlkMTtBlmOpEXiie9RUcBO86qg==
ws@^3.0.0:
version "3.3.3"