thirdweb 5.45.1 → 5.45.2-nightly-141fd53759f1b5515e38688fe96364edc4c76644-20240812000351

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.
Files changed (68) hide show
  1. package/dist/cjs/exports/deploys.js +3 -1
  2. package/dist/cjs/exports/deploys.js.map +1 -1
  3. package/dist/cjs/exports/extensions/split.js +7 -1
  4. package/dist/cjs/exports/extensions/split.js.map +1 -1
  5. package/dist/cjs/extensions/prebuilts/__generated__/Split/write/initialize.js +157 -0
  6. package/dist/cjs/extensions/prebuilts/__generated__/Split/write/initialize.js.map +1 -0
  7. package/dist/cjs/extensions/prebuilts/deploy-split.js +79 -0
  8. package/dist/cjs/extensions/prebuilts/deploy-split.js.map +1 -0
  9. package/dist/cjs/extensions/split/__generated__/Split/read/totalShares.js +71 -0
  10. package/dist/cjs/extensions/split/__generated__/Split/read/totalShares.js.map +1 -0
  11. package/dist/cjs/extensions/split/read/getAllRecipientsAddresses.js +24 -0
  12. package/dist/cjs/extensions/split/read/getAllRecipientsAddresses.js.map +1 -0
  13. package/dist/cjs/extensions/split/read/getAllRecipientsPercentages.js +34 -0
  14. package/dist/cjs/extensions/split/read/getAllRecipientsPercentages.js.map +1 -0
  15. package/dist/cjs/extensions/split/read/getRecipientSplitPercentage.js +21 -0
  16. package/dist/cjs/extensions/split/read/getRecipientSplitPercentage.js.map +1 -0
  17. package/dist/cjs/version.js +1 -1
  18. package/dist/cjs/version.js.map +1 -1
  19. package/dist/esm/exports/deploys.js +1 -0
  20. package/dist/esm/exports/deploys.js.map +1 -1
  21. package/dist/esm/exports/extensions/split.js +3 -0
  22. package/dist/esm/exports/extensions/split.js.map +1 -1
  23. package/dist/esm/extensions/prebuilts/__generated__/Split/write/initialize.js +150 -0
  24. package/dist/esm/extensions/prebuilts/__generated__/Split/write/initialize.js.map +1 -0
  25. package/dist/esm/extensions/prebuilts/deploy-split.js +76 -0
  26. package/dist/esm/extensions/prebuilts/deploy-split.js.map +1 -0
  27. package/dist/esm/extensions/split/__generated__/Split/read/totalShares.js +65 -0
  28. package/dist/esm/extensions/split/__generated__/Split/read/totalShares.js.map +1 -0
  29. package/dist/esm/extensions/split/read/getAllRecipientsAddresses.js +21 -0
  30. package/dist/esm/extensions/split/read/getAllRecipientsAddresses.js.map +1 -0
  31. package/dist/esm/extensions/split/read/getAllRecipientsPercentages.js +31 -0
  32. package/dist/esm/extensions/split/read/getAllRecipientsPercentages.js.map +1 -0
  33. package/dist/esm/extensions/split/read/getRecipientSplitPercentage.js +18 -0
  34. package/dist/esm/extensions/split/read/getRecipientSplitPercentage.js.map +1 -0
  35. package/dist/esm/version.js +1 -1
  36. package/dist/esm/version.js.map +1 -1
  37. package/dist/types/exports/deploys.d.ts +1 -0
  38. package/dist/types/exports/deploys.d.ts.map +1 -1
  39. package/dist/types/exports/extensions/split.d.ts +3 -0
  40. package/dist/types/exports/extensions/split.d.ts.map +1 -1
  41. package/dist/types/extensions/prebuilts/__generated__/Split/write/initialize.d.ts +108 -0
  42. package/dist/types/extensions/prebuilts/__generated__/Split/write/initialize.d.ts.map +1 -0
  43. package/dist/types/extensions/prebuilts/deploy-split.d.ts +66 -0
  44. package/dist/types/extensions/prebuilts/deploy-split.d.ts.map +1 -0
  45. package/dist/types/extensions/split/__generated__/Split/read/totalShares.d.ts +46 -0
  46. package/dist/types/extensions/split/__generated__/Split/read/totalShares.d.ts.map +1 -0
  47. package/dist/types/extensions/split/read/getAllRecipientsAddresses.d.ts +14 -0
  48. package/dist/types/extensions/split/read/getAllRecipientsAddresses.d.ts.map +1 -0
  49. package/dist/types/extensions/split/read/getAllRecipientsPercentages.d.ts +27 -0
  50. package/dist/types/extensions/split/read/getAllRecipientsPercentages.d.ts.map +1 -0
  51. package/dist/types/extensions/split/read/getRecipientSplitPercentage.d.ts +21 -0
  52. package/dist/types/extensions/split/read/getRecipientSplitPercentage.d.ts.map +1 -0
  53. package/dist/types/version.d.ts +1 -1
  54. package/dist/types/version.d.ts.map +1 -1
  55. package/package.json +1 -1
  56. package/src/exports/deploys.ts +5 -0
  57. package/src/exports/extensions/split.ts +8 -0
  58. package/src/extensions/prebuilts/__generated__/Split/write/initialize.ts +191 -0
  59. package/src/extensions/prebuilts/deploy-split.test.ts +31 -0
  60. package/src/extensions/prebuilts/deploy-split.ts +144 -0
  61. package/src/extensions/split/__generated__/Split/read/totalShares.ts +72 -0
  62. package/src/extensions/split/read/getAllRecipientsAddresses.test.ts +39 -0
  63. package/src/extensions/split/read/getAllRecipientsAddresses.ts +26 -0
  64. package/src/extensions/split/read/getAllRecipientsPercentages.test.ts +48 -0
  65. package/src/extensions/split/read/getAllRecipientsPercentages.ts +41 -0
  66. package/src/extensions/split/read/getRecipientSplitPercentage.test.ts +45 -0
  67. package/src/extensions/split/read/getRecipientSplitPercentage.ts +40 -0
  68. package/src/version.ts +1 -1
@@ -0,0 +1,48 @@
1
+ import { describe, expect, it } from "vitest";
2
+ import { ANVIL_CHAIN } from "~test/chains.js";
3
+ import { TEST_CLIENT } from "~test/test-clients.js";
4
+ import { TEST_ACCOUNT_A } from "~test/test-wallets.js";
5
+ import { getContract } from "../../../contract/contract.js";
6
+ import { deploySplitContract } from "../../../extensions/prebuilts/deploy-split.js";
7
+ import { getAllRecipientsPercentages } from "./getAllRecipientsPercentages.js";
8
+
9
+ const chain = ANVIL_CHAIN;
10
+ const client = TEST_CLIENT;
11
+
12
+ describe("getAllRecipientsPercentages", () => {
13
+ it("should work", async () => {
14
+ const payees = [
15
+ "0x12345674b599ce99958242b3D3741e7b01841DF3",
16
+ "0xA6f11e47dE28B3dB934e945daeb6F538E9019694",
17
+ ];
18
+ const address = await deploySplitContract({
19
+ account: TEST_ACCOUNT_A,
20
+ client: TEST_CLIENT,
21
+ chain: ANVIL_CHAIN,
22
+ params: {
23
+ name: "split-contract",
24
+ payees,
25
+ shares: [
26
+ 5100n, // 51%
27
+ 4900n, // 49%
28
+ ],
29
+ },
30
+ });
31
+ const contract = getContract({
32
+ address,
33
+ chain,
34
+ client,
35
+ });
36
+ const result = await getAllRecipientsPercentages({ contract });
37
+ expect(result).toStrictEqual([
38
+ {
39
+ address: "0x12345674b599ce99958242b3D3741e7b01841DF3",
40
+ splitPercentage: 51,
41
+ },
42
+ {
43
+ address: "0xA6f11e47dE28B3dB934e945daeb6F538E9019694",
44
+ splitPercentage: 49,
45
+ },
46
+ ]);
47
+ });
48
+ });
@@ -0,0 +1,41 @@
1
+ import type { BaseTransactionOptions } from "../../../transaction/types.js";
2
+ import { getAllRecipientsAddresses } from "./getAllRecipientsAddresses.js";
3
+ import {
4
+ type SplitRecipient,
5
+ getRecipientSplitPercentage,
6
+ } from "./getRecipientSplitPercentage.js";
7
+
8
+ /**
9
+ * Get all the recipients of a Split contracts
10
+ * @extension SPLIT
11
+ * @returns an array of recipients' addresses and split percentage of each
12
+ *
13
+ * @example
14
+ * ```ts
15
+ * import { getAllRecipientsPercentages } from "thirdweb/extensions/split";
16
+ *
17
+ * const allRecipients = await getAllRecipientsPercentages({ contract });
18
+ * // Example result:
19
+ * [
20
+ * {
21
+ * address: "0x1...",
22
+ * splitPercentage: 25, // 25%
23
+ * },
24
+ * {
25
+ * address: "0x2...",
26
+ * splitPercentage: 75, // 75%
27
+ * },
28
+ * ];
29
+ * ```
30
+ */
31
+ export async function getAllRecipientsPercentages(
32
+ options: BaseTransactionOptions,
33
+ ): Promise<SplitRecipient[]> {
34
+ const { contract } = options;
35
+ const recipientAddresses = await getAllRecipientsAddresses({ contract });
36
+ return await Promise.all(
37
+ recipientAddresses.map((recipientAddress) =>
38
+ getRecipientSplitPercentage({ contract, recipientAddress }),
39
+ ),
40
+ );
41
+ }
@@ -0,0 +1,45 @@
1
+ import { describe, expect, it } from "vitest";
2
+ import { ANVIL_CHAIN } from "~test/chains.js";
3
+ import { TEST_CLIENT } from "~test/test-clients.js";
4
+ import { TEST_ACCOUNT_A } from "~test/test-wallets.js";
5
+ import { getContract } from "../../../contract/contract.js";
6
+ import { deploySplitContract } from "../../../extensions/prebuilts/deploy-split.js";
7
+ import { getRecipientSplitPercentage } from "./getRecipientSplitPercentage.js";
8
+ const chain = ANVIL_CHAIN;
9
+ const client = TEST_CLIENT;
10
+
11
+ describe("getRecipientSplitPercentage", () => {
12
+ it("should work", async () => {
13
+ const payees = [
14
+ "0x12345674b599ce99958242b3D3741e7b01841DF3",
15
+ "0xA6f11e47dE28B3dB934e945daeb6F538E9019694",
16
+ ];
17
+ const address = await deploySplitContract({
18
+ account: TEST_ACCOUNT_A,
19
+ client: TEST_CLIENT,
20
+ chain: ANVIL_CHAIN,
21
+ params: {
22
+ name: "split-contract",
23
+ payees,
24
+ shares: [
25
+ 5100n, // 51%
26
+ 4900n, // 49%
27
+ ],
28
+ },
29
+ });
30
+ const contract = getContract({
31
+ address,
32
+ chain,
33
+ client,
34
+ });
35
+ const result = await getRecipientSplitPercentage({
36
+ contract,
37
+ recipientAddress: "0x12345674b599ce99958242b3D3741e7b01841DF3",
38
+ });
39
+
40
+ expect(result).toStrictEqual({
41
+ address: "0x12345674b599ce99958242b3D3741e7b01841DF3",
42
+ splitPercentage: 51,
43
+ });
44
+ });
45
+ });
@@ -0,0 +1,40 @@
1
+ import type { BaseTransactionOptions } from "../../../transaction/types.js";
2
+ import { shares } from "../__generated__/Split/read/shares.js";
3
+ import { totalShares } from "../__generated__/Split/read/totalShares.js";
4
+
5
+ /**
6
+ * @extension SPLIT
7
+ */
8
+ export interface SplitRecipient {
9
+ /**
10
+ * The address of the recipient
11
+ */
12
+ address: string;
13
+
14
+ /**
15
+ * The split of the recipient as a percentage of the total amount
16
+ *
17
+ * I.e. If a recipient has a split of 50%, and the asset sells for 100 ETH,
18
+ * the recipient will receive 50 ETH.
19
+ */
20
+ splitPercentage: number;
21
+ }
22
+
23
+ export async function getRecipientSplitPercentage(
24
+ options: BaseTransactionOptions<{ recipientAddress: string }>,
25
+ ): Promise<SplitRecipient> {
26
+ const { contract, recipientAddress } = options;
27
+ const [_totalShares, walletsShares] = await Promise.all([
28
+ totalShares({ contract }),
29
+ shares({ contract, account: recipientAddress }),
30
+ ]);
31
+ // We convert to basis points to avoid floating point loss of precision
32
+ // 7544n -> 75.44 (75.44 %)
33
+ // also we don't have to worry about number overflow in this particular context
34
+ const splitPercentage =
35
+ (Number(walletsShares) * 1e7) / Number(_totalShares) / 1e5;
36
+ return {
37
+ address: recipientAddress,
38
+ splitPercentage,
39
+ };
40
+ }
package/src/version.ts CHANGED
@@ -1 +1 @@
1
- export const version = "5.45.1";
1
+ export const version = "5.45.2-nightly-141fd53759f1b5515e38688fe96364edc4c76644-20240812000351";