From 820d8065fae214da547d794d1b7f2a969127f780 Mon Sep 17 00:00:00 2001 From: iain nash Date: Wed, 29 Nov 2023 17:43:29 -0500 Subject: [PATCH 1/4] update mint client to fix reading from subgraph --- packages/protocol-sdk/src/create/1155-create-helper.ts | 2 +- packages/protocol-sdk/src/mint/mint-api-client.ts | 8 ++++++-- packages/protocol-sdk/src/mint/mint-client.ts | 1 + 3 files changed, 8 insertions(+), 3 deletions(-) diff --git a/packages/protocol-sdk/src/create/1155-create-helper.ts b/packages/protocol-sdk/src/create/1155-create-helper.ts index 84f9b276d..5ec3f8062 100644 --- a/packages/protocol-sdk/src/create/1155-create-helper.ts +++ b/packages/protocol-sdk/src/create/1155-create-helper.ts @@ -45,7 +45,7 @@ export const DEFAULT_SALE_SETTINGS = { }; // Hardcode the permission bit for the minter -const PERMISSION_BIT_MINTER = 2n ** 2n; +const PERMISSION_BIT_MINTER = 4n; type ContractType = | { diff --git a/packages/protocol-sdk/src/mint/mint-api-client.ts b/packages/protocol-sdk/src/mint/mint-api-client.ts index 14ed5cdaa..61dac4eb2 100644 --- a/packages/protocol-sdk/src/mint/mint-api-client.ts +++ b/packages/protocol-sdk/src/mint/mint-api-client.ts @@ -66,8 +66,12 @@ export class MintAPIClient { id: `${contractAddress.toLowerCase()}-${tokenId.toString()}`, }, }); - return response.zoraCreateToken?.salesStrategies?.find(() => true) - ?.fixedPriceMinterAddress; + + const fixedPriceAddress = + response.data?.zoraCreateToken?.salesStrategies?.find(() => true) + ?.fixedPrice?.address; + + return fixedPriceAddress; }); } diff --git a/packages/protocol-sdk/src/mint/mint-client.ts b/packages/protocol-sdk/src/mint/mint-client.ts index 0930d05c2..a8397cb82 100644 --- a/packages/protocol-sdk/src/mint/mint-client.ts +++ b/packages/protocol-sdk/src/mint/mint-client.ts @@ -319,6 +319,7 @@ export async function get1155MintCosts({ collectionAddress: address, publicClient, }); + console.log({mintFee}) const mintFeeForTokens = mintFee * quantityToMint; const tokenPurchaseCost = From 20463c4884d7f16ae981be73106bf6d8c4edafa8 Mon Sep 17 00:00:00 2001 From: iain nash Date: Wed, 29 Nov 2023 17:45:32 -0500 Subject: [PATCH 2/4] update mint-client --- packages/protocol-sdk/src/mint/mint-client.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/packages/protocol-sdk/src/mint/mint-client.ts b/packages/protocol-sdk/src/mint/mint-client.ts index a8397cb82..0930d05c2 100644 --- a/packages/protocol-sdk/src/mint/mint-client.ts +++ b/packages/protocol-sdk/src/mint/mint-client.ts @@ -319,7 +319,6 @@ export async function get1155MintCosts({ collectionAddress: address, publicClient, }); - console.log({mintFee}) const mintFeeForTokens = mintFee * quantityToMint; const tokenPurchaseCost = From e4055093d1729a6e09caf5f0fd08b032efb28aa9 Mon Sep 17 00:00:00 2001 From: iain nash Date: Wed, 29 Nov 2023 17:55:21 -0500 Subject: [PATCH 3/4] update mint client to use subgraph price --- .../protocol-sdk/src/mint/mint-api-client.ts | 32 +++++++++++++++---- packages/protocol-sdk/src/mint/mint-client.ts | 20 +++++++----- 2 files changed, 37 insertions(+), 15 deletions(-) diff --git a/packages/protocol-sdk/src/mint/mint-api-client.ts b/packages/protocol-sdk/src/mint/mint-api-client.ts index 61dac4eb2..572c0a5b1 100644 --- a/packages/protocol-sdk/src/mint/mint-api-client.ts +++ b/packages/protocol-sdk/src/mint/mint-api-client.ts @@ -56,22 +56,40 @@ export class MintAPIClient { }: { contractAddress: string; tokenId: bigint; - }): Promise { + }): Promise { const { retries, post } = this.httpClient; return retries(async () => { const response = await post(this.networkConfig.subgraphUrl, { - query: - "query($id: ID!) {\n zoraCreateToken(id: $id) {\n id\n salesStrategies{\n fixedPrice {\n address\n }\n }\n }\n}", + query: `query ($id: ID!) { + zoraCreateToken(id: $id) { + id + salesStrategies(where: {type: "FIXED_PRICE"}) { + type + fixedPrice { + address + pricePerToken + saleEnd + saleStart + maxTokensPerAddress + } + } + } + }`, variables: { id: `${contractAddress.toLowerCase()}-${tokenId.toString()}`, }, }); - const fixedPriceAddress = - response.data?.zoraCreateToken?.salesStrategies?.find(() => true) - ?.fixedPrice?.address; + const fixedPrice: { + address: Address; + pricePerToken: string; + } = response.data?.zoraCreateToken?.salesStrategies?.find(() => true) + ?.fixedPrice; - return fixedPriceAddress; + return { + address: fixedPrice.address as Address, + pricePerToken: BigInt(fixedPrice.pricePerToken), + }; }); } diff --git a/packages/protocol-sdk/src/mint/mint-client.ts b/packages/protocol-sdk/src/mint/mint-client.ts index 0930d05c2..615a06c44 100644 --- a/packages/protocol-sdk/src/mint/mint-client.ts +++ b/packages/protocol-sdk/src/mint/mint-client.ts @@ -306,10 +306,12 @@ export type MintCosts = { export async function get1155MintCosts({ mintable, + price, publicClient, quantityToMint, }: { mintable: MintableGetTokenResponse; + price: bigint; publicClient: PublicClient; quantityToMint: bigint; }): Promise { @@ -321,8 +323,7 @@ export async function get1155MintCosts({ }); const mintFeeForTokens = mintFee * quantityToMint; - const tokenPurchaseCost = - BigInt(mintable.cost.native_price.raw) * quantityToMint; + const tokenPurchaseCost = price * quantityToMint; return { mintFee: mintFeeForTokens, @@ -354,19 +355,22 @@ async function makePrepareMint1155TokenParams({ const address = mintable.collection.address as Address; + const tokenFixedPriceMinter = await apiClient.getSalesConfigFixedPrice({ + contractAddress: address, + tokenId: BigInt(mintable.token_id!), + }); + const mintValue = ( await get1155MintCosts({ mintable, + price: + tokenFixedPriceMinter?.pricePerToken || + BigInt(mintable.cost.native_price.raw), publicClient, quantityToMint: mintQuantity, }) ).totalCost; - const tokenFixedPriceMinter = await apiClient.getSalesConfigFixedPrice({ - contractAddress: address, - tokenId: BigInt(mintable.token_id!), - }); - const result = { abi: zoraCreator1155ImplABI, functionName: "mintWithRewards", @@ -375,7 +379,7 @@ async function makePrepareMint1155TokenParams({ address, /* args: minter, tokenId, quantity, minterArguments, mintReferral */ args: [ - (tokenFixedPriceMinter || + (tokenFixedPriceMinter?.address || zoraCreatorFixedPriceSaleStrategyAddress[999]) as Address, BigInt(mintable.token_id!), mintQuantity, From aabdb25c940e82010d1c0f4d857adc2056fa1750 Mon Sep 17 00:00:00 2001 From: iain nash Date: Wed, 29 Nov 2023 18:01:19 -0500 Subject: [PATCH 4/4] add changeset and update the fixedPrice subgraph fetch --- .changeset/sharp-bobcats-sin.md | 5 +++++ packages/protocol-sdk/src/mint/mint-client.ts | 1 + 2 files changed, 6 insertions(+) create mode 100644 .changeset/sharp-bobcats-sin.md diff --git a/.changeset/sharp-bobcats-sin.md b/.changeset/sharp-bobcats-sin.md new file mode 100644 index 000000000..9d7232003 --- /dev/null +++ b/.changeset/sharp-bobcats-sin.md @@ -0,0 +1,5 @@ +--- +"@zoralabs/protocol-sdk": patch +--- + +Fix reading the FIXED_PRICE_MINTER from the subgraph diff --git a/packages/protocol-sdk/src/mint/mint-client.ts b/packages/protocol-sdk/src/mint/mint-client.ts index 615a06c44..06bdf3d72 100644 --- a/packages/protocol-sdk/src/mint/mint-client.ts +++ b/packages/protocol-sdk/src/mint/mint-client.ts @@ -109,6 +109,7 @@ class MintClient { if (mintContextType === "zora_create_1155") { return await get1155MintCosts({ mintable, + price: BigInt(mintable.cost.native_price.raw), publicClient: this.publicClient, quantityToMint: BigInt(quantityToMint), });