Skip to content

Commit 17c772e

Browse files
ERC721 signature mint (#2554)
1 parent 73b5161 commit 17c772e

File tree

14 files changed

+361
-118
lines changed

14 files changed

+361
-118
lines changed

packages/thirdweb/scripts/generate/abis/erc721/ISignatureDropERC721.json

Lines changed: 0 additions & 1 deletion
This file was deleted.
Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
[
2-
"event TokensMintedWithSignature(address indexed signer, address indexed mintedTo, uint256 indexed tokenIdMinted, (address to, address royaltyRecipient, uint256 royaltyBps, address primarySaleRecipient, string uri, uint256 quantity, uint256 pricePerToken, address currency, uint128 validityStartTimestamp, uint128 validityEndTimestamp, bytes32 uid) mintRequest)",
3-
"function mintWithSignature((address to, address royaltyRecipient, uint256 royaltyBps, address primarySaleRecipient, string uri, uint256 quantity, uint256 pricePerToken, address currency, uint128 validityStartTimestamp, uint128 validityEndTimestamp, bytes32 uid) req, bytes signature) payable returns (address signer)",
4-
"function verify((address to, address royaltyRecipient, uint256 royaltyBps, address primarySaleRecipient, string uri, uint256 quantity, uint256 pricePerToken, address currency, uint128 validityStartTimestamp, uint128 validityEndTimestamp, bytes32 uid) req, bytes signature) view returns (bool success, address signer)"
2+
"event TokensMintedWithSignature(address indexed signer, address indexed mintedTo, uint256 indexed tokenIdMinted, (address to,address royaltyRecipient,uint256 royaltyBps,address primarySaleRecipient,string uri,uint256 price,address currency,uint128 validityStartTimestamp,uint128 validityEndTimestamp,bytes32 uid) mintpayload)",
3+
"function mintWithSignature((address to,address royaltyRecipient,uint256 royaltyBps,address primarySaleRecipient,string uri,uint256 price,address currency,uint128 validityStartTimestamp,uint128 validityEndTimestamp,bytes32 uid) payload, bytes signature) payable returns (address signer)",
4+
"function verify((address to,address royaltyRecipient,uint256 royaltyBps,address primarySaleRecipient,string uri,uint256 price,address currency,uint128 validityStartTimestamp,uint128 validityEndTimestamp,bytes32 uid) payload, bytes signature) view returns (bool success, address signer)"
55
]

packages/thirdweb/src/contract/actions/resolve-abi.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,11 @@ export async function resolveAbiFromContractApi(
8383
`${contractApiBaseUrl}/${contract.chain.id}/${contract.address}`,
8484
);
8585
const json = await response.json();
86+
if (!json || json.error) {
87+
throw new Error(
88+
`Failed to resolve ABI from contract API. ${json.error || ""}`,
89+
);
90+
}
8691
return json;
8792
}
8893

packages/thirdweb/src/exports/extensions/erc721.ts

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -97,3 +97,12 @@ export {
9797
claimTo,
9898
type ClaimToParams,
9999
} from "../../extensions/erc721/drops/write/claimTo.js";
100+
101+
/**
102+
* SIGNATURE extension for ERC721
103+
*/
104+
export {
105+
mintWithSignature,
106+
type GenerateMintSignatureOptions,
107+
generateMintSignature,
108+
} from "../../extensions/erc721/write/sigMint.js";

packages/thirdweb/src/extensions/erc721/__generated__/ISignatureDropERC721/read/totalMinted.ts

Lines changed: 0 additions & 49 deletions
This file was deleted.

packages/thirdweb/src/extensions/erc721/__generated__/ISignatureMintERC721/events/TokensMintedWithSignature.ts

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

packages/thirdweb/src/extensions/erc721/__generated__/ISignatureMintERC721/read/verify.ts

Lines changed: 10 additions & 15 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

packages/thirdweb/src/extensions/erc721/__generated__/ISignatureMintERC721/write/mintWithSignature.ts

Lines changed: 11 additions & 16 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

packages/thirdweb/src/extensions/erc721/read/getTotalClaimedSupply.ts

Lines changed: 1 addition & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
import type { BaseTransactionOptions } from "../../../transaction/types.js";
22
import { nextTokenIdToClaim } from "../__generated__/IDrop/read/nextTokenIdToClaim.js";
3-
import { totalMinted } from "../__generated__/ISignatureDropERC721/read/totalMinted.js";
43

54
/**
65
* Retrieves the total claimed supply of ERC721 tokens.
@@ -21,14 +20,5 @@ import { totalMinted } from "../__generated__/ISignatureDropERC721/read/totalMin
2120
export async function getTotalClaimedSupply(
2221
options: BaseTransactionOptions,
2322
): Promise<bigint> {
24-
const results = await Promise.allSettled([
25-
totalMinted(options),
26-
nextTokenIdToClaim(options),
27-
]);
28-
for (const result of results) {
29-
if (result.status === "fulfilled") {
30-
return result.value;
31-
}
32-
}
33-
throw new Error("Failed to get total claimed supply");
23+
return nextTokenIdToClaim(options);
3424
}

packages/thirdweb/src/extensions/erc721/write/mintTo.ts

Lines changed: 1 addition & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,6 @@
1-
import type { FileOrBufferOrString } from "../../../storage/upload/types.js";
21
import type { BaseTransactionOptions } from "../../../transaction/types.js";
3-
import type { Prettify } from "../../../utils/type-utils.js";
2+
import type { NFTInput } from "../../../utils/nft/parseNft.js";
43
import { mintTo as generatedMintTo } from "../__generated__/IMintableERC721/write/mintTo.js";
5-
/**
6-
* Represents the input data for creating an NFT (Non-Fungible Token).
7-
*/
8-
type NFTInput = Prettify<
9-
{
10-
name?: string;
11-
description?: string;
12-
image?: FileOrBufferOrString;
13-
animation_url?: FileOrBufferOrString;
14-
external_url?: FileOrBufferOrString;
15-
background_color?: string;
16-
// TODO check if we truly need both of these?
17-
properties?: Record<string, unknown> | Array<Record<string, unknown>>;
18-
} & Record<string, unknown>
19-
>;
204

215
export type MintToParams = {
226
to: string;

0 commit comments

Comments
 (0)