From b03250f62a06dfcb64837789391b13f28574b6c6 Mon Sep 17 00:00:00 2001 From: adam-maj Date: Mon, 13 Jun 2022 13:31:45 -0400 Subject: [PATCH 1/2] Update test cases --- .../classes/erc-1155-signature-minting.ts | 83 +++++++++++++++++-- src/schema/contracts/common/signature.ts | 21 ++++- test/signature-mint-1155.test.ts | 13 ++- 3 files changed, 100 insertions(+), 17 deletions(-) diff --git a/src/core/classes/erc-1155-signature-minting.ts b/src/core/classes/erc-1155-signature-minting.ts index 54e25e0f9..ca80d70c1 100644 --- a/src/core/classes/erc-1155-signature-minting.ts +++ b/src/core/classes/erc-1155-signature-minting.ts @@ -1,9 +1,12 @@ import { FilledSignaturePayload1155, + FilledSignaturePayload1155WithTokenId, MintRequest1155, PayloadToSign1155, + PayloadToSign1155WithTokenId, PayloadWithUri1155, Signature1155PayloadInput, + Signature1155PayloadInputWithTokenId, Signature1155PayloadOutput, SignedPayload1155, } from "../../schema/contracts/common/signature"; @@ -15,7 +18,7 @@ import { ITokenERC1155, TokenERC1155 } from "contracts"; import { IStorage } from "../interfaces"; import { ContractRoles } from "./contract-roles"; import { NFTCollection } from "../../contracts"; -import { BigNumber } from "ethers"; +import { BigNumber, ethers } from "ethers"; import { uploadOrExtractURIs } from "../../common/nft"; import { TokensMintedWithSignatureEvent } from "contracts/ITokenERC1155"; @@ -152,7 +155,7 @@ export class Erc1155SignatureMinting { } /** - * Generate a signature that can be used to mint a dynamic NFT + * Generate a signature that can be used to mint an NFT dynamically. * * @remarks Takes in an NFT and some information about how it can be minted, uploads the metadata and signs it with your private key. The generated signature can then be used to mint an NFT using the exact payload and signature generated. * @@ -182,17 +185,62 @@ export class Erc1155SignatureMinting { * const signedPayload = contract.signature.generate(payload); * // now anyone can use these to mint the NFT using `contract.signature.mint(signedPayload)` * ``` - * @param mintRequest - the payload to sign + * @param payloadToSign - the payload to sign * @returns the signed payload and the corresponding signature */ public async generate( - mintRequest: PayloadToSign1155, + payloadToSign: PayloadToSign1155, ): Promise { - return (await this.generateBatch([mintRequest]))[0]; + const payload = { + ...payloadToSign, + tokenId: ethers.constants.MaxUint256, + }; + return this.generateFromTokenId(payload); + } + + /** + * Generate a signature that can be used to mint additionaly supply to an existing NFT. + * + * @remarks Takes in a payload with the token ID of an existing NFT, and signs it with your private key. The generated signature can then be used to mint additional supply to the NFT using the exact payload and signature generated. + * + * @example + * ```javascript + * const nftMetadata = { + * name: "Cool NFT #1", + * description: "This is a cool NFT", + * image: fs.readFileSync("path/to/image.png"), // This can be an image url or file + * }; + * + * const startTime = new Date(); + * const endTime = new Date(Date.now() + 60 * 60 * 24 * 1000); + * const payload = { + * tokenId: 0, // Instead of metadata, we specificy the token ID of the NFT to mint supply to + * to: {{wallet_address}}, // Who will receive the NFT (or AddressZero for anyone) + * quantity: 2, // the quantity of NFTs to mint + * price: 0.5, // the price per NFT + * currencyAddress: NATIVE_TOKEN_ADDRESS, // the currency to pay with + * mintStartTime: startTime, // can mint anytime from now + * mintEndTime: endTime, // to 24h from now + * royaltyRecipient: "0x...", // custom royalty recipient for this NFT + * royaltyBps: 100, // custom royalty fees for this NFT (in bps) + * primarySaleRecipient: "0x...", // custom sale recipient for this NFT + * }; + * + * const signedPayload = contract.signature.generate(payload); + * // now anyone can use these to mint the NFT using `contract.signature.mint(signedPayload)` + * ``` + * @param payloadToSign - the payload to sign + * @returns the signed payload and the corresponding signature + */ + public async generateFromTokenId( + payloadToSign: PayloadToSign1155WithTokenId, + ): Promise { + const payloads = await this.generateBatchFromTokenIds([payloadToSign]); + return payloads[0]; } /** - * Genrate a batch of signatures that can be used to mint many dynamic NFTs. + * Generate a batch of signatures that can be used to mint many new NFTs dynamically. * * @remarks See {@link Erc721SignatureMinting.generate} * @@ -201,15 +249,32 @@ export class Erc1155SignatureMinting { */ public async generateBatch( payloadsToSign: PayloadToSign1155[], + ): Promise { + const payloads = payloadsToSign.map((payload) => ({ + ...payload, + tokenId: ethers.constants.MaxUint256, + })); + return this.generateBatchFromTokenIds(payloads); + } + + /** + * Genrate a batch of signatures that can be used to mint new NFTs or additionaly supply to existing NFTs dynamically. + * + * @remarks See {@link Erc721SignatureMinting.generateFromTokenId} + * + * @param payloadsToSign - the payloads to sign with tokenIds specified + * @returns an array of payloads and signatures + */ + public async generateBatchFromTokenIds( + payloadsToSign: PayloadToSign1155WithTokenId[], ): Promise { await this.roles.verify( ["minter"], await this.contractWrapper.getSignerAddress(), ); - const parsedRequests: FilledSignaturePayload1155[] = payloadsToSign.map( - (m) => Signature1155PayloadInput.parse(m), - ); + const parsedRequests: FilledSignaturePayload1155WithTokenId[] = + payloadsToSign.map((m) => Signature1155PayloadInputWithTokenId.parse(m)); const metadatas = parsedRequests.map((r) => r.metadata); const uris = await uploadOrExtractURIs(metadatas, this.storage); diff --git a/src/schema/contracts/common/signature.ts b/src/schema/contracts/common/signature.ts index a0d50fd74..414ab4778 100644 --- a/src/schema/contracts/common/signature.ts +++ b/src/schema/contracts/common/signature.ts @@ -67,10 +67,17 @@ export const Signature721PayloadOutput = Signature721PayloadInput.extend({ */ export const Signature1155PayloadInput = Signature721PayloadInput.extend({ metadata: NFTInputOrUriSchema.default(""), - tokenId: BigNumberishSchema.default(ethers.constants.MaxUint256), quantity: BigNumberishSchema, }); +/** + * @internal + */ +export const Signature1155PayloadInputWithTokenId = + Signature1155PayloadInput.extend({ + tokenId: BigNumberishSchema, + }); + /** * @internal */ @@ -142,6 +149,12 @@ export type SignedPayload721 = { export type FilledSignaturePayload1155 = z.output< typeof Signature1155PayloadInput >; +/** + * @public + */ +export type FilledSignaturePayload1155WithTokenId = z.output< + typeof Signature1155PayloadInputWithTokenId +>; /** * @public */ @@ -162,6 +175,12 @@ export type PayloadWithUri721withQuantity = z.output< * @public */ export type PayloadToSign1155 = z.input; +/** + * @public + */ +export type PayloadToSign1155WithTokenId = z.input< + typeof Signature1155PayloadInputWithTokenId +>; /** * @public */ diff --git a/test/signature-mint-1155.test.ts b/test/signature-mint-1155.test.ts index e61a8def9..938cad726 100644 --- a/test/signature-mint-1155.test.ts +++ b/test/signature-mint-1155.test.ts @@ -144,7 +144,7 @@ describe("Edition sig minting", async () => { }); it("should allow batch minting", async () => { - const payloads = []; + const payloads: PayloadToSign1155[] = []; const freeMint = { currencyAddress: NATIVE_TOKEN_ADDRESS, metadata: { @@ -157,9 +157,8 @@ describe("Edition sig minting", async () => { for (let i = 0; i < 10; i++) { payloads.push(freeMint); } - const batch = await Promise.all( - payloads.map(async (p) => await editionContract.signature.generate(p)), - ); + const batch = await editionContract.signature.generateBatch(payloads); + await sdk.updateSignerOrProvider(samWallet); const tx = await editionContract.signature.mintBatch(batch); expect(tx.length).to.eq(10); @@ -222,12 +221,12 @@ describe("Edition sig minting", async () => { it("should mint the right metadata", async () => { const tx = await editionContract.signature.mint(v1); const nft = await editionContract.get(tx.id); - assert.equal(nft.metadata.name, meta.metadata.name); + assert.equal(nft.metadata.name, (meta.metadata as any)?.name); }); it("should mint additional supply", async () => { const tx = await editionContract.signature.mint(v1); - const additional = await editionContract.signature.generate({ + const additional = await editionContract.signature.generateFromTokenId({ tokenId: tx.id, quantity: 100, }); @@ -245,7 +244,7 @@ describe("Edition sig minting", async () => { metadata: { name: "test" }, supply: 0, }); - const payload = await editionContract.signature.generate({ + const payload = await editionContract.signature.generateFromTokenId({ tokenId: "0", quantity: "1", metadata: "", From e22d628be3d2571fd7a4716f16eee305938ed137 Mon Sep 17 00:00:00 2001 From: adam-maj Date: Mon, 13 Jun 2022 13:36:16 -0400 Subject: [PATCH 2/2] Build and generate docs --- docs/sdk.erc1155signatureminting.generate.md | 6 +- ...k.erc1155signatureminting.generatebatch.md | 4 +- ...natureminting.generatebatchfromtokenids.md | 30 ++ ...155signatureminting.generatefromtokenid.md | 59 ++++ docs/sdk.erc1155signatureminting.md | 6 +- ...k.filledsignaturepayload1155withtokenid.md | 12 + docs/sdk.md | 2 + docs/sdk.payloadtosign1155withtokenid.md | 12 + etc/sdk.api.md | 323 ++++++++++++------ .../classes/erc-1155-signature-minting.ts | 6 +- src/schema/contracts/common/signature.ts | 2 +- 11 files changed, 349 insertions(+), 113 deletions(-) create mode 100644 docs/sdk.erc1155signatureminting.generatebatchfromtokenids.md create mode 100644 docs/sdk.erc1155signatureminting.generatefromtokenid.md create mode 100644 docs/sdk.filledsignaturepayload1155withtokenid.md create mode 100644 docs/sdk.payloadtosign1155withtokenid.md diff --git a/docs/sdk.erc1155signatureminting.generate.md b/docs/sdk.erc1155signatureminting.generate.md index b2f981148..f5fbbb2f8 100644 --- a/docs/sdk.erc1155signatureminting.generate.md +++ b/docs/sdk.erc1155signatureminting.generate.md @@ -4,19 +4,19 @@ ## Erc1155SignatureMinting.generate() method -Generate a signature that can be used to mint a dynamic NFT +Generate a signature that can be used to mint an NFT dynamically. Signature: ```typescript -generate(mintRequest: PayloadToSign1155): Promise; +generate(payloadToSign: PayloadToSign1155): Promise; ``` ## Parameters | Parameter | Type | Description | | --- | --- | --- | -| mintRequest | [PayloadToSign1155](./sdk.payloadtosign1155.md) | the payload to sign | +| payloadToSign | [PayloadToSign1155](./sdk.payloadtosign1155.md) | the payload to sign | Returns: diff --git a/docs/sdk.erc1155signatureminting.generatebatch.md b/docs/sdk.erc1155signatureminting.generatebatch.md index d22fb236b..be1dab028 100644 --- a/docs/sdk.erc1155signatureminting.generatebatch.md +++ b/docs/sdk.erc1155signatureminting.generatebatch.md @@ -4,7 +4,7 @@ ## Erc1155SignatureMinting.generateBatch() method -Genrate a batch of signatures that can be used to mint many dynamic NFTs. +Generate a batch of signatures that can be used to mint many new NFTs dynamically. Signature: @@ -26,5 +26,5 @@ an array of payloads and signatures ## Remarks -See [Erc721SignatureMinting.generate()](./sdk.erc721signatureminting.generate.md) +See [Erc1155SignatureMinting.generate()](./sdk.erc1155signatureminting.generate.md) diff --git a/docs/sdk.erc1155signatureminting.generatebatchfromtokenids.md b/docs/sdk.erc1155signatureminting.generatebatchfromtokenids.md new file mode 100644 index 000000000..2a370f70c --- /dev/null +++ b/docs/sdk.erc1155signatureminting.generatebatchfromtokenids.md @@ -0,0 +1,30 @@ + + +[Home](./index.md) > [@thirdweb-dev/sdk](./sdk.md) > [Erc1155SignatureMinting](./sdk.erc1155signatureminting.md) > [generateBatchFromTokenIds](./sdk.erc1155signatureminting.generatebatchfromtokenids.md) + +## Erc1155SignatureMinting.generateBatchFromTokenIds() method + +Genrate a batch of signatures that can be used to mint new NFTs or additionaly supply to existing NFTs dynamically. + +Signature: + +```typescript +generateBatchFromTokenIds(payloadsToSign: PayloadToSign1155WithTokenId[]): Promise; +``` + +## Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| payloadsToSign | [PayloadToSign1155WithTokenId](./sdk.payloadtosign1155withtokenid.md)\[\] | the payloads to sign with tokenIds specified | + +Returns: + +Promise<[SignedPayload1155](./sdk.signedpayload1155.md)\[\]> + +an array of payloads and signatures + +## Remarks + +See [Erc1155SignatureMinting.generateFromTokenId()](./sdk.erc1155signatureminting.generatefromtokenid.md) + diff --git a/docs/sdk.erc1155signatureminting.generatefromtokenid.md b/docs/sdk.erc1155signatureminting.generatefromtokenid.md new file mode 100644 index 000000000..3973f9d47 --- /dev/null +++ b/docs/sdk.erc1155signatureminting.generatefromtokenid.md @@ -0,0 +1,59 @@ + + +[Home](./index.md) > [@thirdweb-dev/sdk](./sdk.md) > [Erc1155SignatureMinting](./sdk.erc1155signatureminting.md) > [generateFromTokenId](./sdk.erc1155signatureminting.generatefromtokenid.md) + +## Erc1155SignatureMinting.generateFromTokenId() method + +Generate a signature that can be used to mint additionaly supply to an existing NFT. + +Signature: + +```typescript +generateFromTokenId(payloadToSign: PayloadToSign1155WithTokenId): Promise; +``` + +## Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| payloadToSign | [PayloadToSign1155WithTokenId](./sdk.payloadtosign1155withtokenid.md) | the payload to sign | + +Returns: + +Promise<[SignedPayload1155](./sdk.signedpayload1155.md)> + +the signed payload and the corresponding signature + +## Remarks + +Takes in a payload with the token ID of an existing NFT, and signs it with your private key. The generated signature can then be used to mint additional supply to the NFT using the exact payload and signature generated. + +## Example + + +```javascript +const nftMetadata = { + name: "Cool NFT #1", + description: "This is a cool NFT", + image: fs.readFileSync("path/to/image.png"), // This can be an image url or file +}; + +const startTime = new Date(); +const endTime = new Date(Date.now() + 60 * 60 * 24 * 1000); +const payload = { + tokenId: 0, // Instead of metadata, we specificy the token ID of the NFT to mint supply to + to: {{wallet_address}}, // Who will receive the NFT (or AddressZero for anyone) + quantity: 2, // the quantity of NFTs to mint + price: 0.5, // the price per NFT + currencyAddress: NATIVE_TOKEN_ADDRESS, // the currency to pay with + mintStartTime: startTime, // can mint anytime from now + mintEndTime: endTime, // to 24h from now + royaltyRecipient: "0x...", // custom royalty recipient for this NFT + royaltyBps: 100, // custom royalty fees for this NFT (in bps) + primarySaleRecipient: "0x...", // custom sale recipient for this NFT +}; + +const signedPayload = contract.signature.generate(payload); +// now anyone can use these to mint the NFT using `contract.signature.mint(signedPayload)` +``` + diff --git a/docs/sdk.erc1155signatureminting.md b/docs/sdk.erc1155signatureminting.md index f47e0b51b..c2edf866e 100644 --- a/docs/sdk.erc1155signatureminting.md +++ b/docs/sdk.erc1155signatureminting.md @@ -22,8 +22,10 @@ export declare class Erc1155SignatureMinting | Method | Modifiers | Description | | --- | --- | --- | -| [generate(mintRequest)](./sdk.erc1155signatureminting.generate.md) | | Generate a signature that can be used to mint a dynamic NFT | -| [generateBatch(payloadsToSign)](./sdk.erc1155signatureminting.generatebatch.md) | | Genrate a batch of signatures that can be used to mint many dynamic NFTs. | +| [generate(payloadToSign)](./sdk.erc1155signatureminting.generate.md) | | Generate a signature that can be used to mint an NFT dynamically. | +| [generateBatch(payloadsToSign)](./sdk.erc1155signatureminting.generatebatch.md) | | Generate a batch of signatures that can be used to mint many new NFTs dynamically. | +| [generateBatchFromTokenIds(payloadsToSign)](./sdk.erc1155signatureminting.generatebatchfromtokenids.md) | | Genrate a batch of signatures that can be used to mint new NFTs or additionaly supply to existing NFTs dynamically. | +| [generateFromTokenId(payloadToSign)](./sdk.erc1155signatureminting.generatefromtokenid.md) | | Generate a signature that can be used to mint additionaly supply to an existing NFT. | | [mint(signedPayload)](./sdk.erc1155signatureminting.mint.md) | | Mint a dynamically generated NFT | | [mintBatch(signedPayloads)](./sdk.erc1155signatureminting.mintbatch.md) | | Mint any number of dynamically generated NFT at once | | [verify(signedPayload)](./sdk.erc1155signatureminting.verify.md) | | Verify that a payload is correctly signed | diff --git a/docs/sdk.filledsignaturepayload1155withtokenid.md b/docs/sdk.filledsignaturepayload1155withtokenid.md new file mode 100644 index 000000000..db0dac539 --- /dev/null +++ b/docs/sdk.filledsignaturepayload1155withtokenid.md @@ -0,0 +1,12 @@ + + +[Home](./index.md) > [@thirdweb-dev/sdk](./sdk.md) > [FilledSignaturePayload1155WithTokenId](./sdk.filledsignaturepayload1155withtokenid.md) + +## FilledSignaturePayload1155WithTokenId type + + +Signature: + +```typescript +export declare type FilledSignaturePayload1155WithTokenId = z.output; +``` diff --git a/docs/sdk.md b/docs/sdk.md index 70e00147c..bcde785bc 100644 --- a/docs/sdk.md +++ b/docs/sdk.md @@ -151,6 +151,7 @@ | [FilledConditionInput](./sdk.filledconditioninput.md) | | | [FilledSignature721WithQuantity](./sdk.filledsignature721withquantity.md) | | | [FilledSignaturePayload1155](./sdk.filledsignaturepayload1155.md) | | +| [FilledSignaturePayload1155WithTokenId](./sdk.filledsignaturepayload1155withtokenid.md) | | | [FilledSignaturePayload20](./sdk.filledsignaturepayload20.md) | | | [FilledSignaturePayload721](./sdk.filledsignaturepayload721.md) | | | [ForwardRequestMessage](./sdk.forwardrequestmessage.md) | Forward Request Message that's used for gasless transaction | @@ -161,6 +162,7 @@ | [NFTMetadataInput](./sdk.nftmetadatainput.md) | | | [NFTMetadataOwner](./sdk.nftmetadataowner.md) | | | [PayloadToSign1155](./sdk.payloadtosign1155.md) | | +| [PayloadToSign1155WithTokenId](./sdk.payloadtosign1155withtokenid.md) | | | [PayloadToSign20](./sdk.payloadtosign20.md) | | | [PayloadToSign721](./sdk.payloadtosign721.md) | | | [PayloadToSign721withQuantity](./sdk.payloadtosign721withquantity.md) | | diff --git a/docs/sdk.payloadtosign1155withtokenid.md b/docs/sdk.payloadtosign1155withtokenid.md new file mode 100644 index 000000000..58909228b --- /dev/null +++ b/docs/sdk.payloadtosign1155withtokenid.md @@ -0,0 +1,12 @@ + + +[Home](./index.md) > [@thirdweb-dev/sdk](./sdk.md) > [PayloadToSign1155WithTokenId](./sdk.payloadtosign1155withtokenid.md) + +## PayloadToSign1155WithTokenId type + + +Signature: + +```typescript +export declare type PayloadToSign1155WithTokenId = z.input; +``` diff --git a/etc/sdk.api.md b/etc/sdk.api.md index 8ecad58c9..2645533cf 100644 --- a/etc/sdk.api.md +++ b/etc/sdk.api.md @@ -114,8 +114,8 @@ export const BaseSignaturePayloadInput: z.ZodObject<{ to: z.ZodDefault; price: z.ZodDefault, string, string | number>>; currencyAddress: z.ZodDefault; - mintStartTime: z.ZodDefault>; - mintEndTime: z.ZodDefault>; + mintStartTime: z.ZodDefault>; + mintEndTime: z.ZodDefault>; uid: z.ZodEffects, string, string | undefined>; primarySaleRecipient: z.ZodDefault; }, "strip", z.ZodTypeAny, { @@ -124,8 +124,8 @@ export const BaseSignaturePayloadInput: z.ZodObject<{ uid: string; price: string; currencyAddress: string; - mintStartTime: ethers.BigNumber; - mintEndTime: ethers.BigNumber; + mintStartTime: BigNumber; + mintEndTime: BigNumber; }, { to?: string | undefined; primarySaleRecipient?: string | undefined; @@ -1611,8 +1611,10 @@ export class Erc1155Mintable implements DetectableFeature { // @public export class Erc1155SignatureMinting { constructor(contractWrapper: ContractWrapper, roles: ContractRoles, storage: IStorage); - generate(mintRequest: PayloadToSign1155): Promise; + generate(payloadToSign: PayloadToSign1155): Promise; generateBatch(payloadsToSign: PayloadToSign1155[]): Promise; + generateBatchFromTokenIds(payloadsToSign: PayloadToSign1155WithTokenId[]): Promise; + generateFromTokenId(payloadToSign: PayloadToSign1155WithTokenId): Promise; mint(signedPayload: SignedPayload1155): Promise; mintBatch(signedPayloads: SignedPayload1155[]): Promise; verify(signedPayload: SignedPayload1155): Promise; @@ -1911,6 +1913,11 @@ export type FilledSignature721WithQuantity = z.output; +// Warning: (ae-incompatible-release-tags) The symbol "FilledSignaturePayload1155WithTokenId" is marked as @public, but its signature references "Signature1155PayloadInputWithTokenId" which is marked as @internal +// +// @public (undocumented) +export type FilledSignaturePayload1155WithTokenId = z.output; + // Warning: (ae-incompatible-release-tags) The symbol "FilledSignaturePayload20" is marked as @public, but its signature references "Signature20PayloadInput" which is marked as @internal // // @public (undocumented) @@ -3177,6 +3184,11 @@ export const PartialClaimConditionInputSchema: z.ZodObject<{ // @public (undocumented) export type PayloadToSign1155 = z.input; +// Warning: (ae-incompatible-release-tags) The symbol "PayloadToSign1155WithTokenId" is marked as @public, but its signature references "Signature1155PayloadInputWithTokenId" which is marked as @internal +// +// @public (undocumented) +export type PayloadToSign1155WithTokenId = z.input; + // Warning: (ae-incompatible-release-tags) The symbol "PayloadToSign20" is marked as @public, but its signature references "Signature20PayloadInput" which is marked as @internal // // @public (undocumented) @@ -3494,8 +3506,8 @@ export const Signature1155PayloadInput: z.ZodObject; price: z.ZodDefault, string, string | number>>; currencyAddress: z.ZodDefault; - mintStartTime: z.ZodDefault>; - mintEndTime: z.ZodDefault>; + mintStartTime: z.ZodDefault>; + mintEndTime: z.ZodDefault>; uid: z.ZodEffects, string, string | undefined>; primarySaleRecipient: z.ZodDefault; }, { @@ -3505,9 +3517,7 @@ export const Signature1155PayloadInput: z.ZodObject>>; external_url: z.ZodOptional>>; }, { - animation_url: z.ZodOptional>; /** - * @internal - */ + animation_url: z.ZodOptional>; background_color: z.ZodOptional, z.ZodString]>>; properties: z.ZodOptional>, "many">, z.ZodRecord>]>>; attributes: z.ZodOptional>, "many">, z.ZodRecord>]>>; @@ -3541,9 +3551,7 @@ export const Signature1155PayloadInput: z.ZodObject>>; external_url: z.ZodOptional>>; }, { - animation_url: z.ZodOptional>; /** - * @internal - */ + animation_url: z.ZodOptional>; background_color: z.ZodOptional, z.ZodString]>>; properties: z.ZodOptional>, "many">, z.ZodRecord>]>>; attributes: z.ZodOptional>, "many">, z.ZodRecord>]>>; @@ -3568,8 +3576,133 @@ export const Signature1155PayloadInput: z.ZodObject | Record[] | undefined; attributes?: Record | Record[] | undefined; }>, z.ZodString]>>; - tokenId: z.ZodDefault]>, ethers.BigNumber, string | number | bigint | ethers.BigNumber>, string, string | number | bigint | ethers.BigNumber>>; - quantity: z.ZodEffects]>, ethers.BigNumber, string | number | bigint | ethers.BigNumber>, string, string | number | bigint | ethers.BigNumber>; + quantity: z.ZodEffects]>, BigNumber, string | number | bigint | BigNumber>, string, string | number | bigint | BigNumber>; +}>, "strip", z.ZodTypeAny, { + to: string; + primarySaleRecipient: string; + royaltyRecipient: string; + royaltyBps: number; + quantity: string; + uid: string; + price: string; + currencyAddress: string; + metadata: string | { + [x: string]: Json; + name?: string | undefined; + description?: string | null | undefined; + image?: any; + external_url?: any; + animation_url?: any; + background_color?: string | undefined; + properties?: Record | Record[] | undefined; + attributes?: Record | Record[] | undefined; + }; + mintStartTime: BigNumber; + mintEndTime: BigNumber; +}, { + to?: string | undefined; + primarySaleRecipient?: string | undefined; + royaltyRecipient?: string | undefined; + royaltyBps?: number | undefined; + uid?: string | undefined; + price?: string | number | undefined; + currencyAddress?: string | undefined; + metadata?: string | { + [x: string]: Json; + name?: string | undefined; + description?: string | null | undefined; + image?: any; + external_url?: any; + animation_url?: any; + background_color?: string | undefined; + properties?: Record | Record[] | undefined; + attributes?: Record | Record[] | undefined; + } | undefined; + mintStartTime?: Date | undefined; + mintEndTime?: Date | undefined; + quantity: string | number | bigint | BigNumber; +}>; + +// Warning: (ae-internal-missing-underscore) The name "Signature1155PayloadInputWithTokenId" should be prefixed with an underscore because the declaration is marked as @internal +// +// @internal (undocumented) +export const Signature1155PayloadInputWithTokenId: z.ZodObject; + price: z.ZodDefault, string, string | number>>; + currencyAddress: z.ZodDefault; + mintStartTime: z.ZodDefault>; + mintEndTime: z.ZodDefault>; + uid: z.ZodEffects, string, string | undefined>; + primarySaleRecipient: z.ZodDefault; +}, { + metadata: z.ZodUnion<[z.ZodObject; + description: z.ZodOptional>; + image: z.ZodOptional>>; + external_url: z.ZodOptional>>; + }, { + animation_url: z.ZodOptional>; + background_color: z.ZodOptional, z.ZodString]>>; + properties: z.ZodOptional>, "many">, z.ZodRecord>]>>; + attributes: z.ZodOptional>, "many">, z.ZodRecord>]>>; + }>, "strip", z.ZodLazy>, { + [x: string]: Json; + name?: string | undefined; + description?: string | null | undefined; + image?: any; + external_url?: any; + animation_url?: any; + background_color?: string | undefined; + properties?: Record | Record[] | undefined; + attributes?: Record | Record[] | undefined; + }, { + [x: string]: Json; + name?: string | undefined; + description?: string | null | undefined; + image?: any; + external_url?: any; + animation_url?: any; + background_color?: string | undefined; + properties?: Record | Record[] | undefined; + attributes?: Record | Record[] | undefined; + }>, z.ZodString]>; + royaltyRecipient: z.ZodDefault; + royaltyBps: z.ZodDefault; +}>, { + metadata: z.ZodDefault; + description: z.ZodOptional>; + image: z.ZodOptional>>; + external_url: z.ZodOptional>>; + }, { + animation_url: z.ZodOptional>; + background_color: z.ZodOptional, z.ZodString]>>; + properties: z.ZodOptional>, "many">, z.ZodRecord>]>>; + attributes: z.ZodOptional>, "many">, z.ZodRecord>]>>; + }>, "strip", z.ZodLazy>, { + [x: string]: Json; + name?: string | undefined; + description?: string | null | undefined; + image?: any; + external_url?: any; + animation_url?: any; + background_color?: string | undefined; + properties?: Record | Record[] | undefined; + attributes?: Record | Record[] | undefined; + }, { + [x: string]: Json; + name?: string | undefined; + description?: string | null | undefined; + image?: any; + external_url?: any; + animation_url?: any; + background_color?: string | undefined; + properties?: Record | Record[] | undefined; + attributes?: Record | Record[] | undefined; + }>, z.ZodString]>>; + quantity: z.ZodEffects]>, BigNumber, string | number | bigint | BigNumber>, string, string | number | bigint | BigNumber>; +}>, { + tokenId: z.ZodEffects]>, BigNumber, string | number | bigint | BigNumber>, string, string | number | bigint | BigNumber>; }>, "strip", z.ZodTypeAny, { to: string; primarySaleRecipient: string; @@ -3591,12 +3724,11 @@ export const Signature1155PayloadInput: z.ZodObject | Record[] | undefined; attributes?: Record | Record[] | undefined; }; - mintStartTime: ethers.BigNumber; - mintEndTime: ethers.BigNumber; + mintStartTime: BigNumber; + mintEndTime: BigNumber; }, { to?: string | undefined; primarySaleRecipient?: string | undefined; - tokenId?: string | number | bigint | ethers.BigNumber | undefined; royaltyRecipient?: string | undefined; royaltyBps?: number | undefined; uid?: string | undefined; @@ -3615,7 +3747,8 @@ export const Signature1155PayloadInput: z.ZodObject; // Warning: (ae-internal-missing-underscore) The name "Signature1155PayloadOutput" should be prefixed with an underscore because the declaration is marked as @internal @@ -3625,8 +3758,8 @@ export const Signature1155PayloadOutput: z.ZodObject; price: z.ZodDefault, string, string | number>>; currencyAddress: z.ZodDefault; - mintStartTime: z.ZodDefault>; - mintEndTime: z.ZodDefault>; + mintStartTime: z.ZodDefault>; + mintEndTime: z.ZodDefault>; uid: z.ZodEffects, string, string | undefined>; primarySaleRecipient: z.ZodDefault; }, { @@ -3636,9 +3769,7 @@ export const Signature1155PayloadOutput: z.ZodObject>>; external_url: z.ZodOptional>>; }, { - animation_url: z.ZodOptional>; /** - * @internal - */ + animation_url: z.ZodOptional>; background_color: z.ZodOptional, z.ZodString]>>; properties: z.ZodOptional>, "many">, z.ZodRecord>]>>; attributes: z.ZodOptional>, "many">, z.ZodRecord>]>>; @@ -3667,20 +3798,20 @@ export const Signature1155PayloadOutput: z.ZodObject; }>, { uri: z.ZodString; - royaltyBps: z.ZodEffects]>, ethers.BigNumber, string | number | bigint | ethers.BigNumber>; - mintStartTime: z.ZodEffects]>, ethers.BigNumber, string | number | bigint | ethers.BigNumber>; - mintEndTime: z.ZodEffects]>, ethers.BigNumber, string | number | bigint | ethers.BigNumber>; + royaltyBps: z.ZodEffects]>, BigNumber, string | number | bigint | BigNumber>; + mintStartTime: z.ZodEffects]>, BigNumber, string | number | bigint | BigNumber>; + mintEndTime: z.ZodEffects]>, BigNumber, string | number | bigint | BigNumber>; }>, { - tokenId: z.ZodEffects]>, ethers.BigNumber, string | number | bigint | ethers.BigNumber>; - quantity: z.ZodEffects]>, ethers.BigNumber, string | number | bigint | ethers.BigNumber>; + tokenId: z.ZodEffects]>, BigNumber, string | number | bigint | BigNumber>; + quantity: z.ZodEffects]>, BigNumber, string | number | bigint | BigNumber>; }>, "strip", z.ZodTypeAny, { to: string; primarySaleRecipient: string; uri: string; - tokenId: ethers.BigNumber; + tokenId: BigNumber; royaltyRecipient: string; - royaltyBps: ethers.BigNumber; - quantity: ethers.BigNumber; + royaltyBps: BigNumber; + quantity: BigNumber; uid: string; price: string; currencyAddress: string; @@ -3695,8 +3826,8 @@ export const Signature1155PayloadOutput: z.ZodObject | Record[] | undefined; attributes?: Record | Record[] | undefined; }; - mintStartTime: ethers.BigNumber; - mintEndTime: ethers.BigNumber; + mintStartTime: BigNumber; + mintEndTime: BigNumber; }, { to?: string | undefined; primarySaleRecipient?: string | undefined; @@ -3705,9 +3836,9 @@ export const Signature1155PayloadOutput: z.ZodObject | Record[] | undefined; attributes?: Record | Record[] | undefined; }; - mintStartTime: string | number | bigint | ethers.BigNumber; - mintEndTime: string | number | bigint | ethers.BigNumber; + mintStartTime: string | number | bigint | BigNumber; + mintEndTime: string | number | bigint | BigNumber; }>; // Warning: (ae-internal-missing-underscore) The name "Signature20PayloadInput" should be prefixed with an underscore because the declaration is marked as @internal @@ -3730,8 +3861,8 @@ export const Signature20PayloadInput: z.ZodObject; price: z.ZodDefault, string, string | number>>; currencyAddress: z.ZodDefault; - mintStartTime: z.ZodDefault>; - mintEndTime: z.ZodDefault>; + mintStartTime: z.ZodDefault>; + mintEndTime: z.ZodDefault>; uid: z.ZodEffects, string, string | undefined>; primarySaleRecipient: z.ZodDefault; }, { @@ -3743,8 +3874,8 @@ export const Signature20PayloadInput: z.ZodObject; price: z.ZodDefault, string, string | number>>; currencyAddress: z.ZodDefault; - mintStartTime: z.ZodDefault>; - mintEndTime: z.ZodDefault>; + mintStartTime: z.ZodDefault>; + mintEndTime: z.ZodDefault>; uid: z.ZodEffects, string, string | undefined>; primarySaleRecipient: z.ZodDefault; }, { quantity: z.ZodEffects, string, string | number>; }>, { - mintStartTime: z.ZodEffects]>, ethers.BigNumber, string | number | bigint | ethers.BigNumber>; - mintEndTime: z.ZodEffects]>, ethers.BigNumber, string | number | bigint | ethers.BigNumber>; + mintStartTime: z.ZodEffects]>, BigNumber, string | number | bigint | BigNumber>; + mintEndTime: z.ZodEffects]>, BigNumber, string | number | bigint | BigNumber>; }>, "strip", z.ZodTypeAny, { to: string; primarySaleRecipient: string; @@ -3779,8 +3910,8 @@ export const Signature20PayloadOutput: z.ZodObject; // Warning: (ae-internal-missing-underscore) The name "Signature721PayloadInput" should be prefixed with an underscore because the declaration is marked as @internal @@ -3799,8 +3930,8 @@ export const Signature721PayloadInput: z.ZodObject; price: z.ZodDefault, string, string | number>>; currencyAddress: z.ZodDefault; - mintStartTime: z.ZodDefault>; - mintEndTime: z.ZodDefault>; + mintStartTime: z.ZodDefault>; + mintEndTime: z.ZodDefault>; uid: z.ZodEffects, string, string | undefined>; primarySaleRecipient: z.ZodDefault; }, { @@ -3810,9 +3941,7 @@ export const Signature721PayloadInput: z.ZodObject>>; external_url: z.ZodOptional>>; }, { - animation_url: z.ZodOptional>; /** - * @internal - */ + animation_url: z.ZodOptional>; background_color: z.ZodOptional, z.ZodString]>>; properties: z.ZodOptional>, "many">, z.ZodRecord>]>>; attributes: z.ZodOptional>, "many">, z.ZodRecord>]>>; @@ -3858,8 +3987,8 @@ export const Signature721PayloadInput: z.ZodObject | Record[] | undefined; attributes?: Record | Record[] | undefined; }; - mintStartTime: ethers.BigNumber; - mintEndTime: ethers.BigNumber; + mintStartTime: BigNumber; + mintEndTime: BigNumber; }, { to?: string | undefined; primarySaleRecipient?: string | undefined; @@ -3890,8 +4019,8 @@ export const Signature721PayloadOutput: z.ZodObject; price: z.ZodDefault, string, string | number>>; currencyAddress: z.ZodDefault; - mintStartTime: z.ZodDefault>; - mintEndTime: z.ZodDefault>; + mintStartTime: z.ZodDefault>; + mintEndTime: z.ZodDefault>; uid: z.ZodEffects, string, string | undefined>; primarySaleRecipient: z.ZodDefault; }, { @@ -3901,9 +4030,7 @@ export const Signature721PayloadOutput: z.ZodObject>>; external_url: z.ZodOptional>>; }, { - animation_url: z.ZodOptional>; /** - * @internal - */ + animation_url: z.ZodOptional>; background_color: z.ZodOptional, z.ZodString]>>; properties: z.ZodOptional>, "many">, z.ZodRecord>]>>; attributes: z.ZodOptional>, "many">, z.ZodRecord>]>>; @@ -3932,15 +4059,15 @@ export const Signature721PayloadOutput: z.ZodObject; }>, { uri: z.ZodString; - royaltyBps: z.ZodEffects]>, ethers.BigNumber, string | number | bigint | ethers.BigNumber>; - mintStartTime: z.ZodEffects]>, ethers.BigNumber, string | number | bigint | ethers.BigNumber>; - mintEndTime: z.ZodEffects]>, ethers.BigNumber, string | number | bigint | ethers.BigNumber>; + royaltyBps: z.ZodEffects]>, BigNumber, string | number | bigint | BigNumber>; + mintStartTime: z.ZodEffects]>, BigNumber, string | number | bigint | BigNumber>; + mintEndTime: z.ZodEffects]>, BigNumber, string | number | bigint | BigNumber>; }>, "strip", z.ZodTypeAny, { to: string; primarySaleRecipient: string; uri: string; royaltyRecipient: string; - royaltyBps: ethers.BigNumber; + royaltyBps: BigNumber; uid: string; price: string; currencyAddress: string; @@ -3955,8 +4082,8 @@ export const Signature721PayloadOutput: z.ZodObject | Record[] | undefined; attributes?: Record | Record[] | undefined; }; - mintStartTime: ethers.BigNumber; - mintEndTime: ethers.BigNumber; + mintStartTime: BigNumber; + mintEndTime: BigNumber; }, { to?: string | undefined; primarySaleRecipient?: string | undefined; @@ -3965,7 +4092,7 @@ export const Signature721PayloadOutput: z.ZodObject | Record[] | undefined; attributes?: Record | Record[] | undefined; }; - mintStartTime: string | number | bigint | ethers.BigNumber; - mintEndTime: string | number | bigint | ethers.BigNumber; + mintStartTime: string | number | bigint | BigNumber; + mintEndTime: string | number | bigint | BigNumber; }>; // Warning: (ae-internal-missing-underscore) The name "Signature721WithQuantityInput" should be prefixed with an underscore because the declaration is marked as @internal @@ -3988,8 +4115,8 @@ export const Signature721WithQuantityInput: z.ZodObject; price: z.ZodDefault, string, string | number>>; currencyAddress: z.ZodDefault; - mintStartTime: z.ZodDefault>; - mintEndTime: z.ZodDefault>; + mintStartTime: z.ZodDefault>; + mintEndTime: z.ZodDefault>; uid: z.ZodEffects, string, string | undefined>; primarySaleRecipient: z.ZodDefault; }, { @@ -3999,9 +4126,7 @@ export const Signature721WithQuantityInput: z.ZodObject>>; external_url: z.ZodOptional>>; }, { - animation_url: z.ZodOptional>; /** - * @internal - */ + animation_url: z.ZodOptional>; background_color: z.ZodOptional, z.ZodString]>>; properties: z.ZodOptional>, "many">, z.ZodRecord>]>>; attributes: z.ZodOptional>, "many">, z.ZodRecord>]>>; @@ -4035,9 +4160,7 @@ export const Signature721WithQuantityInput: z.ZodObject>>; external_url: z.ZodOptional>>; }, { - animation_url: z.ZodOptional>; /** - * @internal - */ + animation_url: z.ZodOptional>; background_color: z.ZodOptional, z.ZodString]>>; properties: z.ZodOptional>, "many">, z.ZodRecord>]>>; attributes: z.ZodOptional>, "many">, z.ZodRecord>]>>; @@ -4062,7 +4185,7 @@ export const Signature721WithQuantityInput: z.ZodObject | Record[] | undefined; attributes?: Record | Record[] | undefined; }>, z.ZodString]>>; - quantity: z.ZodEffects]>, ethers.BigNumber, string | number | bigint | ethers.BigNumber>, string, string | number | bigint | ethers.BigNumber>; + quantity: z.ZodEffects]>, BigNumber, string | number | bigint | BigNumber>, string, string | number | bigint | BigNumber>; }>, "strip", z.ZodTypeAny, { to: string; primarySaleRecipient: string; @@ -4083,8 +4206,8 @@ export const Signature721WithQuantityInput: z.ZodObject | Record[] | undefined; attributes?: Record | Record[] | undefined; }; - mintStartTime: ethers.BigNumber; - mintEndTime: ethers.BigNumber; + mintStartTime: BigNumber; + mintEndTime: BigNumber; }, { to?: string | undefined; primarySaleRecipient?: string | undefined; @@ -4106,7 +4229,7 @@ export const Signature721WithQuantityInput: z.ZodObject; // Warning: (ae-internal-missing-underscore) The name "Signature721WithQuantityOutput" should be prefixed with an underscore because the declaration is marked as @internal @@ -4116,8 +4239,8 @@ export const Signature721WithQuantityOutput: z.ZodObject; price: z.ZodDefault, string, string | number>>; currencyAddress: z.ZodDefault; - mintStartTime: z.ZodDefault>; - mintEndTime: z.ZodDefault>; + mintStartTime: z.ZodDefault>; + mintEndTime: z.ZodDefault>; uid: z.ZodEffects, string, string | undefined>; primarySaleRecipient: z.ZodDefault; }, { @@ -4127,9 +4250,7 @@ export const Signature721WithQuantityOutput: z.ZodObject>>; external_url: z.ZodOptional>>; }, { - animation_url: z.ZodOptional>; /** - * @internal - */ + animation_url: z.ZodOptional>; background_color: z.ZodOptional, z.ZodString]>>; properties: z.ZodOptional>, "many">, z.ZodRecord>]>>; attributes: z.ZodOptional>, "many">, z.ZodRecord>]>>; @@ -4158,18 +4279,18 @@ export const Signature721WithQuantityOutput: z.ZodObject; }>, { uri: z.ZodString; - royaltyBps: z.ZodEffects]>, ethers.BigNumber, string | number | bigint | ethers.BigNumber>; - mintStartTime: z.ZodEffects]>, ethers.BigNumber, string | number | bigint | ethers.BigNumber>; - mintEndTime: z.ZodEffects]>, ethers.BigNumber, string | number | bigint | ethers.BigNumber>; + royaltyBps: z.ZodEffects]>, BigNumber, string | number | bigint | BigNumber>; + mintStartTime: z.ZodEffects]>, BigNumber, string | number | bigint | BigNumber>; + mintEndTime: z.ZodEffects]>, BigNumber, string | number | bigint | BigNumber>; }>, { - quantity: z.ZodEffects]>, ethers.BigNumber, string | number | bigint | ethers.BigNumber>; + quantity: z.ZodEffects]>, BigNumber, string | number | bigint | BigNumber>; }>, "strip", z.ZodTypeAny, { to: string; primarySaleRecipient: string; uri: string; royaltyRecipient: string; - royaltyBps: ethers.BigNumber; - quantity: ethers.BigNumber; + royaltyBps: BigNumber; + quantity: BigNumber; uid: string; price: string; currencyAddress: string; @@ -4184,8 +4305,8 @@ export const Signature721WithQuantityOutput: z.ZodObject | Record[] | undefined; attributes?: Record | Record[] | undefined; }; - mintStartTime: ethers.BigNumber; - mintEndTime: ethers.BigNumber; + mintStartTime: BigNumber; + mintEndTime: BigNumber; }, { to?: string | undefined; primarySaleRecipient?: string | undefined; @@ -4194,8 +4315,8 @@ export const Signature721WithQuantityOutput: z.ZodObject | Record[] | undefined; attributes?: Record | Record[] | undefined; }; - mintStartTime: string | number | bigint | ethers.BigNumber; - mintEndTime: string | number | bigint | ethers.BigNumber; + mintStartTime: string | number | bigint | BigNumber; + mintEndTime: string | number | bigint | BigNumber; }>; // Warning: (ae-internal-missing-underscore) The name "SignatureDrop" should be prefixed with an underscore because the declaration is marked as @internal diff --git a/src/core/classes/erc-1155-signature-minting.ts b/src/core/classes/erc-1155-signature-minting.ts index ca80d70c1..15e0129b2 100644 --- a/src/core/classes/erc-1155-signature-minting.ts +++ b/src/core/classes/erc-1155-signature-minting.ts @@ -1,11 +1,9 @@ import { - FilledSignaturePayload1155, FilledSignaturePayload1155WithTokenId, MintRequest1155, PayloadToSign1155, PayloadToSign1155WithTokenId, PayloadWithUri1155, - Signature1155PayloadInput, Signature1155PayloadInputWithTokenId, Signature1155PayloadOutput, SignedPayload1155, @@ -242,7 +240,7 @@ export class Erc1155SignatureMinting { /** * Generate a batch of signatures that can be used to mint many new NFTs dynamically. * - * @remarks See {@link Erc721SignatureMinting.generate} + * @remarks See {@link Erc1155SignatureMinting.generate} * * @param payloadsToSign - the payloads to sign * @returns an array of payloads and signatures @@ -260,7 +258,7 @@ export class Erc1155SignatureMinting { /** * Genrate a batch of signatures that can be used to mint new NFTs or additionaly supply to existing NFTs dynamically. * - * @remarks See {@link Erc721SignatureMinting.generateFromTokenId} + * @remarks See {@link Erc1155SignatureMinting.generateFromTokenId} * * @param payloadsToSign - the payloads to sign with tokenIds specified * @returns an array of payloads and signatures diff --git a/src/schema/contracts/common/signature.ts b/src/schema/contracts/common/signature.ts index 414ab4778..68f10eeb1 100644 --- a/src/schema/contracts/common/signature.ts +++ b/src/schema/contracts/common/signature.ts @@ -9,7 +9,7 @@ import { import { z } from "zod"; import { NFTInputOrUriSchema } from "../../tokens/common"; import { NATIVE_TOKEN_ADDRESS } from "../../../constants/currency"; -import { ethers, constants } from "ethers"; +import { constants } from "ethers"; import { resolveOrGenerateId } from "../../../common/signature-minting"; /**