Skip to content

Commit d7e6671

Browse files
fix: handle signature mint with price and currency (#2842)
1 parent 560d8ad commit d7e6671

File tree

5 files changed

+72
-9
lines changed

5 files changed

+72
-9
lines changed

.changeset/fluffy-frogs-smoke.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
"thirdweb": patch
3+
---
4+
5+
fix: handle signature minting with price and currency

packages/thirdweb/src/extensions/erc1155/write/sigMint.ts

Lines changed: 22 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,21 @@
11
import type { AbiParameterToPrimitiveType, Address } from "abitype";
22
import { maxUint256 } from "viem";
3-
import { NATIVE_TOKEN_ADDRESS } from "../../../constants/addresses.js";
3+
import {
4+
NATIVE_TOKEN_ADDRESS,
5+
isNativeTokenAddress,
6+
} from "../../../constants/addresses.js";
47
import type { ThirdwebContract } from "../../../contract/contract.js";
8+
import type { BaseTransactionOptions } from "../../../transaction/types.js";
59
import { toBigInt } from "../../../utils/bigint.js";
610
import { dateToSeconds, tenYearsFromNow } from "../../../utils/date.js";
711
import type { Hex } from "../../../utils/encoding/hex.js";
812
import type { NFTInput } from "../../../utils/nft/parseNft.js";
913
import { randomBytes32 } from "../../../utils/uuid.js";
1014
import type { Account } from "../../../wallets/interfaces/wallet.js";
11-
import { mintWithSignature as generatedMintWithSignature } from "../__generated__/ISignatureMintERC1155/write/mintWithSignature.js";
15+
import {
16+
type MintWithSignatureParams,
17+
mintWithSignature as generatedMintWithSignature,
18+
} from "../__generated__/ISignatureMintERC1155/write/mintWithSignature.js";
1219

1320
/**
1421
* Mints a new ERC1155 token with the given minter signature
@@ -29,7 +36,19 @@ import { mintWithSignature as generatedMintWithSignature } from "../__generated_
2936
* @extension ERC1155
3037
* @returns A promise that resolves to the transaction result.
3138
*/
32-
export const mintWithSignature = generatedMintWithSignature;
39+
export function mintWithSignature(
40+
options: BaseTransactionOptions<MintWithSignatureParams>,
41+
) {
42+
const value = isNativeTokenAddress(options.payload.currency)
43+
? options.payload.pricePerToken * options.payload.quantity
44+
: 0n;
45+
return generatedMintWithSignature({
46+
...options,
47+
overrides: {
48+
value,
49+
},
50+
});
51+
}
3352

3453
export type GenerateMintSignatureOptions = {
3554
account: Account;

packages/thirdweb/src/extensions/erc1155/write/sigMint1155.test.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,7 @@ describe.runIf(process.env.TW_SECRET_KEY)("generateMintSignature1155", () => {
6161
mintRequest: {
6262
to: TEST_ACCOUNT_B.address,
6363
quantity: 10n,
64+
pricePerToken: "0.1",
6465
metadata: {
6566
name: "My NFT",
6667
description: "This is my NFT",

packages/thirdweb/src/extensions/erc20/write/sigMint.ts

Lines changed: 22 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,19 @@
11
import type { AbiParameterToPrimitiveType, Address } from "abitype";
2-
import { NATIVE_TOKEN_ADDRESS } from "../../../constants/addresses.js";
2+
import {
3+
NATIVE_TOKEN_ADDRESS,
4+
isNativeTokenAddress,
5+
} from "../../../constants/addresses.js";
36
import type { ThirdwebContract } from "../../../contract/contract.js";
7+
import type { BaseTransactionOptions } from "../../../transaction/types.js";
48
import { dateToSeconds, tenYearsFromNow } from "../../../utils/date.js";
59
import type { Hex } from "../../../utils/encoding/hex.js";
610
import { randomBytes32 } from "../../../utils/uuid.js";
711
import type { Account } from "../../../wallets/interfaces/wallet.js";
812
import { name } from "../../common/read/name.js";
9-
import { mintWithSignature as generatedMintWithSignature } from "../__generated__/ISignatureMintERC20/write/mintWithSignature.js";
13+
import {
14+
type MintWithSignatureParams,
15+
mintWithSignature as generatedMintWithSignature,
16+
} from "../__generated__/ISignatureMintERC20/write/mintWithSignature.js";
1017

1118
/**
1219
* Mints a new ERC20 token with the given minter signature
@@ -27,7 +34,19 @@ import { mintWithSignature as generatedMintWithSignature } from "../__generated_
2734
* @extension ERC20
2835
* @returns A promise that resolves to the transaction result.
2936
*/
30-
export const mintWithSignature = generatedMintWithSignature;
37+
export function mintWithSignature(
38+
options: BaseTransactionOptions<MintWithSignatureParams>,
39+
) {
40+
const value = isNativeTokenAddress(options.payload.currency)
41+
? options.payload.price
42+
: 0n;
43+
return generatedMintWithSignature({
44+
...options,
45+
overrides: {
46+
value,
47+
},
48+
});
49+
}
3150

3251
export type GenerateMintSignatureOptions = {
3352
account: Account;

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

Lines changed: 22 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,20 @@
11
import type { AbiParameterToPrimitiveType, Address } from "abitype";
22
import type { Hex } from "viem";
3-
import { NATIVE_TOKEN_ADDRESS } from "../../../constants/addresses.js";
3+
import {
4+
NATIVE_TOKEN_ADDRESS,
5+
isNativeTokenAddress,
6+
} from "../../../constants/addresses.js";
47
import type { ThirdwebContract } from "../../../contract/contract.js";
8+
import type { BaseTransactionOptions } from "../../../transaction/types.js";
59
import { toBigInt } from "../../../utils/bigint.js";
610
import { dateToSeconds, tenYearsFromNow } from "../../../utils/date.js";
711
import type { NFTInput } from "../../../utils/nft/parseNft.js";
812
import { randomBytes32 } from "../../../utils/uuid.js";
913
import type { Account } from "../../../wallets/interfaces/wallet.js";
10-
import { mintWithSignature as generatedMintWithSignature } from "../__generated__/ISignatureMintERC721/write/mintWithSignature.js";
14+
import {
15+
type MintWithSignatureParams,
16+
mintWithSignature as generatedMintWithSignature,
17+
} from "../__generated__/ISignatureMintERC721/write/mintWithSignature.js";
1118

1219
/**
1320
* Mints a new ERC721 token with the given minter signature
@@ -28,7 +35,19 @@ import { mintWithSignature as generatedMintWithSignature } from "../__generated_
2835
* @extension ERC721
2936
* @returns A promise that resolves to the transaction result.
3037
*/
31-
export const mintWithSignature = generatedMintWithSignature;
38+
export function mintWithSignature(
39+
options: BaseTransactionOptions<MintWithSignatureParams>,
40+
) {
41+
const value = isNativeTokenAddress(options.payload.currency)
42+
? options.payload.price
43+
: 0n;
44+
return generatedMintWithSignature({
45+
...options,
46+
overrides: {
47+
value,
48+
},
49+
});
50+
}
3251

3352
export type GenerateMintSignatureOptions = {
3453
account: Account;

0 commit comments

Comments
 (0)