@ledgerhq/coin-tester-evm 1.12.0-nightly.20251218023953 → 1.12.0-nightly.20251220023811
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +12 -10
- package/README.md +1 -1
- package/lib/src/anvil.d.ts +1 -1
- package/lib/src/anvil.d.ts.map +1 -1
- package/lib/src/anvil.js +3 -3
- package/lib/src/anvil.js.map +1 -1
- package/lib/src/helpers.d.ts +3 -3
- package/lib/src/helpers.d.ts.map +1 -1
- package/lib/src/helpers.js +2 -3
- package/lib/src/helpers.js.map +1 -1
- package/lib/src/scenarii/blast.d.ts.map +1 -1
- package/lib/src/scenarii/blast.js +5 -10
- package/lib/src/scenarii/blast.js.map +1 -1
- package/lib/src/scenarii/core.d.ts.map +1 -1
- package/lib/src/scenarii/core.js +5 -10
- package/lib/src/scenarii/core.js.map +1 -1
- package/lib/src/scenarii/ethereum.d.ts.map +1 -1
- package/lib/src/scenarii/ethereum.js +5 -10
- package/lib/src/scenarii/ethereum.js.map +1 -1
- package/lib/src/scenarii/polygon.d.ts.map +1 -1
- package/lib/src/scenarii/polygon.js +6 -10
- package/lib/src/scenarii/polygon.js.map +1 -1
- package/lib/src/scenarii/scroll.d.ts.map +1 -1
- package/lib/src/scenarii/scroll.js +5 -10
- package/lib/src/scenarii/scroll.js.map +1 -1
- package/lib/src/scenarii/sonic.d.ts.map +1 -1
- package/lib/src/scenarii/sonic.js +5 -17
- package/lib/src/scenarii/sonic.js.map +1 -1
- package/lib/src/signer.d.ts +7 -0
- package/lib/src/signer.d.ts.map +1 -0
- package/lib/src/signer.js +25 -0
- package/lib/src/signer.js.map +1 -0
- package/lib/tsconfig.tsbuildinfo +1 -1
- package/lib-es/src/anvil.d.ts +1 -1
- package/lib-es/src/anvil.d.ts.map +1 -1
- package/lib-es/src/anvil.js +3 -3
- package/lib-es/src/anvil.js.map +1 -1
- package/lib-es/src/helpers.d.ts +3 -3
- package/lib-es/src/helpers.d.ts.map +1 -1
- package/lib-es/src/helpers.js +2 -3
- package/lib-es/src/helpers.js.map +1 -1
- package/lib-es/src/scenarii/blast.d.ts.map +1 -1
- package/lib-es/src/scenarii/blast.js +5 -10
- package/lib-es/src/scenarii/blast.js.map +1 -1
- package/lib-es/src/scenarii/core.d.ts.map +1 -1
- package/lib-es/src/scenarii/core.js +5 -10
- package/lib-es/src/scenarii/core.js.map +1 -1
- package/lib-es/src/scenarii/ethereum.d.ts.map +1 -1
- package/lib-es/src/scenarii/ethereum.js +5 -10
- package/lib-es/src/scenarii/ethereum.js.map +1 -1
- package/lib-es/src/scenarii/polygon.d.ts.map +1 -1
- package/lib-es/src/scenarii/polygon.js +6 -10
- package/lib-es/src/scenarii/polygon.js.map +1 -1
- package/lib-es/src/scenarii/scroll.d.ts.map +1 -1
- package/lib-es/src/scenarii/scroll.js +5 -10
- package/lib-es/src/scenarii/scroll.js.map +1 -1
- package/lib-es/src/scenarii/sonic.d.ts.map +1 -1
- package/lib-es/src/scenarii/sonic.js +5 -17
- package/lib-es/src/scenarii/sonic.js.map +1 -1
- package/lib-es/src/signer.d.ts +7 -0
- package/lib-es/src/signer.d.ts.map +1 -0
- package/lib-es/src/signer.js +22 -0
- package/lib-es/src/signer.js.map +1 -0
- package/lib-es/tsconfig.tsbuildinfo +1 -1
- package/package.json +11 -10
- package/src/anvil.ts +3 -3
- package/src/helpers.ts +6 -7
- package/src/scenarii/blast.ts +5 -10
- package/src/scenarii/core.ts +6 -10
- package/src/scenarii/ethereum.ts +5 -10
- package/src/scenarii/polygon.ts +6 -10
- package/src/scenarii/scroll.ts +5 -10
- package/src/scenarii/sonic.ts +5 -17
- package/src/scenarii.test.ts +7 -8
- package/src/signer.ts +31 -0
- package/lib/src/constants.d.ts +0 -5
- package/lib/src/constants.d.ts.map +0 -1
- package/lib/src/constants.js +0 -5
- package/lib/src/constants.js.map +0 -1
- package/lib-es/src/constants.d.ts +0 -5
- package/lib-es/src/constants.d.ts.map +0 -1
- package/lib-es/src/constants.js +0 -2
- package/lib-es/src/constants.js.map +0 -1
- package/src/constants.ts +0 -1
|
@@ -1,15 +1,14 @@
|
|
|
1
1
|
import { BigNumber } from "bignumber.js";
|
|
2
2
|
import { ethers } from "ethers";
|
|
3
3
|
import { encodeTokenAccountId } from "@ledgerhq/coin-framework/account/index";
|
|
4
|
-
import { killSpeculos, spawnSpeculos } from "@ledgerhq/coin-tester/signers/speculos";
|
|
5
4
|
import { resetIndexer, indexBlocks, initMswHandlers, setBlock } from "../indexer";
|
|
6
5
|
import { getCoinConfig, setCoinConfig } from "@ledgerhq/coin-evm/config";
|
|
7
6
|
import { makeAccount } from "../fixtures";
|
|
8
7
|
import { VITALIK, callMyDealer, getBridges, sonic } from "../helpers";
|
|
9
|
-
import { defaultNanoApp } from "../constants";
|
|
10
8
|
import { killAnvil, spawnAnvil } from "../anvil";
|
|
11
9
|
import { LiveConfig } from "@ledgerhq/live-config/LiveConfig";
|
|
12
10
|
import { BRIDGED_USDC_ON_SONIC } from "../tokenFixtures";
|
|
11
|
+
import { buildSigner } from "../signer";
|
|
13
12
|
const USDC_ON_SONIC = BRIDGED_USDC_ON_SONIC;
|
|
14
13
|
const makeScenarioTransactions = ({ address }) => {
|
|
15
14
|
const scenarioSendSTransaction = {
|
|
@@ -44,17 +43,8 @@ const makeScenarioTransactions = ({ address }) => {
|
|
|
44
43
|
export const scenarioSonic = {
|
|
45
44
|
name: "Ledger Live Basic S Transactions",
|
|
46
45
|
setup: async () => {
|
|
47
|
-
const
|
|
48
|
-
|
|
49
|
-
libraries: [
|
|
50
|
-
{
|
|
51
|
-
name: "Ethereum",
|
|
52
|
-
endpoint: "/2.4.2/Ethereum/app_1.17.0.elf",
|
|
53
|
-
},
|
|
54
|
-
],
|
|
55
|
-
}),
|
|
56
|
-
spawnAnvil("https://sonic-rpc.publicnode.com"),
|
|
57
|
-
]);
|
|
46
|
+
const signer = await buildSigner();
|
|
47
|
+
await spawnAnvil("https://sonic-rpc.publicnode.com", signer.exportMnemonic());
|
|
58
48
|
setCoinConfig(() => ({
|
|
59
49
|
info: {
|
|
60
50
|
status: {
|
|
@@ -91,8 +81,7 @@ export const scenarioSonic = {
|
|
|
91
81
|
},
|
|
92
82
|
});
|
|
93
83
|
initMswHandlers(getCoinConfig(sonic).info);
|
|
94
|
-
const
|
|
95
|
-
const { currencyBridge, accountBridge, getAddress } = getBridges(transport, "sonic");
|
|
84
|
+
const { currencyBridge, accountBridge, getAddress } = await getBridges("sonic", signer);
|
|
96
85
|
const { address } = await getAddress("", {
|
|
97
86
|
path: "44'/60'/0'/0/0",
|
|
98
87
|
currency: sonic,
|
|
@@ -114,7 +103,6 @@ export const scenarioSonic = {
|
|
|
114
103
|
currencyBridge,
|
|
115
104
|
accountBridge,
|
|
116
105
|
account: scenarioAccount,
|
|
117
|
-
onSignerConfirmation,
|
|
118
106
|
};
|
|
119
107
|
},
|
|
120
108
|
beforeAll: account => {
|
|
@@ -132,7 +120,7 @@ export const scenarioSonic = {
|
|
|
132
120
|
},
|
|
133
121
|
teardown: async () => {
|
|
134
122
|
resetIndexer();
|
|
135
|
-
await
|
|
123
|
+
await killAnvil();
|
|
136
124
|
},
|
|
137
125
|
};
|
|
138
126
|
//# sourceMappingURL=sonic.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sonic.js","sourceRoot":"","sources":["../../../src/scenarii/sonic.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC,OAAO,EAAE,oBAAoB,EAAE,MAAM,wCAAwC,CAAC;AAE9E,OAAO,EAAE,YAAY,EAAE,
|
|
1
|
+
{"version":3,"file":"sonic.js","sourceRoot":"","sources":["../../../src/scenarii/sonic.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"signer.d.ts","sourceRoot":"","sources":["../../src/signer.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,wDAAwD,CAAC;AAIhF,KAAK,SAAS,GAAG,MAAM,GAAG;IAAE,cAAc,EAAE,MAAM,MAAM,CAAA;CAAE,CAAC;AAW3D,wBAAsB,WAAW,IAAI,OAAO,CAAC,SAAS,CAAC,CActD"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { HDNodeWallet, Transaction } from "ethers";
|
|
2
|
+
import { generateMnemonic, mnemonicToSeed } from "bip39";
|
|
3
|
+
function getAddress(wallet) {
|
|
4
|
+
return Promise.resolve({ publicKey: wallet.publicKey, address: wallet.address });
|
|
5
|
+
}
|
|
6
|
+
function signTransaction(wallet, transaction) {
|
|
7
|
+
const signature = wallet.signingKey.sign(Transaction.from(transaction).unsignedHash);
|
|
8
|
+
return Promise.resolve(signature.serialized);
|
|
9
|
+
}
|
|
10
|
+
export async function buildSigner() {
|
|
11
|
+
const mnemonic = generateMnemonic();
|
|
12
|
+
const seed = await mnemonicToSeed(mnemonic);
|
|
13
|
+
const seedHex = seed.toString("hex");
|
|
14
|
+
const root = HDNodeWallet.fromSeed(`0x${seedHex}`);
|
|
15
|
+
const wallet = (path) => root.derivePath(path);
|
|
16
|
+
return {
|
|
17
|
+
exportMnemonic: () => mnemonic,
|
|
18
|
+
getAddress: (path) => getAddress(wallet(path)),
|
|
19
|
+
signTransaction: (path, transaction) => signTransaction(wallet(path), transaction),
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=signer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"signer.js","sourceRoot":"","sources":["../../src/signer.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AACnD,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAIzD,SAAS,UAAU,CAAC,MAAoB;IACtC,OAAO,OAAO,CAAC,OAAO,CAAC,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;AACnF,CAAC;AAED,SAAS,eAAe,CAAC,MAAoB,EAAE,WAAmB;IAChE,MAAM,SAAS,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,YAAY,CAAC,CAAC;IACrF,OAAO,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;AAC/C,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,WAAW;IAC/B,MAAM,QAAQ,GAAG,gBAAgB,EAAE,CAAC;IACpC,MAAM,IAAI,GAAG,MAAM,cAAc,CAAC,QAAQ,CAAC,CAAC;IAC5C,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IACrC,MAAM,IAAI,GAAG,YAAY,CAAC,QAAQ,CAAC,KAAK,OAAO,EAAE,CAAC,CAAC;IAEnD,MAAM,MAAM,GAAG,CAAC,IAAY,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IAEvD,OAAO;QACL,cAAc,EAAE,GAAG,EAAE,CAAC,QAAQ;QAC9B,UAAU,EAAE,CAAC,IAAY,EAAE,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACtD,eAAe,EAAE,CAAC,IAAY,EAAE,WAAmB,EAAE,EAAE,CACrD,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,WAAW,CAAC;KAC7C,CAAC;AACJ,CAAC"}
|