thirdweb 5.50.0-nightly-6432e8dc6bdd0ed985fe0d76e47b36601bfa8be3-20240831000359 → 5.50.0-nightly-5475551e5de0750ff1b780522cb01e974a828dd2-20240902000412

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 (69) hide show
  1. package/dist/cjs/adapters/ethers5.js +3 -0
  2. package/dist/cjs/adapters/ethers5.js.map +1 -1
  3. package/dist/cjs/extensions/erc1155/drops/write/updateMetadata.js +2 -1
  4. package/dist/cjs/extensions/erc1155/drops/write/updateMetadata.js.map +1 -1
  5. package/dist/cjs/extensions/erc1155/write/sigMint.js +9 -1
  6. package/dist/cjs/extensions/erc1155/write/sigMint.js.map +1 -1
  7. package/dist/cjs/extensions/erc20/write/sigMint.js +9 -2
  8. package/dist/cjs/extensions/erc20/write/sigMint.js.map +1 -1
  9. package/dist/cjs/extensions/erc721/drops/write/updateMetadata.js +1 -0
  10. package/dist/cjs/extensions/erc721/drops/write/updateMetadata.js.map +1 -1
  11. package/dist/cjs/extensions/erc721/write/sigMint.js +9 -1
  12. package/dist/cjs/extensions/erc721/write/sigMint.js.map +1 -1
  13. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/BuyScreen.js +1 -1
  14. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/BuyScreen.js.map +1 -1
  15. package/dist/cjs/react/web/ui/ConnectWallet/screens/WalletSwitcherConnectionScreen.js +1 -1
  16. package/dist/cjs/react/web/ui/ConnectWallet/screens/WalletSwitcherConnectionScreen.js.map +1 -1
  17. package/dist/cjs/version.js +1 -1
  18. package/dist/cjs/wallets/smart/index.js +1 -1
  19. package/dist/cjs/wallets/smart/index.js.map +1 -1
  20. package/dist/esm/adapters/ethers5.js +3 -3
  21. package/dist/esm/adapters/ethers5.js.map +1 -1
  22. package/dist/esm/extensions/erc1155/drops/write/updateMetadata.js +2 -1
  23. package/dist/esm/extensions/erc1155/drops/write/updateMetadata.js.map +1 -1
  24. package/dist/esm/extensions/erc1155/write/sigMint.js +9 -1
  25. package/dist/esm/extensions/erc1155/write/sigMint.js.map +1 -1
  26. package/dist/esm/extensions/erc20/write/sigMint.js +9 -2
  27. package/dist/esm/extensions/erc20/write/sigMint.js.map +1 -1
  28. package/dist/esm/extensions/erc721/drops/write/updateMetadata.js +1 -0
  29. package/dist/esm/extensions/erc721/drops/write/updateMetadata.js.map +1 -1
  30. package/dist/esm/extensions/erc721/write/sigMint.js +9 -1
  31. package/dist/esm/extensions/erc721/write/sigMint.js.map +1 -1
  32. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/BuyScreen.js +1 -1
  33. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/BuyScreen.js.map +1 -1
  34. package/dist/esm/react/web/ui/ConnectWallet/screens/WalletSwitcherConnectionScreen.js +1 -1
  35. package/dist/esm/react/web/ui/ConnectWallet/screens/WalletSwitcherConnectionScreen.js.map +1 -1
  36. package/dist/esm/version.js +1 -1
  37. package/dist/esm/wallets/smart/index.js +1 -1
  38. package/dist/esm/wallets/smart/index.js.map +1 -1
  39. package/dist/types/adapters/ethers5.d.ts +24 -0
  40. package/dist/types/adapters/ethers5.d.ts.map +1 -1
  41. package/dist/types/extensions/erc1155/drops/write/updateMetadata.d.ts +2 -1
  42. package/dist/types/extensions/erc1155/drops/write/updateMetadata.d.ts.map +1 -1
  43. package/dist/types/extensions/erc1155/write/sigMint.d.ts +1 -2
  44. package/dist/types/extensions/erc1155/write/sigMint.d.ts.map +1 -1
  45. package/dist/types/extensions/erc20/write/sigMint.d.ts +1 -2
  46. package/dist/types/extensions/erc20/write/sigMint.d.ts.map +1 -1
  47. package/dist/types/extensions/erc721/drops/write/updateMetadata.d.ts +1 -0
  48. package/dist/types/extensions/erc721/drops/write/updateMetadata.d.ts.map +1 -1
  49. package/dist/types/extensions/erc721/write/sigMint.d.ts +1 -2
  50. package/dist/types/extensions/erc721/write/sigMint.d.ts.map +1 -1
  51. package/dist/types/version.d.ts +1 -1
  52. package/package.json +1 -1
  53. package/src/adapters/ethers5.test.ts +42 -3
  54. package/src/adapters/ethers5.ts +3 -3
  55. package/src/extensions/erc1155/drops/write/claimTo.test.ts +128 -16
  56. package/src/extensions/erc1155/drops/write/updateMetadata.test.ts +55 -0
  57. package/src/extensions/erc1155/drops/write/updateMetadata.ts +2 -1
  58. package/src/extensions/erc1155/write/sigMint.ts +10 -3
  59. package/src/extensions/erc1155/write/sigMint1155.test.ts +34 -0
  60. package/src/extensions/erc20/write/sigMint.ts +10 -4
  61. package/src/extensions/erc20/write/sigMint20.test.ts +31 -0
  62. package/src/extensions/erc721/drops/write/updateMetadata.test.ts +56 -0
  63. package/src/extensions/erc721/drops/write/updateMetadata.ts +1 -0
  64. package/src/extensions/erc721/write/sigMint.ts +10 -3
  65. package/src/extensions/erc721/write/sigMint721.test.ts +37 -0
  66. package/src/react/web/ui/ConnectWallet/screens/Buy/BuyScreen.tsx +1 -1
  67. package/src/react/web/ui/ConnectWallet/screens/WalletSwitcherConnectionScreen.tsx +1 -1
  68. package/src/version.ts +1 -1
  69. package/src/wallets/smart/index.ts +1 -1
@@ -1,7 +1,6 @@
1
1
  import type { Address } from "abitype";
2
2
  import type { ThirdwebContract } from "../../../contract/contract.js";
3
3
  import type { BaseTransactionOptions } from "../../../transaction/types.js";
4
- import type { Hex } from "../../../utils/encoding/hex.js";
5
4
  import type { NFTInput } from "../../../utils/nft/parseNft.js";
6
5
  import type { Account } from "../../../wallets/interfaces/wallet.js";
7
6
  import { type MintWithSignatureParams } from "../__generated__/ISignatureMintERC1155/write/mintWithSignature.js";
@@ -94,7 +93,7 @@ type GeneratePayloadInput = {
94
93
  currency?: Address;
95
94
  validityStartTimestamp?: Date;
96
95
  validityEndTimestamp?: Date;
97
- uid?: Hex;
96
+ uid?: string;
98
97
  } & ({
99
98
  metadata: NFTInput | string;
100
99
  } | {
@@ -1 +1 @@
1
- {"version":3,"file":"sigMint.d.ts","sourceRoot":"","sources":["../../../../../src/extensions/erc1155/write/sigMint.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAA+B,OAAO,EAAE,MAAM,SAAS,CAAC;AAMpE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACtE,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AAG5E,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,gCAAgC,CAAC;AAC1D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gCAAgC,CAAC;AAE/D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,uCAAuC,CAAC;AACrE,OAAO,EACL,KAAK,uBAAuB,EAE7B,MAAM,mEAAmE,CAAC;AAE3E;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,sBAAsB,CAAC,uBAAuB,CAAC,kMAWzD;AAED;;GAEG;AACH,MAAM,MAAM,4BAA4B,GAAG;IACzC,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,WAAW,EAAE,oBAAoB,CAAC;IAClC,YAAY,CAAC,EAAE,cAAc,GAAG,sBAAsB,CAAC;CACxD,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,wBAAsB,qBAAqB,CACzC,OAAO,EAAE,4BAA4B;;;;;;;;;;;;;;;;GA8EtC;AAQD,KAAK,oBAAoB,GAAG;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,sBAAsB,CAAC,EAAE,IAAI,CAAC;IAC9B,oBAAoB,CAAC,EAAE,IAAI,CAAC;IAC5B,GAAG,CAAC,EAAE,GAAG,CAAC;CACX,GAAG,CACA;IACE,QAAQ,EAAE,QAAQ,GAAG,MAAM,CAAC;CAC7B,GACD;IAAE,OAAO,EAAE,MAAM,CAAA;CAAE,CACtB,CAAC"}
1
+ {"version":3,"file":"sigMint.d.ts","sourceRoot":"","sources":["../../../../../src/extensions/erc1155/write/sigMint.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAA+B,OAAO,EAAE,MAAM,SAAS,CAAC;AAMpE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACtE,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AAI5E,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gCAAgC,CAAC;AAE/D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,uCAAuC,CAAC;AACrE,OAAO,EACL,KAAK,uBAAuB,EAE7B,MAAM,mEAAmE,CAAC;AAE3E;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,sBAAsB,CAAC,uBAAuB,CAAC,kMAWzD;AAED;;GAEG;AACH,MAAM,MAAM,4BAA4B,GAAG;IACzC,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,WAAW,EAAE,oBAAoB,CAAC;IAClC,YAAY,CAAC,EAAE,cAAc,GAAG,sBAAsB,CAAC;CACxD,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,wBAAsB,qBAAqB,CACzC,OAAO,EAAE,4BAA4B;;;;;;;;;;;;;;;;GAqFtC;AAQD,KAAK,oBAAoB,GAAG;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,sBAAsB,CAAC,EAAE,IAAI,CAAC;IAC9B,oBAAoB,CAAC,EAAE,IAAI,CAAC;IAC5B,GAAG,CAAC,EAAE,MAAM,CAAC;CACd,GAAG,CACA;IACE,QAAQ,EAAE,QAAQ,GAAG,MAAM,CAAC;CAC7B,GACD;IAAE,OAAO,EAAE,MAAM,CAAA;CAAE,CACtB,CAAC"}
@@ -1,7 +1,6 @@
1
1
  import type { Address } from "abitype";
2
2
  import type { ThirdwebContract } from "../../../contract/contract.js";
3
3
  import type { BaseTransactionOptions } from "../../../transaction/types.js";
4
- import type { Hex } from "../../../utils/encoding/hex.js";
5
4
  import type { Account } from "../../../wallets/interfaces/wallet.js";
6
5
  import { type MintWithSignatureParams } from "../__generated__/ISignatureMintERC20/write/mintWithSignature.js";
7
6
  /**
@@ -82,7 +81,7 @@ type GeneratePayloadInput = {
82
81
  currency?: Address;
83
82
  validityStartTimestamp?: Date;
84
83
  validityEndTimestamp?: Date;
85
- uid?: Hex;
84
+ uid?: string;
86
85
  } & ({
87
86
  quantity: string;
88
87
  } | {
@@ -1 +1 @@
1
- {"version":3,"file":"sigMint.d.ts","sourceRoot":"","sources":["../../../../../src/extensions/erc20/write/sigMint.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAA+B,OAAO,EAAE,MAAM,SAAS,CAAC;AAKpE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACtE,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AAE5E,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,gCAAgC,CAAC;AAE1D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,uCAAuC,CAAC;AAErE,OAAO,EACL,KAAK,uBAAuB,EAE7B,MAAM,iEAAiE,CAAC;AAEzE;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,sBAAsB,CAAC,uBAAuB,CAAC,kMAoBzD;AAED;;GAEG;AACH,MAAM,MAAM,4BAA4B,GAAG;IACzC,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,WAAW,EAAE,oBAAoB,CAAC;CACnC,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAsB,qBAAqB,CACzC,OAAO,EAAE,4BAA4B;;;;;;;;;;;;GA8EtC;AAQD,KAAK,oBAAoB,GAAG;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,sBAAsB,CAAC,EAAE,IAAI,CAAC;IAC9B,oBAAoB,CAAC,EAAE,IAAI,CAAC;IAC5B,GAAG,CAAC,EAAE,GAAG,CAAC;CACX,GAAG,CAAC;IAAE,QAAQ,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,WAAW,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC;AAErD,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;EAShB,CAAC"}
1
+ {"version":3,"file":"sigMint.d.ts","sourceRoot":"","sources":["../../../../../src/extensions/erc20/write/sigMint.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAA+B,OAAO,EAAE,MAAM,SAAS,CAAC;AAKpE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACtE,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AAI5E,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,uCAAuC,CAAC;AAErE,OAAO,EACL,KAAK,uBAAuB,EAE7B,MAAM,iEAAiE,CAAC;AAEzE;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,sBAAsB,CAAC,uBAAuB,CAAC,kMAoBzD;AAED;;GAEG;AACH,MAAM,MAAM,4BAA4B,GAAG;IACzC,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,WAAW,EAAE,oBAAoB,CAAC;CACnC,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAsB,qBAAqB,CACzC,OAAO,EAAE,4BAA4B;;;;;;;;;;;;GAoFtC;AAQD,KAAK,oBAAoB,GAAG;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,sBAAsB,CAAC,EAAE,IAAI,CAAC;IAC9B,oBAAoB,CAAC,EAAE,IAAI,CAAC;IAC5B,GAAG,CAAC,EAAE,MAAM,CAAC;CACd,GAAG,CAAC;IAAE,QAAQ,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,WAAW,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC;AAErD,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;EAShB,CAAC"}
@@ -27,6 +27,7 @@ export declare function getUpdateMetadataParams(options: BaseTransactionOptions<
27
27
  * const transaction = updateMetadata({
28
28
  * contract,
29
29
  * targetTokenId: 0n,
30
+ * client: thirdwebClient,
30
31
  * newMetadata: {
31
32
  * name: "this is the new nft name",
32
33
  * description: "...",
@@ -1 +1 @@
1
- {"version":3,"file":"updateMetadata.d.ts","sourceRoot":"","sources":["../../../../../../src/extensions/erc721/drops/write/updateMetadata.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AACnE,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,kCAAkC,CAAC;AAC/E,OAAO,KAAK,EAAO,QAAQ,EAAE,MAAM,mCAAmC,CAAC;AACvE,OAAO,EACL,KAAK,wBAAwB,EAE9B,MAAM,4DAA4D,CAAC;AAGpE;;GAEG;AACH,MAAM,MAAM,oBAAoB,GAAG;IACjC,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,QAAQ,CAAC;IACtB,MAAM,EAAE,cAAc,CAAC;CACxB,CAAC;AAEF;;GAEG;AACH,wBAAsB,uBAAuB,CAC3C,OAAO,EAAE,sBAAsB,CAAC,oBAAoB,CAAC,GACpD,OAAO,CAAC,wBAAwB,CAAC,CAsEnC;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,cAAc,CAC5B,OAAO,EAAE,sBAAsB,CAAC,oBAAoB,CAAC,wMAOtD"}
1
+ {"version":3,"file":"updateMetadata.d.ts","sourceRoot":"","sources":["../../../../../../src/extensions/erc721/drops/write/updateMetadata.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AACnE,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,kCAAkC,CAAC;AAC/E,OAAO,KAAK,EAAO,QAAQ,EAAE,MAAM,mCAAmC,CAAC;AACvE,OAAO,EACL,KAAK,wBAAwB,EAE9B,MAAM,4DAA4D,CAAC;AAGpE;;GAEG;AACH,MAAM,MAAM,oBAAoB,GAAG;IACjC,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,QAAQ,CAAC;IACtB,MAAM,EAAE,cAAc,CAAC;CACxB,CAAC;AAEF;;GAEG;AACH,wBAAsB,uBAAuB,CAC3C,OAAO,EAAE,sBAAsB,CAAC,oBAAoB,CAAC,GACpD,OAAO,CAAC,wBAAwB,CAAC,CAsEnC;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,cAAc,CAC5B,OAAO,EAAE,sBAAsB,CAAC,oBAAoB,CAAC,wMAOtD"}
@@ -1,5 +1,4 @@
1
1
  import type { Address } from "abitype";
2
- import type { Hex } from "viem";
3
2
  import type { ThirdwebContract } from "../../../contract/contract.js";
4
3
  import type { BaseTransactionOptions } from "../../../transaction/types.js";
5
4
  import type { NFTInput } from "../../../utils/nft/parseNft.js";
@@ -88,7 +87,7 @@ type GeneratePayloadInput = {
88
87
  currency?: Address;
89
88
  validityStartTimestamp?: Date;
90
89
  validityEndTimestamp?: Date;
91
- uid?: Hex;
90
+ uid?: string;
92
91
  };
93
92
  export {};
94
93
  //# sourceMappingURL=sigMint.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"sigMint.d.ts","sourceRoot":"","sources":["../../../../../src/extensions/erc721/write/sigMint.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAA+B,OAAO,EAAE,MAAM,SAAS,CAAC;AACpE,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,MAAM,CAAC;AAKhC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACtE,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AAG5E,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gCAAgC,CAAC;AAE/D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,uCAAuC,CAAC;AACrE,OAAO,EACL,KAAK,uBAAuB,EAE7B,MAAM,kEAAkE,CAAC;AAE1E;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,sBAAsB,CAAC,uBAAuB,CAAC,kMAWzD;AAED,MAAM,MAAM,4BAA4B,GAAG;IACzC,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,WAAW,EAAE,oBAAoB,CAAC;CACnC,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,wBAAsB,qBAAqB,CACzC,OAAO,EAAE,4BAA4B;;;;;;;;;;;;;;GAyGtC;AAQD,KAAK,oBAAoB,GAAG;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,QAAQ,GAAG,MAAM,CAAC;IAC5B,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,sBAAsB,CAAC,EAAE,IAAI,CAAC;IAC9B,oBAAoB,CAAC,EAAE,IAAI,CAAC;IAC5B,GAAG,CAAC,EAAE,GAAG,CAAC;CACX,CAAC"}
1
+ {"version":3,"file":"sigMint.d.ts","sourceRoot":"","sources":["../../../../../src/extensions/erc721/write/sigMint.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAA+B,OAAO,EAAE,MAAM,SAAS,CAAC;AAMpE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACtE,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AAG5E,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gCAAgC,CAAC;AAE/D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,uCAAuC,CAAC;AACrE,OAAO,EACL,KAAK,uBAAuB,EAE7B,MAAM,kEAAkE,CAAC;AAE1E;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,sBAAsB,CAAC,uBAAuB,CAAC,kMAWzD;AAED,MAAM,MAAM,4BAA4B,GAAG;IACzC,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,WAAW,EAAE,oBAAoB,CAAC;CACnC,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,wBAAsB,qBAAqB,CACzC,OAAO,EAAE,4BAA4B;;;;;;;;;;;;;;GAgHtC;AAQD,KAAK,oBAAoB,GAAG;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,QAAQ,GAAG,MAAM,CAAC;IAC5B,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,sBAAsB,CAAC,EAAE,IAAI,CAAC;IAC9B,oBAAoB,CAAC,EAAE,IAAI,CAAC;IAC5B,GAAG,CAAC,EAAE,MAAM,CAAC;CACd,CAAC"}
@@ -1,2 +1,2 @@
1
- export declare const version = "5.50.0-nightly-6432e8dc6bdd0ed985fe0d76e47b36601bfa8be3-20240831000359";
1
+ export declare const version = "5.50.0-nightly-5475551e5de0750ff1b780522cb01e974a828dd2-20240902000412";
2
2
  //# sourceMappingURL=version.d.ts.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "thirdweb",
3
- "version": "5.50.0-nightly-6432e8dc6bdd0ed985fe0d76e47b36601bfa8be3-20240831000359",
3
+ "version": "5.50.0-nightly-5475551e5de0750ff1b780522cb01e974a828dd2-20240902000412",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "git+https://github.com/thirdweb-dev/js.git#main"
@@ -1,11 +1,19 @@
1
1
  import * as ethers5 from "ethers5";
2
- import { describe, expect, test } from "vitest";
3
- import { ANVIL_CHAIN } from "../../test/src/chains.js";
2
+ import { describe, expect, it, test } from "vitest";
3
+ import { USDT_CONTRACT } from "~test/test-contracts.js";
4
+ import { ANVIL_CHAIN, FORKED_ETHEREUM_CHAIN } from "../../test/src/chains.js";
4
5
  import { TEST_CLIENT } from "../../test/src/test-clients.js";
5
6
  import { ANVIL_PKEY_A, TEST_ACCOUNT_B } from "../../test/src/test-wallets.js";
7
+ import { resolveContractAbi } from "../contract/actions/resolve-abi.js";
8
+ import { decimals } from "../extensions/erc20/__generated__/IERC20/read/decimals.js";
6
9
  import { randomBytesBuffer } from "../utils/random.js";
7
10
  import { privateKeyToAccount } from "../wallets/private-key.js";
8
- import { toEthersSigner } from "./ethers5.js";
11
+ import {
12
+ fromEthersContract,
13
+ toEthersContract,
14
+ toEthersProvider,
15
+ toEthersSigner,
16
+ } from "./ethers5.js";
9
17
 
10
18
  const account = privateKeyToAccount({
11
19
  privateKey: ANVIL_PKEY_A,
@@ -110,4 +118,35 @@ describe("ethers5 adapter", () => {
110
118
  });
111
119
  expect(txResponse.hash.length).toBe(66);
112
120
  });
121
+
122
+ it("toEthersContract should work", async () => {
123
+ const ethersContract = await toEthersContract(ethers5, USDT_CONTRACT);
124
+ expect(ethersContract.address.toLowerCase()).toBe(
125
+ USDT_CONTRACT.address.toLowerCase(),
126
+ );
127
+ const decimals = await ethersContract.decimals();
128
+ expect(decimals.toString()).toBe("6");
129
+ });
130
+
131
+ it("fromEthersContract should work", async () => {
132
+ const provider = toEthersProvider(
133
+ ethers5,
134
+ TEST_CLIENT,
135
+ FORKED_ETHEREUM_CHAIN,
136
+ );
137
+ const ethersContract = new ethers5.Contract(
138
+ USDT_CONTRACT.address,
139
+ await resolveContractAbi(USDT_CONTRACT),
140
+ provider,
141
+ );
142
+
143
+ const thirdwebContract = await fromEthersContract({
144
+ client: TEST_CLIENT,
145
+ ethersContract,
146
+ chain: FORKED_ETHEREUM_CHAIN,
147
+ });
148
+
149
+ const _decimals = await decimals({ contract: thirdwebContract });
150
+ expect(_decimals).toBe(6);
151
+ });
113
152
  });
@@ -274,7 +274,7 @@ export const ethers5Adapter = /* @__PURE__ */ (() => {
274
274
  * @returns The ethers.js provider.
275
275
  * @internal
276
276
  */
277
- function toEthersProvider(
277
+ export function toEthersProvider(
278
278
  ethers: Ethers5,
279
279
  client: ThirdwebClient,
280
280
  chain: Chain,
@@ -299,7 +299,7 @@ function toEthersProvider(
299
299
  * @returns A Promise that resolves to an ethers.js Contract.
300
300
  * @internal
301
301
  */
302
- async function toEthersContract<abi extends Abi = []>(
302
+ export async function toEthersContract<abi extends Abi = []>(
303
303
  ethers: Ethers5,
304
304
  twContract: ThirdwebContract<abi>,
305
305
  ): Promise<ethers5.Contract> {
@@ -336,7 +336,7 @@ type FromEthersContractOptions = {
336
336
  * @returns A promise that resolves to a ThirdwebContract instance.
337
337
  * @internal
338
338
  */
339
- async function fromEthersContract<abi extends Abi>(
339
+ export async function fromEthersContract<abi extends Abi>(
340
340
  options: FromEthersContractOptions,
341
341
  ): Promise<ThirdwebContract<abi>> {
342
342
  return getContract({
@@ -1,13 +1,12 @@
1
- import { beforeEach, describe, expect, it } from "vitest";
1
+ import { describe, expect, it } from "vitest";
2
2
  import { ANVIL_CHAIN } from "~test/chains.js";
3
3
  import { TEST_CLIENT } from "~test/test-clients.js";
4
- import { TEST_ACCOUNT_A } from "~test/test-wallets.js";
4
+ import { TEST_ACCOUNT_A, TEST_ACCOUNT_B } from "~test/test-wallets.js";
5
5
 
6
+ import { TEST_CONTRACT_URI } from "~test/ipfs-uris.js";
6
7
  import { NATIVE_TOKEN_ADDRESS } from "../../../../constants/addresses.js";
7
- import {
8
- type ThirdwebContract,
9
- getContract,
10
- } from "../../../../contract/contract.js";
8
+ import { getContract } from "../../../../contract/contract.js";
9
+ import { deployERC20Contract } from "../../../../extensions/prebuilts/deploy-erc20.js";
11
10
  import { deployERC1155Contract } from "../../../../extensions/prebuilts/deploy-erc1155.js";
12
11
  import { sendAndConfirmTransaction } from "../../../../transaction/actions/send-and-confirm-transaction.js";
13
12
  import { totalSupply } from "../../__generated__/IERC1155/read/totalSupply.js";
@@ -15,13 +14,12 @@ import { lazyMint } from "../../write/lazyMint.js";
15
14
  import { claimTo } from "./claimTo.js";
16
15
  import { setClaimConditions } from "./setClaimConditions.js";
17
16
 
18
- let contract: ThirdwebContract;
19
17
  const account = TEST_ACCOUNT_A;
20
18
  const client = TEST_CLIENT;
21
19
  const chain = ANVIL_CHAIN;
22
20
 
23
21
  describe.runIf(process.env.TW_SECRET_KEY)("erc1155 claimTo extension", () => {
24
- beforeEach(async () => {
22
+ it("should claim the nft", async () => {
25
23
  const address = await deployERC1155Contract({
26
24
  client,
27
25
  chain,
@@ -29,17 +27,16 @@ describe.runIf(process.env.TW_SECRET_KEY)("erc1155 claimTo extension", () => {
29
27
  type: "DropERC1155",
30
28
  params: {
31
29
  name: "Edition Drop",
30
+ contractURI: TEST_CONTRACT_URI,
32
31
  },
33
32
  });
34
- contract = getContract({
33
+ const contract = getContract({
35
34
  address,
36
35
  client,
37
36
  chain,
38
37
  });
39
-
40
- const transaction = lazyMint({ contract, nfts: [{ name: "token 0" }] });
41
- await sendAndConfirmTransaction({ transaction, account });
42
-
38
+ const lazyMintTx = lazyMint({ contract, nfts: [{ name: "token 0" }] });
39
+ await sendAndConfirmTransaction({ transaction: lazyMintTx, account });
43
40
  const setClaimTx = setClaimConditions({
44
41
  contract,
45
42
  tokenId: 0n,
@@ -53,20 +50,135 @@ describe.runIf(process.env.TW_SECRET_KEY)("erc1155 claimTo extension", () => {
53
50
  },
54
51
  ],
55
52
  });
53
+ await sendAndConfirmTransaction({ transaction: setClaimTx, account });
56
54
 
55
+ const transaction = claimTo({
56
+ contract,
57
+ tokenId: 0n,
58
+ quantity: 1n,
59
+ to: account.address,
60
+ });
61
+ await sendAndConfirmTransaction({ transaction, account });
62
+ const supplyCount = await totalSupply({ contract, id: 0n });
63
+ expect(supplyCount).toBe(1n);
64
+ });
65
+
66
+ it("should claim with allowlist", async () => {
67
+ const address = await deployERC1155Contract({
68
+ client,
69
+ chain,
70
+ account,
71
+ type: "DropERC1155",
72
+ params: {
73
+ name: "Edition Drop",
74
+ contractURI: TEST_CONTRACT_URI,
75
+ },
76
+ });
77
+ const contract = getContract({
78
+ address,
79
+ client,
80
+ chain,
81
+ });
82
+ const lazyMintTx = lazyMint({ contract, nfts: [{ name: "token 0" }] });
83
+ await sendAndConfirmTransaction({ transaction: lazyMintTx, account });
84
+ const setClaimTx = setClaimConditions({
85
+ contract,
86
+ tokenId: 0n,
87
+ phases: [
88
+ {
89
+ maxClaimableSupply: 100n,
90
+ maxClaimablePerWallet: 5n,
91
+ currencyAddress: NATIVE_TOKEN_ADDRESS,
92
+ price: 0.06,
93
+ startTime: new Date(),
94
+ overrideList: [
95
+ {
96
+ address: TEST_ACCOUNT_B.address,
97
+ maxClaimable: "50",
98
+ price: "0.3",
99
+ currencyAddress: NATIVE_TOKEN_ADDRESS,
100
+ },
101
+ ],
102
+ },
103
+ ],
104
+ });
57
105
  await sendAndConfirmTransaction({ transaction: setClaimTx, account });
106
+
107
+ const transaction = claimTo({
108
+ contract,
109
+ tokenId: 0n,
110
+ quantity: 50n,
111
+ to: TEST_ACCOUNT_B.address,
112
+ });
113
+ await sendAndConfirmTransaction({ transaction, account: TEST_ACCOUNT_B });
114
+ const supplyCount = await totalSupply({ contract, id: 0n });
115
+ expect(supplyCount).toBe(50n);
58
116
  });
59
117
 
60
- it("should claim the nft", async () => {
118
+ /**
119
+ * This is to document the behavior where one can claim without paying if the claiming address
120
+ * is the same as the PrimaryRecipientAddress, because of this Solidity code:
121
+ * ```solidity
122
+ * // CurrencyTransferLib.sol
123
+ * function safeTransferERC20(address _currency, address _from, address _to, uint256 _amount) internal {
124
+ * if (_from == _to) {
125
+ * return;
126
+ * }
127
+ * ...
128
+ * }
129
+ * ```
130
+ */
131
+ it("address that is the same with PrimaryFeeRecipient can claim without paying ERC20", async () => {
132
+ const tokenAddress = await deployERC20Contract({
133
+ client,
134
+ chain,
135
+ account,
136
+ type: "TokenERC20",
137
+ params: {
138
+ name: "token20",
139
+ contractURI: TEST_CONTRACT_URI,
140
+ },
141
+ });
142
+ const address = await deployERC1155Contract({
143
+ client,
144
+ chain,
145
+ account,
146
+ type: "DropERC1155",
147
+ params: {
148
+ name: "Edition Drop",
149
+ contractURI: TEST_CONTRACT_URI,
150
+ saleRecipient: account.address,
151
+ },
152
+ });
153
+ const contract = getContract({
154
+ address,
155
+ client,
156
+ chain,
157
+ });
158
+ const lazyMintTx = lazyMint({ contract, nfts: [{ name: "token 0" }] });
159
+ await sendAndConfirmTransaction({ transaction: lazyMintTx, account });
160
+ const setClaimTx = setClaimConditions({
161
+ contract,
162
+ tokenId: 0n,
163
+ phases: [
164
+ {
165
+ maxClaimableSupply: 100n,
166
+ maxClaimablePerWallet: 100n,
167
+ currencyAddress: tokenAddress,
168
+ price: 1000,
169
+ startTime: new Date(),
170
+ },
171
+ ],
172
+ });
173
+ await sendAndConfirmTransaction({ transaction: setClaimTx, account });
174
+
61
175
  const transaction = claimTo({
62
176
  contract,
63
177
  tokenId: 0n,
64
178
  quantity: 1n,
65
179
  to: account.address,
66
180
  });
67
-
68
181
  await sendAndConfirmTransaction({ transaction, account });
69
-
70
182
  const supplyCount = await totalSupply({ contract, id: 0n });
71
183
  expect(supplyCount).toBe(1n);
72
184
  });
@@ -0,0 +1,55 @@
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
+
6
+ import { TEST_CONTRACT_URI } from "~test/ipfs-uris.js";
7
+ import { getContract } from "../../../../contract/contract.js";
8
+ import { deployERC1155Contract } from "../../../../extensions/prebuilts/deploy-erc1155.js";
9
+ import { sendAndConfirmTransaction } from "../../../../transaction/actions/send-and-confirm-transaction.js";
10
+ import { getNFTs } from "../../read/getNFTs.js";
11
+ import { lazyMint } from "../../write/lazyMint.js";
12
+ import { updateMetadata } from "./updateMetadata.js";
13
+
14
+ const account = TEST_ACCOUNT_A;
15
+ const client = TEST_CLIENT;
16
+ const chain = ANVIL_CHAIN;
17
+ describe.runIf(process.env.TW_SECRET_KEY)("updateMetadata ERC1155", () => {
18
+ it("should update metadata", async () => {
19
+ const address = await deployERC1155Contract({
20
+ client,
21
+ chain,
22
+ account,
23
+ type: "DropERC1155",
24
+ params: {
25
+ name: "Edition Drop",
26
+ contractURI: TEST_CONTRACT_URI,
27
+ },
28
+ });
29
+ const contract = getContract({
30
+ address,
31
+ client,
32
+ chain,
33
+ });
34
+ const lazyMintTx = lazyMint({
35
+ contract,
36
+ nfts: [{ name: "token 0" }, { name: "token 1" }, { name: "token 2" }],
37
+ });
38
+ await sendAndConfirmTransaction({ transaction: lazyMintTx, account });
39
+
40
+ const updateTx = updateMetadata({
41
+ contract,
42
+ targetTokenId: 1n,
43
+ newMetadata: { name: "token 1 - updated" },
44
+ client,
45
+ });
46
+ await sendAndConfirmTransaction({ transaction: updateTx, account });
47
+
48
+ const nfts = await getNFTs({ contract });
49
+
50
+ expect(nfts.length).toBe(3);
51
+ expect(nfts[0]?.metadata.name).toBe("token 0");
52
+ expect(nfts[1]?.metadata.name).toBe("token 1 - updated");
53
+ expect(nfts[2]?.metadata.name).toBe("token 2");
54
+ });
55
+ });
@@ -109,12 +109,13 @@ export async function getUpdateMetadataParams(
109
109
  * const transaction = updateMetadata({
110
110
  * contract,
111
111
  * targetTokenId: 0n,
112
+ * client: thirdwebClient,
112
113
  * newMetadata: {
113
114
  * name: "this is the new nft name",
114
115
  * description: "...",
115
116
  * image: "new image uri"
116
117
  * // ...
117
- * }
118
+ * },
118
119
  * });
119
120
  *
120
121
  * await sendTransaction({ transaction, account });
@@ -8,7 +8,7 @@ import type { ThirdwebContract } from "../../../contract/contract.js";
8
8
  import type { BaseTransactionOptions } from "../../../transaction/types.js";
9
9
  import { toBigInt } from "../../../utils/bigint.js";
10
10
  import { dateToSeconds, tenYearsFromNow } from "../../../utils/date.js";
11
- import type { Hex } from "../../../utils/encoding/hex.js";
11
+ import { type Hex, isHex, stringToHex } from "../../../utils/encoding/hex.js";
12
12
  import type { NFTInput } from "../../../utils/nft/parseNft.js";
13
13
  import { randomBytesHex } from "../../../utils/random.js";
14
14
  import type { Account } from "../../../wallets/interfaces/wallet.js";
@@ -135,7 +135,14 @@ export async function generateMintSignature(
135
135
  return "";
136
136
  })(),
137
137
  // uid computation
138
- mintRequest.uid || (await randomBytesHex()),
138
+ ((): Hex => {
139
+ if (mintRequest.uid) {
140
+ return isHex(mintRequest.uid)
141
+ ? mintRequest.uid
142
+ : stringToHex(mintRequest.uid, { size: 32 });
143
+ }
144
+ return randomBytesHex();
145
+ })(),
139
146
  ]);
140
147
 
141
148
  const startTime = mintRequest.validityStartTimestamp || new Date(0);
@@ -190,7 +197,7 @@ type GeneratePayloadInput = {
190
197
  currency?: Address;
191
198
  validityStartTimestamp?: Date;
192
199
  validityEndTimestamp?: Date;
193
- uid?: Hex;
200
+ uid?: string;
194
201
  } & (
195
202
  | {
196
203
  metadata: NFTInput | string;
@@ -194,4 +194,38 @@ describe.runIf(process.env.TW_SECRET_KEY)("generateMintSignature1155", () => {
194
194
  expect(payload.uid).toBe(uid);
195
195
  expect(signature.length).toBe(132);
196
196
  });
197
+
198
+ it("should generate a mint signature with custom values", async () => {
199
+ const { payload, signature } = await generateMintSignature({
200
+ mintRequest: {
201
+ to: TEST_ACCOUNT_B.address,
202
+ quantity: 10n,
203
+ royaltyRecipient: TEST_ACCOUNT_B.address,
204
+ royaltyBps: 500,
205
+ primarySaleRecipient: TEST_ACCOUNT_A.address,
206
+ tokenId: 0n,
207
+ pricePerToken: "0.2",
208
+ currency: erc20TokenContract.address,
209
+ validityStartTimestamp: new Date(1635724800),
210
+ validityEndTimestamp: new Date(1867260800),
211
+ uid: "abcdef1234567890",
212
+ },
213
+ account: TEST_ACCOUNT_A,
214
+ contract: erc1155Contract,
215
+ });
216
+
217
+ expect(payload.to).toBe(TEST_ACCOUNT_B.address);
218
+ expect(payload.tokenId).toBe(0n);
219
+ expect(payload.royaltyRecipient).toBe(TEST_ACCOUNT_B.address);
220
+ expect(payload.royaltyBps).toBe(500n);
221
+ expect(payload.primarySaleRecipient).toBe(TEST_ACCOUNT_A.address);
222
+ expect(payload.uri).toBe("");
223
+ expect(payload.pricePerToken).toBe(200000000000000000n);
224
+ expect(payload.quantity).toBe(10n);
225
+ expect(payload.currency).toBe(erc20TokenContract.address);
226
+ expect(payload.validityStartTimestamp).toBe(1635724n);
227
+ expect(payload.validityEndTimestamp).toBe(1867260n);
228
+ expect(payload.uid).toBe(toHex("abcdef1234567890", { size: 32 }));
229
+ expect(signature.length).toBe(132);
230
+ });
197
231
  });
@@ -6,7 +6,7 @@ import {
6
6
  import type { ThirdwebContract } from "../../../contract/contract.js";
7
7
  import type { BaseTransactionOptions } from "../../../transaction/types.js";
8
8
  import { dateToSeconds, tenYearsFromNow } from "../../../utils/date.js";
9
- import type { Hex } from "../../../utils/encoding/hex.js";
9
+ import { type Hex, isHex, stringToHex } from "../../../utils/encoding/hex.js";
10
10
  import { randomBytesHex } from "../../../utils/random.js";
11
11
  import type { Account } from "../../../wallets/interfaces/wallet.js";
12
12
  import { name } from "../../common/read/name.js";
@@ -139,8 +139,14 @@ export async function generateMintSignature(
139
139
  erc20Address: contract.address,
140
140
  });
141
141
  })(),
142
- // uid computation
143
- mintRequest.uid || (await randomBytesHex()),
142
+ ((): Hex => {
143
+ if (mintRequest.uid) {
144
+ return isHex(mintRequest.uid)
145
+ ? mintRequest.uid
146
+ : stringToHex(mintRequest.uid, { size: 32 });
147
+ }
148
+ return randomBytesHex();
149
+ })(),
144
150
  // ERC20Permit (EIP-712) spec differs from signature mint 721, 1155.
145
151
  // it uses the token name in the domain separator
146
152
  name({
@@ -190,7 +196,7 @@ type GeneratePayloadInput = {
190
196
  currency?: Address;
191
197
  validityStartTimestamp?: Date;
192
198
  validityEndTimestamp?: Date;
193
- uid?: Hex;
199
+ uid?: string;
194
200
  } & ({ quantity: string } | { quantityWei: bigint });
195
201
 
196
202
  export const MintRequest20 = [
@@ -137,4 +137,35 @@ describe.runIf(process.env.TW_SECRET_KEY)("generateMintSignature20", () => {
137
137
  );
138
138
  expect(signature.length).toBe(132);
139
139
  });
140
+
141
+ it("should automatically encode a provided string uid", async () => {
142
+ const { payload, signature } = await generateMintSignature({
143
+ mintRequest: {
144
+ to: TEST_ACCOUNT_B.address,
145
+ quantity: "0.005",
146
+ primarySaleRecipient: TEST_ACCOUNT_A.address,
147
+ price: "0.2",
148
+ currency: erc20TokenContract.address,
149
+ validityStartTimestamp: new Date(1635724800),
150
+ validityEndTimestamp: new Date(1867260800),
151
+ uid: "abcdef1234567890",
152
+ },
153
+ account: TEST_ACCOUNT_A,
154
+ contract: erc20Contract,
155
+ });
156
+
157
+ expect(payload.to).toBe("0x70997970C51812dc3A010C7d01b50e0d17dc79C8");
158
+ expect(payload.primarySaleRecipient).toBe(
159
+ "0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266",
160
+ );
161
+ expect(payload.quantity).toBe(5000000000000000n);
162
+ expect(payload.price).toBe(200000000000000000n);
163
+ expect(payload.currency).toBe(erc20TokenContract.address);
164
+ expect(payload.validityStartTimestamp).toBe(1635724n);
165
+ expect(payload.validityEndTimestamp).toBe(1867260n);
166
+ expect(payload.uid).toBe(
167
+ "0x6162636465663132333435363738393000000000000000000000000000000000",
168
+ );
169
+ expect(signature.length).toBe(132);
170
+ });
140
171
  });
@@ -0,0 +1,56 @@
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
+
6
+ import { TEST_CONTRACT_URI } from "~test/ipfs-uris.js";
7
+ import { getContract } from "../../../../contract/contract.js";
8
+ import { deployERC721Contract } from "../../../../extensions/prebuilts/deploy-erc721.js";
9
+ import { sendAndConfirmTransaction } from "../../../../transaction/actions/send-and-confirm-transaction.js";
10
+ import { getNFTs } from "../../read/getNFTs.js";
11
+ import { lazyMint } from "../../write/lazyMint.js";
12
+ import { updateMetadata } from "./updateMetadata.js";
13
+
14
+ const account = TEST_ACCOUNT_A;
15
+ const client = TEST_CLIENT;
16
+ const chain = ANVIL_CHAIN;
17
+
18
+ describe.runIf(process.env.TW_SECRET_KEY)("updateMetadata ERC721", () => {
19
+ it("should update metadata", async () => {
20
+ const address = await deployERC721Contract({
21
+ client,
22
+ chain,
23
+ account,
24
+ type: "DropERC721",
25
+ params: {
26
+ name: "NFT Drop",
27
+ contractURI: TEST_CONTRACT_URI,
28
+ },
29
+ });
30
+ const contract = getContract({
31
+ address,
32
+ client,
33
+ chain,
34
+ });
35
+ const lazyMintTx = lazyMint({
36
+ contract,
37
+ nfts: [{ name: "token 0" }, { name: "token 1" }, { name: "token 2" }],
38
+ });
39
+ await sendAndConfirmTransaction({ transaction: lazyMintTx, account });
40
+
41
+ const updateTx = updateMetadata({
42
+ contract,
43
+ targetTokenId: 1n,
44
+ newMetadata: { name: "token 1 - updated" },
45
+ client,
46
+ });
47
+ await sendAndConfirmTransaction({ transaction: updateTx, account });
48
+
49
+ const nfts = await getNFTs({ contract });
50
+
51
+ expect(nfts.length).toBe(3);
52
+ expect(nfts[0]?.metadata.name).toBe("token 0");
53
+ expect(nfts[1]?.metadata.name).toBe("token 1 - updated");
54
+ expect(nfts[2]?.metadata.name).toBe("token 2");
55
+ });
56
+ });