@zoralabs/protocol-sdk 0.9.1 → 0.9.3
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.
- package/.turbo/turbo-build.log +7 -7
- package/CHANGELOG.md +12 -0
- package/dist/anvil.d.ts.map +1 -1
- package/dist/apis/http-api-base.d.ts +1 -1
- package/dist/apis/http-api-base.d.ts.map +1 -1
- package/dist/apis/subgraph-querier.d.ts +6 -0
- package/dist/apis/subgraph-querier.d.ts.map +1 -1
- package/dist/create/1155-create-helper.d.ts +4 -1
- package/dist/create/1155-create-helper.d.ts.map +1 -1
- package/dist/create/contract-getter.d.ts +30 -0
- package/dist/create/contract-getter.d.ts.map +1 -0
- package/dist/create/contract-setup.d.ts +4 -8
- package/dist/create/contract-setup.d.ts.map +1 -1
- package/dist/create/mint-from-create.d.ts +3 -3
- package/dist/create/mint-from-create.d.ts.map +1 -1
- package/dist/create/minter-defaults.d.ts +1 -1
- package/dist/create/minter-defaults.d.ts.map +1 -1
- package/dist/create/subgraph-queries.d.ts +13 -0
- package/dist/create/subgraph-queries.d.ts.map +1 -0
- package/dist/create/token-setup.d.ts +2 -0
- package/dist/create/token-setup.d.ts.map +1 -1
- package/dist/index.cjs +2166 -2099
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +2188 -2121
- package/dist/index.js.map +1 -1
- package/dist/mint/subgraph-mint-getter.d.ts +2 -2
- package/dist/mint/subgraph-mint-getter.d.ts.map +1 -1
- package/dist/mint/subgraph-queries.d.ts +1 -5
- package/dist/mint/subgraph-queries.d.ts.map +1 -1
- package/dist/retries.d.ts +7 -0
- package/dist/retries.d.ts.map +1 -0
- package/dist/sdk.d.ts +2 -0
- package/dist/sdk.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/apis/http-api-base.ts +12 -20
- package/src/apis/subgraph-querier.ts +7 -0
- package/src/create/1155-create-helper.test.ts +68 -3
- package/src/create/1155-create-helper.ts +23 -9
- package/src/create/contract-getter.ts +90 -0
- package/src/create/contract-setup.ts +17 -46
- package/src/create/mint-from-create.ts +7 -15
- package/src/create/minter-defaults.ts +11 -20
- package/src/create/subgraph-queries.ts +35 -0
- package/src/create/token-setup.ts +5 -1
- package/src/create/types.ts +1 -1
- package/src/mint/subgraph-mint-getter.ts +5 -2
- package/src/mint/subgraph-queries.ts +1 -7
- package/src/retries.ts +49 -0
- package/src/sdk.ts +8 -0
- package/test-integration/create-multiple-tokens-on-contract.ts +104 -0
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { Address } from "viem";
|
|
2
|
-
import { ISubgraphQuerier } from "../apis/subgraph-querier";
|
|
2
|
+
import { ISubgraphQuerier, ISubgraphQuery } from "../apis/subgraph-querier";
|
|
3
3
|
import { NetworkConfig } from "src/apis/chain-constants";
|
|
4
4
|
import { IOnchainMintGetter, SaleType, OnchainSalesConfigAndTokenInfo } from "./types";
|
|
5
|
-
import {
|
|
5
|
+
import { TokenQueryResult } from "./subgraph-queries";
|
|
6
6
|
export declare const getApiNetworkConfigForChain: (chainId: number) => NetworkConfig;
|
|
7
7
|
export declare class SubgraphMintGetter implements IOnchainMintGetter {
|
|
8
8
|
readonly subgraphQuerier: ISubgraphQuerier;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"subgraph-mint-getter.d.ts","sourceRoot":"","sources":["../../src/mint/subgraph-mint-getter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAE/B,OAAO,
|
|
1
|
+
{"version":3,"file":"subgraph-mint-getter.d.ts","sourceRoot":"","sources":["../../src/mint/subgraph-mint-getter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAE/B,OAAO,EACL,gBAAgB,EAChB,cAAc,EAEf,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,aAAa,EAAwB,MAAM,0BAA0B,CAAC;AAE/E,OAAO,EACL,kBAAkB,EAClB,QAAQ,EAER,8BAA8B,EAE/B,MAAM,SAAS,CAAC;AACjB,OAAO,EAKL,gBAAgB,EACjB,MAAM,oBAAoB,CAAC;AAE5B,eAAO,MAAM,2BAA2B,YAAa,MAAM,KAAG,aAK7D,CAAC;AA6HF,qBAAa,kBAAmB,YAAW,kBAAkB;IAC3D,SAAgB,eAAe,EAAE,gBAAgB,CAAC;IAClD,aAAa,EAAE,aAAa,CAAC;gBAEjB,OAAO,EAAE,MAAM,EAAE,eAAe,CAAC,EAAE,gBAAgB;IAMzD,kBAAkB,CAAC,QAAQ,EAAE,gBAAgB,CAAC,UAAU,CAAC;IAIzD,wBAAwB,CAAC,CAAC,EAAE,EAChC,KAAK,EACL,SAAS,EACT,iBAAiB,GAClB,EAAE,cAAc,CAAC,CAAC,CAAC;IAUpB,WAAW,EAAE,kBAAkB,CAAC,aAAa,CAAC,CA0B5C;IAEI,mBAAmB,CAAC,EACxB,YAAY,EACZ,iBAAiB,EACjB,SAAS,GACV,EAAE;QACD,YAAY,EAAE,OAAO,CAAC;QACtB,iBAAiB,CAAC,EAAE,QAAQ,CAAC;QAC7B,SAAS,EAAE,MAAM,CAAC;KACnB;IAwBK,0BAA0B,CAAC,EAC/B,YAAY,GACb,EAAE;QACD,YAAY,EAAE,OAAO,CAAC;KACvB;;;;CAcF"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { ISubgraphQuery } from "src/apis/subgraph-querier";
|
|
1
2
|
import { GenericTokenIdTypes } from "src/types";
|
|
2
3
|
import { Address } from "viem";
|
|
3
4
|
export type FixedPriceSaleStrategyResult = {
|
|
@@ -69,11 +70,6 @@ export declare function buildNftTokenSalesQuery({ tokenId, tokenAddress, }: {
|
|
|
69
70
|
export declare function buildContractTokensQuery({ tokenAddress, }: {
|
|
70
71
|
tokenAddress: Address;
|
|
71
72
|
}): ISubgraphQuery<TokenQueryResult[]>;
|
|
72
|
-
export type ISubgraphQuery<T> = {
|
|
73
|
-
query: string;
|
|
74
|
-
variables: Record<string, any>;
|
|
75
|
-
parseResponseData: (data: any | undefined) => T | undefined;
|
|
76
|
-
};
|
|
77
73
|
export declare function buildPremintsOfContractQuery({ tokenAddress, }: {
|
|
78
74
|
tokenAddress: Address;
|
|
79
75
|
}): ISubgraphQuery<{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"subgraph-queries.d.ts","sourceRoot":"","sources":["../../src/mint/subgraph-queries.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAChD,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAE/B,MAAM,MAAM,4BAA4B,GAAG;IACzC,IAAI,EAAE,aAAa,CAAC;IACpB,UAAU,EAAE;QACV,OAAO,EAAE,OAAO,CAAC;QACjB,aAAa,EAAE,MAAM,CAAC;QACtB,OAAO,EAAE,MAAM,CAAC;QAChB,SAAS,EAAE,MAAM,CAAC;QAClB,mBAAmB,EAAE,MAAM,CAAC;KAC7B,CAAC;CACH,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG;IACpC,IAAI,EAAE,eAAe,CAAC;IACtB,WAAW,EAAE;QACX,OAAO,EAAE,OAAO,CAAC;QACjB,aAAa,EAAE,MAAM,CAAC;QACtB,OAAO,EAAE,MAAM,CAAC;QAChB,SAAS,EAAE,MAAM,CAAC;QAClB,mBAAmB,EAAE,MAAM,CAAC;QAC5B,QAAQ,EAAE,OAAO,CAAC;KACnB,CAAC;CACH,CAAC;AAEF,MAAM,MAAM,0BAA0B,GAAG;IACvC,IAAI,EAAE,SAAS,CAAC;IAChB,OAAO,EAAE;QACP,OAAO,EAAE,OAAO,CAAC;QACjB,YAAY,EAAE,MAAM,CAAC;QACrB,UAAU,EAAE,MAAM,CAAC;QACnB,UAAU,EAAE,MAAM,CAAC;KACpB,CAAC;CACH,CAAC;AAEF,MAAM,MAAM,iCAAiC,GAAG;IAC9C,IAAI,EAAE,YAAY,CAAC;IACnB,eAAe,EAAE;QACf,OAAO,EAAE,OAAO,CAAC;QACjB,OAAO,EAAE,MAAM,CAAC;QAChB,SAAS,EAAE,MAAM,CAAC;QAClB,OAAO,EAAE,MAAM,CAAC;QAChB,MAAM,EAAE;YACN,EAAE,EAAE,OAAO,CAAC;YACZ,IAAI,EAAE,OAAO,CAAC;SACf,CAAC;QACF,kBAAkB,EAAE,OAAO,CAAC;KAC7B,CAAC;CACH,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAC3B,4BAA4B,GAC5B,uBAAuB,GACvB,0BAA0B,GAC1B,iCAAiC,CAAC;AAEtC,MAAM,MAAM,gBAAgB,GAAG;IAC7B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;IACjB,GAAG,EAAE,MAAM,CAAC;IACZ,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,CAAC,EAAE,mBAAmB,EAAE,CAAC;IACxC,aAAa,EAAE,SAAS,GAAG,QAAQ,CAAC;IACpC,QAAQ,EAAE;QACR,kBAAkB,EAAE,MAAM,CAAC;QAC3B,eAAe,EAAE,mBAAmB,EAAE,CAAC;QACvC,OAAO,EAAE,OAAO,CAAC;QACjB,eAAe,EAAE,MAAM,CAAC;QACxB,WAAW,EAAE,MAAM,CAAC;QACpB,IAAI,EAAE,MAAM,CAAC;KACd,CAAC;CACH,CAAC;AAmEF,wBAAgB,uBAAuB,CAAC,EACtC,OAAO,EACP,YAAY,GACb,EAAE;IACD,OAAO,CAAC,EAAE,mBAAmB,CAAC;IAC9B,YAAY,EAAE,OAAO,CAAC;CACvB,GAAG,cAAc,CAAC,gBAAgB,CAAC,CAoBnC;AAED,wBAAgB,wBAAwB,CAAC,EACvC,YAAY,GACb,EAAE;IACD,YAAY,EAAE,OAAO,CAAC;CACvB,GAAG,cAAc,CAAC,gBAAgB,EAAE,CAAC,CAkBrC;
|
|
1
|
+
{"version":3,"file":"subgraph-queries.d.ts","sourceRoot":"","sources":["../../src/mint/subgraph-queries.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAChD,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAE/B,MAAM,MAAM,4BAA4B,GAAG;IACzC,IAAI,EAAE,aAAa,CAAC;IACpB,UAAU,EAAE;QACV,OAAO,EAAE,OAAO,CAAC;QACjB,aAAa,EAAE,MAAM,CAAC;QACtB,OAAO,EAAE,MAAM,CAAC;QAChB,SAAS,EAAE,MAAM,CAAC;QAClB,mBAAmB,EAAE,MAAM,CAAC;KAC7B,CAAC;CACH,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG;IACpC,IAAI,EAAE,eAAe,CAAC;IACtB,WAAW,EAAE;QACX,OAAO,EAAE,OAAO,CAAC;QACjB,aAAa,EAAE,MAAM,CAAC;QACtB,OAAO,EAAE,MAAM,CAAC;QAChB,SAAS,EAAE,MAAM,CAAC;QAClB,mBAAmB,EAAE,MAAM,CAAC;QAC5B,QAAQ,EAAE,OAAO,CAAC;KACnB,CAAC;CACH,CAAC;AAEF,MAAM,MAAM,0BAA0B,GAAG;IACvC,IAAI,EAAE,SAAS,CAAC;IAChB,OAAO,EAAE;QACP,OAAO,EAAE,OAAO,CAAC;QACjB,YAAY,EAAE,MAAM,CAAC;QACrB,UAAU,EAAE,MAAM,CAAC;QACnB,UAAU,EAAE,MAAM,CAAC;KACpB,CAAC;CACH,CAAC;AAEF,MAAM,MAAM,iCAAiC,GAAG;IAC9C,IAAI,EAAE,YAAY,CAAC;IACnB,eAAe,EAAE;QACf,OAAO,EAAE,OAAO,CAAC;QACjB,OAAO,EAAE,MAAM,CAAC;QAChB,SAAS,EAAE,MAAM,CAAC;QAClB,OAAO,EAAE,MAAM,CAAC;QAChB,MAAM,EAAE;YACN,EAAE,EAAE,OAAO,CAAC;YACZ,IAAI,EAAE,OAAO,CAAC;SACf,CAAC;QACF,kBAAkB,EAAE,OAAO,CAAC;KAC7B,CAAC;CACH,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAC3B,4BAA4B,GAC5B,uBAAuB,GACvB,0BAA0B,GAC1B,iCAAiC,CAAC;AAEtC,MAAM,MAAM,gBAAgB,GAAG;IAC7B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;IACjB,GAAG,EAAE,MAAM,CAAC;IACZ,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,CAAC,EAAE,mBAAmB,EAAE,CAAC;IACxC,aAAa,EAAE,SAAS,GAAG,QAAQ,CAAC;IACpC,QAAQ,EAAE;QACR,kBAAkB,EAAE,MAAM,CAAC;QAC3B,eAAe,EAAE,mBAAmB,EAAE,CAAC;QACvC,OAAO,EAAE,OAAO,CAAC;QACjB,eAAe,EAAE,MAAM,CAAC;QACxB,WAAW,EAAE,MAAM,CAAC;QACpB,IAAI,EAAE,MAAM,CAAC;KACd,CAAC;CACH,CAAC;AAmEF,wBAAgB,uBAAuB,CAAC,EACtC,OAAO,EACP,YAAY,GACb,EAAE;IACD,OAAO,CAAC,EAAE,mBAAmB,CAAC;IAC9B,YAAY,EAAE,OAAO,CAAC;CACvB,GAAG,cAAc,CAAC,gBAAgB,CAAC,CAoBnC;AAED,wBAAgB,wBAAwB,CAAC,EACvC,YAAY,GACb,EAAE;IACD,YAAY,EAAE,OAAO,CAAC;CACvB,GAAG,cAAc,CAAC,gBAAgB,EAAE,CAAC,CAkBrC;AACD,wBAAgB,4BAA4B,CAAC,EAC3C,YAAY,GACb,EAAE;IACD,YAAY,EAAE,OAAO,CAAC;CACvB,GAAG,cAAc,CAAC;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,EAAE,CAAC,CAgBrD"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"retries.d.ts","sourceRoot":"","sources":["../src/retries.ts"],"names":[],"mappings":"AAsCA,eAAO,MAAM,cAAc,GAAU,CAAC,UAAU;IAC9C,KAAK,EAAE,MAAM,CAAC,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,kBAAkB,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,OAAO,CAAC;CAC5C,eAKA,CAAC"}
|
package/dist/sdk.d.ts
CHANGED
|
@@ -4,6 +4,7 @@ import { MintClient } from "./mint/mint-client";
|
|
|
4
4
|
import { ClientConfig } from "./utils";
|
|
5
5
|
import { IPremintAPI } from "./premint/premint-api-client";
|
|
6
6
|
import { IOnchainMintGetter } from "./mint/types";
|
|
7
|
+
import { IContractGetter } from "./create/contract-getter";
|
|
7
8
|
export type CreatorClient = {
|
|
8
9
|
createPremint: PremintClient["createPremint"];
|
|
9
10
|
updatePremint: PremintClient["updatePremint"];
|
|
@@ -22,6 +23,7 @@ export type CollectorClient = {
|
|
|
22
23
|
export type CreatorClientConfig = ClientConfig & {
|
|
23
24
|
/** API for submitting and getting premints. Defaults to the Zora Premint API */
|
|
24
25
|
premintApi?: IPremintAPI;
|
|
26
|
+
contractGetter?: IContractGetter;
|
|
25
27
|
};
|
|
26
28
|
/**
|
|
27
29
|
* Builds the sdk for creating/managing 1155 contracts and tokens
|
package/dist/sdk.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sdk.d.ts","sourceRoot":"","sources":["../src/sdk.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EAEd,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,WAAW,EAAoB,MAAM,8BAA8B,CAAC;AAE7E,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"sdk.d.ts","sourceRoot":"","sources":["../src/sdk.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EAEd,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,WAAW,EAAoB,MAAM,8BAA8B,CAAC;AAE7E,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,EACL,eAAe,EAEhB,MAAM,0BAA0B,CAAC;AAElC,MAAM,MAAM,aAAa,GAAG;IAC1B,aAAa,EAAE,aAAa,CAAC,eAAe,CAAC,CAAC;IAC9C,aAAa,EAAE,aAAa,CAAC,eAAe,CAAC,CAAC;IAC9C,aAAa,EAAE,aAAa,CAAC,eAAe,CAAC,CAAC;IAC9C,UAAU,EAAE,gBAAgB,CAAC,eAAe,CAAC,CAAC;IAC9C,4BAA4B,EAAE,gBAAgB,CAAC,iCAAiC,CAAC,CAAC;CACnF,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,UAAU,EAAE,aAAa,CAAC,YAAY,CAAC,CAAC;IACxC,gCAAgC,EAAE,aAAa,CAAC,2BAA2B,CAAC,CAAC;IAC7E,IAAI,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC;IACzB,YAAY,EAAE,UAAU,CAAC,cAAc,CAAC,CAAC;IACzC,QAAQ,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC;IAC5B,mBAAmB,EAAE,UAAU,CAAC,eAAe,CAAC,CAAC;CAClD,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG,YAAY,GAAG;IAC/C,iFAAiF;IACjF,UAAU,CAAC,EAAE,WAAW,CAAC;IACzB,cAAc,CAAC,EAAE,eAAe,CAAC;CAClC,CAAC;AAEF;;;;;KAKK;AACL,wBAAgB,mBAAmB,CACjC,YAAY,EAAE,mBAAmB,GAChC,aAAa,CAwBf;AAED,MAAM,MAAM,qBAAqB,GAAG,YAAY,GAAG;IACjD,kEAAkE;IAClE,aAAa,CAAC,EAAE,WAAW,CAAC;IAC5B,4EAA4E;IAC5E,UAAU,CAAC,EAAE,kBAAkB,CAAC;CACjC,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,qBAAqB,GAC5B,eAAe,CAwBjB"}
|
package/package.json
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { retriesGeneric } from "src/retries";
|
|
2
|
+
|
|
1
3
|
export class BadResponseError<T = any> extends Error {
|
|
2
4
|
status: number;
|
|
3
5
|
json: T;
|
|
@@ -9,12 +11,6 @@ export class BadResponseError<T = any> extends Error {
|
|
|
9
11
|
}
|
|
10
12
|
}
|
|
11
13
|
|
|
12
|
-
async function wait(delayMs: number) {
|
|
13
|
-
return new Promise((resolve) => {
|
|
14
|
-
setTimeout(resolve, delayMs);
|
|
15
|
-
});
|
|
16
|
-
}
|
|
17
|
-
|
|
18
14
|
/**
|
|
19
15
|
* A simple fetch() wrapper for HTTP gets.
|
|
20
16
|
* Can be overridden as needed.
|
|
@@ -86,22 +82,18 @@ export const post = async <T>(url: string, data: any) => {
|
|
|
86
82
|
export const retries = async <T>(
|
|
87
83
|
tryFn: () => T,
|
|
88
84
|
maxTries: number = 3,
|
|
89
|
-
atTry: number = 1,
|
|
90
85
|
linearBackoffMS: number = 200,
|
|
91
86
|
): Promise<T> => {
|
|
92
|
-
|
|
93
|
-
return
|
|
94
|
-
}
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
}
|
|
103
|
-
throw err;
|
|
104
|
-
}
|
|
87
|
+
const shouldRetry = (err: any) => {
|
|
88
|
+
return err instanceof BadResponseError && err.status >= 500;
|
|
89
|
+
};
|
|
90
|
+
|
|
91
|
+
return retriesGeneric({
|
|
92
|
+
tryFn,
|
|
93
|
+
maxTries,
|
|
94
|
+
linearBackoffMS,
|
|
95
|
+
shouldRetryOnError: shouldRetry,
|
|
96
|
+
});
|
|
105
97
|
};
|
|
106
98
|
|
|
107
99
|
export interface IHttpClient {
|
|
@@ -1,10 +1,17 @@
|
|
|
1
1
|
import { IHttpClient } from "./http-api-base";
|
|
2
2
|
|
|
3
|
+
export type ISubgraphQuery<T> = {
|
|
4
|
+
query: string;
|
|
5
|
+
variables: Record<string, any>;
|
|
6
|
+
parseResponseData: (data: any | undefined) => T | undefined;
|
|
7
|
+
};
|
|
8
|
+
|
|
3
9
|
export interface ISubgraphQuerier {
|
|
4
10
|
query: (params: {
|
|
5
11
|
subgraphUrl: string;
|
|
6
12
|
query: string;
|
|
7
13
|
variables?: Record<string, any>;
|
|
14
|
+
maxRetries?: number;
|
|
8
15
|
}) => Promise<object | undefined>;
|
|
9
16
|
}
|
|
10
17
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { describe, expect } from "vitest";
|
|
1
|
+
import { describe, expect, vi } from "vitest";
|
|
2
2
|
import {
|
|
3
3
|
getContractAddressFromReceipt,
|
|
4
4
|
getTokenIdFromCreateReceipt,
|
|
@@ -6,16 +6,25 @@ import {
|
|
|
6
6
|
import { createCreatorClient } from "src/sdk";
|
|
7
7
|
import {
|
|
8
8
|
zoraCreator1155ImplABI,
|
|
9
|
+
zoraTimedSaleStrategyABI,
|
|
9
10
|
zoraTimedSaleStrategyAddress,
|
|
10
11
|
} from "@zoralabs/protocol-deployments";
|
|
11
12
|
import { waitForSuccess } from "src/test-utils";
|
|
12
|
-
import {
|
|
13
|
+
import {
|
|
14
|
+
Address,
|
|
15
|
+
erc20Abi,
|
|
16
|
+
parseEther,
|
|
17
|
+
PublicClient,
|
|
18
|
+
TransactionReceipt,
|
|
19
|
+
} from "viem";
|
|
13
20
|
import { makePrepareMint1155TokenParams } from "src/mint/mint-transactions";
|
|
14
21
|
import { forkUrls, makeAnvilTest } from "src/anvil";
|
|
15
22
|
import { zora } from "viem/chains";
|
|
16
23
|
import { AllowList } from "src/allow-list/types";
|
|
17
24
|
import { createAllowList } from "src/allow-list/allow-list-client";
|
|
18
25
|
import { NewContractParams } from "./types";
|
|
26
|
+
import { SubgraphContractGetter } from "./contract-getter";
|
|
27
|
+
import { inspect } from "util";
|
|
19
28
|
|
|
20
29
|
export const demoTokenMetadataURI =
|
|
21
30
|
"ipfs://bafkreice23maski3x52tsfqgxstx3kbiifnt5jotg3a5ynvve53c4soi2u";
|
|
@@ -54,6 +63,7 @@ function logFailure(receipt: TransactionReceipt) {
|
|
|
54
63
|
if (receipt.status !== "success") {
|
|
55
64
|
console.log("transaction failed");
|
|
56
65
|
console.log(receipt.logs);
|
|
66
|
+
console.log(inspect(receipt, { depth: 10 }));
|
|
57
67
|
}
|
|
58
68
|
}
|
|
59
69
|
|
|
@@ -64,6 +74,13 @@ function randomNewContract(): NewContractParams {
|
|
|
64
74
|
};
|
|
65
75
|
}
|
|
66
76
|
|
|
77
|
+
const add24HoursToNowInSeconds = (): number => {
|
|
78
|
+
const currentTimeInSeconds = Math.floor(Date.now() / 1000);
|
|
79
|
+
const add24Hours = 24 * 60 * 60;
|
|
80
|
+
|
|
81
|
+
return currentTimeInSeconds + add24Hours;
|
|
82
|
+
};
|
|
83
|
+
|
|
67
84
|
describe("create-helper", () => {
|
|
68
85
|
anvilTest(
|
|
69
86
|
"when no sales config is provided, it creates a new 1155 contract and token using the timed sale strategy",
|
|
@@ -75,15 +92,24 @@ describe("create-helper", () => {
|
|
|
75
92
|
chainId: chain.id,
|
|
76
93
|
publicClient: publicClient,
|
|
77
94
|
});
|
|
95
|
+
|
|
96
|
+
const saleStart = 5n;
|
|
97
|
+
const saleEnd = BigInt(add24HoursToNowInSeconds());
|
|
98
|
+
const contract = randomNewContract();
|
|
78
99
|
const {
|
|
79
100
|
parameters: parameters,
|
|
80
101
|
contractAddress,
|
|
81
102
|
newTokenId,
|
|
82
103
|
} = await creatorClient.create1155({
|
|
83
|
-
contract
|
|
104
|
+
contract,
|
|
84
105
|
token: {
|
|
85
106
|
tokenMetadataURI: demoTokenMetadataURI,
|
|
86
107
|
mintToCreatorCount: 1,
|
|
108
|
+
salesConfig: {
|
|
109
|
+
saleStart,
|
|
110
|
+
saleEnd,
|
|
111
|
+
type: "timed",
|
|
112
|
+
},
|
|
87
113
|
},
|
|
88
114
|
account: creatorAddress,
|
|
89
115
|
});
|
|
@@ -100,6 +126,27 @@ describe("create-helper", () => {
|
|
|
100
126
|
contractAddress,
|
|
101
127
|
);
|
|
102
128
|
|
|
129
|
+
const salesConfig = await publicClient.readContract({
|
|
130
|
+
abi: zoraTimedSaleStrategyABI,
|
|
131
|
+
address:
|
|
132
|
+
zoraTimedSaleStrategyAddress[
|
|
133
|
+
chain.id as keyof typeof zoraTimedSaleStrategyAddress
|
|
134
|
+
],
|
|
135
|
+
functionName: "sale",
|
|
136
|
+
args: [contractAddress, newTokenId],
|
|
137
|
+
});
|
|
138
|
+
|
|
139
|
+
expect(salesConfig.saleEnd).toBe(saleEnd);
|
|
140
|
+
expect(salesConfig.saleStart).toBe(saleStart);
|
|
141
|
+
|
|
142
|
+
const erc20Name = await publicClient.readContract({
|
|
143
|
+
abi: erc20Abi,
|
|
144
|
+
address: salesConfig.erc20zAddress,
|
|
145
|
+
functionName: "name",
|
|
146
|
+
});
|
|
147
|
+
|
|
148
|
+
expect(erc20Name).toBe(contract.name);
|
|
149
|
+
|
|
103
150
|
expect(
|
|
104
151
|
await minterIsMinterOnToken({
|
|
105
152
|
contractAddress,
|
|
@@ -168,9 +215,12 @@ describe("create-helper", () => {
|
|
|
168
215
|
const addresses = await walletClient.getAddresses();
|
|
169
216
|
const creatorAccount = addresses[0]!;
|
|
170
217
|
|
|
218
|
+
const contractGetter = new SubgraphContractGetter(chain.id);
|
|
219
|
+
|
|
171
220
|
const creatorClient = createCreatorClient({
|
|
172
221
|
chainId: chain.id,
|
|
173
222
|
publicClient: publicClient,
|
|
223
|
+
contractGetter,
|
|
174
224
|
});
|
|
175
225
|
|
|
176
226
|
const { parameters: request, contractAddress: contractAddress } =
|
|
@@ -202,6 +252,21 @@ describe("create-helper", () => {
|
|
|
202
252
|
}),
|
|
203
253
|
).toBe(3n);
|
|
204
254
|
|
|
255
|
+
const contractVersion = await publicClient.readContract({
|
|
256
|
+
abi: zoraCreator1155ImplABI,
|
|
257
|
+
address: contractAddress,
|
|
258
|
+
functionName: "contractVersion",
|
|
259
|
+
});
|
|
260
|
+
|
|
261
|
+
contractGetter.getContractInfo = vi
|
|
262
|
+
.fn<SubgraphContractGetter["getContractInfo"]>()
|
|
263
|
+
.mockResolvedValueOnce({
|
|
264
|
+
contractVersion,
|
|
265
|
+
mintFee: parseEther("0.000777"),
|
|
266
|
+
name: "test",
|
|
267
|
+
nextTokenId: 2n,
|
|
268
|
+
});
|
|
269
|
+
|
|
205
270
|
const newTokenOnExistingContract =
|
|
206
271
|
await creatorClient.create1155OnExistingContract({
|
|
207
272
|
contractAddress: contractAddress,
|
|
@@ -13,8 +13,8 @@ import type {
|
|
|
13
13
|
import { decodeEventLog } from "viem";
|
|
14
14
|
import { makeContractParameters } from "src/utils";
|
|
15
15
|
import {
|
|
16
|
-
getContractInfoExistingContract,
|
|
17
16
|
getDeterministicContractAddress,
|
|
17
|
+
getNewContractMintFee,
|
|
18
18
|
new1155ContractVersion,
|
|
19
19
|
} from "./contract-setup";
|
|
20
20
|
import {
|
|
@@ -27,6 +27,7 @@ import {
|
|
|
27
27
|
} from "./types";
|
|
28
28
|
import { constructCreate1155TokenCalls } from "./token-setup";
|
|
29
29
|
import { makeOnchainPrepareMintFromCreate } from "./mint-from-create";
|
|
30
|
+
import { IContractGetter } from "./contract-getter";
|
|
30
31
|
|
|
31
32
|
// Default royalty bps
|
|
32
33
|
const ROYALTY_BPS_DEFAULT = 1000;
|
|
@@ -136,16 +137,20 @@ function makeCreateTokenCall({
|
|
|
136
137
|
export class Create1155Client {
|
|
137
138
|
private readonly chainId: number;
|
|
138
139
|
private readonly publicClient: Pick<PublicClient, "readContract">;
|
|
140
|
+
public readonly contractGetter: IContractGetter;
|
|
139
141
|
|
|
140
142
|
constructor({
|
|
141
143
|
chainId,
|
|
142
144
|
publicClient,
|
|
145
|
+
contractGetter,
|
|
143
146
|
}: {
|
|
144
147
|
chainId: number;
|
|
145
148
|
publicClient: Pick<PublicClient, "readContract">;
|
|
149
|
+
contractGetter: IContractGetter;
|
|
146
150
|
}) {
|
|
147
151
|
this.chainId = chainId;
|
|
148
152
|
this.publicClient = publicClient;
|
|
153
|
+
this.contractGetter = contractGetter;
|
|
149
154
|
}
|
|
150
155
|
|
|
151
156
|
async createNew1155(
|
|
@@ -171,6 +176,7 @@ export class Create1155Client {
|
|
|
171
176
|
getAdditionalSetupActions,
|
|
172
177
|
publicClient: this.publicClient,
|
|
173
178
|
chainId: this.chainId,
|
|
179
|
+
contractGetter: this.contractGetter,
|
|
174
180
|
});
|
|
175
181
|
}
|
|
176
182
|
}
|
|
@@ -200,6 +206,7 @@ async function createNew1155ContractAndToken({
|
|
|
200
206
|
nextTokenId,
|
|
201
207
|
token,
|
|
202
208
|
getAdditionalSetupActions,
|
|
209
|
+
contractName: contract.name,
|
|
203
210
|
});
|
|
204
211
|
|
|
205
212
|
const request = makeCreateContractAndTokenCall({
|
|
@@ -223,9 +230,14 @@ async function createNew1155ContractAndToken({
|
|
|
223
230
|
contractAddress: contractAddress,
|
|
224
231
|
contractVersion,
|
|
225
232
|
minter,
|
|
226
|
-
publicClient,
|
|
227
233
|
result: newToken.salesConfig,
|
|
228
234
|
tokenId: nextTokenId,
|
|
235
|
+
// to get the contract wide mint fee, we get what it would be for a new contract
|
|
236
|
+
getContractMintFee: async () =>
|
|
237
|
+
getNewContractMintFee({
|
|
238
|
+
publicClient,
|
|
239
|
+
chainId,
|
|
240
|
+
}),
|
|
229
241
|
});
|
|
230
242
|
|
|
231
243
|
return {
|
|
@@ -245,17 +257,15 @@ async function createNew1155Token({
|
|
|
245
257
|
account,
|
|
246
258
|
getAdditionalSetupActions,
|
|
247
259
|
token,
|
|
248
|
-
publicClient,
|
|
249
260
|
chainId,
|
|
261
|
+
contractGetter,
|
|
250
262
|
}: CreateNew1155TokenParams & {
|
|
251
263
|
publicClient: Pick<PublicClient, "readContract">;
|
|
252
264
|
chainId: number;
|
|
265
|
+
contractGetter: IContractGetter;
|
|
253
266
|
}): Promise<CreateNew1155TokenReturn> {
|
|
254
|
-
const { nextTokenId, contractVersion } =
|
|
255
|
-
await
|
|
256
|
-
publicClient,
|
|
257
|
-
contractAddress: contractAddress,
|
|
258
|
-
});
|
|
267
|
+
const { nextTokenId, contractVersion, mintFee, name } =
|
|
268
|
+
await contractGetter.getContractInfo({ contractAddress, retries: 5 });
|
|
259
269
|
|
|
260
270
|
const {
|
|
261
271
|
minter,
|
|
@@ -268,6 +278,7 @@ async function createNew1155Token({
|
|
|
268
278
|
nextTokenId,
|
|
269
279
|
token,
|
|
270
280
|
getAdditionalSetupActions,
|
|
281
|
+
contractName: name,
|
|
271
282
|
});
|
|
272
283
|
|
|
273
284
|
const request = makeCreateTokenCall({
|
|
@@ -280,9 +291,9 @@ async function createNew1155Token({
|
|
|
280
291
|
contractAddress: contractAddress,
|
|
281
292
|
contractVersion,
|
|
282
293
|
minter,
|
|
283
|
-
publicClient,
|
|
284
294
|
result: newToken.salesConfig,
|
|
285
295
|
tokenId: nextTokenId,
|
|
296
|
+
getContractMintFee: async () => mintFee,
|
|
286
297
|
});
|
|
287
298
|
|
|
288
299
|
return {
|
|
@@ -302,11 +313,13 @@ async function prepareSetupActions({
|
|
|
302
313
|
contractVersion,
|
|
303
314
|
nextTokenId,
|
|
304
315
|
token,
|
|
316
|
+
contractName,
|
|
305
317
|
getAdditionalSetupActions,
|
|
306
318
|
}: {
|
|
307
319
|
chainId: number;
|
|
308
320
|
contractVersion: string;
|
|
309
321
|
nextTokenId: bigint;
|
|
322
|
+
contractName: string;
|
|
310
323
|
} & CreateNew1155ParamsBase) {
|
|
311
324
|
const {
|
|
312
325
|
minter,
|
|
@@ -318,6 +331,7 @@ async function prepareSetupActions({
|
|
|
318
331
|
contractVersion,
|
|
319
332
|
nextTokenId,
|
|
320
333
|
...token,
|
|
334
|
+
contractName,
|
|
321
335
|
});
|
|
322
336
|
|
|
323
337
|
const setupActions = getAdditionalSetupActions
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
import { NetworkConfig } from "src/apis/chain-constants";
|
|
2
|
+
import {
|
|
3
|
+
ISubgraphQuerier,
|
|
4
|
+
ISubgraphQuery,
|
|
5
|
+
SubgraphQuerier,
|
|
6
|
+
} from "src/apis/subgraph-querier";
|
|
7
|
+
import { httpClient as defaultHttpClient } from "../apis/http-api-base";
|
|
8
|
+
import { Address } from "viem";
|
|
9
|
+
import { getApiNetworkConfigForChain } from "src/mint/subgraph-mint-getter";
|
|
10
|
+
import { buildContractInfoQuery } from "./subgraph-queries";
|
|
11
|
+
import { retriesGeneric } from "src/retries";
|
|
12
|
+
|
|
13
|
+
export interface IContractGetter {
|
|
14
|
+
getContractInfo: (params: {
|
|
15
|
+
contractAddress: Address;
|
|
16
|
+
retries?: number;
|
|
17
|
+
}) => Promise<{
|
|
18
|
+
name: string;
|
|
19
|
+
contractVersion: string;
|
|
20
|
+
nextTokenId: bigint;
|
|
21
|
+
mintFee: bigint;
|
|
22
|
+
}>;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
export class SubgraphContractGetter implements IContractGetter {
|
|
26
|
+
public readonly subgraphQuerier: ISubgraphQuerier;
|
|
27
|
+
networkConfig: NetworkConfig;
|
|
28
|
+
|
|
29
|
+
constructor(chainId: number, subgraphQuerier?: ISubgraphQuerier) {
|
|
30
|
+
this.subgraphQuerier =
|
|
31
|
+
subgraphQuerier || new SubgraphQuerier(defaultHttpClient);
|
|
32
|
+
this.networkConfig = getApiNetworkConfigForChain(chainId);
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
async querySubgraphWithRetries<T>({
|
|
36
|
+
query,
|
|
37
|
+
variables,
|
|
38
|
+
parseResponseData,
|
|
39
|
+
}: ISubgraphQuery<T>) {
|
|
40
|
+
const responseData = await this.subgraphQuerier.query({
|
|
41
|
+
subgraphUrl: this.networkConfig.subgraphUrl,
|
|
42
|
+
query,
|
|
43
|
+
variables,
|
|
44
|
+
});
|
|
45
|
+
|
|
46
|
+
return parseResponseData(responseData);
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
async getContractInfo({
|
|
50
|
+
contractAddress,
|
|
51
|
+
retries = 1,
|
|
52
|
+
}: {
|
|
53
|
+
contractAddress: Address;
|
|
54
|
+
retries?: number;
|
|
55
|
+
}): Promise<{
|
|
56
|
+
name: string;
|
|
57
|
+
contractVersion: string;
|
|
58
|
+
nextTokenId: bigint;
|
|
59
|
+
mintFee: bigint;
|
|
60
|
+
}> {
|
|
61
|
+
const tryFn = async () => {
|
|
62
|
+
const responseData = await this.querySubgraphWithRetries(
|
|
63
|
+
buildContractInfoQuery({ contractAddress }),
|
|
64
|
+
);
|
|
65
|
+
if (!responseData) {
|
|
66
|
+
console.log("could not find contract");
|
|
67
|
+
throw new Error("Cannot find contract");
|
|
68
|
+
}
|
|
69
|
+
return responseData;
|
|
70
|
+
};
|
|
71
|
+
|
|
72
|
+
const responseData = await retriesGeneric({
|
|
73
|
+
tryFn,
|
|
74
|
+
maxTries: retries,
|
|
75
|
+
linearBackoffMS: 1000,
|
|
76
|
+
});
|
|
77
|
+
|
|
78
|
+
const nextTokenId =
|
|
79
|
+
responseData.tokens.length === 0
|
|
80
|
+
? 1n
|
|
81
|
+
: BigInt(responseData.tokens[0]!.tokenId) + 1n;
|
|
82
|
+
|
|
83
|
+
return {
|
|
84
|
+
name: responseData.name,
|
|
85
|
+
contractVersion: responseData.contractVersion,
|
|
86
|
+
mintFee: BigInt(responseData.mintFeePerQuantity),
|
|
87
|
+
nextTokenId,
|
|
88
|
+
};
|
|
89
|
+
}
|
|
90
|
+
}
|
|
@@ -18,52 +18,6 @@ export function new1155ContractVersion(chainId: number): string {
|
|
|
18
18
|
return address.CONTRACT_1155_IMPL_VERSION;
|
|
19
19
|
}
|
|
20
20
|
|
|
21
|
-
export async function getContractInfoExistingContract({
|
|
22
|
-
publicClient,
|
|
23
|
-
contractAddress,
|
|
24
|
-
}: {
|
|
25
|
-
publicClient: Pick<PublicClient, "readContract">;
|
|
26
|
-
contractAddress: Address;
|
|
27
|
-
// Account that is the creator of the contract
|
|
28
|
-
}): Promise<{
|
|
29
|
-
contractVersion: string;
|
|
30
|
-
contractName: string;
|
|
31
|
-
nextTokenId: bigint;
|
|
32
|
-
}> {
|
|
33
|
-
// Check if contract exists either from metadata or the static address passed in.
|
|
34
|
-
// If a static address is passed in, this fails if that contract does not exist.
|
|
35
|
-
let contractVersion: string;
|
|
36
|
-
try {
|
|
37
|
-
contractVersion = await publicClient.readContract({
|
|
38
|
-
abi: zoraCreator1155ImplABI,
|
|
39
|
-
address: contractAddress,
|
|
40
|
-
functionName: "contractVersion",
|
|
41
|
-
});
|
|
42
|
-
} catch (e: any) {
|
|
43
|
-
// This logic branch is hit if the contract doesn't exist
|
|
44
|
-
// falling back to contractExists to false.
|
|
45
|
-
throw new Error(`Contract does not exist at ${contractAddress}`);
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
const nextTokenId = await publicClient.readContract({
|
|
49
|
-
address: contractAddress,
|
|
50
|
-
abi: zoraCreator1155ImplABI,
|
|
51
|
-
functionName: "nextTokenId",
|
|
52
|
-
});
|
|
53
|
-
|
|
54
|
-
const contractName = await publicClient.readContract({
|
|
55
|
-
address: contractAddress,
|
|
56
|
-
abi: zoraCreator1155ImplABI,
|
|
57
|
-
functionName: "name",
|
|
58
|
-
});
|
|
59
|
-
|
|
60
|
-
return {
|
|
61
|
-
contractVersion,
|
|
62
|
-
contractName,
|
|
63
|
-
nextTokenId,
|
|
64
|
-
};
|
|
65
|
-
}
|
|
66
|
-
|
|
67
21
|
export async function getDeterministicContractAddress({
|
|
68
22
|
publicClient,
|
|
69
23
|
account,
|
|
@@ -96,3 +50,20 @@ export async function getDeterministicContractAddress({
|
|
|
96
50
|
|
|
97
51
|
return contractAddress;
|
|
98
52
|
}
|
|
53
|
+
|
|
54
|
+
export async function getNewContractMintFee({
|
|
55
|
+
publicClient,
|
|
56
|
+
chainId,
|
|
57
|
+
}: {
|
|
58
|
+
publicClient: Pick<PublicClient, "readContract">;
|
|
59
|
+
chainId: number;
|
|
60
|
+
}) {
|
|
61
|
+
const implAddress = contracts1155.addresses[chainId as contracts1155Address]
|
|
62
|
+
.CONTRACT_1155_IMPL as Address;
|
|
63
|
+
|
|
64
|
+
return await publicClient.readContract({
|
|
65
|
+
abi: zoraCreator1155ImplABI,
|
|
66
|
+
address: implAddress,
|
|
67
|
+
functionName: "mintFee",
|
|
68
|
+
});
|
|
69
|
+
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Address, parseEther,
|
|
1
|
+
import { Address, parseEther, zeroAddress } from "viem";
|
|
2
2
|
import { ConcreteSalesConfig } from "./types";
|
|
3
3
|
import {
|
|
4
4
|
AsyncPrepareMint,
|
|
@@ -6,7 +6,6 @@ import {
|
|
|
6
6
|
OnchainSalesStrategies,
|
|
7
7
|
PrepareMintReturn,
|
|
8
8
|
} from "src/mint/types";
|
|
9
|
-
import { zoraCreator1155ImplABI } from "@zoralabs/protocol-deployments";
|
|
10
9
|
import {
|
|
11
10
|
makePrepareMint1155TokenParams,
|
|
12
11
|
parseMintCosts,
|
|
@@ -16,13 +15,11 @@ import { getRequiredErc20Approvals } from "src/mint/mint-queries";
|
|
|
16
15
|
async function toSalesStrategyFromSubgraph({
|
|
17
16
|
minter,
|
|
18
17
|
salesConfig,
|
|
19
|
-
|
|
20
|
-
contractAddress,
|
|
18
|
+
getContractMintFee,
|
|
21
19
|
}: {
|
|
22
20
|
minter: Address;
|
|
23
21
|
salesConfig: ConcreteSalesConfig;
|
|
24
|
-
|
|
25
|
-
contractAddress: Address;
|
|
22
|
+
getContractMintFee: () => Promise<bigint>;
|
|
26
23
|
}): Promise<OnchainSalesStrategies> {
|
|
27
24
|
if (salesConfig.type === "timed") {
|
|
28
25
|
return {
|
|
@@ -51,11 +48,7 @@ async function toSalesStrategyFromSubgraph({
|
|
|
51
48
|
maxTokensPerAddress: salesConfig.maxTokensPerAddress,
|
|
52
49
|
};
|
|
53
50
|
}
|
|
54
|
-
const contractMintFee = await
|
|
55
|
-
abi: zoraCreator1155ImplABI,
|
|
56
|
-
address: contractAddress,
|
|
57
|
-
functionName: "mintFee",
|
|
58
|
-
});
|
|
51
|
+
const contractMintFee = await getContractMintFee();
|
|
59
52
|
if (salesConfig.type === "fixedPrice") {
|
|
60
53
|
return {
|
|
61
54
|
saleType: "fixedPrice",
|
|
@@ -81,21 +74,20 @@ export function makeOnchainPrepareMintFromCreate({
|
|
|
81
74
|
tokenId,
|
|
82
75
|
result,
|
|
83
76
|
minter,
|
|
84
|
-
|
|
77
|
+
getContractMintFee,
|
|
85
78
|
contractVersion,
|
|
86
79
|
}: {
|
|
87
80
|
contractAddress: Address;
|
|
88
81
|
tokenId: bigint;
|
|
89
82
|
result: ConcreteSalesConfig;
|
|
90
83
|
minter: Address;
|
|
91
|
-
|
|
84
|
+
getContractMintFee: () => Promise<bigint>;
|
|
92
85
|
contractVersion: string;
|
|
93
86
|
}): AsyncPrepareMint {
|
|
94
87
|
return async (params: MintParametersBase): Promise<PrepareMintReturn> => {
|
|
95
88
|
const subgraphSalesConfig = await toSalesStrategyFromSubgraph({
|
|
96
89
|
minter,
|
|
97
|
-
|
|
98
|
-
publicClient,
|
|
90
|
+
getContractMintFee,
|
|
99
91
|
salesConfig: result,
|
|
100
92
|
});
|
|
101
93
|
return {
|