From d94f2c21dd999f0e6b17e2bb2d726037996e7a65 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andrei=20B=C4=83ncioiu?= Date: Wed, 6 Apr 2022 14:29:03 +0300 Subject: [PATCH 1/4] Move networkStatus, networkStake to networkProvider package. --- src/_docs.ts | 1 - src/apiProvider.ts | 7 +++---- src/index.ts | 1 - src/interface.ts | 8 +++----- src/interfaceOfNetwork.ts | 13 +++++++++++++ src/networkProvider/apiNetworkProvider.ts | 4 ++-- src/networkProvider/interface.ts | 4 ++-- src/{ => networkProvider}/networkStake.ts | 0 src/{ => networkProvider}/networkStatus.ts | 0 src/networkProvider/proxyNetworkProvider.ts | 4 ++-- src/proxyProvider.ts | 14 +++----------- src/testutils/mockProvider.ts | 2 +- 12 files changed, 29 insertions(+), 29 deletions(-) rename src/{ => networkProvider}/networkStake.ts (100%) rename src/{ => networkProvider}/networkStatus.ts (100%) diff --git a/src/_docs.ts b/src/_docs.ts index 539c1c276..11298e0d2 100644 --- a/src/_docs.ts +++ b/src/_docs.ts @@ -8,6 +8,5 @@ export * from "./address"; export * from "./nonce"; export * from "./balance"; export * from "./networkConfig"; -export * from "./networkStake"; export * from "./networkParams"; export * from "./utils"; diff --git a/src/apiProvider.ts b/src/apiProvider.ts index e52d19866..97ad4b16c 100644 --- a/src/apiProvider.ts +++ b/src/apiProvider.ts @@ -2,13 +2,12 @@ import axios, { AxiosRequestConfig } from "axios"; import { IApiProvider, IHash } from "./interface"; import * as errors from "./errors"; import { Logger } from "./logger"; -import { NetworkStake } from "./networkStake"; import { Stats } from "./stats"; import { Token } from "./token"; import { NFTToken } from "./nftToken"; import { defaultConfig } from "./constants"; import { ApiNetworkProvider } from "./networkProvider/apiNetworkProvider"; -import { ITransactionOnNetwork, ITransactionStatus } from "./interfaceOfNetwork"; +import { INetworkStake, ITransactionOnNetwork, ITransactionStatus } from "./interfaceOfNetwork"; /** * This is a temporary change, this will be the only provider used, ProxyProvider will be deprecated @@ -35,8 +34,8 @@ export class ApiProvider implements IApiProvider { /** * Fetches the Network Stake. */ - async getNetworkStake(): Promise { - return this.doGetGeneric("stake", (response) => NetworkStake.fromHttpResponse(response)); + async getNetworkStake(): Promise { + return await this.backingProvider.getNetworkStakeStatistics(); } /** diff --git a/src/index.ts b/src/index.ts index dca656e9c..d60feb01d 100644 --- a/src/index.ts +++ b/src/index.ts @@ -15,7 +15,6 @@ export * from "./boundaryAdapters"; export * from "./interactive"; export * from "./logger"; export * from "./networkConfig"; -export * from "./networkStake"; export * from "./networkParams"; export * from "./signableMessage"; export * from "./utils"; diff --git a/src/interface.ts b/src/interface.ts index 5fa6fcfbd..7bdd217a4 100644 --- a/src/interface.ts +++ b/src/interface.ts @@ -3,12 +3,10 @@ import { NetworkConfig } from "./networkConfig"; import { Signature } from "./signature"; import { Query } from "./smartcontracts"; import { QueryResponse } from "./smartcontracts"; -import { NetworkStake } from "./networkStake"; import { Stats } from "./stats"; -import { NetworkStatus } from "./networkStatus"; import { Token } from "./token"; import BigNumber from "bignumber.js"; -import { IAccountOnNetwork, IFungibleTokenOfAccountOnNetwork, ITransactionOnNetwork, ITransactionStatus } from "./interfaceOfNetwork"; +import { IAccountOnNetwork, IFungibleTokenOfAccountOnNetwork, INetworkStake, INetworkStatus, ITransactionOnNetwork, ITransactionStatus } from "./interfaceOfNetwork"; export interface ITransactionFetcher { /** @@ -34,7 +32,7 @@ export interface IProvider extends ITransactionFetcher { /** * Fetches the Network status. */ - getNetworkStatus(): Promise; + getNetworkStatus(): Promise; /** * Fetches the state of an {@link Account}. @@ -89,7 +87,7 @@ export interface IApiProvider extends ITransactionFetcher { /** * Fetches the Network Stake. */ - getNetworkStake(): Promise; + getNetworkStake(): Promise; /** * Fetches the Network Stats. */ diff --git a/src/interfaceOfNetwork.ts b/src/interfaceOfNetwork.ts index 1fab82825..6f1b7a363 100644 --- a/src/interfaceOfNetwork.ts +++ b/src/interfaceOfNetwork.ts @@ -14,6 +14,19 @@ export interface IAccountOnNetwork { export interface IFungibleTokenOfAccountOnNetwork { } +/** + * @deprecated This interface will be removed upon the extraction of networkProvider package. + */ +export interface INetworkStatus { + Nonce: number; +} + +/** + * @deprecated This interface will be removed upon the extraction of networkProvider package. + */ + export interface INetworkStake { +} + export interface ITransactionOnNetwork { hash: IHash; type: string; diff --git a/src/networkProvider/apiNetworkProvider.ts b/src/networkProvider/apiNetworkProvider.ts index 4be146c44..3e703c241 100644 --- a/src/networkProvider/apiNetworkProvider.ts +++ b/src/networkProvider/apiNetworkProvider.ts @@ -2,8 +2,7 @@ import axios, { AxiosRequestConfig } from "axios"; import { AccountOnNetwork } from "./accounts"; import { IAddress, IContractQueryResponse, IDefinitionOfFungibleTokenOnNetwork, IDefinitionOfTokenCollectionOnNetwork, IFungibleTokenOfAccountOnNetwork, IHash, INetworkProvider, INonce, INonFungibleTokenOfAccountOnNetwork, ITransaction, Pagination } from "./interface"; import { NetworkConfig } from "../networkConfig"; -import { NetworkStake } from "../networkStake"; -import { NetworkStatus } from "../networkStatus"; +import { NetworkStake } from "./networkStake"; import { Query } from "../smartcontracts"; import { Stats } from "../stats"; import { ContractQueryResponse } from "./contractResults"; @@ -15,6 +14,7 @@ import { TransactionStatus } from "./transactionStatus"; import { Hash } from "./primitives"; import { ErrNetworkProvider } from "./errors"; import { defaultAxiosConfig } from "./config"; +import { NetworkStatus } from "./networkStatus"; // TODO: Find & remove duplicate code between "ProxyNetworkProvider" and "ApiNetworkProvider". export class ApiNetworkProvider implements INetworkProvider { diff --git a/src/networkProvider/interface.ts b/src/networkProvider/interface.ts index 6bd5232e3..1c6c98f4a 100644 --- a/src/networkProvider/interface.ts +++ b/src/networkProvider/interface.ts @@ -1,12 +1,12 @@ import { BigNumber } from "bignumber.js"; import { AccountOnNetwork } from "./accounts"; import { NetworkConfig } from "../networkConfig"; -import { NetworkStake } from "../networkStake"; -import { NetworkStatus } from "../networkStatus"; +import { NetworkStake } from "./networkStake"; import { Query } from "../smartcontracts"; import { Stats } from "../stats"; import { TransactionOnNetwork } from "./transactions"; import { TransactionStatus } from "./transactionStatus"; +import { NetworkStatus } from "./networkStatus"; /** * An interface that defines the endpoints of an HTTP API Provider. diff --git a/src/networkStake.ts b/src/networkProvider/networkStake.ts similarity index 100% rename from src/networkStake.ts rename to src/networkProvider/networkStake.ts diff --git a/src/networkStatus.ts b/src/networkProvider/networkStatus.ts similarity index 100% rename from src/networkStatus.ts rename to src/networkProvider/networkStatus.ts diff --git a/src/networkProvider/proxyNetworkProvider.ts b/src/networkProvider/proxyNetworkProvider.ts index 1d7ab16dd..21494b1b7 100644 --- a/src/networkProvider/proxyNetworkProvider.ts +++ b/src/networkProvider/proxyNetworkProvider.ts @@ -2,8 +2,7 @@ import axios, { AxiosRequestConfig } from "axios"; import { AccountOnNetwork } from "./accounts"; import { IAddress, IContractQueryResponse, IDefinitionOfFungibleTokenOnNetwork, IDefinitionOfTokenCollectionOnNetwork, IFungibleTokenOfAccountOnNetwork, IHash, INetworkProvider, INonce, INonFungibleTokenOfAccountOnNetwork, ITransaction, Pagination } from "./interface"; import { NetworkConfig } from "../networkConfig"; -import { NetworkStake } from "../networkStake"; -import { NetworkStatus } from "../networkStatus"; +import { NetworkStake } from "./networkStake"; import { Query } from "../smartcontracts"; import { Stats } from "../stats"; import { ContractQueryResponse } from "./contractResults"; @@ -13,6 +12,7 @@ import { TransactionStatus } from "./transactionStatus"; import { Hash } from "./primitives"; import { ErrNetworkProvider } from "./errors"; import { defaultAxiosConfig } from "./config"; +import { NetworkStatus } from "./networkStatus"; // TODO: Find & remove duplicate code between "ProxyNetworkProvider" and "ApiNetworkProvider". export class ProxyNetworkProvider implements INetworkProvider { diff --git a/src/proxyProvider.ts b/src/proxyProvider.ts index b15564b37..1fc69f613 100644 --- a/src/proxyProvider.ts +++ b/src/proxyProvider.ts @@ -9,15 +9,9 @@ import * as errors from "./errors"; import { Query } from "./smartcontracts/query"; import { QueryResponse } from "./smartcontracts/queryResponse"; import { Logger } from "./logger"; -import { NetworkStatus } from "./networkStatus"; import { defaultConfig } from "./constants"; import { ProxyNetworkProvider } from "./networkProvider/proxyNetworkProvider"; -import { IAccountOnNetwork, IFungibleTokenOfAccountOnNetwork, ITransactionOnNetwork, ITransactionStatus } from "./interfaceOfNetwork"; - -/** - * This will be deprecated once all the endpoints move to ApiProvider - */ - +import { IAccountOnNetwork, IFungibleTokenOfAccountOnNetwork, INetworkStatus, ITransactionOnNetwork, ITransactionStatus } from "./interfaceOfNetwork"; export class ProxyProvider implements IProvider { private url: string; @@ -119,10 +113,8 @@ export class ProxyProvider implements IProvider { /** * Fetches the network status configuration. */ - async getNetworkStatus(): Promise { - return this.doGetGeneric("network/status/4294967295", (response) => - NetworkStatus.fromHttpResponse(response.status) - ); + async getNetworkStatus(): Promise { + return await this.backingProvider.getNetworkStatus(); } /** diff --git a/src/testutils/mockProvider.ts b/src/testutils/mockProvider.ts index de3dc2450..6c31fec2a 100644 --- a/src/testutils/mockProvider.ts +++ b/src/testutils/mockProvider.ts @@ -8,7 +8,6 @@ import { Balance } from "../balance"; import * as errors from "../errors"; import { Query } from "../smartcontracts/query"; import { QueryResponse } from "../smartcontracts/queryResponse"; -import { NetworkStatus } from "../networkStatus"; import { TypedEvent } from "../events"; import { BalanceBuilder } from "../balanceBuilder"; import BigNumber from "bignumber.js"; @@ -17,6 +16,7 @@ import { TransactionOnNetwork } from "../networkProvider/transactions"; import { ITransactionOnNetwork, ITransactionStatus } from "../interfaceOfNetwork"; import { TransactionStatus } from "../networkProvider/transactionStatus"; import { AccountOnNetwork } from "../networkProvider/accounts"; +import { NetworkStatus } from "../networkProvider/networkStatus"; const DummyHyperblockNonce = 42; const DummyHyperblockHash = "a".repeat(32); From 2291903933cc8af4816f0e9d8404938bd3e7ec7b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andrei=20B=C4=83ncioiu?= Date: Wed, 6 Apr 2022 15:02:14 +0300 Subject: [PATCH 2/4] Move "stats" to networkProvider. --- src/apiProvider.ts | 7 +++---- src/interface.ts | 5 ++--- src/interfaceOfNetwork.ts | 8 +++++++- src/networkProvider/apiNetworkProvider.ts | 2 +- src/networkProvider/interface.ts | 2 +- src/networkProvider/proxyNetworkProvider.ts | 2 +- src/{ => networkProvider}/stats.ts | 0 7 files changed, 15 insertions(+), 11 deletions(-) rename src/{ => networkProvider}/stats.ts (100%) diff --git a/src/apiProvider.ts b/src/apiProvider.ts index 97ad4b16c..ed5fd849b 100644 --- a/src/apiProvider.ts +++ b/src/apiProvider.ts @@ -2,12 +2,11 @@ import axios, { AxiosRequestConfig } from "axios"; import { IApiProvider, IHash } from "./interface"; import * as errors from "./errors"; import { Logger } from "./logger"; -import { Stats } from "./stats"; import { Token } from "./token"; import { NFTToken } from "./nftToken"; import { defaultConfig } from "./constants"; import { ApiNetworkProvider } from "./networkProvider/apiNetworkProvider"; -import { INetworkStake, ITransactionOnNetwork, ITransactionStatus } from "./interfaceOfNetwork"; +import { INetworkStake, INetworkStats, ITransactionOnNetwork, ITransactionStatus } from "./interfaceOfNetwork"; /** * This is a temporary change, this will be the only provider used, ProxyProvider will be deprecated @@ -41,8 +40,8 @@ export class ApiProvider implements IApiProvider { /** * Fetches the Network Stats. */ - async getNetworkStats(): Promise { - return this.doGetGeneric("stats", (response) => Stats.fromHttpResponse(response)); + async getNetworkStats(): Promise { + return await this.backingProvider.getNetworkGeneralStatistics(); } /** diff --git a/src/interface.ts b/src/interface.ts index 7bdd217a4..ad3e48485 100644 --- a/src/interface.ts +++ b/src/interface.ts @@ -3,10 +3,9 @@ import { NetworkConfig } from "./networkConfig"; import { Signature } from "./signature"; import { Query } from "./smartcontracts"; import { QueryResponse } from "./smartcontracts"; -import { Stats } from "./stats"; import { Token } from "./token"; import BigNumber from "bignumber.js"; -import { IAccountOnNetwork, IFungibleTokenOfAccountOnNetwork, INetworkStake, INetworkStatus, ITransactionOnNetwork, ITransactionStatus } from "./interfaceOfNetwork"; +import { IAccountOnNetwork, IFungibleTokenOfAccountOnNetwork, INetworkStake, INetworkStats, INetworkStatus, ITransactionOnNetwork, ITransactionStatus } from "./interfaceOfNetwork"; export interface ITransactionFetcher { /** @@ -91,7 +90,7 @@ export interface IApiProvider extends ITransactionFetcher { /** * Fetches the Network Stats. */ - getNetworkStats(): Promise; + getNetworkStats(): Promise; getToken(tokenIdentifier: string): Promise; diff --git a/src/interfaceOfNetwork.ts b/src/interfaceOfNetwork.ts index 6f1b7a363..670b6fd96 100644 --- a/src/interfaceOfNetwork.ts +++ b/src/interfaceOfNetwork.ts @@ -24,7 +24,13 @@ export interface INetworkStatus { /** * @deprecated This interface will be removed upon the extraction of networkProvider package. */ - export interface INetworkStake { +export interface INetworkStake { +} + +/** + * @deprecated This interface will be removed upon the extraction of networkProvider package. + */ +export interface INetworkStats { } export interface ITransactionOnNetwork { diff --git a/src/networkProvider/apiNetworkProvider.ts b/src/networkProvider/apiNetworkProvider.ts index 3e703c241..cf2bc4288 100644 --- a/src/networkProvider/apiNetworkProvider.ts +++ b/src/networkProvider/apiNetworkProvider.ts @@ -4,7 +4,7 @@ import { IAddress, IContractQueryResponse, IDefinitionOfFungibleTokenOnNetwork, import { NetworkConfig } from "../networkConfig"; import { NetworkStake } from "./networkStake"; import { Query } from "../smartcontracts"; -import { Stats } from "../stats"; +import { Stats } from "./stats"; import { ContractQueryResponse } from "./contractResults"; import { ProxyNetworkProvider } from "./proxyNetworkProvider"; import { DefinitionOfFungibleTokenOnNetwork, DefinitionOfTokenCollectionOnNetwork } from "./tokenDefinitions"; diff --git a/src/networkProvider/interface.ts b/src/networkProvider/interface.ts index 1c6c98f4a..121821fee 100644 --- a/src/networkProvider/interface.ts +++ b/src/networkProvider/interface.ts @@ -3,7 +3,7 @@ import { AccountOnNetwork } from "./accounts"; import { NetworkConfig } from "../networkConfig"; import { NetworkStake } from "./networkStake"; import { Query } from "../smartcontracts"; -import { Stats } from "../stats"; +import { Stats } from "./stats"; import { TransactionOnNetwork } from "./transactions"; import { TransactionStatus } from "./transactionStatus"; import { NetworkStatus } from "./networkStatus"; diff --git a/src/networkProvider/proxyNetworkProvider.ts b/src/networkProvider/proxyNetworkProvider.ts index 21494b1b7..9912ef4a5 100644 --- a/src/networkProvider/proxyNetworkProvider.ts +++ b/src/networkProvider/proxyNetworkProvider.ts @@ -4,7 +4,7 @@ import { IAddress, IContractQueryResponse, IDefinitionOfFungibleTokenOnNetwork, import { NetworkConfig } from "../networkConfig"; import { NetworkStake } from "./networkStake"; import { Query } from "../smartcontracts"; -import { Stats } from "../stats"; +import { Stats } from "./stats"; import { ContractQueryResponse } from "./contractResults"; import { FungibleTokenOfAccountOnNetwork, NonFungibleTokenOfAccountOnNetwork } from "./tokens"; import { TransactionOnNetwork } from "./transactions"; diff --git a/src/stats.ts b/src/networkProvider/stats.ts similarity index 100% rename from src/stats.ts rename to src/networkProvider/stats.ts From 168da1a7a714e0d8d664a03ced632fb672f4f7a9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andrei=20B=C4=83ncioiu?= Date: Wed, 6 Apr 2022 15:45:17 +0300 Subject: [PATCH 3/4] Move "networkConfig" to networkProvider. --- src/_docs.ts | 1 - src/index.ts | 1 - src/interface.ts | 8 +++-- src/interfaceOfNetwork.ts | 7 +++- src/networkProvider/apiNetworkProvider.ts | 2 +- src/networkProvider/interface.ts | 5 ++- src/{ => networkProvider}/networkConfig.ts | 34 ++++++++++---------- src/networkProvider/proxyNetworkProvider.ts | 2 +- src/proxyProvider.ts | 7 ++-- src/smartcontracts/interaction.ts | 11 ++++--- src/smartcontracts/interface.ts | 20 ++++++------ src/smartcontracts/wrapper/contractLogger.ts | 2 +- src/smartcontracts/wrapper/sendContext.ts | 12 +++---- src/testutils/mockProvider.ts | 6 ++-- src/transaction.spec.ts | 2 +- src/transaction.ts | 28 ++++++++-------- 16 files changed, 78 insertions(+), 70 deletions(-) rename src/{ => networkProvider}/networkConfig.ts (63%) diff --git a/src/_docs.ts b/src/_docs.ts index 11298e0d2..ecffb5427 100644 --- a/src/_docs.ts +++ b/src/_docs.ts @@ -7,6 +7,5 @@ export * from "./account"; export * from "./address"; export * from "./nonce"; export * from "./balance"; -export * from "./networkConfig"; export * from "./networkParams"; export * from "./utils"; diff --git a/src/index.ts b/src/index.ts index d60feb01d..e935f85e0 100644 --- a/src/index.ts +++ b/src/index.ts @@ -14,7 +14,6 @@ export * from "./balanceBuilder"; export * from "./boundaryAdapters"; export * from "./interactive"; export * from "./logger"; -export * from "./networkConfig"; export * from "./networkParams"; export * from "./signableMessage"; export * from "./utils"; diff --git a/src/interface.ts b/src/interface.ts index ad3e48485..42520e4e4 100644 --- a/src/interface.ts +++ b/src/interface.ts @@ -1,11 +1,10 @@ import { Transaction } from "./transaction"; -import { NetworkConfig } from "./networkConfig"; import { Signature } from "./signature"; import { Query } from "./smartcontracts"; import { QueryResponse } from "./smartcontracts"; import { Token } from "./token"; import BigNumber from "bignumber.js"; -import { IAccountOnNetwork, IFungibleTokenOfAccountOnNetwork, INetworkStake, INetworkStats, INetworkStatus, ITransactionOnNetwork, ITransactionStatus } from "./interfaceOfNetwork"; +import { IAccountOnNetwork, IFungibleTokenOfAccountOnNetwork, INetworkConfig, INetworkStake, INetworkStats, INetworkStatus, ITransactionOnNetwork, ITransactionStatus } from "./interfaceOfNetwork"; export interface ITransactionFetcher { /** @@ -26,7 +25,7 @@ export interface IProvider extends ITransactionFetcher { /** * Fetches the Network configuration. */ - getNetworkConfig(): Promise; + getNetworkConfig(): Promise; /** * Fetches the Network status. @@ -146,3 +145,6 @@ export interface ITransactionValue { toString(): string; } export interface IAccountBalance { toString(): string; } export interface ITransactionPayload { encoded(): string; } export interface INonce { valueOf(): number; } +export interface IChainID { valueOf(): string; } +export interface IGasLimit { valueOf(): number; } +export interface IGasPrice { valueOf(): number; } diff --git a/src/interfaceOfNetwork.ts b/src/interfaceOfNetwork.ts index 670b6fd96..c237ff7c9 100644 --- a/src/interfaceOfNetwork.ts +++ b/src/interfaceOfNetwork.ts @@ -1,4 +1,4 @@ -import { IAccountBalance, IBech32Address, IHash, INonce, ITransactionPayload, ITransactionValue } from "./interface"; +import { IAccountBalance, IBech32Address, IChainID, IGasLimit, IHash, INonce, ITransactionPayload, ITransactionValue } from "./interface"; /** * @deprecated This interface will be removed upon the extraction of networkProvider package. @@ -33,6 +33,11 @@ export interface INetworkStake { export interface INetworkStats { } +export interface INetworkConfig { + MinGasLimit: IGasLimit; + ChainID: IChainID; +} + export interface ITransactionOnNetwork { hash: IHash; type: string; diff --git a/src/networkProvider/apiNetworkProvider.ts b/src/networkProvider/apiNetworkProvider.ts index cf2bc4288..e25a2679d 100644 --- a/src/networkProvider/apiNetworkProvider.ts +++ b/src/networkProvider/apiNetworkProvider.ts @@ -1,7 +1,7 @@ import axios, { AxiosRequestConfig } from "axios"; import { AccountOnNetwork } from "./accounts"; import { IAddress, IContractQueryResponse, IDefinitionOfFungibleTokenOnNetwork, IDefinitionOfTokenCollectionOnNetwork, IFungibleTokenOfAccountOnNetwork, IHash, INetworkProvider, INonce, INonFungibleTokenOfAccountOnNetwork, ITransaction, Pagination } from "./interface"; -import { NetworkConfig } from "../networkConfig"; +import { NetworkConfig } from "./networkConfig"; import { NetworkStake } from "./networkStake"; import { Query } from "../smartcontracts"; import { Stats } from "./stats"; diff --git a/src/networkProvider/interface.ts b/src/networkProvider/interface.ts index 121821fee..bfbc8a263 100644 --- a/src/networkProvider/interface.ts +++ b/src/networkProvider/interface.ts @@ -1,6 +1,6 @@ import { BigNumber } from "bignumber.js"; import { AccountOnNetwork } from "./accounts"; -import { NetworkConfig } from "../networkConfig"; +import { NetworkConfig } from "./networkConfig"; import { NetworkStake } from "./networkStake"; import { Query } from "../smartcontracts"; import { Stats } from "./stats"; @@ -195,4 +195,7 @@ export interface INonce extends IHexable { valueOf(): number; } export interface ITransactionPayload { encoded(): string; } export interface IGasLimit { valueOf(): number; } export interface IGasPrice { valueOf(): number; } +export interface IChainID { valueOf(): string; } +export interface IGasPriceModifier { valueOf(): number; } +export interface ITransactionVersion { valueOf(): number; } export interface IAccountBalance { toString(): string; } diff --git a/src/networkConfig.ts b/src/networkProvider/networkConfig.ts similarity index 63% rename from src/networkConfig.ts rename to src/networkProvider/networkConfig.ts index 96daf9c52..690609c4f 100644 --- a/src/networkConfig.ts +++ b/src/networkProvider/networkConfig.ts @@ -1,5 +1,5 @@ import BigNumber from "bignumber.js"; -import { GasPrice, GasLimit, TransactionVersion, ChainID, GasPriceModifier } from "./networkParams"; +import { IChainID, IGasLimit, IGasPrice, IGasPriceModifier, ITransactionVersion } from "./interface"; /** * An object holding Network configuration parameters. @@ -8,7 +8,7 @@ export class NetworkConfig { /** * The chain ID. E.g. "1" for the Mainnet. */ - public ChainID: ChainID; + public ChainID: IChainID; /** * The gas required by the Network to process a byte of the {@link TransactionPayload}. @@ -36,34 +36,34 @@ export class NetworkConfig { /** * */ - public GasPriceModifier: GasPriceModifier; + public GasPriceModifier: IGasPriceModifier; /** * The minimum gas limit required to be set when broadcasting a {@link Transaction}. */ - public MinGasLimit: GasLimit; + public MinGasLimit: IGasLimit; /** * The minimum gas price required to be set when broadcasting a {@link Transaction}. */ - public MinGasPrice: GasPrice; + public MinGasPrice: IGasPrice; /** - * The oldest {@link TransactionVersion} accepted by the Network. + * The oldest transaction version accepted by the Network. */ - public MinTransactionVersion: TransactionVersion; + public MinTransactionVersion: ITransactionVersion; constructor() { - this.ChainID = new ChainID("T"); + this.ChainID = "T"; this.GasPerDataByte = 1500; this.TopUpFactor = 0; this.RoundDuration = 0; this.RoundsPerEpoch = 0; this.TopUpRewardsGradientPoint = new BigNumber(0); - this.MinGasLimit = new GasLimit(50000); - this.MinGasPrice = new GasPrice(1000000000); - this.GasPriceModifier = new GasPriceModifier(1); - this.MinTransactionVersion = new TransactionVersion(1); + this.MinGasLimit = 50000; + this.MinGasPrice = 1000000000; + this.GasPriceModifier = 1; + this.MinTransactionVersion = 1; } /** @@ -72,16 +72,16 @@ export class NetworkConfig { static fromHttpResponse(payload: any): NetworkConfig { let networkConfig = new NetworkConfig(); - networkConfig.ChainID = new ChainID(payload["erd_chain_id"]); + networkConfig.ChainID = String(payload["erd_chain_id"]); networkConfig.GasPerDataByte = Number(payload["erd_gas_per_data_byte"]); networkConfig.TopUpFactor = Number(payload["erd_top_up_factor"]); networkConfig.RoundDuration = Number(payload["erd_round_duration"]); networkConfig.RoundsPerEpoch = Number(payload["erd_rounds_per_epoch"]); networkConfig.TopUpRewardsGradientPoint = new BigNumber(payload["erd_rewards_top_up_gradient_point"]); - networkConfig.MinGasLimit = new GasLimit(payload["erd_min_gas_limit"]); - networkConfig.MinGasPrice = new GasPrice(payload["erd_min_gas_price"]); - networkConfig.MinTransactionVersion = new TransactionVersion(payload["erd_min_transaction_version"]); - networkConfig.GasPriceModifier = new GasPriceModifier(payload["erd_gas_price_modifier"]); + networkConfig.MinGasLimit = Number(payload["erd_min_gas_limit"]); + networkConfig.MinGasPrice = Number(payload["erd_min_gas_price"]); + networkConfig.MinTransactionVersion = Number(payload["erd_min_transaction_version"]); + networkConfig.GasPriceModifier = Number(payload["erd_gas_price_modifier"]); return networkConfig; } diff --git a/src/networkProvider/proxyNetworkProvider.ts b/src/networkProvider/proxyNetworkProvider.ts index 9912ef4a5..07318e170 100644 --- a/src/networkProvider/proxyNetworkProvider.ts +++ b/src/networkProvider/proxyNetworkProvider.ts @@ -1,7 +1,7 @@ import axios, { AxiosRequestConfig } from "axios"; import { AccountOnNetwork } from "./accounts"; import { IAddress, IContractQueryResponse, IDefinitionOfFungibleTokenOnNetwork, IDefinitionOfTokenCollectionOnNetwork, IFungibleTokenOfAccountOnNetwork, IHash, INetworkProvider, INonce, INonFungibleTokenOfAccountOnNetwork, ITransaction, Pagination } from "./interface"; -import { NetworkConfig } from "../networkConfig"; +import { NetworkConfig } from "./networkConfig"; import { NetworkStake } from "./networkStake"; import { Query } from "../smartcontracts"; import { Stats } from "./stats"; diff --git a/src/proxyProvider.ts b/src/proxyProvider.ts index 1fc69f613..711185efa 100644 --- a/src/proxyProvider.ts +++ b/src/proxyProvider.ts @@ -3,7 +3,6 @@ import BigNumber from "bignumber.js"; import { IProvider } from "./interface"; import { Transaction, TransactionHash } from "./transaction"; -import { NetworkConfig } from "./networkConfig"; import { Address } from "./address"; import * as errors from "./errors"; import { Query } from "./smartcontracts/query"; @@ -11,7 +10,7 @@ import { QueryResponse } from "./smartcontracts/queryResponse"; import { Logger } from "./logger"; import { defaultConfig } from "./constants"; import { ProxyNetworkProvider } from "./networkProvider/proxyNetworkProvider"; -import { IAccountOnNetwork, IFungibleTokenOfAccountOnNetwork, INetworkStatus, ITransactionOnNetwork, ITransactionStatus } from "./interfaceOfNetwork"; +import { IAccountOnNetwork, IFungibleTokenOfAccountOnNetwork, INetworkConfig, INetworkStatus, ITransactionOnNetwork, ITransactionStatus } from "./interfaceOfNetwork"; export class ProxyProvider implements IProvider { private url: string; @@ -106,8 +105,8 @@ export class ProxyProvider implements IProvider { /** * Fetches the Network configuration. */ - async getNetworkConfig(): Promise { - return this.doGetGeneric("network/config", (response) => NetworkConfig.fromHttpResponse(response.config)); + async getNetworkConfig(): Promise { + return await this.backingProvider.getNetworkConfig(); } /** diff --git a/src/smartcontracts/interaction.ts b/src/smartcontracts/interaction.ts index 9abf0bae7..8001bafe9 100644 --- a/src/smartcontracts/interaction.ts +++ b/src/smartcontracts/interaction.ts @@ -9,6 +9,7 @@ import { Nonce } from "../nonce"; import { ESDTNFT_TRANSFER_FUNCTION_NAME, ESDT_TRANSFER_FUNCTION_NAME, MULTI_ESDTNFT_TRANSFER_FUNCTION_NAME } from "../constants"; import { Account } from "../account"; import { CallArguments } from "./interface"; +import { IChainID, IGasLimit, IGasPrice } from "../interface"; /** * Internal interface: the smart contract, as seen from the perspective of an {@link Interaction}. @@ -32,9 +33,9 @@ export class Interaction { private nonce: Nonce = new Nonce(0); private value: Balance = Balance.Zero(); - private gasLimit: GasLimit = new GasLimit(0); - private gasPrice: GasPrice | undefined = undefined; - private chainID: ChainID = ChainID.unspecified(); + private gasLimit: IGasLimit = new GasLimit(0); + private gasPrice: IGasPrice | undefined = undefined; + private chainID: IChainID = ChainID.unspecified(); private querent: Address = new Address(); private isWithSingleESDTTransfer: boolean = false; @@ -76,7 +77,7 @@ export class Interaction { return this.tokenTransfers.getTransfers(); } - getGasLimit(): GasLimit { + getGasLimit(): IGasLimit { return this.gasLimit; } @@ -185,7 +186,7 @@ export class Interaction { return this.withNonce(account.getNonceThenIncrement()); } - withChainID(chainID: ChainID): Interaction { + withChainID(chainID: IChainID): Interaction { this.chainID = chainID; return this; } diff --git a/src/smartcontracts/interface.ts b/src/smartcontracts/interface.ts index c8fae891f..5ebfb01cc 100644 --- a/src/smartcontracts/interface.ts +++ b/src/smartcontracts/interface.ts @@ -1,7 +1,7 @@ import { Address } from "../address"; import { Balance } from "../balance"; +import { IChainID, IGasLimit, IGasPrice } from "../interface"; import { ITransactionOnNetwork } from "../interfaceOfNetwork"; -import { ChainID, GasLimit, GasPrice } from "../networkParams"; import { Transaction } from "../transaction"; import { Code } from "./code"; import { CodeMetadata } from "./codeMetadata"; @@ -41,9 +41,9 @@ export interface DeployArguments { codeMetadata?: CodeMetadata; initArguments?: TypedValue[]; value?: Balance; - gasLimit: GasLimit; - gasPrice?: GasPrice; - chainID: ChainID; + gasLimit: IGasLimit; + gasPrice?: IGasPrice; + chainID: IChainID; } export interface UpgradeArguments { @@ -51,19 +51,19 @@ export interface UpgradeArguments { codeMetadata?: CodeMetadata; initArguments?: TypedValue[]; value?: Balance; - gasLimit: GasLimit; - gasPrice?: GasPrice; - chainID: ChainID; + gasLimit: IGasLimit; + gasPrice?: IGasPrice; + chainID: IChainID; } export interface CallArguments { func: ContractFunction; args?: TypedValue[]; value?: Balance; - gasLimit: GasLimit; + gasLimit: IGasLimit; receiver?: Address; - gasPrice?: GasPrice; - chainID: ChainID; + gasPrice?: IGasPrice; + chainID: IChainID; } export interface QueryArguments { diff --git a/src/smartcontracts/wrapper/contractLogger.ts b/src/smartcontracts/wrapper/contractLogger.ts index be789374c..69daed11a 100644 --- a/src/smartcontracts/wrapper/contractLogger.ts +++ b/src/smartcontracts/wrapper/contractLogger.ts @@ -1,5 +1,5 @@ import { Address } from "../../address"; -import { NetworkConfig } from "../../networkConfig"; +import { NetworkConfig } from "../../networkProvider/networkConfig"; import { IContractResults } from "../../interfaceOfNetwork"; import { Transaction } from "../../transaction"; import { Query } from "../query"; diff --git a/src/smartcontracts/wrapper/sendContext.ts b/src/smartcontracts/wrapper/sendContext.ts index 4a921686b..18cead61f 100644 --- a/src/smartcontracts/wrapper/sendContext.ts +++ b/src/smartcontracts/wrapper/sendContext.ts @@ -1,11 +1,11 @@ -import { ChainID, GasLimit } from "../../networkParams"; -import { IProvider } from "../../interface"; +import { GasLimit } from "../../networkParams"; +import { IChainID, IProvider } from "../../interface"; import { ContractLogger } from "./contractLogger"; import { TestWallet } from "../../testutils"; import { Balance } from "../../balance"; import { Err } from "../../errors"; import { getGasFromValue } from "./systemWrapper"; -import { NetworkConfig } from "../../networkConfig"; +import { INetworkConfig } from "../../interfaceOfNetwork"; /** * Stores contextual information which is needed when preparing a transaction. @@ -16,9 +16,9 @@ export class SendContext { private gas_: GasLimit | null; private logger_: ContractLogger | null; private value_: Balance | null; - private networkConfig: NetworkConfig; + private networkConfig: INetworkConfig; - constructor(provider: IProvider, networkConfig: NetworkConfig) { + constructor(provider: IProvider, networkConfig: INetworkConfig) { this.sender_ = null; this.provider_ = provider; this.gas_ = null; @@ -84,7 +84,7 @@ export class SendContext { throw new Err("gas limit not set"); } - getChainID(): ChainID { + getChainID(): IChainID { return this.networkConfig.ChainID; } diff --git a/src/testutils/mockProvider.ts b/src/testutils/mockProvider.ts index 6c31fec2a..f9169dc4e 100644 --- a/src/testutils/mockProvider.ts +++ b/src/testutils/mockProvider.ts @@ -1,6 +1,6 @@ import { IBech32Address, IHash, IProvider } from "../interface"; import { Transaction, TransactionHash } from "../transaction"; -import { NetworkConfig } from "../networkConfig"; +import { NetworkConfig } from "../networkProvider/networkConfig"; import { Address } from "../address"; import { Nonce } from "../nonce"; import { AsyncTimer } from "../asyncTimer"; @@ -13,7 +13,7 @@ import { BalanceBuilder } from "../balanceBuilder"; import BigNumber from "bignumber.js"; import { ContractResultItem, ContractResults } from "../networkProvider/contractResults"; import { TransactionOnNetwork } from "../networkProvider/transactions"; -import { ITransactionOnNetwork, ITransactionStatus } from "../interfaceOfNetwork"; +import { INetworkConfig, ITransactionOnNetwork, ITransactionStatus } from "../interfaceOfNetwork"; import { TransactionStatus } from "../networkProvider/transactionStatus"; import { AccountOnNetwork } from "../networkProvider/accounts"; import { NetworkStatus } from "../networkProvider/networkStatus"; @@ -208,7 +208,7 @@ export class MockProvider implements IProvider { return transaction.status; } - async getNetworkConfig(): Promise { + async getNetworkConfig(): Promise { return new NetworkConfig(); } diff --git a/src/transaction.spec.ts b/src/transaction.spec.ts index 3c1e48bab..4ee143d37 100644 --- a/src/transaction.spec.ts +++ b/src/transaction.spec.ts @@ -5,7 +5,7 @@ import { ChainID, GasLimit, GasPrice, GasPriceModifier, TransactionOptions, Tran import { TransactionPayload } from "./transactionPayload"; import { Balance } from "./balance"; import { loadTestWallets, TestWallet } from "./testutils"; -import { NetworkConfig } from "./networkConfig"; +import { NetworkConfig } from "./networkProvider/networkConfig"; describe("test transaction construction", async () => { diff --git a/src/transaction.ts b/src/transaction.ts index 82bee8dea..8b073ec2c 100644 --- a/src/transaction.ts +++ b/src/transaction.ts @@ -1,5 +1,5 @@ import { BigNumber } from "bignumber.js"; -import { IBech32Address, ISignable, ISignature } from "./interface"; +import { IBech32Address, IChainID, IGasLimit, IGasPrice, ISignable, ISignature } from "./interface"; import { Address } from "./address"; import { Balance } from "./balance"; import { @@ -9,7 +9,7 @@ import { TransactionOptions, TransactionVersion, } from "./networkParams"; -import { NetworkConfig } from "./networkConfig"; +import { NetworkConfig } from "./networkProvider/networkConfig"; import { Nonce } from "./nonce"; import { Signature } from "./signature"; import { guardNotEmpty } from "./utils"; @@ -54,12 +54,12 @@ export class Transaction implements ISignable { /** * The gas price to be used. */ - private gasPrice: GasPrice; + private gasPrice: IGasPrice; /** * The maximum amount of gas to be consumed when processing the transaction. */ - private gasLimit: GasLimit; + private gasLimit: IGasLimit; /** * The payload of the transaction. @@ -69,7 +69,7 @@ export class Transaction implements ISignable { /** * The chain ID of the Network (e.g. "1" for Mainnet). */ - private chainID: ChainID; + private chainID: IChainID; /** * The version, required by the Network in order to correctly interpret the contents of the transaction. @@ -110,10 +110,10 @@ export class Transaction implements ISignable { value?: Balance; receiver: Address; sender?: Address; - gasPrice?: GasPrice; - gasLimit: GasLimit; + gasPrice?: IGasPrice; + gasLimit: IGasLimit; data?: TransactionPayload; - chainID: ChainID; + chainID: IChainID; version?: TransactionVersion; options?: TransactionOptions; }) { @@ -174,19 +174,19 @@ export class Transaction implements ISignable { return this.receiver; } - getGasPrice(): GasPrice { + getGasPrice(): IGasPrice { return this.gasPrice; } - setGasPrice(gasPrice: GasPrice) { + setGasPrice(gasPrice: IGasPrice) { this.gasPrice = gasPrice; } - getGasLimit(): GasLimit { + getGasLimit(): IGasLimit { return this.gasLimit; } - setGasLimit(gasLimit: GasLimit) { + setGasLimit(gasLimit: IGasLimit) { this.gasLimit = gasLimit; } @@ -194,11 +194,11 @@ export class Transaction implements ISignable { return this.data; } - getChainID(): ChainID { + getChainID(): IChainID { return this.chainID; } - setChainID(chainID: ChainID) { + setChainID(chainID: IChainID) { this.chainID = chainID; } From c7d1e4c75abd406316740ea7d1e2c55314783ccd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andrei=20B=C4=83ncioiu?= Date: Wed, 6 Apr 2022 15:53:22 +0300 Subject: [PATCH 4/4] Fix after self-review. --- src/smartcontracts/wrapper/contractLogger.ts | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/smartcontracts/wrapper/contractLogger.ts b/src/smartcontracts/wrapper/contractLogger.ts index 69daed11a..066b9d734 100644 --- a/src/smartcontracts/wrapper/contractLogger.ts +++ b/src/smartcontracts/wrapper/contractLogger.ts @@ -1,6 +1,5 @@ import { Address } from "../../address"; -import { NetworkConfig } from "../../networkProvider/networkConfig"; -import { IContractResults } from "../../interfaceOfNetwork"; +import { IContractResults, INetworkConfig } from "../../interfaceOfNetwork"; import { Transaction } from "../../transaction"; import { Query } from "../query"; import { QueryResponse } from "../queryResponse"; @@ -11,7 +10,7 @@ import { findImmediateResult, findResultingCalls, TypedResult } from "./deprecat */ export class ContractLogger { - synchronizedNetworkConfig(networkConfig: NetworkConfig) { + synchronizedNetworkConfig(networkConfig: INetworkConfig) { console.log(`Synchronized network config - chainID: ${networkConfig.ChainID.valueOf()}`); }