diff --git a/examples/wallet-api/package.json b/examples/wallet-api/package.json index 06e4ef1ba..204e7c469 100644 --- a/examples/wallet-api/package.json +++ b/examples/wallet-api/package.json @@ -12,7 +12,7 @@ "start:sign-token-update": "FILE=sign-token-update.html yarn start" }, "dependencies": { - "@concordium/web-sdk": "10.0.2" + "@concordium/web-sdk": "12.0.0-devnet-p10.0" }, "devDependencies": { "live-server": "^1.2.2" diff --git a/packages/browser-wallet-api-helpers/package.json b/packages/browser-wallet-api-helpers/package.json index e28de5291..3263190a0 100644 --- a/packages/browser-wallet-api-helpers/package.json +++ b/packages/browser-wallet-api-helpers/package.json @@ -40,7 +40,7 @@ "webpack-cli": "^4.9.2" }, "peerDependencies": { - "@concordium/web-sdk": "10.0.2", + "@concordium/web-sdk": "12.0.0-devnet-p10.0", "@protobuf-ts/runtime-rpc": "^2.9.1" }, "scripts": { diff --git a/packages/browser-wallet-api-helpers/src/wallet-api-types.ts b/packages/browser-wallet-api-helpers/src/wallet-api-types.ts index 7fb636320..eba8f2998 100644 --- a/packages/browser-wallet-api-helpers/src/wallet-api-types.ts +++ b/packages/browser-wallet-api-helpers/src/wallet-api-types.ts @@ -1,30 +1,30 @@ import type { - AccountTransactionPayload, + AccountAddress, + AccountTransactionInput, AccountTransactionSignature, AccountTransactionType, - InitContractPayload, - SchemaVersion, - UpdateContractPayload, - IdStatement, - IdProofOutput, - CredentialStatements, - VerifiablePresentation, - CredentialSubject, - HexString, - AccountAddress, Base58String, Base64String, - ContractAddress, - UpdateCredentialsPayload, - RegisterDataPayload, - SimpleTransferPayload, - SimpleTransferWithMemoPayload, - DeployModulePayload, ConfigureBakerPayload, ConfigureDelegationPayload, + ContractAddress, ContractName, + CredentialStatements, + CredentialSubject, + DeployModulePayload, EntrypointName, + HexString, + IdProofOutput, + IdStatement, + InitContractInput, + RegisterDataPayload, + SchemaVersion, + SimpleTransferPayload, + SimpleTransferWithMemoPayload, TokenUpdatePayload, + UpdateContractInput, + UpdateCredentialsInput, + VerifiablePresentation, } from '@concordium/web-sdk'; import type { RpcTransport } from '@protobuf-ts/runtime-rpc'; import { LaxNumberEnumValue, LaxStringEnumValue } from './util'; @@ -61,11 +61,11 @@ export interface CredentialProof { verificationMethod: string; } -export type SendTransactionUpdateContractPayload = Omit; -export type SendTransactionInitContractPayload = Omit; +export type SendTransactionUpdateContractPayload = Omit; +export type SendTransactionInitContractPayload = Omit; export type SendTransactionPayload = - | Exclude + | Exclude | SendTransactionUpdateContractPayload | SendTransactionInitContractPayload; @@ -168,7 +168,7 @@ interface MainWalletApi { sendTransaction( accountAddress: AccountAddressSource, type: LaxNumberEnumValue, - payload: UpdateCredentialsPayload + payload: UpdateCredentialsInput ): Promise; /** * Sends a transaction to the Concordium Wallet and awaits the users action. Note that a header is not sent, and will be constructed by the wallet itself. diff --git a/packages/browser-wallet/package.json b/packages/browser-wallet/package.json index 1128c6a40..e27ba6bba 100644 --- a/packages/browser-wallet/package.json +++ b/packages/browser-wallet/package.json @@ -22,7 +22,7 @@ "dependencies": { "@concordium/browser-wallet-api-helpers": "workspace:^", "@concordium/common-sdk": "^9.5.3", - "@concordium/web-sdk": "10.0.2", + "@concordium/web-sdk": "12.0.0-devnet-p10.0", "@floating-ui/react": "^0.27.2", "@noble/ed25519": "^1.7.0", "@protobuf-ts/grpcweb-transport": "^2.9.1", diff --git a/packages/browser-wallet/src/background/credential-deployment.ts b/packages/browser-wallet/src/background/credential-deployment.ts index 9bb9e518e..96c6cfbed 100644 --- a/packages/browser-wallet/src/background/credential-deployment.ts +++ b/packages/browser-wallet/src/background/credential-deployment.ts @@ -1,16 +1,16 @@ import { ExtensionMessageHandler } from '@messaging'; import { - CredentialInput, - getAccountAddress, ConcordiumGRPCWebClient, - createCredentialTransaction, - signCredentialTransaction, ConcordiumHdWallet, - TransactionExpiry, - getCredentialDeploymentTransactionHash, + createCredentialPayload, + CredentialInput, CredentialRegistrationId, + getAccountAddress, + getCredentialDeploymentTransactionHash, serializeCredentialDeploymentPayload, + signCredentialTransaction, + TransactionExpiry, } from '@concordium/web-sdk'; import { GRPCTIMEOUT } from '@shared/constants/networkConfiguration'; import { DEFAULT_TRANSACTION_EXPIRY } from '@shared/constants/time'; @@ -32,7 +32,7 @@ async function createAndSendCredential(credIn: CredentialInput): Promise> /** * Function to convert flow values into an account transaction. */ - convert(values: F): AccountTransactionPayload; + convert(values: F): AccountTransactionInput; /** * Function that is triggered if an error is thrown in the done handler. */ @@ -56,7 +56,7 @@ export default function AccountTransactionFlow const handleDone = useCallback( (values: F) => { - let payload: AccountTransactionPayload; + let payload: AccountTransactionInput; try { payload = convert(values); nav(pathname, { replace: true, state: values }); // Override current router entry with stateful version diff --git a/packages/browser-wallet/src/popup/pages/Account/ConfirmGenericTransfer.tsx b/packages/browser-wallet/src/popup/pages/Account/ConfirmGenericTransfer.tsx index 55e3abdc1..f3a9da8c8 100644 --- a/packages/browser-wallet/src/popup/pages/Account/ConfirmGenericTransfer.tsx +++ b/packages/browser-wallet/src/popup/pages/Account/ConfirmGenericTransfer.tsx @@ -1,6 +1,6 @@ import React, { useContext, useMemo } from 'react'; import { - AccountTransactionPayload, + AccountTransactionInput, AccountTransactionType, convertEnergyToMicroCcd, getEnergyCost, @@ -12,7 +12,7 @@ import ConfirmTransfer from './ConfirmTransfer'; import { accountPageContext } from './utils'; export type ConfirmGenericTransferState = { - payload: AccountTransactionPayload; + payload: AccountTransactionInput; type: AccountTransactionType; }; diff --git a/packages/browser-wallet/src/popup/pages/Account/ConfirmTransfer/ConfirmTransfer.tsx b/packages/browser-wallet/src/popup/pages/Account/ConfirmTransfer/ConfirmTransfer.tsx index be111f0e5..3c030c859 100644 --- a/packages/browser-wallet/src/popup/pages/Account/ConfirmTransfer/ConfirmTransfer.tsx +++ b/packages/browser-wallet/src/popup/pages/Account/ConfirmTransfer/ConfirmTransfer.tsx @@ -1,17 +1,17 @@ /* eslint-disable react/destructuring-assignment */ -import React, { useEffect, useState, useMemo } from 'react'; +import React, { useEffect, useMemo, useState } from 'react'; import { useTranslation } from 'react-i18next'; -import { useSetAtom, useAtomValue } from 'jotai'; +import { useAtomValue, useSetAtom } from 'jotai'; import { selectedAccountAtom } from '@popup/store/account'; import { AccountAddress, - AccountTransactionPayload, + AccountTransactionInput, AccountTransactionType, - UpdateContractPayload, + UpdateContractInput, } from '@concordium/web-sdk'; import { - getDefaultExpiry, createPendingTransactionFromAccountTransaction, + getDefaultExpiry, sendTransaction, } from '@popup/shared/utils/transaction-helpers'; import { grpcClientAtom } from '@popup/store/settings'; @@ -21,8 +21,8 @@ import Button from '@popup/shared/Button'; import { useNavigate } from 'react-router-dom'; import { absoluteRoutes } from '@popup/constants/routes'; import GenericTransactionReceipt, { - TokenTransferReceipt, GenericTransactionReceiptProps, + TokenTransferReceipt, TokenTransferReceiptProps, } from '@popup/shared/TransactionReceipt'; import { useUpdateAtom } from 'jotai/utils'; @@ -42,14 +42,14 @@ type BaseProps = { type ConfirmTokenTransferProps = BaseProps & { showAsTokenTransfer: true; transactionType: AccountTransactionType.Update; - payload: UpdateContractPayload; + payload: UpdateContractInput; parameters: SmartContractParameters; metadata: TokenMetadata; }; type ConfirmGenericTransferProps = BaseProps & { showAsTokenTransfer?: false; - payload: AccountTransactionPayload; + payload: AccountTransactionInput; transactionType: AccountTransactionType; parameters?: SmartContractParameters; }; diff --git a/packages/browser-wallet/src/popup/pages/Account/Earn/Baking/utils.ts b/packages/browser-wallet/src/popup/pages/Account/Earn/Baking/utils.ts index 1a1bdeeca..187f43acb 100644 --- a/packages/browser-wallet/src/popup/pages/Account/Earn/Baking/utils.ts +++ b/packages/browser-wallet/src/popup/pages/Account/Earn/Baking/utils.ts @@ -1,14 +1,14 @@ import { + AccountBakerDetailsV1, AccountInfo, + AccountInfoBaker, + AccountInfoType, + BakerKeysWithProofs, CcdAmount, CommissionRates, - OpenStatus, ConfigureBakerPayload, + OpenStatus, OpenStatusText, - BakerKeysWithProofs, - AccountInfoType, - AccountInfoBaker, - AccountBakerDetailsV1, } from '@concordium/web-sdk'; import { decimalToRewardFraction, fractionToPercentage } from '@popup/shared/utils/baking-helpers'; import { getConfigureBakerEnergyCost } from '@shared/utils/energy-helpers'; @@ -26,7 +26,7 @@ export type ConfigureBakerFlowState = { keys: BakerKeysWithProofs | null; }; -function openStatusFromText(status: OpenStatusText): OpenStatus { +function openStatusFromText(status: OpenStatusText | null): OpenStatus { switch (status) { case OpenStatusText.ClosedForAll: return OpenStatus.ClosedForAll; diff --git a/packages/browser-wallet/src/popup/pages/Account/Earn/Earn.tsx b/packages/browser-wallet/src/popup/pages/Account/Earn/Earn.tsx index 525718406..7ba983138 100644 --- a/packages/browser-wallet/src/popup/pages/Account/Earn/Earn.tsx +++ b/packages/browser-wallet/src/popup/pages/Account/Earn/Earn.tsx @@ -24,7 +24,7 @@ import { useBlockChainParametersAboveV0 } from '@popup/shared/BlockChainParamete import Baking from './Baking'; import Delegate from './Delegate'; import { accountPageContext } from '../utils'; -import { filterType, EarnPageContext, earnPageContext } from './utils'; +import { EarnPageContext, earnPageContext, filterType } from './utils'; import { accountRoutes } from '../routes'; const routes = { @@ -73,7 +73,9 @@ function Earn({ chainParameters }: EarnProps) { ); } -function isNotRewardStatusV0(rewardStatus?: RewardStatus): rewardStatus is Exclude { +function isNotRewardStatusV0( + rewardStatus?: RewardStatus | null +): rewardStatus is Exclude { return rewardStatus ? rewardStatus.version !== 0 : false; } diff --git a/packages/browser-wallet/src/popup/pages/Account/SendCcd/ConfirmTokenTransfer.tsx b/packages/browser-wallet/src/popup/pages/Account/SendCcd/ConfirmTokenTransfer.tsx index bdf639f29..74029e75a 100644 --- a/packages/browser-wallet/src/popup/pages/Account/SendCcd/ConfirmTokenTransfer.tsx +++ b/packages/browser-wallet/src/popup/pages/Account/SendCcd/ConfirmTokenTransfer.tsx @@ -1,8 +1,8 @@ import React, { useMemo } from 'react'; import { useTranslation } from 'react-i18next'; -import { useSetAtom, useAtomValue } from 'jotai'; +import { useAtomValue, useSetAtom } from 'jotai'; import { selectedAccountAtom } from '@popup/store/account'; -import { AccountTransactionType, UpdateContractPayload } from '@concordium/web-sdk'; +import { AccountTransactionType, UpdateContractInput } from '@concordium/web-sdk'; import { grpcClientAtom } from '@popup/store/settings'; import { addToastAtom } from '@popup/state'; import { useLocation } from 'react-router-dom'; @@ -30,7 +30,7 @@ export default function ConfirmTokenTransfer({ setDetailsExpanded, cost }: Props [] ); - const payload: UpdateContractPayload | undefined = useMemo(() => { + const payload: UpdateContractInput | undefined = useMemo(() => { if (!parameters || !contractName) { return undefined; } diff --git a/packages/browser-wallet/src/popup/popupX/pages/EarningRewards/Validator/TransactionFlow.tsx b/packages/browser-wallet/src/popup/popupX/pages/EarningRewards/Validator/TransactionFlow.tsx index 345984b7b..cbfb2cc92 100644 --- a/packages/browser-wallet/src/popup/popupX/pages/EarningRewards/Validator/TransactionFlow.tsx +++ b/packages/browser-wallet/src/popup/popupX/pages/EarningRewards/Validator/TransactionFlow.tsx @@ -14,7 +14,7 @@ import { useSelectedAccountInfo } from '@popup/shared/AccountInfoListenerContext import { formatCcdAmount } from '@popup/popupX/shared/utils/helpers'; import Text from '@popup/popupX/shared/Text'; -import { ValidatorForm, ValidatorFormExisting, configureValidatorFromForm } from './util'; +import { configureValidatorFromForm, ValidatorForm, ValidatorFormExisting } from './util'; import ValidatorStake from './Stake'; import { type ValidationResultLocationState } from './Result'; import OpenPool from './OpenPool'; @@ -136,6 +136,10 @@ function withChangeValidation(Flow: ComponentType) { accountBaker: { stakedAmount, restakeEarnings, bakerPoolInfo }, } = accountInfo; + if (bakerPoolInfo.openStatus === null) { + return null; + } + const existing: ValidatorFormExisting = { stake: { amount: formatCcdAmount(stakedAmount), diff --git a/packages/browser-wallet/src/popup/popupX/pages/EarningRewards/Validator/util.ts b/packages/browser-wallet/src/popup/popupX/pages/EarningRewards/Validator/util.ts index 9a923840b..5bb9ba9e4 100644 --- a/packages/browser-wallet/src/popup/popupX/pages/EarningRewards/Validator/util.ts +++ b/packages/browser-wallet/src/popup/popupX/pages/EarningRewards/Validator/util.ts @@ -17,7 +17,7 @@ export function showValidatorAmount(amount: CcdAmount.Type): string { return `${formatCcdAmount(amount)} CCD`; } -export function showValidatorOpenStatus(status: OpenStatusText | OpenStatus): string { +export function showValidatorOpenStatus(status: OpenStatusText | OpenStatus | null): string { switch (status) { case OpenStatus.OpenForAll: case OpenStatusText.OpenForAll: diff --git a/packages/browser-wallet/src/popup/popupX/pages/SubmittedTransaction/SubmittedTransaction.tsx b/packages/browser-wallet/src/popup/popupX/pages/SubmittedTransaction/SubmittedTransaction.tsx index d2d9e67aa..ad9b259ab 100644 --- a/packages/browser-wallet/src/popup/popupX/pages/SubmittedTransaction/SubmittedTransaction.tsx +++ b/packages/browser-wallet/src/popup/popupX/pages/SubmittedTransaction/SubmittedTransaction.tsx @@ -10,21 +10,21 @@ import { absoluteRoutes, transactionDetailsRoute } from '@popup/popupX/constants import Card from '@popup/popupX/shared/Card'; import { useAsyncMemo } from 'wallet-common-helpers'; import { + AccountTransactionPayload, AccountTransactionSummary, + AccountTransactionType, + BaseAccountTransactionSummary, + CcdAmount, + ConfigureBakerPayload, + ConfigureDelegationPayload, + FailedTransactionSummary, HexString, - TransactionHash, - TransactionSummaryType, isRejectTransaction, isSuccessTransaction, - FailedTransactionSummary, - BaseAccountTransactionSummary, - AccountTransactionPayload, - AccountTransactionType, SimpleTransferPayload, SimpleTransferWithMemoPayload, - ConfigureBakerPayload, - ConfigureDelegationPayload, - CcdAmount, + TransactionHash, + TransactionSummaryType, } from '@concordium/web-sdk'; import { useAtomValue } from 'jotai'; import { grpcClientAtom } from '@popup/store/settings'; @@ -284,6 +284,9 @@ export default function SubmittedTransaction() { TX_TIMEOUT ); + if (!outcome.summary) { + throw Error('Unexpected transaction type'); + } if (isRejectTransaction(outcome.summary)) { return { type: 'failure', summary: outcome.summary }; } diff --git a/packages/browser-wallet/src/popup/popupX/pages/prompts/SendTransaction/DisplayTransactionPayload.tsx b/packages/browser-wallet/src/popup/popupX/pages/prompts/SendTransaction/DisplayTransactionPayload.tsx index 8064ce478..17f7697c7 100644 --- a/packages/browser-wallet/src/popup/popupX/pages/prompts/SendTransaction/DisplayTransactionPayload.tsx +++ b/packages/browser-wallet/src/popup/popupX/pages/prompts/SendTransaction/DisplayTransactionPayload.tsx @@ -4,12 +4,12 @@ import { AccountTransactionType, CcdAmount, DeployModulePayload, - InitContractPayload, + InitContractInput, RegisterDataPayload, sha256, SimpleTransferPayload, - UpdateContractPayload, TokenUpdatePayload, + UpdateContractInput, } from '@concordium/web-sdk'; import { Cbor, CborMemo, TokenOperationType } from '@concordium/web-sdk/plt'; import { SmartContractParameters } from '@concordium/browser-wallet-api-helpers'; @@ -45,7 +45,7 @@ function DisplaySimpleTransfer({ payload }: { payload: SimpleTransferPayload }) /** * Displays an overview of a update contract transaction. */ -function DisplayUpdateContract({ payload }: { payload: Omit }) { +function DisplayUpdateContract({ payload }: { payload: Omit }) { const { t } = useTranslation('x', { keyPrefix: 'prompts.sendTransactionX.payload' }); return ( <> @@ -66,7 +66,7 @@ function DisplayUpdateContract({ payload }: { payload: Omit }) { +function DisplayInitContract({ payload }: { payload: Omit }) { const { t } = useTranslation('x', { keyPrefix: 'prompts.sendTransactionX.payload' }); return ( @@ -216,9 +216,9 @@ export default function DisplayTransactionPayload({ case AccountTransactionType.Transfer: return ; case AccountTransactionType.Update: - return ; + return ; case AccountTransactionType.InitContract: - return ; + return ; case AccountTransactionType.RegisterData: return ; case AccountTransactionType.DeployModule: diff --git a/packages/browser-wallet/src/popup/shared/TransactionReceipt/TransactionReceipt.tsx b/packages/browser-wallet/src/popup/shared/TransactionReceipt/TransactionReceipt.tsx index 6c3a0b30b..996442f4f 100644 --- a/packages/browser-wallet/src/popup/shared/TransactionReceipt/TransactionReceipt.tsx +++ b/packages/browser-wallet/src/popup/shared/TransactionReceipt/TransactionReceipt.tsx @@ -3,22 +3,23 @@ import clsx from 'clsx'; import { useTranslation } from 'react-i18next'; import React, { useState } from 'react'; import { - AccountTransactionType, AccountTransaction, - AccountTransactionPayload, - SimpleTransferPayload, - UpdateContractPayload, - InitContractPayload, - RegisterDataPayload, - ConfigureDelegationPayload, + AccountTransactionInput, + AccountTransactionType, ConfigureBakerPayload, + ConfigureDelegationPayload, DeployModulePayload, + InitContractInput, + RegisterDataPayload, + SimpleTransferPayload, + UpdateContractInput, + UpdateContractPayload, } from '@concordium/web-sdk'; import { Cis2TransferParameters } from '@shared/utils/types'; import { SmartContractParameters } from '@concordium/browser-wallet-api-helpers'; import { TokenMetadata } from '@shared/storage/types'; import { getMetadataDecimals } from '@shared/utils/token-helpers'; -import { chunkString, DisplayAddress, AddressDisplayFormat } from 'wallet-common-helpers'; +import { AddressDisplayFormat, chunkString, DisplayAddress } from 'wallet-common-helpers'; import DisplayCost from './DisplayCost'; import { getTransactionTypeName } from '../utils/transaction-helpers'; import DisplayUpdateContract from './displayPayload/DisplayUpdateContract'; @@ -35,7 +36,7 @@ import DisplayDeployModule from './displayPayload/DisplayDeployModule'; export type GenericTransactionReceiptProps = { className?: string; transactionType: AccountTransactionType; - payload: AccountTransactionPayload; + payload: AccountTransactionInput; parameters?: SmartContractParameters; sender: string; cost?: bigint; @@ -63,9 +64,9 @@ function displayPayload({ payload, type }: Omit, p case AccountTransactionType.Transfer: return ; case AccountTransactionType.Update: - return ; + return ; case AccountTransactionType.InitContract: - return ; + return ; case AccountTransactionType.RegisterData: return ; case AccountTransactionType.ConfigureDelegation: diff --git a/packages/browser-wallet/src/popup/shared/TransactionReceipt/displayPayload/DisplayInitContract.tsx b/packages/browser-wallet/src/popup/shared/TransactionReceipt/displayPayload/DisplayInitContract.tsx index e478d88e9..a867510b3 100644 --- a/packages/browser-wallet/src/popup/shared/TransactionReceipt/displayPayload/DisplayInitContract.tsx +++ b/packages/browser-wallet/src/popup/shared/TransactionReceipt/displayPayload/DisplayInitContract.tsx @@ -1,12 +1,12 @@ import React from 'react'; import { useTranslation } from 'react-i18next'; -import { InitContractPayload } from '@concordium/web-sdk'; +import { InitContractInput } from '@concordium/web-sdk'; import { displayAsCcd } from 'wallet-common-helpers'; import { SmartContractParameters } from '@concordium/browser-wallet-api-helpers'; import DisplayParameters from '../DisplayParameters'; interface Props { - payload: Omit; + payload: Omit; parameters?: SmartContractParameters; } diff --git a/packages/browser-wallet/src/popup/shared/TransactionReceipt/displayPayload/DisplayUpdateContract.tsx b/packages/browser-wallet/src/popup/shared/TransactionReceipt/displayPayload/DisplayUpdateContract.tsx index 2cd81417e..f156dcbbe 100644 --- a/packages/browser-wallet/src/popup/shared/TransactionReceipt/displayPayload/DisplayUpdateContract.tsx +++ b/packages/browser-wallet/src/popup/shared/TransactionReceipt/displayPayload/DisplayUpdateContract.tsx @@ -1,12 +1,12 @@ import React from 'react'; import { useTranslation } from 'react-i18next'; -import { UpdateContractPayload } from '@concordium/web-sdk'; +import { UpdateContractInput } from '@concordium/web-sdk'; import { displayAsCcd } from 'wallet-common-helpers'; import { SmartContractParameters } from '@concordium/browser-wallet-api-helpers'; import DisplayParameters from '../DisplayParameters'; interface Props { - payload: Omit; + payload: Omit; parameters?: SmartContractParameters; } diff --git a/packages/browser-wallet/src/popup/shared/utils/baking-helpers.ts b/packages/browser-wallet/src/popup/shared/utils/baking-helpers.ts index c1c5c7ac1..4e98973cb 100644 --- a/packages/browser-wallet/src/popup/shared/utils/baking-helpers.ts +++ b/packages/browser-wallet/src/popup/shared/utils/baking-helpers.ts @@ -1,8 +1,8 @@ import { - OpenStatus, - OpenStatusText, AccountInfo, GenerateBakerKeysOutput, + OpenStatus, + OpenStatusText, PrivateBakerKeys, PublicBakerKeys, } from '@concordium/web-sdk'; @@ -20,7 +20,7 @@ const fractionResolutionToPercentage = (v: number) => v / percentageModifier; export const fractionToPercentage = (d: number | undefined) => d === undefined ? undefined : Math.floor(d * fractionResolution) / percentageModifier; -export function openStatusToDisplay(status: OpenStatus | OpenStatusText): string { +export function openStatusToDisplay(status: OpenStatus | OpenStatusText | null): string { switch (status) { case OpenStatus.OpenForAll: case OpenStatusText.OpenForAll: diff --git a/packages/browser-wallet/src/popup/shared/utils/transaction-helpers.ts b/packages/browser-wallet/src/popup/shared/utils/transaction-helpers.ts index 1e3b6d85b..8161a533a 100644 --- a/packages/browser-wallet/src/popup/shared/utils/transaction-helpers.ts +++ b/packages/browser-wallet/src/popup/shared/utils/transaction-helpers.ts @@ -1,34 +1,34 @@ import { AccountAddress, + AccountInfo, + AccountInfoType, AccountTransaction, + AccountTransactionInput, AccountTransactionType, - AccountTransactionPayload, + BakerPoolStatusDetails, buildBasicAccountSigner, - getAccountTransactionHash, CcdAmount, - ConcordiumGRPCClient, - signTransaction, - SimpleTransferPayload, - TransactionExpiry, - AccountInfo, ChainParameters, ChainParametersV0, - BakerPoolStatusDetails, - InitContractPayload, - UpdateContractPayload, - SimpleTransferWithMemoPayload, - AccountInfoType, + ConcordiumGRPCClient, convertEnergyToMicroCcd, + getAccountTransactionHash, getEnergyCost, + InitContractInput, + signTransaction, + SimpleTransferPayload, + SimpleTransferWithMemoPayload, + TransactionExpiry, + UpdateContractInput, } from '@concordium/web-sdk'; import { TokenId, TokenModuleState } from '@concordium/web-sdk/plt'; import { - isValidResolutionString, ccdToMicroCcd, displayAsCcd, fractionalToInteger, - isValidCcdString, getPublicAccountAmounts, + isValidCcdString, + isValidResolutionString, } from 'wallet-common-helpers'; import i18n from '@popup/shell/i18n'; @@ -281,12 +281,12 @@ export function useHasPendingTransaction(transactionType: AccountTransactionType * Extract the microCCD amount related for the transaction, excluding the cost. * Note that for many transactions there is no related amount, in which case this returns 0. */ -export function getTransactionAmount(type: AccountTransactionType, payload: AccountTransactionPayload): bigint { +export function getTransactionAmount(type: AccountTransactionType, payload: AccountTransactionInput): bigint { switch (type) { case AccountTransactionType.InitContract: - return (payload as InitContractPayload).amount.microCcdAmount; + return (payload as InitContractInput).amount.microCcdAmount; case AccountTransactionType.Update: - return (payload as UpdateContractPayload).amount.microCcdAmount; + return (payload as UpdateContractInput).amount.microCcdAmount; case AccountTransactionType.Transfer: return (payload as SimpleTransferPayload).amount.microCcdAmount; case AccountTransactionType.TransferWithMemo: @@ -300,7 +300,7 @@ export function useGetTransactionFee() { const cp = useBlockChainParameters(); return useCallback( - (type: AccountTransactionType, payload: AccountTransactionPayload) => { + (type: AccountTransactionType, payload: AccountTransactionInput) => { if (cp === undefined) { return undefined; } @@ -344,7 +344,7 @@ export function useTransactionSubmit(sender: AccountAddress.Type, type: AccountT const addPendingTransaction = useUpdateAtom(addPendingTransactionAtom); return useCallback( - async (payload: AccountTransactionPayload, cost: CcdAmount.Type) => { + async (payload: AccountTransactionInput, cost: CcdAmount.Type) => { const { accountAmount, accountAvailableBalance } = await grpc.getAccountInfo(sender); if (accountAvailableBalance.microCcdAmount < cost.microCcdAmount) { diff --git a/packages/browser-wallet/src/popup/shared/utils/transaction-history-types.ts b/packages/browser-wallet/src/popup/shared/utils/transaction-history-types.ts index a84ae8968..85db5f118 100644 --- a/packages/browser-wallet/src/popup/shared/utils/transaction-history-types.ts +++ b/packages/browser-wallet/src/popup/shared/utils/transaction-history-types.ts @@ -1,16 +1,16 @@ import { AccountTransactionSummary, AccountTransactionType, + BakerEvent, ConcordiumGRPCWebClient, ContractTraceEvent, - BakerEvent, DelegationEvent, FinalizedBlockItem, + getTransactionRejectReason, TransactionEvent, TransactionEventTag, TransactionKindString, TransactionSummaryType, - getTransactionRejectReason, } from '@concordium/web-sdk'; import JSONBig from 'json-bigint'; import { logError } from '@shared/utils/log-helpers'; @@ -184,6 +184,8 @@ function getTransactionAmount(account: string, summary: AccountTransactionSummar return summary.contractInitialized.amount.microCcdAmount; case TransactionKindString.Update: return summary.events.reduce((acc: bigint, e) => { + if (e === null) return acc; + switch (e.tag) { case TransactionEventTag.Updated: return acc - e.amount.microCcdAmount; @@ -237,8 +239,12 @@ function getTransactionMemo(summary: AccountTransactionSummary): string | undefi } function getTransactionEvents(summary: AccountTransactionSummary): string[] | undefined { - const toString = ({ tag, ...rest }: TransactionEvent | ContractTraceEvent | BakerEvent | DelegationEvent) => - `${tag}\n${JSONBig.stringify(rest)}`; + const toString = (event: TransactionEvent | ContractTraceEvent | BakerEvent | DelegationEvent | null) => { + if (event === null) return 'Unknown event'; + + const { tag, ...rest } = event; + return `${tag}\n${JSONBig.stringify(rest)}`; + }; switch (summary.transactionType) { case TransactionKindString.Update: @@ -255,11 +261,13 @@ export async function toBrowserWalletTransaction( account: string, transactionHash: string, grpc: ConcordiumGRPCWebClient -): Promise { +): Promise { const block = await grpc.getBlockInfo(blockHash); const time = BigInt(Math.round(block.blockSlotTime.getTime() / 1000)); const id = -1; + if (summary === null) return null; + if (summary.type !== TransactionSummaryType.AccountTransaction) { return { blockHash: blockHash.toString(), diff --git a/packages/browser-wallet/src/shared/constants/networkConfiguration.ts b/packages/browser-wallet/src/shared/constants/networkConfiguration.ts index 515a714eb..bc601fa69 100644 --- a/packages/browser-wallet/src/shared/constants/networkConfiguration.ts +++ b/packages/browser-wallet/src/shared/constants/networkConfiguration.ts @@ -28,12 +28,12 @@ export const stagenet: NetworkConfiguration = { }; export const devnet: NetworkConfiguration = { - genesisHash: '1e38963f8098c190a1a10ffd8954ad79f93ca50a843efbb09783f8b4e9155d03', + genesisHash: '5867d1b162172bf671df64fb6f568c573141fd80b7795adc8d91e4337ff2ef9c', name: 'Concordium DevNet', - explorerUrl: 'https://wallet-proxy.devnet-plt-beta.concordium.com', + explorerUrl: 'https://wallet-proxy.devnet-p10-1.concordium.com', grpcPort: 20000, - grpcUrl: 'https://grpc.devnet-plt-beta.concordium.com', - ccdScanUrl: 'https://devnet-plt-beta.ccdscan.io/', + grpcUrl: 'https://grpc.devnet-p10-1.concordium.com', + ccdScanUrl: 'https://devnet-p10-1.ccdscan.io/', }; export const customnet: NetworkConfiguration = { diff --git a/packages/browser-wallet/src/shared/utils/payload-helpers.ts b/packages/browser-wallet/src/shared/utils/payload-helpers.ts index 726c890a0..482d88ed3 100644 --- a/packages/browser-wallet/src/shared/utils/payload-helpers.ts +++ b/packages/browser-wallet/src/shared/utils/payload-helpers.ts @@ -1,34 +1,34 @@ import { + AccountTransactionInput, AccountTransactionType, - SimpleTransferPayload, - UpdateContractPayload, - serializeUpdateContractParameters, - AccountTransactionPayload, - SchemaVersion, - InitContractPayload, - serializeInitContractParameters, - serializeTypeValue, ContractName, EntrypointName, - Parameter, - jsonParse, getAccountTransactionHandler, + InitContractInput, + jsonParse, + Parameter, + SchemaVersion, + serializeInitContractParameters, + serializeTypeValue, + serializeUpdateContractParameters, + SimpleTransferPayload, + UpdateContractInput, } from '@concordium/web-sdk'; import { Buffer } from 'buffer/'; -import { SmartContractParameters, SchemaType, SchemaWithContext } from '@concordium/browser-wallet-api-helpers'; +import { SchemaType, SchemaWithContext, SmartContractParameters } from '@concordium/browser-wallet-api-helpers'; import { serializationTypes } from '@wallet-api/constants'; import * as JSONBig from 'json-bigint'; export type HeadlessTransaction = - | { type: AccountTransactionType.Update; payload: UpdateContractPayload } + | { type: AccountTransactionType.Update; payload: UpdateContractInput } | { type: AccountTransactionType.Transfer; payload: SimpleTransferPayload } - | { type: AccountTransactionType.InitContract; payload: InitContractPayload } + | { type: AccountTransactionType.InitContract; payload: InitContractInput } | { type: Exclude< AccountTransactionType, AccountTransactionType.Transfer | AccountTransactionType.Update | AccountTransactionType.InitContract >; - payload: AccountTransactionPayload; + payload: AccountTransactionInput; }; /** @@ -72,7 +72,7 @@ export function parsePayload( switch (type) { case AccountTransactionType.Update: { - const updatePayload = payload as UpdateContractPayload; + const updatePayload = payload as UpdateContractInput; const [contractName, functionName] = updatePayload.receiveName.value.split('.'); let parameter: Parameter.Type; @@ -100,7 +100,7 @@ export function parsePayload( }; } case AccountTransactionType.InitContract: { - const initPayload = payload as InitContractPayload; + const initPayload = payload as InitContractInput; let parameter: Parameter.Type; if (parameters === undefined || parameters === null || !schema) { parameter = Parameter.empty(); @@ -133,6 +133,6 @@ export function parsePayload( return { type, payload, - }; + } as HeadlessTransaction; } } diff --git a/packages/browser-wallet/src/shared/utils/token-helpers.ts b/packages/browser-wallet/src/shared/utils/token-helpers.ts index ff742e8d6..91cba7761 100644 --- a/packages/browser-wallet/src/shared/utils/token-helpers.ts +++ b/packages/browser-wallet/src/shared/utils/token-helpers.ts @@ -17,7 +17,7 @@ import { ReturnValue, serializeUpdateContractParameters, sha256, - UpdateContractPayload, + UpdateContractInput, } from '@concordium/web-sdk'; import { MetadataUrl, PltMetadataUrl, PltResponse, TokenIdAndMetadata, TokenMetadata } from '@shared/storage/types'; import { CIS2_SCHEMA, CIS2_SCHEMA_CONTRACT_NAME } from '@popup/constants/schema'; @@ -369,7 +369,7 @@ export function getTokenTransferPayload( maxContractExecutionEnergy: bigint, index: bigint, subindex = 0n -): UpdateContractPayload { +): UpdateContractInput { return { amount: CcdAmount.fromMicroCcd(0n), address: ContractAddress.create(index, subindex), diff --git a/packages/browser-wallet/src/shared/utils/verifiable-credential-helpers.ts b/packages/browser-wallet/src/shared/utils/verifiable-credential-helpers.ts index 0570fb7fc..398bf2c16 100644 --- a/packages/browser-wallet/src/shared/utils/verifiable-credential-helpers.ts +++ b/packages/browser-wallet/src/shared/utils/verifiable-credential-helpers.ts @@ -1,15 +1,15 @@ import { CcdAmount, - UpdateContractPayload, ConcordiumGRPCClient, - ContractAddress, - sha256, ConcordiumHdWallet, - ReceiveName, + ContractAddress, Energy, + HexString, Parameter, + ReceiveName, ReturnValue, - HexString, + sha256, + UpdateContractInput, } from '@concordium/web-sdk'; import * as ed from '@noble/ed25519'; import { @@ -199,7 +199,7 @@ export async function buildRevokeTransaction( credentialId: string, maxContractExecutionEnergy: bigint, parameters: RevokeCredentialHolderParam -): Promise { +): Promise { return { address, amount: CcdAmount.fromMicroCcd(0n), @@ -292,7 +292,7 @@ export async function getVerifiableCredentialStatus(client: ConcordiumGRPCClient }); if (result.tag !== 'success') { - throw new Error(result.reason.tag); + throw new Error(result.reason?.tag || 'Transaction failed'); } const { returnValue } = result; @@ -387,7 +387,7 @@ export async function getCredentialRegistryMetadata( }); if (result.tag !== 'success') { - throw new Error(result.reason.tag); + throw new Error(result.reason?.tag || 'Transaction failed'); } const { returnValue } = result; @@ -823,7 +823,7 @@ export async function getVerifiableCredentialEntry( }); if (result.tag !== 'success') { - throw new Error(result.reason.tag); + throw new Error(result.reason?.tag || 'Transaction failed'); } const { returnValue } = result; @@ -1102,7 +1102,7 @@ export async function getCredentialRegistryIssuerKey( }); if (result.tag !== 'success') { - throw new Error(result.reason.tag); + throw new Error(result.reason?.tag || 'Transaction failed'); } const { returnValue } = result; diff --git a/packages/browser-wallet/src/wallet-api/compatibility.ts b/packages/browser-wallet/src/wallet-api/compatibility.ts index 3cd9dca20..b9c5cdceb 100644 --- a/packages/browser-wallet/src/wallet-api/compatibility.ts +++ b/packages/browser-wallet/src/wallet-api/compatibility.ts @@ -1,39 +1,41 @@ /* eslint-disable @typescript-eslint/no-explicit-any */ import { - SmartContractParameters, - SchemaWithContext, - SchemaType, AccountAddressSource, SchemaSource, - SignMessageObject, - SendTransactionPayload, + SchemaType, + SchemaWithContext, SendTransactionInitContractPayload, + SendTransactionPayload, SendTransactionUpdateContractPayload, + SignMessageObject, + SmartContractParameters, } from '@concordium/browser-wallet-api-helpers'; import { AccountAddress, + AccountTransactionPayload, + AccountTransactionPayloadJSON, AccountTransactionType, CcdAmount, ConfigureBakerPayload, ConfigureDelegationPayload, ContractAddress, ContractName, + DataBlob, DeployModulePayload, Energy, + getAccountTransactionHandler, HexString, - InitContractPayload, + InitContractInput, ModuleReference, ReceiveName, RegisterDataPayload, SchemaVersion, SimpleTransferPayload, SimpleTransferWithMemoPayload, - UpdateCredentialsPayload, - DataBlob, - AccountTransactionPayload, - getAccountTransactionHandler, - AccountTransactionPayloadJSON, TokenUpdatePayload, + UpdateCredentialKeysInput, + UpdateCredentialsInput, + UpdateCredentialsPayload, } from '@concordium/web-sdk/types'; import { empty } from '@concordium/web-sdk/types/Parameter'; import { IdStatement } from '@concordium/web-sdk/id'; @@ -222,7 +224,10 @@ export interface ConfigureDelegationPayloadV0 extends Omit { '23513bcb5dbc81216fa4e12d3165a818e2b8699a1c9ef5c699f46ca3b1024ebf' ); - const expectedPayload: InitContractPayload = { + const expectedPayload: InitContractInput = { moduleRef, maxContractExecutionEnergy: Energy.create(maxContractExecutionEnergy), amount: CcdAmount.fromMicroCcd(amount), @@ -244,7 +244,7 @@ describe(sanitizeSendTransactionInput, () => { const type = AccountTransactionType.Update; const receiveName = `${contractName}.${entrypointName}`; - const expectedPayload: UpdateContractPayload = { + const expectedPayload: UpdateContractInput = { maxContractExecutionEnergy: Energy.create(maxContractExecutionEnergy), amount: CcdAmount.fromMicroCcd(amount), address: ContractAddress.create(contractIndex, contractSubindex), @@ -604,7 +604,8 @@ describe(sanitizeSendTransactionInput, () => { test('Transforms "UpdateCredentials" transaction input as expected', () => { const type = AccountTransactionType.UpdateCredentials; - const payload: UpdateCredentialsPayload = { + // commitments value was removed in type UpdateCredentialsInput + const payload: UpdateCredentialsInput = { newCredentials: [ { index: 1, @@ -622,13 +623,6 @@ describe(sanitizeSendTransactionInput, () => { threshold: 1, keys: { 0: { schemeId: 'ed25519', verifyKey: '030201' } }, }, - commitments: { - cmmPrf: 'cmmPrf', - cmmAttributes: { dob: 'cmmDob' } as Record, - cmmCredCounter: 'cmmCredCounter', - cmmMaxAccounts: 'cmmMaxAccounts', - cmmIdCredSecSharingCoeff: ['cmmIdCredSecSharingCoeff'], - }, arData: { arData: { encIdCredPubShare: 'encIdCredPubShare' } }, }, }, diff --git a/yarn.lock b/yarn.lock index d86c74c5f..54564d8c7 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1941,7 +1941,7 @@ __metadata: webpack: ^5.99.7 webpack-cli: ^4.9.2 peerDependencies: - "@concordium/web-sdk": 10.0.2 + "@concordium/web-sdk": 12.0.0-devnet-p10.0 "@protobuf-ts/runtime-rpc": ^2.9.1 languageName: unknown linkType: soft @@ -1953,7 +1953,7 @@ __metadata: "@babel/core": ^7.18.2 "@concordium/browser-wallet-api-helpers": "workspace:^" "@concordium/common-sdk": ^9.5.3 - "@concordium/web-sdk": 10.0.2 + "@concordium/web-sdk": 12.0.0-devnet-p10.0 "@craftamap/esbuild-plugin-html": ^0.4.0 "@floating-ui/react": ^0.27.2 "@mdx-js/react": ^1.6.22 @@ -2064,12 +2064,12 @@ __metadata: languageName: node linkType: hard -"@concordium/web-sdk@npm:10.0.2": - version: 10.0.2 - resolution: "@concordium/web-sdk@npm:10.0.2" +"@concordium/web-sdk@npm:12.0.0-devnet-p10.0": + version: 12.0.0-devnet-p10.0 + resolution: "@concordium/web-sdk@npm:12.0.0-devnet-p10.0" dependencies: "@concordium/rust-bindings": ^3.3.0 - "@grpc/grpc-js": ^1.9.4 + "@grpc/grpc-js": ^1.14.0 "@noble/ed25519": ^2.0.0 "@noble/hashes": ^1.3.2 "@protobuf-ts/grpc-transport": ^2.9.1 @@ -2088,7 +2088,7 @@ __metadata: peerDependencies: "@protobuf-ts/runtime-rpc": ^2.8.2 cbor2: ^1.12.0 - checksum: 46d99fbda606a6550eb50ccb4be6104fd2b8764d492b886c6c19215ea4441858f12966368de81da3ade19e9dff5937d5cfac2d24fa0905c90f34dcb609291340 + checksum: 2f2ae72a093b00720acfe8c1eec680d0d45d0a355f83e3901c22f9c2592232830776852d4332cb8b47d741e9d18ea12a44ab196604d0dd5c93ad374477ab901b languageName: node linkType: hard @@ -2576,23 +2576,23 @@ __metadata: languageName: node linkType: hard -"@grpc/grpc-js@npm:^1.3.4": - version: 1.9.14 - resolution: "@grpc/grpc-js@npm:1.9.14" +"@grpc/grpc-js@npm:^1.14.0": + version: 1.14.1 + resolution: "@grpc/grpc-js@npm:1.14.1" dependencies: - "@grpc/proto-loader": ^0.7.8 - "@types/node": ">=12.12.47" - checksum: 1e0821876fc55fa1d71a674e65db6227ca398f6ff77735bd44d8d4a554fa97dcddd06e7844c3d7da37350feafd824ec88af04f0ab0e0c2e0bc8f753939935240 + "@grpc/proto-loader": ^0.8.0 + "@js-sdsl/ordered-map": ^4.4.2 + checksum: 3f208c23cc985789934d806045599ad3bfa1b6fd9877151cf9af423b4d708cbb3b0cb1347a147061c6ed36470958fd522fbefbf6ae4ca8246f0860bd647f0e5e languageName: node linkType: hard -"@grpc/grpc-js@npm:^1.9.4": - version: 1.9.5 - resolution: "@grpc/grpc-js@npm:1.9.5" +"@grpc/grpc-js@npm:^1.3.4": + version: 1.9.14 + resolution: "@grpc/grpc-js@npm:1.9.14" dependencies: "@grpc/proto-loader": ^0.7.8 "@types/node": ">=12.12.47" - checksum: 06834554a0935906652b4b9c5c71f08dd9bdcd4a00d65465c569eae770a9856ecabf7711290bf6d935a8127779c1f35d9cc8cf029693493da02864a330c78e25 + checksum: 1e0821876fc55fa1d71a674e65db6227ca398f6ff77735bd44d8d4a554fa97dcddd06e7844c3d7da37350feafd824ec88af04f0ab0e0c2e0bc8f753939935240 languageName: node linkType: hard @@ -2610,6 +2610,20 @@ __metadata: languageName: node linkType: hard +"@grpc/proto-loader@npm:^0.8.0": + version: 0.8.0 + resolution: "@grpc/proto-loader@npm:0.8.0" + dependencies: + lodash.camelcase: ^4.3.0 + long: ^5.0.0 + protobufjs: ^7.5.3 + yargs: ^17.7.2 + bin: + proto-loader-gen-types: build/bin/proto-loader-gen-types.js + checksum: 97570e2e8c29a35b999fa929acad506765e6752d3219764825fecc0ab632492b1ac2e4dd4c0a96cc2e01754d99bfa838dff0729c6608a02f7b027fd19bc1d1e4 + languageName: node + linkType: hard + "@humanwhocodes/config-array@npm:^0.11.11": version: 0.11.11 resolution: "@humanwhocodes/config-array@npm:0.11.11" @@ -3125,6 +3139,13 @@ __metadata: languageName: node linkType: hard +"@js-sdsl/ordered-map@npm:^4.4.2": + version: 4.4.2 + resolution: "@js-sdsl/ordered-map@npm:4.4.2" + checksum: a927ae4ff8565ecb75355cc6886a4f8fadbf2af1268143c96c0cce3ba01261d241c3f4ba77f21f3f017a00f91dfe9e0673e95f830255945c80a0e96c6d30508a + languageName: node + linkType: hard + "@mdx-js/react@npm:^1.6.22": version: 1.6.22 resolution: "@mdx-js/react@npm:1.6.22" @@ -13757,6 +13778,26 @@ __metadata: languageName: node linkType: hard +"protobufjs@npm:^7.5.3": + version: 7.5.4 + resolution: "protobufjs@npm:7.5.4" + dependencies: + "@protobufjs/aspromise": ^1.1.2 + "@protobufjs/base64": ^1.1.2 + "@protobufjs/codegen": ^2.0.4 + "@protobufjs/eventemitter": ^1.1.0 + "@protobufjs/fetch": ^1.1.0 + "@protobufjs/float": ^1.0.2 + "@protobufjs/inquire": ^1.1.0 + "@protobufjs/path": ^1.1.2 + "@protobufjs/pool": ^1.1.0 + "@protobufjs/utf8": ^1.1.0 + "@types/node": ">=13.7.0" + long: ^5.0.0 + checksum: 53bf83b9a726b05d43da35bb990dba7536759787dccea9a67b8f31be9df470ba17f1f1b982ca19956cfc7726f3ec7e0e883ca4ad93b5ec753cc025a637fc704f + languageName: node + linkType: hard + "proxy-addr@npm:~2.0.7": version: 2.0.7 resolution: "proxy-addr@npm:2.0.7" @@ -16811,7 +16852,7 @@ __metadata: version: 0.0.0-use.local resolution: "wallet-api@workspace:examples/wallet-api" dependencies: - "@concordium/web-sdk": 10.0.2 + "@concordium/web-sdk": 12.0.0-devnet-p10.0 live-server: ^1.2.2 languageName: unknown linkType: soft