From 3e506339eee00c6485db9fe5e4c17ed41525f9e8 Mon Sep 17 00:00:00 2001 From: Alexandre ABRIOUX Date: Mon, 10 Oct 2022 16:36:01 +0200 Subject: [PATCH 1/3] refactor(advanced-logic): add evm-based PN --- .../src/extensions/abstract-extension.ts | 4 +-- .../src/extensions/content-data.ts | 4 +-- .../payment-network/address-based.ts | 8 ++--- .../payment-network/any-to-erc20-proxy.ts | 5 +-- .../payment-network/any-to-eth-proxy.ts | 5 +-- .../payment-network/any-to-native.ts | 6 ++-- .../extensions/payment-network/any-to-near.ts | 5 +-- .../bitcoin/mainnet-address-based.ts | 7 ++-- .../extensions/payment-network/declarative.ts | 5 +-- .../payment-network/erc20/address-based.ts | 10 +++--- .../erc20/fee-proxy-contract.ts | 32 ++++++----------- .../payment-network/erc20/proxy-contract.ts | 7 ++-- .../payment-network/erc777/stream.ts | 22 ++++++------ .../ethereum/fee-proxy-contract.ts | 15 +++++--- .../payment-network/ethereum/input-data.ts | 34 ++++++++----------- .../extensions/payment-network/evm-based.ts | 21 ++++++++++++ .../payment-network/fee-reference-based.ts | 8 ++--- .../payment-network/native-token.ts | 6 ++-- .../extensions/payment-network/near-native.ts | 4 +-- .../payment-network/reference-based.ts | 6 ++-- 20 files changed, 114 insertions(+), 100 deletions(-) create mode 100644 packages/advanced-logic/src/extensions/payment-network/evm-based.ts diff --git a/packages/advanced-logic/src/extensions/abstract-extension.ts b/packages/advanced-logic/src/extensions/abstract-extension.ts index 23dadbf5d8..38d375a434 100644 --- a/packages/advanced-logic/src/extensions/abstract-extension.ts +++ b/packages/advanced-logic/src/extensions/abstract-extension.ts @@ -9,8 +9,8 @@ export abstract class AbstractExtension { public constructor( public extensionType: ExtensionTypes.TYPE, - public extensionId: ExtensionTypes.ID, - public currentVersion: string, + public readonly extensionId: ExtensionTypes.ID, + public readonly currentVersion: string, ) { this.actions = {}; } diff --git a/packages/advanced-logic/src/extensions/content-data.ts b/packages/advanced-logic/src/extensions/content-data.ts index 02186a19e2..67d90adaad 100644 --- a/packages/advanced-logic/src/extensions/content-data.ts +++ b/packages/advanced-logic/src/extensions/content-data.ts @@ -10,8 +10,8 @@ export default class ContentDataExtension< TCreationParameters extends ExtensionTypes.ContentData.ICreationParameters = ExtensionTypes.ContentData.ICreationParameters, > extends AbstractExtension { public constructor( - public extensionId: ExtensionTypes.ID = ExtensionTypes.ID.CONTENT_DATA, - public currentVersion: string = CURRENT_VERSION, + public readonly extensionId: ExtensionTypes.ID = ExtensionTypes.ID.CONTENT_DATA, + public readonly currentVersion: string = CURRENT_VERSION, ) { super(ExtensionTypes.TYPE.CONTENT_DATA, extensionId, currentVersion); } diff --git a/packages/advanced-logic/src/extensions/payment-network/address-based.ts b/packages/advanced-logic/src/extensions/payment-network/address-based.ts index 6f546a621b..d6cf0bcfef 100644 --- a/packages/advanced-logic/src/extensions/payment-network/address-based.ts +++ b/packages/advanced-logic/src/extensions/payment-network/address-based.ts @@ -11,10 +11,10 @@ export default abstract class AddressBasedPaymentNetwork< TCreationParameters extends ExtensionTypes.PnAddressBased.ICreationParameters = ExtensionTypes.PnAddressBased.ICreationParameters, > extends DeclarativePaymentNetwork { public constructor( - public extensionId: ExtensionTypes.ID, - public currentVersion: string, - public supportedNetworks: string[], - public supportedCurrencyType: RequestLogicTypes.CURRENCY, + public readonly extensionId: ExtensionTypes.ID, + public readonly currentVersion: string, + public readonly supportedNetworks: string[], + public readonly supportedCurrencyType: RequestLogicTypes.CURRENCY, ) { super(extensionId, currentVersion); this.actions = { diff --git a/packages/advanced-logic/src/extensions/payment-network/any-to-erc20-proxy.ts b/packages/advanced-logic/src/extensions/payment-network/any-to-erc20-proxy.ts index 02038f59ec..b075c8e8d6 100644 --- a/packages/advanced-logic/src/extensions/payment-network/any-to-erc20-proxy.ts +++ b/packages/advanced-logic/src/extensions/payment-network/any-to-erc20-proxy.ts @@ -11,8 +11,9 @@ const CURRENT_VERSION = '0.1.0'; export default class AnyToErc20ProxyPaymentNetwork extends Erc20FeeProxyPaymentNetwork { public constructor( private currencyManager: ICurrencyManager, - extensionId: ExtensionTypes.ID = ExtensionTypes.ID.PAYMENT_NETWORK_ANY_TO_ERC20_PROXY, - currentVersion: string = CURRENT_VERSION, + public readonly extensionId: ExtensionTypes.ID = ExtensionTypes.ID + .PAYMENT_NETWORK_ANY_TO_ERC20_PROXY, + public readonly currentVersion: string = CURRENT_VERSION, ) { super( extensionId, diff --git a/packages/advanced-logic/src/extensions/payment-network/any-to-eth-proxy.ts b/packages/advanced-logic/src/extensions/payment-network/any-to-eth-proxy.ts index 94c4dd0d20..1391d1a0ab 100644 --- a/packages/advanced-logic/src/extensions/payment-network/any-to-eth-proxy.ts +++ b/packages/advanced-logic/src/extensions/payment-network/any-to-eth-proxy.ts @@ -11,8 +11,9 @@ const CURRENT_VERSION = '0.2.0'; export default class AnyToEthProxyPaymentNetwork extends EthereumFeeProxyPaymentNetwork { public constructor( private currencyManager: ICurrencyManager, - extensionId: ExtensionTypes.ID = ExtensionTypes.ID.PAYMENT_NETWORK_ANY_TO_ETH_PROXY, - currentVersion: string = CURRENT_VERSION, + public readonly extensionId: ExtensionTypes.ID = ExtensionTypes.ID + .PAYMENT_NETWORK_ANY_TO_ETH_PROXY, + public readonly currentVersion: string = CURRENT_VERSION, ) { super(extensionId, currentVersion, conversionSupportedNetworks); } diff --git a/packages/advanced-logic/src/extensions/payment-network/any-to-native.ts b/packages/advanced-logic/src/extensions/payment-network/any-to-native.ts index a06e0cdb5b..d17f938a8d 100644 --- a/packages/advanced-logic/src/extensions/payment-network/any-to-native.ts +++ b/packages/advanced-logic/src/extensions/payment-network/any-to-native.ts @@ -4,9 +4,9 @@ import { InvalidPaymentAddressError } from './address-based'; export default abstract class AnyToNativeTokenPaymentNetwork extends FeeReferenceBasedPaymentNetwork { public constructor( - extensionId: ExtensionTypes.ID, - currentVersion: string, - supportedNetworks: string[], + public readonly extensionId: ExtensionTypes.ID, + public readonly currentVersion: string, + public readonly supportedNetworks: string[], ) { super(extensionId, currentVersion, supportedNetworks, RequestLogicTypes.CURRENCY.ETH); } diff --git a/packages/advanced-logic/src/extensions/payment-network/any-to-near.ts b/packages/advanced-logic/src/extensions/payment-network/any-to-near.ts index 3915af0ac5..2addd7e204 100644 --- a/packages/advanced-logic/src/extensions/payment-network/any-to-near.ts +++ b/packages/advanced-logic/src/extensions/payment-network/any-to-near.ts @@ -9,8 +9,9 @@ const supportedNetworks = ['aurora', 'aurora-testnet']; export default class AnyToNearPaymentNetwork extends AnyToNativeTokenPaymentNetwork { public constructor( private currencyManager: ICurrencyManager, - extensionId: ExtensionTypes.ID = ExtensionTypes.ID.PAYMENT_NETWORK_ANY_TO_NATIVE_TOKEN, - currentVersion: string = CURRENT_VERSION, + public readonly extensionId: ExtensionTypes.ID = ExtensionTypes.ID + .PAYMENT_NETWORK_ANY_TO_NATIVE_TOKEN, + public readonly currentVersion: string = CURRENT_VERSION, ) { super(extensionId, currentVersion, supportedNetworks); } diff --git a/packages/advanced-logic/src/extensions/payment-network/bitcoin/mainnet-address-based.ts b/packages/advanced-logic/src/extensions/payment-network/bitcoin/mainnet-address-based.ts index 5c1aa7ea93..982c2306e2 100644 --- a/packages/advanced-logic/src/extensions/payment-network/bitcoin/mainnet-address-based.ts +++ b/packages/advanced-logic/src/extensions/payment-network/bitcoin/mainnet-address-based.ts @@ -12,9 +12,10 @@ const BITCOIN_NETWORK = 'mainnet'; */ export default class BitcoinAddressBasedPaymentNetwork extends AddressBasedPaymentNetwork { public constructor( - public extensionId: ExtensionTypes.ID = ExtensionTypes.ID.PAYMENT_NETWORK_BITCOIN_ADDRESS_BASED, - public currentVersion: string = CURRENT_VERSION, - public supportedNetworks: string[] = [BITCOIN_NETWORK], + public readonly extensionId: ExtensionTypes.ID = ExtensionTypes.ID + .PAYMENT_NETWORK_BITCOIN_ADDRESS_BASED, + public readonly currentVersion: string = CURRENT_VERSION, + public readonly supportedNetworks: string[] = [BITCOIN_NETWORK], ) { super(extensionId, currentVersion, supportedNetworks, RequestLogicTypes.CURRENCY.BTC); } diff --git a/packages/advanced-logic/src/extensions/payment-network/declarative.ts b/packages/advanced-logic/src/extensions/payment-network/declarative.ts index 4dd16051f8..6c0738ef1a 100644 --- a/packages/advanced-logic/src/extensions/payment-network/declarative.ts +++ b/packages/advanced-logic/src/extensions/payment-network/declarative.ts @@ -11,8 +11,9 @@ export default class DeclarativePaymentNetwork< TCreationParameters extends ExtensionTypes.PnAnyDeclarative.ICreationParameters = ExtensionTypes.PnAnyDeclarative.ICreationParameters, > extends AbstractExtension { public constructor( - public extensionId: ExtensionTypes.ID = ExtensionTypes.ID.PAYMENT_NETWORK_ANY_DECLARATIVE, - public currentVersion: string = CURRENT_VERSION, + public readonly extensionId: ExtensionTypes.ID = ExtensionTypes.ID + .PAYMENT_NETWORK_ANY_DECLARATIVE, + public readonly currentVersion: string = CURRENT_VERSION, ) { super(ExtensionTypes.TYPE.PAYMENT_NETWORK, extensionId, currentVersion); this.actions = { diff --git a/packages/advanced-logic/src/extensions/payment-network/erc20/address-based.ts b/packages/advanced-logic/src/extensions/payment-network/erc20/address-based.ts index e987247e0b..42f25f926b 100644 --- a/packages/advanced-logic/src/extensions/payment-network/erc20/address-based.ts +++ b/packages/advanced-logic/src/extensions/payment-network/erc20/address-based.ts @@ -1,22 +1,24 @@ import { ExtensionTypes, RequestLogicTypes } from '@requestnetwork/types'; import AddressBasedPaymentNetwork from '../address-based'; +import EvmBasedPaymentNetwork from '../evm-based'; const CURRENT_VERSION = '0.1.0'; -const supportedNetworks = ['mainnet', 'rinkeby', 'private', 'goerli']; - /** * Implementation of the payment network to pay in ERC20 tokens based on an Ethereum address * With this extension one request can have two dedicated Ethereum addresses (one for payment and one for refund) * Every ERC20 ethereum transaction, using the request currency ERC20, that reaches these addresses will be interpreted as payment or refund. * Important: the addresses must be exclusive to the request */ -export default class Erc20AddressBasedPaymentNetwork extends AddressBasedPaymentNetwork { +export default class Erc20AddressBasedPaymentNetwork + extends AddressBasedPaymentNetwork + implements EvmBasedPaymentNetwork +{ public constructor() { super( ExtensionTypes.ID.PAYMENT_NETWORK_ERC20_ADDRESS_BASED, CURRENT_VERSION, - supportedNetworks, + EvmBasedPaymentNetwork.EVM_NETWORKS, RequestLogicTypes.CURRENCY.ERC20, ); } diff --git a/packages/advanced-logic/src/extensions/payment-network/erc20/fee-proxy-contract.ts b/packages/advanced-logic/src/extensions/payment-network/erc20/fee-proxy-contract.ts index 8dae61feba..7bffe40008 100644 --- a/packages/advanced-logic/src/extensions/payment-network/erc20/fee-proxy-contract.ts +++ b/packages/advanced-logic/src/extensions/payment-network/erc20/fee-proxy-contract.ts @@ -1,5 +1,6 @@ import { ExtensionTypes, RequestLogicTypes } from '@requestnetwork/types'; import { FeeReferenceBasedPaymentNetwork } from '../fee-reference-based'; +import EvmBasedPaymentNetwork from '../evm-based'; const CURRENT_VERSION = '0.2.0'; @@ -7,29 +8,16 @@ const CURRENT_VERSION = '0.2.0'; * Implementation of the payment network to pay in ERC20, including third-party fees payment, based on a reference provided to a proxy contract. */ export default class Erc20FeeProxyPaymentNetwork< - TCreationParameters extends ExtensionTypes.PnFeeReferenceBased.ICreationParameters = ExtensionTypes.PnFeeReferenceBased.ICreationParameters, -> extends FeeReferenceBasedPaymentNetwork { + TCreationParameters extends ExtensionTypes.PnFeeReferenceBased.ICreationParameters = ExtensionTypes.PnFeeReferenceBased.ICreationParameters, + > + extends FeeReferenceBasedPaymentNetwork + implements EvmBasedPaymentNetwork +{ public constructor( - extensionId: ExtensionTypes.ID = ExtensionTypes.ID.PAYMENT_NETWORK_ERC20_FEE_PROXY_CONTRACT, - currentVersion: string = CURRENT_VERSION, - public supportedNetworks: string[] = [ - 'mainnet', - 'rinkeby', - 'goerli', - 'private', - 'matic', - 'mumbai', - 'celo', - 'alfajores', - 'fuse', - 'bsctest', - 'bsc', - 'xdai', - 'fantom', - 'arbitrum-rinkeby', - 'arbitrum-one', - 'avalanche', - ], + public readonly extensionId: ExtensionTypes.ID = ExtensionTypes.ID + .PAYMENT_NETWORK_ERC20_FEE_PROXY_CONTRACT, + public readonly currentVersion: string = CURRENT_VERSION, + public readonly supportedNetworks: string[] = EvmBasedPaymentNetwork.EVM_NETWORKS, public supportedCurrencyType: RequestLogicTypes.CURRENCY = RequestLogicTypes.CURRENCY.ERC20, ) { super(extensionId, currentVersion, supportedNetworks, supportedCurrencyType); diff --git a/packages/advanced-logic/src/extensions/payment-network/erc20/proxy-contract.ts b/packages/advanced-logic/src/extensions/payment-network/erc20/proxy-contract.ts index 6841a39fea..8179170ee7 100644 --- a/packages/advanced-logic/src/extensions/payment-network/erc20/proxy-contract.ts +++ b/packages/advanced-logic/src/extensions/payment-network/erc20/proxy-contract.ts @@ -10,9 +10,10 @@ export default class Erc20ProxyPaymentNetwork< TCreationParameters extends ExtensionTypes.PnReferenceBased.ICreationParameters = ExtensionTypes.PnReferenceBased.ICreationParameters, > extends ReferenceBasedPaymentNetwork { public constructor( - public extensionId: ExtensionTypes.ID = ExtensionTypes.ID.PAYMENT_NETWORK_ERC20_PROXY_CONTRACT, - public currentVersion: string = CURRENT_VERSION, - public supportedNetworks: string[] = ['mainnet', 'rinkeby', 'goerli', 'private'], + public readonly extensionId: ExtensionTypes.ID = ExtensionTypes.ID + .PAYMENT_NETWORK_ERC20_PROXY_CONTRACT, + public readonly currentVersion: string = CURRENT_VERSION, + public readonly supportedNetworks: string[] = ['mainnet', 'rinkeby', 'goerli', 'private'], public supportedCurrencyType: RequestLogicTypes.CURRENCY = RequestLogicTypes.CURRENCY.ERC20, ) { super(extensionId, currentVersion, supportedNetworks, supportedCurrencyType); diff --git a/packages/advanced-logic/src/extensions/payment-network/erc777/stream.ts b/packages/advanced-logic/src/extensions/payment-network/erc777/stream.ts index 6edde7451f..2e4071d8f8 100644 --- a/packages/advanced-logic/src/extensions/payment-network/erc777/stream.ts +++ b/packages/advanced-logic/src/extensions/payment-network/erc777/stream.ts @@ -1,25 +1,23 @@ import { ExtensionTypes, RequestLogicTypes, TypesUtils } from '@requestnetwork/types'; import ReferenceBasedPaymentNetwork from '../reference-based'; import Utils from '@requestnetwork/utils'; +import EvmBasedPaymentNetwork from '../evm-based'; const CURRENT_VERSION = '0.1.0'; /** * Implementation of the payment network to pay in ERC777, including third-party fees payment, based on a reference provided to a proxy contract. */ export default class Erc777StreamPaymentNetwork< - TCreationParameters extends ExtensionTypes.PnStreamReferenceBased.ICreationParameters = ExtensionTypes.PnStreamReferenceBased.ICreationParameters, -> extends ReferenceBasedPaymentNetwork { + TCreationParameters extends ExtensionTypes.PnStreamReferenceBased.ICreationParameters = ExtensionTypes.PnStreamReferenceBased.ICreationParameters, + > + extends ReferenceBasedPaymentNetwork + implements EvmBasedPaymentNetwork +{ public constructor( - extensionId: ExtensionTypes.ID = ExtensionTypes.ID.PAYMENT_NETWORK_ERC777_STREAM, - currentVersion: string = CURRENT_VERSION, - public supportedNetworks: string[] = [ - 'matic', - 'xdai', - 'mumbai', - 'rinkeby', - 'goerli', - 'arbitrum-rinkeby', - ], + public readonly extensionId: ExtensionTypes.ID = ExtensionTypes.ID + .PAYMENT_NETWORK_ERC777_STREAM, + public readonly currentVersion: string = CURRENT_VERSION, + public readonly supportedNetworks: string[] = EvmBasedPaymentNetwork.EVM_NETWORKS, public supportedCurrencyType: RequestLogicTypes.CURRENCY = RequestLogicTypes.CURRENCY.ERC777, ) { super(extensionId, currentVersion, supportedNetworks, supportedCurrencyType); diff --git a/packages/advanced-logic/src/extensions/payment-network/ethereum/fee-proxy-contract.ts b/packages/advanced-logic/src/extensions/payment-network/ethereum/fee-proxy-contract.ts index fa5cab7754..20eaf263ae 100644 --- a/packages/advanced-logic/src/extensions/payment-network/ethereum/fee-proxy-contract.ts +++ b/packages/advanced-logic/src/extensions/payment-network/ethereum/fee-proxy-contract.ts @@ -1,5 +1,6 @@ import { ExtensionTypes, RequestLogicTypes } from '@requestnetwork/types'; import { FeeReferenceBasedPaymentNetwork } from '../fee-reference-based'; +import EvmBasedPaymentNetwork from '../evm-based'; const CURRENT_VERSION = '0.2.0'; @@ -7,12 +8,16 @@ const CURRENT_VERSION = '0.2.0'; * Implementation of the payment network to pay in Ethereum, including third-party fees payment, based on a reference provided to a proxy contract. */ export default class EthereumFeeProxyPaymentNetwork< - TCreationParameters extends ExtensionTypes.PnFeeReferenceBased.ICreationParameters = ExtensionTypes.PnFeeReferenceBased.ICreationParameters, -> extends FeeReferenceBasedPaymentNetwork { + TCreationParameters extends ExtensionTypes.PnFeeReferenceBased.ICreationParameters = ExtensionTypes.PnFeeReferenceBased.ICreationParameters, + > + extends FeeReferenceBasedPaymentNetwork + implements EvmBasedPaymentNetwork +{ public constructor( - extensionId: ExtensionTypes.ID = ExtensionTypes.ID.PAYMENT_NETWORK_ETH_FEE_PROXY_CONTRACT, - currentVersion: string = CURRENT_VERSION, - public supportedNetworks: string[] = ['mainnet', 'rinkeby', 'goerli', 'private'], + public readonly extensionId: ExtensionTypes.ID = ExtensionTypes.ID + .PAYMENT_NETWORK_ETH_FEE_PROXY_CONTRACT, + public readonly currentVersion: string = CURRENT_VERSION, + public readonly supportedNetworks: string[] = EvmBasedPaymentNetwork.EVM_NETWORKS, ) { super(extensionId, currentVersion, supportedNetworks, RequestLogicTypes.CURRENCY.ETH); } diff --git a/packages/advanced-logic/src/extensions/payment-network/ethereum/input-data.ts b/packages/advanced-logic/src/extensions/payment-network/ethereum/input-data.ts index 3921a73853..1a0519fd35 100644 --- a/packages/advanced-logic/src/extensions/payment-network/ethereum/input-data.ts +++ b/packages/advanced-logic/src/extensions/payment-network/ethereum/input-data.ts @@ -1,33 +1,27 @@ import { ExtensionTypes, RequestLogicTypes } from '@requestnetwork/types'; import ReferenceBasedPaymentNetwork from '../reference-based'; +import EvmBasedPaymentNetwork from '../evm-based'; const CURRENT_VERSION = '0.3.0'; -const supportedNetworks = [ - 'mainnet', - 'rinkeby', - 'goerli', - 'xdai', - 'sokol', - 'fuse', - 'matic', - 'celo', - 'fantom', - 'bsctest', - 'bsc', - 'arbitrum-rinkeby', - 'arbitrum-one', - 'avalanche', -]; /** * Implementation of the payment network to pay in native token * FIXME: rename into EVMNativePaymentNetwork */ -export default class EthInputPaymentNetwork extends ReferenceBasedPaymentNetwork { +export default class EthInputPaymentNetwork + extends ReferenceBasedPaymentNetwork + implements EvmBasedPaymentNetwork +{ public constructor( - extensionId: ExtensionTypes.ID = ExtensionTypes.ID.PAYMENT_NETWORK_ETH_INPUT_DATA, - currentVersion: string = CURRENT_VERSION, + public readonly extensionId: ExtensionTypes.ID = ExtensionTypes.ID + .PAYMENT_NETWORK_ETH_INPUT_DATA, + public readonly currentVersion: string = CURRENT_VERSION, ) { - super(extensionId, currentVersion, supportedNetworks, RequestLogicTypes.CURRENCY.ETH); + super( + extensionId, + currentVersion, + EvmBasedPaymentNetwork.EVM_NETWORKS, + RequestLogicTypes.CURRENCY.ETH, + ); } } diff --git a/packages/advanced-logic/src/extensions/payment-network/evm-based.ts b/packages/advanced-logic/src/extensions/payment-network/evm-based.ts new file mode 100644 index 0000000000..45358df8c6 --- /dev/null +++ b/packages/advanced-logic/src/extensions/payment-network/evm-based.ts @@ -0,0 +1,21 @@ +export default abstract class EvmBasedPaymentNetwork { + static EVM_NETWORKS = [ + 'alfajores', + 'arbitrum-one', + 'arbitrum-rinkeby', + 'avalanche', + 'bsc', + 'bsctest', + 'celo', + 'fantom', + 'fuse', + 'goerli', + 'mainnet', + 'matic', + 'mumbai', + 'private', + 'rinkeby', + 'sokol', + 'xdai', + ]; +} diff --git a/packages/advanced-logic/src/extensions/payment-network/fee-reference-based.ts b/packages/advanced-logic/src/extensions/payment-network/fee-reference-based.ts index e117464f1f..7febcb9e40 100644 --- a/packages/advanced-logic/src/extensions/payment-network/fee-reference-based.ts +++ b/packages/advanced-logic/src/extensions/payment-network/fee-reference-based.ts @@ -10,10 +10,10 @@ export abstract class FeeReferenceBasedPaymentNetwork< TCreationParameters extends ExtensionTypes.PnFeeReferenceBased.ICreationParameters = ExtensionTypes.PnFeeReferenceBased.ICreationParameters, > extends ReferenceBasedPaymentNetwork { public constructor( - public extensionId: ExtensionTypes.ID, - public currentVersion: string, - public supportedNetworks: string[], - public supportedCurrencyType: RequestLogicTypes.CURRENCY, + public readonly extensionId: ExtensionTypes.ID, + public readonly currentVersion: string, + public readonly supportedNetworks: string[], + public readonly supportedCurrencyType: RequestLogicTypes.CURRENCY, ) { super(extensionId, currentVersion, supportedNetworks, supportedCurrencyType); this.actions = { diff --git a/packages/advanced-logic/src/extensions/payment-network/native-token.ts b/packages/advanced-logic/src/extensions/payment-network/native-token.ts index ca77421436..fae4f1dc91 100644 --- a/packages/advanced-logic/src/extensions/payment-network/native-token.ts +++ b/packages/advanced-logic/src/extensions/payment-network/native-token.ts @@ -8,9 +8,9 @@ import ReferenceBasedPaymentNetwork from './reference-based'; */ export default abstract class NativeTokenPaymentNetwork extends ReferenceBasedPaymentNetwork { public constructor( - extensionId: ExtensionTypes.ID, - currentVersion: string, - supportedNetworks: string[], + public readonly extensionId: ExtensionTypes.ID, + public readonly currentVersion: string, + public readonly supportedNetworks: string[], ) { super(extensionId, currentVersion, supportedNetworks, RequestLogicTypes.CURRENCY.ETH); } diff --git a/packages/advanced-logic/src/extensions/payment-network/near-native.ts b/packages/advanced-logic/src/extensions/payment-network/near-native.ts index fabc5f4755..9c6ff7b279 100644 --- a/packages/advanced-logic/src/extensions/payment-network/near-native.ts +++ b/packages/advanced-logic/src/extensions/payment-network/near-native.ts @@ -10,8 +10,8 @@ const supportedNetworks = ['aurora', 'aurora-testnet']; */ export default class NearNativePaymentNetwork extends NativeTokenPaymentNetwork { public constructor( - extensionId: ExtensionTypes.ID = ExtensionTypes.ID.PAYMENT_NETWORK_NATIVE_TOKEN, - currentVersion: string = CURRENT_VERSION, + public readonly extensionId: ExtensionTypes.ID = ExtensionTypes.ID.PAYMENT_NETWORK_NATIVE_TOKEN, + public readonly currentVersion: string = CURRENT_VERSION, ) { super(extensionId, currentVersion, supportedNetworks); } diff --git a/packages/advanced-logic/src/extensions/payment-network/reference-based.ts b/packages/advanced-logic/src/extensions/payment-network/reference-based.ts index 05fee1f982..70a7eb2156 100644 --- a/packages/advanced-logic/src/extensions/payment-network/reference-based.ts +++ b/packages/advanced-logic/src/extensions/payment-network/reference-based.ts @@ -12,9 +12,9 @@ export default abstract class ReferenceBasedPaymentNetwork< TCreationParameters extends ExtensionTypes.PnReferenceBased.ICreationParameters = ExtensionTypes.PnReferenceBased.ICreationParameters, > extends AddressBasedPaymentNetwork { public constructor( - public extensionId: ExtensionTypes.ID, - public currentVersion: string, - public supportedNetworks: string[], + public readonly extensionId: ExtensionTypes.ID, + public readonly currentVersion: string, + public readonly supportedNetworks: string[], public supportedCurrencyType: RequestLogicTypes.CURRENCY, ) { super(extensionId, currentVersion, supportedNetworks, supportedCurrencyType); From 23ddc2a7cb7ab3ae9e70a30ba7a3e451dcfb7c6f Mon Sep 17 00:00:00 2001 From: Alexandre ABRIOUX Date: Mon, 10 Oct 2022 16:43:12 +0200 Subject: [PATCH 2/3] fix abstract constructor protected --- .../advanced-logic/src/extensions/abstract-extension.ts | 4 ++-- .../src/extensions/payment-network/address-based.ts | 8 ++++---- .../src/extensions/payment-network/any-to-erc20-proxy.ts | 2 +- .../src/extensions/payment-network/any-to-native.ts | 2 +- .../src/extensions/payment-network/fee-reference-based.ts | 2 +- .../src/extensions/payment-network/reference-based.ts | 2 +- 6 files changed, 10 insertions(+), 10 deletions(-) diff --git a/packages/advanced-logic/src/extensions/abstract-extension.ts b/packages/advanced-logic/src/extensions/abstract-extension.ts index 38d375a434..b42d7e461f 100644 --- a/packages/advanced-logic/src/extensions/abstract-extension.ts +++ b/packages/advanced-logic/src/extensions/abstract-extension.ts @@ -7,8 +7,8 @@ import Utils from '@requestnetwork/utils'; export abstract class AbstractExtension { protected actions: ExtensionTypes.SupportedActions; - public constructor( - public extensionType: ExtensionTypes.TYPE, + protected constructor( + public readonly extensionType: ExtensionTypes.TYPE, public readonly extensionId: ExtensionTypes.ID, public readonly currentVersion: string, ) { diff --git a/packages/advanced-logic/src/extensions/payment-network/address-based.ts b/packages/advanced-logic/src/extensions/payment-network/address-based.ts index d6cf0bcfef..94109c298c 100644 --- a/packages/advanced-logic/src/extensions/payment-network/address-based.ts +++ b/packages/advanced-logic/src/extensions/payment-network/address-based.ts @@ -10,7 +10,7 @@ import DeclarativePaymentNetwork from './declarative'; export default abstract class AddressBasedPaymentNetwork< TCreationParameters extends ExtensionTypes.PnAddressBased.ICreationParameters = ExtensionTypes.PnAddressBased.ICreationParameters, > extends DeclarativePaymentNetwork { - public constructor( + protected constructor( public readonly extensionId: ExtensionTypes.ID, public readonly currentVersion: string, public readonly supportedNetworks: string[], @@ -29,7 +29,7 @@ export default abstract class AddressBasedPaymentNetwork< /** * Creates the extensionsData for address based payment networks * - * @param extensions extensions parameters to create + * @param creationParameters extensions parameters to create * * @returns IExtensionCreationAction the extensionsData to be stored in the request */ @@ -58,7 +58,7 @@ export default abstract class AddressBasedPaymentNetwork< /** * Creates the extensionsData to add a payment address * - * @param extensions extensions parameters to create + * @param addPaymentAddressParameters extensions parameters to create * * @returns IAction the extensionsData to be stored in the request */ @@ -82,7 +82,7 @@ export default abstract class AddressBasedPaymentNetwork< /** * Creates the extensionsData to add a refund address * - * @param extensions extensions parameters to create + * @param addRefundAddressParameters extensions parameters to create * * @returns IAction the extensionsData to be stored in the request */ diff --git a/packages/advanced-logic/src/extensions/payment-network/any-to-erc20-proxy.ts b/packages/advanced-logic/src/extensions/payment-network/any-to-erc20-proxy.ts index b075c8e8d6..82862b5c5f 100644 --- a/packages/advanced-logic/src/extensions/payment-network/any-to-erc20-proxy.ts +++ b/packages/advanced-logic/src/extensions/payment-network/any-to-erc20-proxy.ts @@ -10,7 +10,7 @@ const CURRENT_VERSION = '0.1.0'; export default class AnyToErc20ProxyPaymentNetwork extends Erc20FeeProxyPaymentNetwork { public constructor( - private currencyManager: ICurrencyManager, + private readonly currencyManager: ICurrencyManager, public readonly extensionId: ExtensionTypes.ID = ExtensionTypes.ID .PAYMENT_NETWORK_ANY_TO_ERC20_PROXY, public readonly currentVersion: string = CURRENT_VERSION, diff --git a/packages/advanced-logic/src/extensions/payment-network/any-to-native.ts b/packages/advanced-logic/src/extensions/payment-network/any-to-native.ts index d17f938a8d..1b03bd6577 100644 --- a/packages/advanced-logic/src/extensions/payment-network/any-to-native.ts +++ b/packages/advanced-logic/src/extensions/payment-network/any-to-native.ts @@ -3,7 +3,7 @@ import { ExtensionTypes, RequestLogicTypes } from '@requestnetwork/types'; import { InvalidPaymentAddressError } from './address-based'; export default abstract class AnyToNativeTokenPaymentNetwork extends FeeReferenceBasedPaymentNetwork { - public constructor( + protected constructor( public readonly extensionId: ExtensionTypes.ID, public readonly currentVersion: string, public readonly supportedNetworks: string[], diff --git a/packages/advanced-logic/src/extensions/payment-network/fee-reference-based.ts b/packages/advanced-logic/src/extensions/payment-network/fee-reference-based.ts index 7febcb9e40..42602d9d94 100644 --- a/packages/advanced-logic/src/extensions/payment-network/fee-reference-based.ts +++ b/packages/advanced-logic/src/extensions/payment-network/fee-reference-based.ts @@ -9,7 +9,7 @@ import Utils from '@requestnetwork/utils'; export abstract class FeeReferenceBasedPaymentNetwork< TCreationParameters extends ExtensionTypes.PnFeeReferenceBased.ICreationParameters = ExtensionTypes.PnFeeReferenceBased.ICreationParameters, > extends ReferenceBasedPaymentNetwork { - public constructor( + protected constructor( public readonly extensionId: ExtensionTypes.ID, public readonly currentVersion: string, public readonly supportedNetworks: string[], diff --git a/packages/advanced-logic/src/extensions/payment-network/reference-based.ts b/packages/advanced-logic/src/extensions/payment-network/reference-based.ts index 70a7eb2156..071d142902 100644 --- a/packages/advanced-logic/src/extensions/payment-network/reference-based.ts +++ b/packages/advanced-logic/src/extensions/payment-network/reference-based.ts @@ -11,7 +11,7 @@ const eightHexRegex = /[0-9a-f]{16,}/; export default abstract class ReferenceBasedPaymentNetwork< TCreationParameters extends ExtensionTypes.PnReferenceBased.ICreationParameters = ExtensionTypes.PnReferenceBased.ICreationParameters, > extends AddressBasedPaymentNetwork { - public constructor( + protected constructor( public readonly extensionId: ExtensionTypes.ID, public readonly currentVersion: string, public readonly supportedNetworks: string[], From d1deec6fa90913ed0ab61accd39bea3c2da2e473 Mon Sep 17 00:00:00 2001 From: Alexandre ABRIOUX Date: Mon, 10 Oct 2022 16:49:46 +0200 Subject: [PATCH 3/3] missing proxy-contract --- .../extensions/payment-network/erc20/proxy-contract.ts | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/packages/advanced-logic/src/extensions/payment-network/erc20/proxy-contract.ts b/packages/advanced-logic/src/extensions/payment-network/erc20/proxy-contract.ts index 8179170ee7..62f9439386 100644 --- a/packages/advanced-logic/src/extensions/payment-network/erc20/proxy-contract.ts +++ b/packages/advanced-logic/src/extensions/payment-network/erc20/proxy-contract.ts @@ -1,5 +1,6 @@ import { ExtensionTypes, RequestLogicTypes } from '@requestnetwork/types'; import ReferenceBasedPaymentNetwork from '../reference-based'; +import EvmBasedPaymentNetwork from '../evm-based'; const CURRENT_VERSION = '0.1.0'; @@ -7,13 +8,16 @@ const CURRENT_VERSION = '0.1.0'; * Implementation of the payment network to pay in ERC20 based on a reference provided to a proxy contract. */ export default class Erc20ProxyPaymentNetwork< - TCreationParameters extends ExtensionTypes.PnReferenceBased.ICreationParameters = ExtensionTypes.PnReferenceBased.ICreationParameters, -> extends ReferenceBasedPaymentNetwork { + TCreationParameters extends ExtensionTypes.PnReferenceBased.ICreationParameters = ExtensionTypes.PnReferenceBased.ICreationParameters, + > + extends ReferenceBasedPaymentNetwork + implements EvmBasedPaymentNetwork +{ public constructor( public readonly extensionId: ExtensionTypes.ID = ExtensionTypes.ID .PAYMENT_NETWORK_ERC20_PROXY_CONTRACT, public readonly currentVersion: string = CURRENT_VERSION, - public readonly supportedNetworks: string[] = ['mainnet', 'rinkeby', 'goerli', 'private'], + public readonly supportedNetworks: string[] = EvmBasedPaymentNetwork.EVM_NETWORKS, public supportedCurrencyType: RequestLogicTypes.CURRENCY = RequestLogicTypes.CURRENCY.ERC20, ) { super(extensionId, currentVersion, supportedNetworks, supportedCurrencyType);