@ledgerhq/coin-framework 2.4.0 → 2.5.0-next.0
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 +19 -0
- package/jest.config.js +20 -0
- package/lib/derivation.d.ts.map +1 -1
- package/lib/derivation.js +6 -0
- package/lib/derivation.js.map +1 -1
- package/lib/mocks/fixtures/nfts.d.ts +0 -21
- package/lib/mocks/fixtures/nfts.d.ts.map +1 -1
- package/lib/mocks/fixtures/nfts.js +21 -65
- package/lib/mocks/fixtures/nfts.js.map +1 -1
- package/lib/mocks/fixtures/nfts.test.js +11 -2
- package/lib/mocks/fixtures/nfts.test.js.map +1 -1
- package/lib/mocks/fixtures/nftsSamples.d.ts +50 -0
- package/lib/mocks/fixtures/nftsSamples.d.ts.map +1 -0
- package/lib/mocks/fixtures/nftsSamples.js +138 -0
- package/lib/mocks/fixtures/nftsSamples.js.map +1 -0
- package/lib-es/derivation.d.ts.map +1 -1
- package/lib-es/derivation.js +6 -0
- package/lib-es/derivation.js.map +1 -1
- package/lib-es/mocks/fixtures/nfts.d.ts +0 -21
- package/lib-es/mocks/fixtures/nfts.d.ts.map +1 -1
- package/lib-es/mocks/fixtures/nfts.js +20 -64
- package/lib-es/mocks/fixtures/nfts.js.map +1 -1
- package/lib-es/mocks/fixtures/nfts.test.js +10 -1
- package/lib-es/mocks/fixtures/nfts.test.js.map +1 -1
- package/lib-es/mocks/fixtures/nftsSamples.d.ts +50 -0
- package/lib-es/mocks/fixtures/nftsSamples.d.ts.map +1 -0
- package/lib-es/mocks/fixtures/nftsSamples.js +135 -0
- package/lib-es/mocks/fixtures/nftsSamples.js.map +1 -0
- package/package.json +8 -6
- package/src/currencies/__snapshots__/formatCurrencyUnit.test.ts.snap +22 -0
- package/src/derivation.ts +6 -0
- package/src/mocks/fixtures/nfts.test.ts +18 -1
- package/src/mocks/fixtures/nfts.ts +29 -67
- package/src/mocks/fixtures/nftsSamples.ts +140 -0
|
@@ -1,7 +1,10 @@
|
|
|
1
1
|
import { getCryptoCurrencyById } from "@ledgerhq/cryptoassets/index";
|
|
2
|
-
import { createFixtureNFT
|
|
2
|
+
import { createFixtureNFT } from "./nfts";
|
|
3
|
+
import { NFTs, NFTs_BASE, NFTs_POLYGON, NFTs_SOLANA } from "./nftsSamples";
|
|
3
4
|
|
|
4
5
|
const POL = getCryptoCurrencyById("polygon");
|
|
6
|
+
const BASE = getCryptoCurrencyById("base");
|
|
7
|
+
const SOLANA = getCryptoCurrencyById("solana");
|
|
5
8
|
describe("nfts fixtures", () => {
|
|
6
9
|
it("createFixtureNFT", () => {
|
|
7
10
|
const FIXTURE = createFixtureNFT("account-mock");
|
|
@@ -19,5 +22,19 @@ describe("nfts fixtures", () => {
|
|
|
19
22
|
expect(
|
|
20
23
|
NFTs_POLYGON.map(nft => nft.collection.contract).includes(FIXTURE_POL.contract),
|
|
21
24
|
).toBeTruthy();
|
|
25
|
+
|
|
26
|
+
const FIXTURE_BASE = createFixtureNFT("account-mock-base", BASE);
|
|
27
|
+
expect(FIXTURE_BASE.currencyId).toEqual("base");
|
|
28
|
+
|
|
29
|
+
expect(
|
|
30
|
+
NFTs_BASE.map(nft => nft.collection.contract).includes(FIXTURE_BASE.contract),
|
|
31
|
+
).toBeTruthy();
|
|
32
|
+
|
|
33
|
+
const FIXTURE_SOLANA = createFixtureNFT("account-mock-solana", SOLANA);
|
|
34
|
+
expect(FIXTURE_SOLANA.currencyId).toEqual("solana");
|
|
35
|
+
|
|
36
|
+
expect(
|
|
37
|
+
NFTs_SOLANA.map(nft => nft.collection.contract).includes(FIXTURE_SOLANA.contract),
|
|
38
|
+
).toBeTruthy();
|
|
22
39
|
});
|
|
23
40
|
});
|
|
@@ -13,84 +13,46 @@ import Prando from "prando";
|
|
|
13
13
|
import { inferSubOperations } from "../../serialization";
|
|
14
14
|
import { genAddress, genHex } from "../helpers";
|
|
15
15
|
import { encodeNftId } from "../../nft/nftId";
|
|
16
|
+
import {
|
|
17
|
+
NFTs_ETHEREUM_STAX_METADATA,
|
|
18
|
+
NFTs,
|
|
19
|
+
NFTs_POLYGON,
|
|
20
|
+
NFTs_ARBITRUM,
|
|
21
|
+
NFTs_BASE,
|
|
22
|
+
NFTs_SOLANA,
|
|
23
|
+
NFTs_OPTIMISM,
|
|
24
|
+
} from "./nftsSamples";
|
|
16
25
|
|
|
17
26
|
const defaultEthCryptoFamily = cryptocurrenciesById["ethereum"];
|
|
18
27
|
|
|
19
28
|
const MAX_SUPPLY = 1000;
|
|
20
29
|
|
|
21
|
-
|
|
22
|
-
{
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
contract: "0xacf63e56fd08970b43401492a02f6f38b6635c91",
|
|
40
|
-
standard: "ERC721",
|
|
41
|
-
},
|
|
42
|
-
},
|
|
43
|
-
{
|
|
44
|
-
id: "Imaginary Ones",
|
|
45
|
-
collection: {
|
|
46
|
-
contract: "0x716f29b8972d551294d9e02b3eb0fc1107fbf4aa",
|
|
47
|
-
standard: "ERC721",
|
|
48
|
-
},
|
|
49
|
-
},
|
|
50
|
-
];
|
|
51
|
-
|
|
52
|
-
// Ethereum NFTs with the special "staxImage" metadata designed to fit the Ledger Stax screen
|
|
53
|
-
export const NFTs_ETHEREUM_STAX_METADATA = [
|
|
54
|
-
{
|
|
55
|
-
id: "Inspired By Ledger",
|
|
56
|
-
collection: {
|
|
57
|
-
contract: "0x0b51eb9d0e54c562fedc07ceba453f05b70c4b79",
|
|
58
|
-
standard: "ERC1155",
|
|
59
|
-
},
|
|
60
|
-
},
|
|
61
|
-
];
|
|
62
|
-
|
|
63
|
-
export const NFTs_POLYGON = [
|
|
64
|
-
{
|
|
65
|
-
id: "Crypto Unicorns Market",
|
|
66
|
-
collection: {
|
|
67
|
-
contract: "0xdc0479cc5bba033b3e7de9f178607150b3abce1f",
|
|
68
|
-
standard: "ERC721",
|
|
69
|
-
},
|
|
70
|
-
},
|
|
71
|
-
{
|
|
72
|
-
id: "Chicken Derby",
|
|
73
|
-
collection: {
|
|
74
|
-
contract: "0x8634666ba15ada4bbc83b9dbf285f73d9e46e4c2",
|
|
75
|
-
standard: "ERC721",
|
|
76
|
-
},
|
|
77
|
-
},
|
|
78
|
-
{
|
|
79
|
-
id: "y00ts",
|
|
80
|
-
collection: {
|
|
81
|
-
contract: "0x670fd103b1a08628e9557cd66b87ded841115190",
|
|
82
|
-
standard: "ERC721",
|
|
83
|
-
},
|
|
84
|
-
},
|
|
85
|
-
];
|
|
30
|
+
const getNFTsForCurrency = (currencyId: string, useStaxNFTs?: boolean) => {
|
|
31
|
+
switch (currencyId) {
|
|
32
|
+
case "ethereum":
|
|
33
|
+
return useStaxNFTs ? NFTs_ETHEREUM_STAX_METADATA : NFTs;
|
|
34
|
+
case "polygon":
|
|
35
|
+
return NFTs_POLYGON;
|
|
36
|
+
case "arbitrum":
|
|
37
|
+
return NFTs_ARBITRUM;
|
|
38
|
+
case "base":
|
|
39
|
+
return NFTs_BASE;
|
|
40
|
+
case "solana":
|
|
41
|
+
return NFTs_SOLANA;
|
|
42
|
+
case "optimism":
|
|
43
|
+
return NFTs_OPTIMISM;
|
|
44
|
+
default:
|
|
45
|
+
return NFTs;
|
|
46
|
+
}
|
|
47
|
+
};
|
|
86
48
|
|
|
87
49
|
export function createFixtureNFT(
|
|
88
50
|
accountId: string,
|
|
89
51
|
currency: CryptoCurrency = defaultEthCryptoFamily,
|
|
90
52
|
useStaxNFTs?: boolean,
|
|
91
53
|
): ProtoNFT {
|
|
92
|
-
const nfts =
|
|
93
|
-
|
|
54
|
+
const nfts = getNFTsForCurrency(currency.id, useStaxNFTs);
|
|
55
|
+
|
|
94
56
|
const index = Math.floor(Math.random() * nfts.length);
|
|
95
57
|
const tokenId = useStaxNFTs ? String(13) : String(Math.floor(Math.random() * MAX_SUPPLY) + 1);
|
|
96
58
|
const nft = nfts[index];
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
export const NFTs = [
|
|
2
|
+
{
|
|
3
|
+
id: "Pudgy Penguin",
|
|
4
|
+
collection: {
|
|
5
|
+
contract: "0xbd3531da5cf5857e7cfaa92426877b022e612cf8",
|
|
6
|
+
standard: "ERC721",
|
|
7
|
+
},
|
|
8
|
+
},
|
|
9
|
+
{
|
|
10
|
+
id: "Kanpai Panda",
|
|
11
|
+
collection: {
|
|
12
|
+
contract: "0xacf63e56fd08970b43401492a02f6f38b6635c91",
|
|
13
|
+
standard: "ERC721",
|
|
14
|
+
},
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
id: "Bored Ape Yacht Club",
|
|
18
|
+
collection: {
|
|
19
|
+
contract: "0xacf63e56fd08970b43401492a02f6f38b6635c91",
|
|
20
|
+
standard: "ERC721",
|
|
21
|
+
},
|
|
22
|
+
},
|
|
23
|
+
{
|
|
24
|
+
id: "Imaginary Ones",
|
|
25
|
+
collection: {
|
|
26
|
+
contract: "0x716f29b8972d551294d9e02b3eb0fc1107fbf4aa",
|
|
27
|
+
standard: "ERC721",
|
|
28
|
+
},
|
|
29
|
+
},
|
|
30
|
+
];
|
|
31
|
+
|
|
32
|
+
// Ethereum NFTs with the special "staxImage" metadata designed to fit the Ledger Stax screen
|
|
33
|
+
export const NFTs_ETHEREUM_STAX_METADATA = [
|
|
34
|
+
{
|
|
35
|
+
id: "Inspired By Ledger",
|
|
36
|
+
collection: {
|
|
37
|
+
contract: "0x0b51eb9d0e54c562fedc07ceba453f05b70c4b79",
|
|
38
|
+
standard: "ERC1155",
|
|
39
|
+
},
|
|
40
|
+
},
|
|
41
|
+
];
|
|
42
|
+
|
|
43
|
+
export const NFTs_POLYGON = [
|
|
44
|
+
{
|
|
45
|
+
id: "Crypto Unicorns Market",
|
|
46
|
+
collection: {
|
|
47
|
+
contract: "0xdc0479cc5bba033b3e7de9f178607150b3abce1f",
|
|
48
|
+
standard: "ERC721",
|
|
49
|
+
},
|
|
50
|
+
},
|
|
51
|
+
{
|
|
52
|
+
id: "Chicken Derby",
|
|
53
|
+
collection: {
|
|
54
|
+
contract: "0x8634666ba15ada4bbc83b9dbf285f73d9e46e4c2",
|
|
55
|
+
standard: "ERC721",
|
|
56
|
+
},
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
id: "y00ts",
|
|
60
|
+
collection: {
|
|
61
|
+
contract: "0x670fd103b1a08628e9557cd66b87ded841115190",
|
|
62
|
+
standard: "ERC721",
|
|
63
|
+
},
|
|
64
|
+
},
|
|
65
|
+
];
|
|
66
|
+
|
|
67
|
+
export const NFTs_ARBITRUM = [
|
|
68
|
+
{
|
|
69
|
+
id: "Footium Clubs",
|
|
70
|
+
collection: {
|
|
71
|
+
contract: "0xd0a8ba528dfe402d34d34f171e5ff3e65bd4c9d4",
|
|
72
|
+
standard: "ERC721",
|
|
73
|
+
},
|
|
74
|
+
},
|
|
75
|
+
{
|
|
76
|
+
id: "Booga Beras",
|
|
77
|
+
collection: {
|
|
78
|
+
contract: "0x6ba79f573edfe305e7dbd79902bc69436e197834",
|
|
79
|
+
standard: "ERC721",
|
|
80
|
+
},
|
|
81
|
+
},
|
|
82
|
+
];
|
|
83
|
+
|
|
84
|
+
export const NFTs_BASE = [
|
|
85
|
+
{
|
|
86
|
+
id: "PrimeApePlanet",
|
|
87
|
+
collection: {
|
|
88
|
+
contract: "0xa78e2e6f0add0e9b1a9c17cc929270d9ad89478c",
|
|
89
|
+
standard: "ERC721",
|
|
90
|
+
},
|
|
91
|
+
},
|
|
92
|
+
{
|
|
93
|
+
id: "The CryptoDads",
|
|
94
|
+
collection: {
|
|
95
|
+
contract: "0xB2A0fD738D584B47Bee18DA0f3D7c140bf2d1476",
|
|
96
|
+
standard: "ERC721",
|
|
97
|
+
},
|
|
98
|
+
},
|
|
99
|
+
];
|
|
100
|
+
|
|
101
|
+
export const NFTs_OPTIMISM = [
|
|
102
|
+
{
|
|
103
|
+
id: "Optimism Ape Yacht Club",
|
|
104
|
+
collection: {
|
|
105
|
+
contract: "0x0deaac29d8a3d4ebbaaa3ecd3cc97c9def00f720",
|
|
106
|
+
standard: "ERC721",
|
|
107
|
+
},
|
|
108
|
+
},
|
|
109
|
+
{
|
|
110
|
+
id: "Bored Town",
|
|
111
|
+
collection: {
|
|
112
|
+
contract: "0x8e56343adafa62dac9c9a8ac8c742851b0fb8b03",
|
|
113
|
+
standard: "ERC721",
|
|
114
|
+
},
|
|
115
|
+
},
|
|
116
|
+
{
|
|
117
|
+
id: "Apetimism",
|
|
118
|
+
collection: {
|
|
119
|
+
contract: "0x51e5426ede4e2d4c2586371372313b5782387222",
|
|
120
|
+
standard: "ERC721",
|
|
121
|
+
},
|
|
122
|
+
},
|
|
123
|
+
];
|
|
124
|
+
|
|
125
|
+
export const NFTs_SOLANA = [
|
|
126
|
+
{
|
|
127
|
+
id: "Mad Lads",
|
|
128
|
+
collection: {
|
|
129
|
+
contract: "FfqXxHJwnVLMjjyc7RYNPg49urnR67BaboyXoYSwkeQC",
|
|
130
|
+
standard: "ERC721",
|
|
131
|
+
},
|
|
132
|
+
},
|
|
133
|
+
{
|
|
134
|
+
id: "SMB Gen2",
|
|
135
|
+
collection: {
|
|
136
|
+
contract: "HWGwm8ppsSKEB9aWno7DLc1tHD89fQJnmMLHVzAM7vVs",
|
|
137
|
+
standard: "ERC721",
|
|
138
|
+
},
|
|
139
|
+
},
|
|
140
|
+
];
|