@silvana-one/nft 0.1.31 → 0.2.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/dist/node/index.cjs +57 -1
- package/dist/node/marketplace/bb.d.ts +18 -0
- package/dist/node/marketplace/bb.js +58 -0
- package/dist/node/marketplace/bb.js.map +1 -1
- package/dist/tsconfig.node.tsbuildinfo +1 -0
- package/dist/web/src/admin/advanced.js.map +1 -0
- package/dist/web/src/admin/index.js.map +1 -0
- package/dist/web/src/contracts/admin.js.map +1 -0
- package/dist/web/src/contracts/collection.js.map +1 -0
- package/dist/web/src/contracts/index.js.map +1 -0
- package/dist/web/src/contracts/nft.js.map +1 -0
- package/dist/web/src/contracts.js.map +1 -0
- package/dist/web/src/index.js.map +1 -0
- package/dist/web/{interfaces → src/interfaces}/admin.js.map +1 -1
- package/dist/web/src/interfaces/approval.js.map +1 -0
- package/dist/web/src/interfaces/collection.js.map +1 -0
- package/dist/web/src/interfaces/encoding.js.map +1 -0
- package/dist/web/src/interfaces/events.js.map +1 -0
- package/dist/web/src/interfaces/index.js.map +1 -0
- package/dist/web/src/interfaces/ownable.js.map +1 -0
- package/dist/web/src/interfaces/owner.js.map +1 -0
- package/dist/web/src/interfaces/pausable.js.map +1 -0
- package/dist/web/src/interfaces/types.js.map +1 -0
- package/dist/web/src/interfaces/update.js.map +1 -0
- package/dist/web/src/marketplace/auction.js.map +1 -0
- package/dist/web/{marketplace → src/marketplace}/bb.d.ts +18 -0
- package/dist/web/{marketplace → src/marketplace}/bb.js +58 -0
- package/dist/web/src/marketplace/bb.js.map +1 -0
- package/dist/web/src/marketplace/bid.js.map +1 -0
- package/dist/web/src/marketplace/index.js.map +1 -0
- package/dist/web/src/marketplace/nft-shares.js.map +1 -0
- package/dist/web/src/marketplace/offer.js.map +1 -0
- package/dist/web/src/marketplace/types.js.map +1 -0
- package/dist/web/src/metadata/address.js.map +1 -0
- package/dist/web/src/metadata/index.js.map +1 -0
- package/dist/web/src/metadata/metadata.js.map +1 -0
- package/dist/web/src/metadata/pin.js.map +1 -0
- package/dist/web/src/metadata/text.js.map +1 -0
- package/dist/web/src/metadata/tree.js.map +1 -0
- package/dist/web/src/util/div.js.map +1 -0
- package/dist/web/src/util/index.js.map +1 -0
- package/dist/web/src/vk.js.map +1 -0
- package/dist/web/src/zkprogram-example/game.js.map +1 -0
- package/dist/web/src/zkprogram-example/index.js.map +1 -0
- package/dist/web/src/zkprogram-example/update.js.map +1 -0
- package/dist/web/test/auction.test.d.ts +1212 -0
- package/dist/web/test/auction.test.js +1248 -0
- package/dist/web/test/auction.test.js.map +1 -0
- package/dist/web/test/bb.test.d.ts +1 -0
- package/dist/web/test/bb.test.js +159 -0
- package/dist/web/test/bb.test.js.map +1 -0
- package/dist/web/test/contract.test.d.ts +1 -0
- package/dist/web/test/contract.test.js +1333 -0
- package/dist/web/test/contract.test.js.map +1 -0
- package/dist/web/test/div.test.d.ts +1 -0
- package/dist/web/test/div.test.js +55 -0
- package/dist/web/test/div.test.js.map +1 -0
- package/dist/web/test/helpers/config.d.ts +4 -0
- package/dist/web/test/helpers/config.js +103 -0
- package/dist/web/test/helpers/config.js.map +1 -0
- package/dist/web/test/helpers/metadata.d.ts +30 -0
- package/dist/web/test/helpers/metadata.js +155 -0
- package/dist/web/test/helpers/metadata.js.map +1 -0
- package/dist/web/test/helpers/utils.d.ts +16 -0
- package/dist/web/test/helpers/utils.js +36 -0
- package/dist/web/test/helpers/utils.js.map +1 -0
- package/dist/web/test/helpers/validators.d.ts +15 -0
- package/dist/web/test/helpers/validators.js +46 -0
- package/dist/web/test/helpers/validators.js.map +1 -0
- package/dist/web/test/metadata.test.d.ts +1 -0
- package/dist/web/test/metadata.test.js +66 -0
- package/dist/web/test/metadata.test.js.map +1 -0
- package/dist/web/test/mint.test.d.ts +1 -0
- package/dist/web/test/mint.test.js +262 -0
- package/dist/web/test/mint.test.js.map +1 -0
- package/dist/web/test/pack.test.d.ts +1 -0
- package/dist/web/test/pack.test.js +141 -0
- package/dist/web/test/pack.test.js.map +1 -0
- package/dist/web/test/zkprogram.test.d.ts +1 -0
- package/dist/web/test/zkprogram.test.js +728 -0
- package/dist/web/test/zkprogram.test.js.map +1 -0
- package/dist/web/tsconfig.web.tsbuildinfo +1 -0
- package/package.json +88 -14
- package/src/marketplace/bb.ts +51 -0
- package/dist/tsconfig.tsbuildinfo +0 -1
- package/dist/tsconfig.web.tsbuildinfo +0 -1
- package/dist/web/admin/advanced.js.map +0 -1
- package/dist/web/admin/index.js.map +0 -1
- package/dist/web/contracts/admin.js.map +0 -1
- package/dist/web/contracts/collection.js.map +0 -1
- package/dist/web/contracts/index.js.map +0 -1
- package/dist/web/contracts/nft.js.map +0 -1
- package/dist/web/contracts.js.map +0 -1
- package/dist/web/index.js.map +0 -1
- package/dist/web/interfaces/approval.js.map +0 -1
- package/dist/web/interfaces/collection.js.map +0 -1
- package/dist/web/interfaces/encoding.js.map +0 -1
- package/dist/web/interfaces/events.js.map +0 -1
- package/dist/web/interfaces/index.js.map +0 -1
- package/dist/web/interfaces/ownable.js.map +0 -1
- package/dist/web/interfaces/owner.js.map +0 -1
- package/dist/web/interfaces/pausable.js.map +0 -1
- package/dist/web/interfaces/types.js.map +0 -1
- package/dist/web/interfaces/update.js.map +0 -1
- package/dist/web/marketplace/auction.js.map +0 -1
- package/dist/web/marketplace/bb.js.map +0 -1
- package/dist/web/marketplace/bid.js.map +0 -1
- package/dist/web/marketplace/index.js.map +0 -1
- package/dist/web/marketplace/nft-shares.js.map +0 -1
- package/dist/web/marketplace/offer.js.map +0 -1
- package/dist/web/marketplace/types.js.map +0 -1
- package/dist/web/metadata/address.js.map +0 -1
- package/dist/web/metadata/index.js.map +0 -1
- package/dist/web/metadata/metadata.js.map +0 -1
- package/dist/web/metadata/pin.js.map +0 -1
- package/dist/web/metadata/text.js.map +0 -1
- package/dist/web/metadata/tree.js.map +0 -1
- package/dist/web/util/div.js.map +0 -1
- package/dist/web/util/index.js.map +0 -1
- package/dist/web/vk.js.map +0 -1
- package/dist/web/zkprogram-example/game.js.map +0 -1
- package/dist/web/zkprogram-example/index.js.map +0 -1
- package/dist/web/zkprogram-example/update.js.map +0 -1
- /package/dist/web/{admin → src/admin}/advanced.d.ts +0 -0
- /package/dist/web/{admin → src/admin}/advanced.js +0 -0
- /package/dist/web/{admin → src/admin}/index.d.ts +0 -0
- /package/dist/web/{admin → src/admin}/index.js +0 -0
- /package/dist/web/{contracts → src/contracts}/admin.d.ts +0 -0
- /package/dist/web/{contracts → src/contracts}/admin.js +0 -0
- /package/dist/web/{contracts → src/contracts}/collection.d.ts +0 -0
- /package/dist/web/{contracts → src/contracts}/collection.js +0 -0
- /package/dist/web/{contracts → src/contracts}/index.d.ts +0 -0
- /package/dist/web/{contracts → src/contracts}/index.js +0 -0
- /package/dist/web/{contracts → src/contracts}/nft.d.ts +0 -0
- /package/dist/web/{contracts → src/contracts}/nft.js +0 -0
- /package/dist/web/{contracts.d.ts → src/contracts.d.ts} +0 -0
- /package/dist/web/{contracts.js → src/contracts.js} +0 -0
- /package/dist/web/{index.d.ts → src/index.d.ts} +0 -0
- /package/dist/web/{index.js → src/index.js} +0 -0
- /package/dist/web/{interfaces → src/interfaces}/admin.d.ts +0 -0
- /package/dist/web/{interfaces → src/interfaces}/admin.js +0 -0
- /package/dist/web/{interfaces → src/interfaces}/approval.d.ts +0 -0
- /package/dist/web/{interfaces → src/interfaces}/approval.js +0 -0
- /package/dist/web/{interfaces → src/interfaces}/collection.d.ts +0 -0
- /package/dist/web/{interfaces → src/interfaces}/collection.js +0 -0
- /package/dist/web/{interfaces → src/interfaces}/encoding.d.ts +0 -0
- /package/dist/web/{interfaces → src/interfaces}/encoding.js +0 -0
- /package/dist/web/{interfaces → src/interfaces}/events.d.ts +0 -0
- /package/dist/web/{interfaces → src/interfaces}/events.js +0 -0
- /package/dist/web/{interfaces → src/interfaces}/index.d.ts +0 -0
- /package/dist/web/{interfaces → src/interfaces}/index.js +0 -0
- /package/dist/web/{interfaces → src/interfaces}/ownable.d.ts +0 -0
- /package/dist/web/{interfaces → src/interfaces}/ownable.js +0 -0
- /package/dist/web/{interfaces → src/interfaces}/owner.d.ts +0 -0
- /package/dist/web/{interfaces → src/interfaces}/owner.js +0 -0
- /package/dist/web/{interfaces → src/interfaces}/pausable.d.ts +0 -0
- /package/dist/web/{interfaces → src/interfaces}/pausable.js +0 -0
- /package/dist/web/{interfaces → src/interfaces}/types.d.ts +0 -0
- /package/dist/web/{interfaces → src/interfaces}/types.js +0 -0
- /package/dist/web/{interfaces → src/interfaces}/update.d.ts +0 -0
- /package/dist/web/{interfaces → src/interfaces}/update.js +0 -0
- /package/dist/web/{marketplace → src/marketplace}/auction.d.ts +0 -0
- /package/dist/web/{marketplace → src/marketplace}/auction.js +0 -0
- /package/dist/web/{marketplace → src/marketplace}/bid.d.ts +0 -0
- /package/dist/web/{marketplace → src/marketplace}/bid.js +0 -0
- /package/dist/web/{marketplace → src/marketplace}/index.d.ts +0 -0
- /package/dist/web/{marketplace → src/marketplace}/index.js +0 -0
- /package/dist/web/{marketplace → src/marketplace}/nft-shares.d.ts +0 -0
- /package/dist/web/{marketplace → src/marketplace}/nft-shares.js +0 -0
- /package/dist/web/{marketplace → src/marketplace}/offer.d.ts +0 -0
- /package/dist/web/{marketplace → src/marketplace}/offer.js +0 -0
- /package/dist/web/{marketplace → src/marketplace}/types.d.ts +0 -0
- /package/dist/web/{marketplace → src/marketplace}/types.js +0 -0
- /package/dist/web/{metadata → src/metadata}/address.d.ts +0 -0
- /package/dist/web/{metadata → src/metadata}/address.js +0 -0
- /package/dist/web/{metadata → src/metadata}/index.d.ts +0 -0
- /package/dist/web/{metadata → src/metadata}/index.js +0 -0
- /package/dist/web/{metadata → src/metadata}/metadata.d.ts +0 -0
- /package/dist/web/{metadata → src/metadata}/metadata.js +0 -0
- /package/dist/web/{metadata → src/metadata}/pin.d.ts +0 -0
- /package/dist/web/{metadata → src/metadata}/pin.js +0 -0
- /package/dist/web/{metadata → src/metadata}/text.d.ts +0 -0
- /package/dist/web/{metadata → src/metadata}/text.js +0 -0
- /package/dist/web/{metadata → src/metadata}/tree.d.ts +0 -0
- /package/dist/web/{metadata → src/metadata}/tree.js +0 -0
- /package/dist/web/{util → src/util}/div.d.ts +0 -0
- /package/dist/web/{util → src/util}/div.js +0 -0
- /package/dist/web/{util → src/util}/index.d.ts +0 -0
- /package/dist/web/{util → src/util}/index.js +0 -0
- /package/dist/web/{vk.d.ts → src/vk.d.ts} +0 -0
- /package/dist/web/{vk.js → src/vk.js} +0 -0
- /package/dist/web/{zkprogram-example → src/zkprogram-example}/game.d.ts +0 -0
- /package/dist/web/{zkprogram-example → src/zkprogram-example}/game.js +0 -0
- /package/dist/web/{zkprogram-example → src/zkprogram-example}/index.d.ts +0 -0
- /package/dist/web/{zkprogram-example → src/zkprogram-example}/index.js +0 -0
- /package/dist/web/{zkprogram-example → src/zkprogram-example}/update.d.ts +0 -0
- /package/dist/web/{zkprogram-example → src/zkprogram-example}/update.js +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"contract.test.js","sourceRoot":"","sources":["../../../test/contract.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { describe, it } from "node:test";
|
|
2
|
+
import assert from "node:assert";
|
|
3
|
+
import { UInt64 } from "o1js";
|
|
4
|
+
import { mulDiv } from "../src/index.js";
|
|
5
|
+
const NUMBER_OF_ITERATIONS = 10000;
|
|
6
|
+
const max = UInt64.MAXINT().toBigInt();
|
|
7
|
+
const randomUInt64 = () => {
|
|
8
|
+
const randomBytes = new Uint8Array(8);
|
|
9
|
+
crypto.getRandomValues(randomBytes);
|
|
10
|
+
const randomBigInt = BigInt("0x" +
|
|
11
|
+
Array.from(randomBytes)
|
|
12
|
+
.map((b) => b.toString(16).padStart(2, "0"))
|
|
13
|
+
.join(""));
|
|
14
|
+
if (randomBigInt > max) {
|
|
15
|
+
throw new Error("Random number is greater than max");
|
|
16
|
+
}
|
|
17
|
+
return UInt64.from(randomBigInt);
|
|
18
|
+
};
|
|
19
|
+
describe("Test mulDiv", async () => {
|
|
20
|
+
it("should use mulDiv", async () => {
|
|
21
|
+
let count = 0;
|
|
22
|
+
for (let i = 0; i < NUMBER_OF_ITERATIONS; i++) {
|
|
23
|
+
const value = randomUInt64();
|
|
24
|
+
const multiplier = randomUInt64();
|
|
25
|
+
const denominator = randomUInt64();
|
|
26
|
+
try {
|
|
27
|
+
const expectedValue = (value.toBigInt() * multiplier.toBigInt()) / denominator.toBigInt();
|
|
28
|
+
const expectedRemainder = (value.toBigInt() * multiplier.toBigInt()) % denominator.toBigInt();
|
|
29
|
+
if (expectedValue > max) {
|
|
30
|
+
count++;
|
|
31
|
+
continue;
|
|
32
|
+
}
|
|
33
|
+
const result = mulDiv({ value, multiplier, denominator });
|
|
34
|
+
assert.strictEqual(result.result.toBigInt(), expectedValue);
|
|
35
|
+
assert.strictEqual(result.remainder.toBigInt(), expectedRemainder);
|
|
36
|
+
assert.strictEqual(result.result.toBigInt() <= max, true);
|
|
37
|
+
assert.strictEqual(result.remainder.toBigInt() < denominator.toBigInt(), true);
|
|
38
|
+
assert.strictEqual(result.remainder.toBigInt() < denominator.toBigInt(), true);
|
|
39
|
+
}
|
|
40
|
+
catch (e) {
|
|
41
|
+
console.log(e);
|
|
42
|
+
console.log({
|
|
43
|
+
value: value.toBigInt(),
|
|
44
|
+
multiplier: multiplier.toBigInt(),
|
|
45
|
+
denominator: denominator.toBigInt(),
|
|
46
|
+
max: max,
|
|
47
|
+
expectedValue: (value.toBigInt() * multiplier.toBigInt()) / denominator.toBigInt(),
|
|
48
|
+
expectedRemainder: (value.toBigInt() * multiplier.toBigInt()) % denominator.toBigInt(),
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
//console.log("count", count);
|
|
53
|
+
});
|
|
54
|
+
});
|
|
55
|
+
//# sourceMappingURL=div.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"div.test.js","sourceRoot":"","sources":["../../../test/div.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
export const TEST_ACCOUNTS = [
|
|
2
|
+
{
|
|
3
|
+
privateKey: process.env.TEST_ACCOUNT_1_PRIVATE_KEY,
|
|
4
|
+
publicKey: process.env.TEST_ACCOUNT_1_PUBLIC_KEY,
|
|
5
|
+
},
|
|
6
|
+
{
|
|
7
|
+
privateKey: process.env.TEST_ACCOUNT_2_PRIVATE_KEY,
|
|
8
|
+
publicKey: process.env.TEST_ACCOUNT_2_PUBLIC_KEY,
|
|
9
|
+
},
|
|
10
|
+
{
|
|
11
|
+
privateKey: process.env.TEST_ACCOUNT_3_PRIVATE_KEY,
|
|
12
|
+
publicKey: process.env.TEST_ACCOUNT_3_PUBLIC_KEY,
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
privateKey: process.env.TEST_ACCOUNT_4_PRIVATE_KEY,
|
|
16
|
+
publicKey: process.env.TEST_ACCOUNT_4_PUBLIC_KEY,
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
privateKey: process.env.TEST_ACCOUNT_5_PRIVATE_KEY,
|
|
20
|
+
publicKey: process.env.TEST_ACCOUNT_5_PUBLIC_KEY,
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
privateKey: process.env.TEST_ACCOUNT_6_PRIVATE_KEY,
|
|
24
|
+
publicKey: process.env.TEST_ACCOUNT_6_PUBLIC_KEY,
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
privateKey: process.env.TEST_ACCOUNT_7_PRIVATE_KEY,
|
|
28
|
+
publicKey: process.env.TEST_ACCOUNT_7_PUBLIC_KEY,
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
privateKey: process.env.TEST_ACCOUNT_8_PRIVATE_KEY,
|
|
32
|
+
publicKey: process.env.TEST_ACCOUNT_8_PUBLIC_KEY,
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
privateKey: process.env.TEST_ACCOUNT_9_PRIVATE_KEY,
|
|
36
|
+
publicKey: process.env.TEST_ACCOUNT_9_PUBLIC_KEY,
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
privateKey: process.env.TEST_ACCOUNT_10_PRIVATE_KEY,
|
|
40
|
+
publicKey: process.env.TEST_ACCOUNT_10_PUBLIC_KEY,
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
privateKey: process.env.TEST_ACCOUNT_11_PRIVATE_KEY,
|
|
44
|
+
publicKey: process.env.TEST_ACCOUNT_11_PUBLIC_KEY,
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
privateKey: process.env.TEST_ACCOUNT_12_PRIVATE_KEY,
|
|
48
|
+
publicKey: process.env.TEST_ACCOUNT_12_PUBLIC_KEY,
|
|
49
|
+
},
|
|
50
|
+
{
|
|
51
|
+
privateKey: process.env.TEST_ACCOUNT_13_PRIVATE_KEY,
|
|
52
|
+
publicKey: process.env.TEST_ACCOUNT_13_PUBLIC_KEY,
|
|
53
|
+
},
|
|
54
|
+
{
|
|
55
|
+
privateKey: process.env.TEST_ACCOUNT_14_PRIVATE_KEY,
|
|
56
|
+
publicKey: process.env.TEST_ACCOUNT_14_PUBLIC_KEY,
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
privateKey: process.env.TEST_ACCOUNT_15_PRIVATE_KEY,
|
|
60
|
+
publicKey: process.env.TEST_ACCOUNT_15_PUBLIC_KEY,
|
|
61
|
+
},
|
|
62
|
+
{
|
|
63
|
+
privateKey: process.env.TEST_ACCOUNT_16_PRIVATE_KEY,
|
|
64
|
+
publicKey: process.env.TEST_ACCOUNT_16_PUBLIC_KEY,
|
|
65
|
+
},
|
|
66
|
+
{
|
|
67
|
+
privateKey: process.env.TEST_ACCOUNT_17_PRIVATE_KEY,
|
|
68
|
+
publicKey: process.env.TEST_ACCOUNT_17_PUBLIC_KEY,
|
|
69
|
+
},
|
|
70
|
+
{
|
|
71
|
+
privateKey: process.env.TEST_ACCOUNT_18_PRIVATE_KEY,
|
|
72
|
+
publicKey: process.env.TEST_ACCOUNT_18_PUBLIC_KEY,
|
|
73
|
+
},
|
|
74
|
+
{
|
|
75
|
+
privateKey: process.env.TEST_ACCOUNT_19_PRIVATE_KEY,
|
|
76
|
+
publicKey: process.env.TEST_ACCOUNT_19_PUBLIC_KEY,
|
|
77
|
+
},
|
|
78
|
+
{
|
|
79
|
+
privateKey: process.env.TEST_ACCOUNT_20_PRIVATE_KEY,
|
|
80
|
+
publicKey: process.env.TEST_ACCOUNT_20_PUBLIC_KEY,
|
|
81
|
+
},
|
|
82
|
+
{
|
|
83
|
+
privateKey: process.env.TEST_ACCOUNT_21_PRIVATE_KEY,
|
|
84
|
+
publicKey: process.env.TEST_ACCOUNT_21_PUBLIC_KEY,
|
|
85
|
+
},
|
|
86
|
+
{
|
|
87
|
+
privateKey: process.env.TEST_ACCOUNT_22_PRIVATE_KEY,
|
|
88
|
+
publicKey: process.env.TEST_ACCOUNT_22_PUBLIC_KEY,
|
|
89
|
+
},
|
|
90
|
+
{
|
|
91
|
+
privateKey: process.env.TEST_ACCOUNT_23_PRIVATE_KEY,
|
|
92
|
+
publicKey: process.env.TEST_ACCOUNT_23_PUBLIC_KEY,
|
|
93
|
+
},
|
|
94
|
+
{
|
|
95
|
+
privateKey: process.env.TEST_ACCOUNT_24_PRIVATE_KEY,
|
|
96
|
+
publicKey: process.env.TEST_ACCOUNT_24_PUBLIC_KEY,
|
|
97
|
+
},
|
|
98
|
+
{
|
|
99
|
+
privateKey: process.env.TEST_ACCOUNT_25_PRIVATE_KEY,
|
|
100
|
+
publicKey: process.env.TEST_ACCOUNT_25_PUBLIC_KEY,
|
|
101
|
+
},
|
|
102
|
+
];
|
|
103
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../../../test/helpers/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { Field, UInt64, PublicKey } from "o1js";
|
|
2
|
+
import { Metadata, MetadataTree } from "../../src/index.js";
|
|
3
|
+
import { IndexedMapSerialized } from "@silvana-one/mina-utils";
|
|
4
|
+
export { randomMetadata, randomName, randomText, randomImage, randomBanner, randomURL, randomField, randomNumber, randomAddress, randomTree, randomMap, };
|
|
5
|
+
declare function randomMetadata(params?: {
|
|
6
|
+
includePrivateTraits?: boolean;
|
|
7
|
+
includeBanner?: boolean;
|
|
8
|
+
pin?: boolean;
|
|
9
|
+
}): Promise<{
|
|
10
|
+
name: string;
|
|
11
|
+
ipfsHash?: string;
|
|
12
|
+
metadataRoot: Field;
|
|
13
|
+
privateMetadata: string;
|
|
14
|
+
serializedMap: IndexedMapSerialized;
|
|
15
|
+
metadata: Metadata;
|
|
16
|
+
data: object;
|
|
17
|
+
}>;
|
|
18
|
+
declare function randomName(): string;
|
|
19
|
+
declare function randomText(): string;
|
|
20
|
+
declare function randomImage(): string;
|
|
21
|
+
declare function randomBanner(): string;
|
|
22
|
+
declare function randomURL(): string;
|
|
23
|
+
declare function randomField(): Field;
|
|
24
|
+
declare function randomNumber(): UInt64;
|
|
25
|
+
declare function randomAddress(): PublicKey;
|
|
26
|
+
declare function randomTree(): MetadataTree;
|
|
27
|
+
declare function randomMap(params?: {
|
|
28
|
+
includePrivateTraits?: boolean;
|
|
29
|
+
includeBanner?: boolean;
|
|
30
|
+
}): Metadata;
|
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
import { Field, UInt64, PrivateKey } from "o1js";
|
|
2
|
+
import { Metadata, MetadataTree, MetadataFieldTypeValues, } from "../../src/index.js";
|
|
3
|
+
import { uniqueNamesGenerator, names, adjectives, colors, animals, countries, languages, } from "unique-names-generator";
|
|
4
|
+
import { serializeIndexedMap, pinJSON, } from "@silvana-one/mina-utils";
|
|
5
|
+
export { randomMetadata, randomName, randomText, randomImage, randomBanner, randomURL, randomField, randomNumber, randomAddress, randomTree, randomMap, };
|
|
6
|
+
const NUMBER_OF_TRAITS = 5;
|
|
7
|
+
const NUMBER_OF_TREE_ENTRIES = 20;
|
|
8
|
+
async function randomMetadata(params = {}) {
|
|
9
|
+
const { includePrivateTraits = true, includeBanner = false, pin = true, } = params;
|
|
10
|
+
const metadata = randomMap({ includePrivateTraits, includeBanner });
|
|
11
|
+
const privateMetadata = JSON.stringify(metadata.toJSON(true), null, 2);
|
|
12
|
+
let ipfsHash = undefined;
|
|
13
|
+
if (pin) {
|
|
14
|
+
ipfsHash = pin
|
|
15
|
+
? await pinJSON({
|
|
16
|
+
data: metadata.toJSON(false),
|
|
17
|
+
name: "metadata",
|
|
18
|
+
})
|
|
19
|
+
: undefined;
|
|
20
|
+
if (!ipfsHash)
|
|
21
|
+
throw new Error("Failed to pin metadata");
|
|
22
|
+
}
|
|
23
|
+
return {
|
|
24
|
+
name: metadata.name,
|
|
25
|
+
ipfsHash,
|
|
26
|
+
metadataRoot: metadata.map.root,
|
|
27
|
+
privateMetadata,
|
|
28
|
+
serializedMap: serializeIndexedMap(metadata.map),
|
|
29
|
+
metadata,
|
|
30
|
+
data: metadata.toJSON(false),
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
function randomName() {
|
|
34
|
+
let counter = 0;
|
|
35
|
+
while (true) {
|
|
36
|
+
const name = uniqueNamesGenerator({
|
|
37
|
+
dictionaries: [names],
|
|
38
|
+
length: 1,
|
|
39
|
+
});
|
|
40
|
+
if (name.length <= 30)
|
|
41
|
+
return name;
|
|
42
|
+
counter++;
|
|
43
|
+
if (counter > 1000)
|
|
44
|
+
throw new Error("Too many retries");
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
function randomText() {
|
|
48
|
+
const length = Math.floor(Math.random() * 20) + 1;
|
|
49
|
+
const words = Array.from({ length }, () => uniqueNamesGenerator({
|
|
50
|
+
dictionaries: [
|
|
51
|
+
...[adjectives, names, colors, animals, countries, languages].sort(() => Math.random() - 0.5),
|
|
52
|
+
],
|
|
53
|
+
length: 6,
|
|
54
|
+
separator: " ",
|
|
55
|
+
}));
|
|
56
|
+
const text = words
|
|
57
|
+
.map((word) => word.charAt(0).toUpperCase() + word.slice(1))
|
|
58
|
+
.join(". ");
|
|
59
|
+
return text;
|
|
60
|
+
}
|
|
61
|
+
function randomImage() {
|
|
62
|
+
return `https://picsum.photos/seed/${Math.floor(Math.random() * 10000000)}/540/670`;
|
|
63
|
+
}
|
|
64
|
+
function randomBanner() {
|
|
65
|
+
return `https://picsum.photos/seed/${Math.floor(Math.random() * 10000000)}/1920/300`;
|
|
66
|
+
}
|
|
67
|
+
function randomURL() {
|
|
68
|
+
return `https://example.com/${randomName()}`;
|
|
69
|
+
}
|
|
70
|
+
function randomField() {
|
|
71
|
+
return Field.random();
|
|
72
|
+
}
|
|
73
|
+
function randomNumber() {
|
|
74
|
+
const max = UInt64.MAXINT().toBigInt();
|
|
75
|
+
const randomBytes = new Uint8Array(8);
|
|
76
|
+
crypto.getRandomValues(randomBytes);
|
|
77
|
+
const randomBigInt = BigInt("0x" +
|
|
78
|
+
Array.from(randomBytes)
|
|
79
|
+
.map((b) => b.toString(16).padStart(2, "0"))
|
|
80
|
+
.join(""));
|
|
81
|
+
if (randomBigInt > max) {
|
|
82
|
+
throw new Error("Random number is greater than max");
|
|
83
|
+
}
|
|
84
|
+
return UInt64.from(randomBigInt);
|
|
85
|
+
}
|
|
86
|
+
function randomAddress() {
|
|
87
|
+
return PrivateKey.random().toPublicKey();
|
|
88
|
+
}
|
|
89
|
+
function randomTree() {
|
|
90
|
+
const height = Math.floor(Math.random() * 240) + 10;
|
|
91
|
+
const numberOfElements = Math.floor(Math.random() * NUMBER_OF_TREE_ENTRIES);
|
|
92
|
+
const values = Array.from({ length: numberOfElements }, (_, i) => ({
|
|
93
|
+
key: BigInt(i),
|
|
94
|
+
value: Field.random(),
|
|
95
|
+
}));
|
|
96
|
+
const tree = new MetadataTree(height, values);
|
|
97
|
+
return tree;
|
|
98
|
+
}
|
|
99
|
+
function randomMap(params = {}) {
|
|
100
|
+
const { includePrivateTraits = true, includeBanner = false } = params;
|
|
101
|
+
const map = new Metadata({
|
|
102
|
+
name: randomName(),
|
|
103
|
+
description: Math.random() < 0.7 ? randomText() : undefined,
|
|
104
|
+
image: randomImage(),
|
|
105
|
+
banner: includeBanner ? randomBanner() : undefined,
|
|
106
|
+
});
|
|
107
|
+
const numberOfTraits = Math.floor(Math.random() * NUMBER_OF_TRAITS);
|
|
108
|
+
for (let i = 0; i < numberOfTraits; i++) {
|
|
109
|
+
const type = Object.keys(MetadataFieldTypeValues)[Math.floor(Math.random() * Object.keys(MetadataFieldTypeValues).length)];
|
|
110
|
+
let value;
|
|
111
|
+
switch (type) {
|
|
112
|
+
case "string":
|
|
113
|
+
value = randomName();
|
|
114
|
+
break;
|
|
115
|
+
case "text":
|
|
116
|
+
value = randomText();
|
|
117
|
+
break;
|
|
118
|
+
case "image":
|
|
119
|
+
value = randomImage();
|
|
120
|
+
break;
|
|
121
|
+
case "url":
|
|
122
|
+
value = randomURL();
|
|
123
|
+
break;
|
|
124
|
+
case "field":
|
|
125
|
+
value = randomField();
|
|
126
|
+
break;
|
|
127
|
+
case "number":
|
|
128
|
+
value = randomNumber();
|
|
129
|
+
break;
|
|
130
|
+
case "address":
|
|
131
|
+
value = randomAddress();
|
|
132
|
+
break;
|
|
133
|
+
case "map":
|
|
134
|
+
value = randomMap();
|
|
135
|
+
break;
|
|
136
|
+
case "tree":
|
|
137
|
+
value = randomTree();
|
|
138
|
+
break;
|
|
139
|
+
default:
|
|
140
|
+
throw new Error(`Unknown type: ${type}`);
|
|
141
|
+
}
|
|
142
|
+
map.addTrait({
|
|
143
|
+
key: randomName(),
|
|
144
|
+
type,
|
|
145
|
+
value,
|
|
146
|
+
isPrivate: includePrivateTraits
|
|
147
|
+
? Math.random() < 0.3
|
|
148
|
+
? undefined
|
|
149
|
+
: Math.random() < 0.5
|
|
150
|
+
: false,
|
|
151
|
+
});
|
|
152
|
+
}
|
|
153
|
+
return map;
|
|
154
|
+
}
|
|
155
|
+
//# sourceMappingURL=metadata.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"metadata.js","sourceRoot":"","sources":["../../../../test/helpers/metadata.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { blockchain } from "@silvana-one/mina-utils";
|
|
2
|
+
export declare function processArguments(): {
|
|
3
|
+
chain: blockchain;
|
|
4
|
+
useAdvancedAdmin: boolean;
|
|
5
|
+
useLocalCloudWorker: boolean;
|
|
6
|
+
withdraw: boolean;
|
|
7
|
+
noLog: boolean;
|
|
8
|
+
approveTransfer: boolean;
|
|
9
|
+
shares: boolean;
|
|
10
|
+
readOnly: boolean;
|
|
11
|
+
deploy: boolean;
|
|
12
|
+
mint: boolean;
|
|
13
|
+
transfer: boolean;
|
|
14
|
+
sell: boolean;
|
|
15
|
+
buy: boolean;
|
|
16
|
+
};
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
export function processArguments() {
|
|
2
|
+
const chainName = process.env.CHAIN ?? "local";
|
|
3
|
+
const useAdvancedAdmin = process.env.ADVANCED ?? "false";
|
|
4
|
+
const withdraw = process.env.WITHDRAW ?? "false";
|
|
5
|
+
const noLog = process.env.NO_LOG ?? "false";
|
|
6
|
+
const approveTransfer = process.env.APPROVE_TRANSFER ?? "false";
|
|
7
|
+
const shares = process.env.SHARES ?? "false";
|
|
8
|
+
const readOnly = process.env.READ_ONLY ?? "false";
|
|
9
|
+
const useLocalCloudWorker = process.env.CLOUD === "local";
|
|
10
|
+
const deploy = process.env.DEPLOY === "true";
|
|
11
|
+
const mint = process.env.MINT === "true";
|
|
12
|
+
const transfer = process.env.TRANSFER === "true";
|
|
13
|
+
const sell = process.env.SELL === "true";
|
|
14
|
+
const buy = process.env.BUY === "true";
|
|
15
|
+
if (chainName !== "local" &&
|
|
16
|
+
chainName !== "devnet" &&
|
|
17
|
+
chainName !== "lightnet" &&
|
|
18
|
+
chainName !== "zeko")
|
|
19
|
+
throw new Error("Invalid chain name");
|
|
20
|
+
return {
|
|
21
|
+
chain: chainName,
|
|
22
|
+
useAdvancedAdmin: useAdvancedAdmin === "true",
|
|
23
|
+
useLocalCloudWorker,
|
|
24
|
+
withdraw: withdraw === "true",
|
|
25
|
+
noLog: noLog === "true",
|
|
26
|
+
approveTransfer: approveTransfer === "true",
|
|
27
|
+
shares: shares === "true",
|
|
28
|
+
readOnly: readOnly === "true",
|
|
29
|
+
deploy,
|
|
30
|
+
mint,
|
|
31
|
+
transfer,
|
|
32
|
+
sell,
|
|
33
|
+
buy,
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../test/helpers/utils.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,gBAAgB;IAe9B,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,KAAK,IAAI,OAAO,CAAC;IAC/C,MAAM,gBAAgB,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,IAAI,OAAO,CAAC;IACzD,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,IAAI,OAAO,CAAC;IACjD,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,IAAI,OAAO,CAAC;IAC5C,MAAM,eAAe,GAAG,OAAO,CAAC,GAAG,CAAC,gBAAgB,IAAI,OAAO,CAAC;IAChE,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,IAAI,OAAO,CAAC;IAC7C,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,SAAS,IAAI,OAAO,CAAC;IAClD,MAAM,mBAAmB,GAAG,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,OAAO,CAAC;IAC1D,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,KAAK,MAAM,CAAC;IAC7C,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,KAAK,MAAM,CAAC;IACzC,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,MAAM,CAAC;IACjD,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,KAAK,MAAM,CAAC;IACzC,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,MAAM,CAAC;IACvC,IACE,SAAS,KAAK,OAAO;QACrB,SAAS,KAAK,QAAQ;QACtB,SAAS,KAAK,UAAU;QACxB,SAAS,KAAK,MAAM;QAEpB,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAC;IAExC,OAAO;QACL,KAAK,EAAE,SAAuB;QAC9B,gBAAgB,EAAE,gBAAgB,KAAK,MAAM;QAC7C,mBAAmB;QACnB,QAAQ,EAAE,QAAQ,KAAK,MAAM;QAC7B,KAAK,EAAE,KAAK,KAAK,MAAM;QACvB,eAAe,EAAE,eAAe,KAAK,MAAM;QAC3C,MAAM,EAAE,MAAM,KAAK,MAAM;QACzB,QAAQ,EAAE,QAAQ,KAAK,MAAM;QAC7B,MAAM;QACN,IAAI;QACJ,QAAQ;QACR,IAAI;QACJ,GAAG;KACJ,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { ValidatorsList, ValidatorsState, ValidatorsListData } from "@silvana-one/upgradable";
|
|
2
|
+
import { Storage } from "@silvana-one/storage";
|
|
3
|
+
/**
|
|
4
|
+
/**
|
|
5
|
+
* Checks the validators list against the provided storage.
|
|
6
|
+
* @param params Object containing validators state and storage.
|
|
7
|
+
* @returns An object containing the `ValidatorsList` and `ValidatorsListData`.
|
|
8
|
+
*/
|
|
9
|
+
export declare function checkValidatorsList(params: {
|
|
10
|
+
validators?: ValidatorsState;
|
|
11
|
+
storage: Storage;
|
|
12
|
+
}): Promise<{
|
|
13
|
+
map: ValidatorsList;
|
|
14
|
+
data: ValidatorsListData;
|
|
15
|
+
}>;
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { Field, Bool, PublicKey, Poseidon } from "o1js";
|
|
2
|
+
import { ValidatorsList, } from "@silvana-one/upgradable";
|
|
3
|
+
import { createIpfsURL, deserializeIndexedMerkleMap, } from "@silvana-one/storage";
|
|
4
|
+
/**
|
|
5
|
+
/**
|
|
6
|
+
* Checks the validators list against the provided storage.
|
|
7
|
+
* @param params Object containing validators state and storage.
|
|
8
|
+
* @returns An object containing the `ValidatorsList` and `ValidatorsListData`.
|
|
9
|
+
*/
|
|
10
|
+
export async function checkValidatorsList(params) {
|
|
11
|
+
const { validators, storage } = params;
|
|
12
|
+
const data = (await (await fetch(createIpfsURL({ hash: storage.toString() }))).json());
|
|
13
|
+
const validatorsList = new ValidatorsList();
|
|
14
|
+
let hashSum = Field(0);
|
|
15
|
+
let count = 0;
|
|
16
|
+
for (let i = 0; i < data.validators.length; i++) {
|
|
17
|
+
const publicKey = PublicKey.fromBase58(data.validators[i].publicKey);
|
|
18
|
+
const key = Poseidon.hashPacked(PublicKey, publicKey);
|
|
19
|
+
validatorsList.set(key, Field(Bool(data.validators[i].authorizedToVote).value));
|
|
20
|
+
count++;
|
|
21
|
+
hashSum = hashSum.add(key);
|
|
22
|
+
}
|
|
23
|
+
const map = deserializeIndexedMerkleMap({
|
|
24
|
+
serializedIndexedMap: data.map,
|
|
25
|
+
type: ValidatorsList,
|
|
26
|
+
});
|
|
27
|
+
if (!map) {
|
|
28
|
+
throw new Error("Invalid validators list");
|
|
29
|
+
}
|
|
30
|
+
if (map.root.equals(validatorsList.root).toBoolean() === false) {
|
|
31
|
+
throw new Error("Invalid validators list root");
|
|
32
|
+
}
|
|
33
|
+
if (validators) {
|
|
34
|
+
if (data.validatorsCount !== Number(validators.count.toBigint())) {
|
|
35
|
+
throw new Error("Invalid validators list count");
|
|
36
|
+
}
|
|
37
|
+
if (data.root !== validators.root.toJSON()) {
|
|
38
|
+
throw new Error("Invalid validators list root");
|
|
39
|
+
}
|
|
40
|
+
if (Number(validators.count.toBigint()) > count) {
|
|
41
|
+
throw new Error("Invalid validators list count");
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
return { map, data };
|
|
45
|
+
}
|
|
46
|
+
//# sourceMappingURL=validators.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validators.js","sourceRoot":"","sources":["../../../../test/helpers/validators.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,MAAM,CAAC;AACxD,OAAO,EACL,cAAc,GAGf,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAEL,aAAa,EACb,2BAA2B,GAC5B,MAAM,sBAAsB,CAAC;AAE9B;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,MAGzC;IACC,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC;IACvC,MAAM,IAAI,GAAG,CAAC,MAAM,CAClB,MAAM,KAAK,CAAC,aAAa,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,CACzD,CAAC,IAAI,EAAE,CAAkC,CAAC;IAC3C,MAAM,cAAc,GAAG,IAAI,cAAc,EAAE,CAAC;IAC5C,IAAI,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;IACvB,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAChD,MAAM,SAAS,GAAG,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QACrE,MAAM,GAAG,GAAG,QAAQ,CAAC,UAAU,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;QACtD,cAAc,CAAC,GAAG,CAChB,GAAG,EACH,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,KAAK,CAAC,CACvD,CAAC;QACF,KAAK,EAAE,CAAC;QACR,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC7B,CAAC;IAED,MAAM,GAAG,GAAG,2BAA2B,CAAC;QACtC,oBAAoB,EAAE,IAAI,CAAC,GAAG;QAC9B,IAAI,EAAE,cAAc;KACrB,CAAC,CAAC;IAEH,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAC7C,CAAC;IACD,IAAI,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,KAAK,KAAK,EAAE,CAAC;QAC/D,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;IAClD,CAAC;IAED,IAAI,UAAU,EAAE,CAAC;QACf,IAAI,IAAI,CAAC,eAAe,KAAK,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC;YACjE,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;QACnD,CAAC;QACD,IAAI,IAAI,CAAC,IAAI,KAAK,UAAU,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;YAC3C,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;QAClD,CAAC;QAED,IAAI,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC;YAChD,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;QACnD,CAAC;IACH,CAAC;IAED,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC;AACvB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|