Skip to content

Commit

Permalink
Merge branch 'master' into any-to-eth-smartcontracts
Browse files Browse the repository at this point in the history
  • Loading branch information
vrolland committed Oct 1, 2021
2 parents 9035394 + d26ef8b commit 433fc62
Show file tree
Hide file tree
Showing 16 changed files with 70 additions and 7 deletions.
4 changes: 3 additions & 1 deletion package.json
Expand Up @@ -27,7 +27,9 @@
"publish-prerelease": "yarn lerna publish --preid development --skip-git --yes --canary",
"test": "lerna run test",
"format": "prettier packages/**/src/**/*.ts -w",
"format:check": "prettier packages/**/src/**/*.ts -c"
"format:check": "prettier packages/**/src/**/*.ts -c",
"link:all": "for d in packages/*; do pushd $d; yarn link; popd; done",
"unlink:all": "for d in packages/*; do pushd $d; yarn unlink; popd; done"
},
"devDependencies": {
"@typescript-eslint/eslint-plugin": "4.18.0",
Expand Down
Expand Up @@ -23,6 +23,7 @@ export default class Erc20FeeProxyPaymentNetwork<
'celo',
'alfajores',
'fuse',
'bsctest',
],
public supportedCurrencyType: string = RequestLogicTypes.CURRENCY.ERC20,
) {
Expand Down
Expand Up @@ -14,6 +14,7 @@ const supportedNetworks = [
'matic',
'celo',
'fantom',
'bsctest',
];

/**
Expand Down
13 changes: 10 additions & 3 deletions packages/currency/src/currencyManager.ts
Expand Up @@ -24,14 +24,21 @@ export class CurrencyManager<TMeta = unknown> implements ICurrencyManager<TMeta>

/**
*
* @param knownCurrencies The list of currencies known by the Manager.
* @param inputCurrencies The list of currencies known by the Manager.
* @param legacyTokens A mapping of legacy currency name or network name, in the format { "chainName": {"TOKEN": ["NEW_TOKEN","NEW_CHAIN"]}}
*/
constructor(
knownCurrencies: (CurrencyInput & { id?: string; meta?: TMeta })[],
inputCurrencies: (CurrencyInput & { id?: string; meta?: TMeta })[],
legacyTokens?: LegacyTokenMap,
) {
this.knownCurrencies = knownCurrencies.map(CurrencyManager.fromInput);
this.knownCurrencies = [];
for (const input of inputCurrencies) {
const currency = CurrencyManager.fromInput(input);
if (this.knownCurrencies.some((x) => x.id === currency.id)) {
throw new Error(`Duplicate found: ${currency.id}`);
}
this.knownCurrencies.push(currency);
}
this.legacyTokens = legacyTokens || CurrencyManager.getDefaultLegacyTokens();
}

Expand Down
10 changes: 10 additions & 0 deletions packages/currency/src/erc20/networks/bsctest.ts
@@ -0,0 +1,10 @@
import { TokenMap } from './types';

// List of the supported bsctest network tokens
export const supportedBSCTestERC20: TokenMap = {
'0xEC5dCb5Dbf4B114C9d0F65BcCAb49EC54F6A0867': {
name: 'DAI Token',
symbol: 'DAI',
decimals: 18,
},
};
2 changes: 2 additions & 0 deletions packages/currency/src/erc20/networks/index.ts
Expand Up @@ -4,13 +4,15 @@ import { supportedCeloERC20 } from './celo';
import { supportedMaticERC20 } from './matic';
import type { TokenMap } from './types';
import { supportedFantomTokens } from './fantom';
import { supportedBSCTestERC20 } from './bsctest';

export const supportedNetworks: Record<string, TokenMap> = {
celo: supportedCeloERC20,
rinkeby: supportedRinkebyERC20,
mainnet: supportedMainnetERC20,
matic: supportedMaticERC20,
fantom: supportedFantomTokens,
bsctest: supportedBSCTestERC20,
};

export type { TokenMap };
6 changes: 6 additions & 0 deletions packages/currency/src/native.ts
Expand Up @@ -50,6 +50,12 @@ export const nativeCurrencies = {
name: 'Fantom',
network: 'fantom',
},
{
symbol: 'BNB',
decimals: 18,
name: 'BNB',
network: 'bsctest',
},
{
symbol: 'NEAR',
decimals: 24,
Expand Down
9 changes: 8 additions & 1 deletion packages/currency/test/currencyManager.test.ts
Expand Up @@ -19,6 +19,13 @@ describe('CurrencyManager', () => {
const manager = new CurrencyManager(list);
expect(manager.from('ANY')).toBeDefined();
});

it('fails if there is a duplicate token in the list', () => {
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
const dai = CurrencyManager.getDefaultList().find((x) => x.id === 'DAI-mainnet')!;
const list: CurrencyInput[] = [dai, dai, dai, dai];
expect(() => new CurrencyManager(list)).toThrowError('Duplicate found: DAI-mainnet');
});
});

describe('Accessing currencies', () => {
Expand Down Expand Up @@ -61,7 +68,7 @@ describe('CurrencyManager', () => {
it('access a currency by its id', () => {
expect(defaultManager.from('ETH-rinkeby-rinkeby')).toMatchObject({
symbol: 'ETH-rinkeby',
network: 'rinkeby'
network: 'rinkeby',
});
});

Expand Down
Expand Up @@ -34,6 +34,8 @@ export class MultichainExplorerApiProvider extends ethers.providers.EtherscanPro
return 'https://api.polygonscan.com';
case 'fantom':
return 'https://api.ftmscan.com';
case 'bsctest':
return 'https://api-testnet.bscscan.com/';
// Near
case 'aurora':
return 'https://explorer.mainnet.near.org';
Expand Down
1 change: 1 addition & 0 deletions packages/payment-detection/src/provider.ts
Expand Up @@ -36,6 +36,7 @@ const networkRpcs: Record<string, string> = {
matic: 'https://rpc-mainnet.matic.network/',
fantom: 'https://rpcapi.fantom.network',
fuse: 'https://rpc.fuse.io',
bsctest: 'https://data-seed-prebsc-1-s1.binance.org:8545',
};

/**
Expand Down
Expand Up @@ -28,6 +28,10 @@ export const chainlinkConversionPath = new ContractArtifact<ChainlinkConversionP
address: '0xEEc4790306C43DC00cebbE4D0c36Fadf8634B533',
creationBlockNumber: 18326897,
},
bsctest: {
address: '0xEEc4790306C43DC00cebbE4D0c36Fadf8634B533',
creationBlockNumber: 12759694,
},
},
},
},
Expand Down
Expand Up @@ -86,7 +86,11 @@ export const erc20FeeProxyArtifact = new ContractArtifact<ERC20FeeProxy>(
xdai: {
address: '0x0DfbEe143b42B41eFC5A6F87bFD1fFC78c2f0aC9',
creationBlockNumber: 18326896
}
},
bsctest: {
address: '0x0DfbEe143b42B41eFC5A6F87bFD1fFC78c2f0aC9',
creationBlockNumber: 12759691
},
},
},
},
Expand Down
Expand Up @@ -37,6 +37,10 @@ export const erc20SwapToPayArtifact = new ContractArtifact<ERC20SwapToPay>(
address: '0x1B5077Ca852d39CDDeDaF45FAF1235841854420b',
creationBlockNumber: 7408086,
},
bsctest: {
address: '0x75740D9b5cA3BCCb356CA7f0D0dB71aBE427a835',
creationBlockNumber: 12759707,
},
},
},
},
Expand Down
Expand Up @@ -28,6 +28,10 @@ export const erc20ConversionProxy = new ContractArtifact<Erc20ConversionProxy>(
address: '0xf0f49873C50765239F6f9534Ba13c4fe16eD5f2E',
creationBlockNumber: 18326898,
},
bsctest: {
address: '0xf0f49873C50765239F6f9534Ba13c4fe16eD5f2E',
creationBlockNumber: 12759699,
},
},
},
},
Expand Down
Expand Up @@ -20,6 +20,10 @@ export const erc20SwapConversionArtifact = new ContractArtifact<ERC20SwapToConve
address: '0x38443a9501F20C3bf2BDff14244665F3aEC86bA2',
creationBlockNumber: 8884276,
},
bsctest: {
address: '0x1d6B06C6f7adFd9314BD4C58a6D306261113a1D4',
creationBlockNumber: 12759710,
},
},
},
},
Expand Down
Expand Up @@ -23,7 +23,11 @@ export const ethereumProxyArtifact = new ContractArtifact<EthereumProxy>(
xdai: {
address: '0x27c60BE17e853c47A9F1d280B05365f483c2dFAF',
creationBlockNumber: 18326895
}
},
bsctest: {
address: '0x27c60BE17e853c47A9F1d280B05365f483c2dFAF',
creationBlockNumber: 12759688
},
// FIXME: Temporarily disable this artifact to fix ETH payment detection
// because Matic doesn't support eth_getLogs for many blocks.
// The fix will be to use TheGraph for Ethereum Proxy
Expand Down

0 comments on commit 433fc62

Please sign in to comment.