@imtbl/sdk 1.43.3 → 1.43.4

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.
Files changed (53) hide show
  1. package/dist/Passport.d-011d5035.d.ts +224 -0
  2. package/dist/blockchain-data.d-1634b683.d.ts +3406 -0
  3. package/dist/blockchain_data-d989298c.js +1 -0
  4. package/dist/blockchain_data.d-d538f8d4.d.ts +4543 -0
  5. package/dist/blockchain_data.d.ts +3 -7950
  6. package/dist/blockchain_data.js +1 -6058
  7. package/dist/browser/checkout/sdk.js +4 -4
  8. package/dist/checkout-68675dd1.js +16 -0
  9. package/dist/checkout.d-ae9ca847.d.ts +3392 -0
  10. package/dist/checkout.d.ts +7 -16882
  11. package/dist/checkout.js +1 -37189
  12. package/dist/config-53a9a4ca.js +1 -0
  13. package/dist/config.d-65420620.d.ts +18 -0
  14. package/dist/config.d.ts +1 -30
  15. package/dist/config.js +1 -394
  16. package/dist/event-types.d-42520276.d.ts +332 -0
  17. package/dist/imxProvider.d-cac9e315.d.ts +12538 -0
  18. package/dist/index-14aad537.js +1 -0
  19. package/dist/index-3951cdf0.js +1 -0
  20. package/dist/index-3f40d7f6.js +1 -0
  21. package/dist/index-58a79c29.js +1 -0
  22. package/dist/index-96599707.js +1 -0
  23. package/dist/index-e7002486.js +1 -0
  24. package/dist/index.browser.js +4 -4
  25. package/dist/index.cjs +7 -7
  26. package/dist/index.d-c4a4c17d.d.ts +277 -0
  27. package/dist/index.d-f0845744.d.ts +30 -0
  28. package/dist/index.d-f1471830.d.ts +376 -0
  29. package/dist/index.d.ts +18 -32627
  30. package/dist/index.js +1 -64124
  31. package/dist/json-rpc-provider.d-5c038bd9.d.ts +249 -0
  32. package/dist/minting_backend-04aef147.js +1 -0
  33. package/dist/minting_backend.d-4754ffee.d.ts +104 -0
  34. package/dist/minting_backend.d.ts +5 -3535
  35. package/dist/minting_backend.js +1 -6756
  36. package/dist/orderbook-e71036df.js +1 -0
  37. package/dist/orderbook.d-77162c6c.d.ts +1257 -0
  38. package/dist/orderbook.d.ts +5 -1713
  39. package/dist/orderbook.js +1 -2479
  40. package/dist/passport-0f45e532.js +1 -0
  41. package/dist/passport.d-d3f44798.d.ts +67 -0
  42. package/dist/passport.d.ts +6 -13703
  43. package/dist/passport.js +1 -23137
  44. package/dist/transfer.d-87728423.d.ts +898 -0
  45. package/dist/webhook-a16541bb.js +1 -0
  46. package/dist/webhook.d-4c3cb340.d.ts +75 -0
  47. package/dist/webhook.d.ts +4 -1265
  48. package/dist/webhook.js +1 -488
  49. package/dist/x-a5b39578.js +1 -0
  50. package/dist/x.d-1b51f0c3.d.ts +4879 -0
  51. package/dist/x.d.ts +6 -18663
  52. package/dist/x.js +1 -19242
  53. package/package.json +1 -1
@@ -0,0 +1,249 @@
1
+ /// <reference types="node" />
2
+ import { A as AccessList, B as BigNumber, a as Block, T as TransactionResponse, b as TransactionReceipt, L as Listener, E as EventType, F as Filter, P as Provider, N as Network, c as Networkish, d as Transaction, e as BlockTag, f as BigNumberish, D as Deferrable, g as TransactionRequest, h as FilterByBlockHash, i as BlockWithTransactions, j as Log, C as ConnectionInfo, S as Signer, k as TypedDataSigner, l as Bytes, m as TypedDataDomain, n as TypedDataField } from './index.d-c4a4c17d.js';
3
+
4
+ declare type FormatFunc = (value: any) => any;
5
+ declare type FormatFuncs = {
6
+ [key: string]: FormatFunc;
7
+ };
8
+ declare type Formats = {
9
+ transaction: FormatFuncs;
10
+ transactionRequest: FormatFuncs;
11
+ receipt: FormatFuncs;
12
+ receiptLog: FormatFuncs;
13
+ block: FormatFuncs;
14
+ blockWithTransactions: FormatFuncs;
15
+ filter: FormatFuncs;
16
+ filterLog: FormatFuncs;
17
+ };
18
+ declare class Formatter {
19
+ readonly formats: Formats;
20
+ constructor();
21
+ getDefaultFormats(): Formats;
22
+ accessList(accessList: Array<any>): AccessList;
23
+ number(number: any): number;
24
+ type(number: any): number;
25
+ bigNumber(value: any): BigNumber;
26
+ boolean(value: any): boolean;
27
+ hex(value: any, strict?: boolean): string;
28
+ data(value: any, strict?: boolean): string;
29
+ address(value: any): string;
30
+ callAddress(value: any): string;
31
+ contractAddress(value: any): string;
32
+ blockTag(blockTag: any): string;
33
+ hash(value: any, strict?: boolean): string;
34
+ difficulty(value: any): number;
35
+ uint256(value: any): string;
36
+ _block(value: any, format: any): Block;
37
+ block(value: any): Block;
38
+ blockWithTransactions(value: any): Block;
39
+ transactionRequest(value: any): any;
40
+ transactionResponse(transaction: any): TransactionResponse;
41
+ transaction(value: any): any;
42
+ receiptLog(value: any): any;
43
+ receipt(value: any): TransactionReceipt;
44
+ topics(value: any): any;
45
+ filter(value: any): any;
46
+ filterLog(value: any): any;
47
+ static check(format: {
48
+ [name: string]: FormatFunc;
49
+ }, object: any): any;
50
+ static allowNull(format: FormatFunc, nullValue?: any): FormatFunc;
51
+ static allowFalsish(format: FormatFunc, replaceValue: any): FormatFunc;
52
+ static arrayOf(format: FormatFunc): FormatFunc;
53
+ }
54
+
55
+ declare class Event {
56
+ readonly listener: Listener;
57
+ readonly once: boolean;
58
+ readonly tag: string;
59
+ _lastBlockNumber: number;
60
+ _inflight: boolean;
61
+ constructor(tag: string, listener: Listener, once: boolean);
62
+ get event(): EventType;
63
+ get type(): string;
64
+ get hash(): string;
65
+ get filter(): Filter;
66
+ pollable(): boolean;
67
+ }
68
+ interface EnsResolver {
69
+ readonly name: string;
70
+ readonly address: string;
71
+ getAddress(coinType?: 60): Promise<null | string>;
72
+ getContentHash(): Promise<null | string>;
73
+ getText(key: string): Promise<null | string>;
74
+ }
75
+ interface EnsProvider {
76
+ resolveName(name: string): Promise<null | string>;
77
+ lookupAddress(address: string): Promise<null | string>;
78
+ getResolver(name: string): Promise<null | EnsResolver>;
79
+ }
80
+ interface Avatar {
81
+ url: string;
82
+ linkage: Array<{
83
+ type: string;
84
+ content: string;
85
+ }>;
86
+ }
87
+ declare class Resolver implements EnsResolver {
88
+ readonly provider: BaseProvider;
89
+ readonly name: string;
90
+ readonly address: string;
91
+ readonly _resolvedAddress: null | string;
92
+ _supportsEip2544: null | Promise<boolean>;
93
+ constructor(provider: BaseProvider, address: string, name: string, resolvedAddress?: string);
94
+ supportsWildcard(): Promise<boolean>;
95
+ _fetch(selector: string, parameters?: string): Promise<null | string>;
96
+ _fetchBytes(selector: string, parameters?: string): Promise<null | string>;
97
+ _getAddress(coinType: number, hexBytes: string): string;
98
+ getAddress(coinType?: number): Promise<string>;
99
+ getAvatar(): Promise<null | Avatar>;
100
+ getContentHash(): Promise<string>;
101
+ getText(key: string): Promise<string>;
102
+ }
103
+ declare class BaseProvider extends Provider implements EnsProvider {
104
+ _networkPromise: Promise<Network>;
105
+ _network: Network;
106
+ _events: Array<Event>;
107
+ formatter: Formatter;
108
+ _emitted: {
109
+ [eventName: string]: number | "pending";
110
+ };
111
+ _pollingInterval: number;
112
+ _poller: NodeJS.Timer;
113
+ _bootstrapPoll: NodeJS.Timer;
114
+ _lastBlockNumber: number;
115
+ _maxFilterBlockRange: number;
116
+ _fastBlockNumber: number;
117
+ _fastBlockNumberPromise: Promise<number>;
118
+ _fastQueryDate: number;
119
+ _maxInternalBlockNumber: number;
120
+ _internalBlockNumber: Promise<{
121
+ blockNumber: number;
122
+ reqTime: number;
123
+ respTime: number;
124
+ }>;
125
+ readonly anyNetwork: boolean;
126
+ disableCcipRead: boolean;
127
+ /**
128
+ * ready
129
+ *
130
+ * A Promise<Network> that resolves only once the provider is ready.
131
+ *
132
+ * Sub-classes that call the super with a network without a chainId
133
+ * MUST set this. Standard named networks have a known chainId.
134
+ *
135
+ */
136
+ constructor(network: Networkish | Promise<Network>);
137
+ _ready(): Promise<Network>;
138
+ get ready(): Promise<Network>;
139
+ static getFormatter(): Formatter;
140
+ static getNetwork(network: Networkish): Network;
141
+ ccipReadFetch(tx: Transaction, calldata: string, urls: Array<string>): Promise<null | string>;
142
+ _getInternalBlockNumber(maxAge: number): Promise<number>;
143
+ poll(): Promise<void>;
144
+ resetEventsBlock(blockNumber: number): void;
145
+ get network(): Network;
146
+ detectNetwork(): Promise<Network>;
147
+ getNetwork(): Promise<Network>;
148
+ get blockNumber(): number;
149
+ get polling(): boolean;
150
+ set polling(value: boolean);
151
+ get pollingInterval(): number;
152
+ set pollingInterval(value: number);
153
+ _getFastBlockNumber(): Promise<number>;
154
+ _setFastBlockNumber(blockNumber: number): void;
155
+ waitForTransaction(transactionHash: string, confirmations?: number, timeout?: number): Promise<TransactionReceipt>;
156
+ _waitForTransaction(transactionHash: string, confirmations: number, timeout: number, replaceable: {
157
+ data: string;
158
+ from: string;
159
+ nonce: number;
160
+ to: string;
161
+ value: BigNumber;
162
+ startBlock: number;
163
+ }): Promise<TransactionReceipt>;
164
+ getBlockNumber(): Promise<number>;
165
+ getGasPrice(): Promise<BigNumber>;
166
+ getBalance(addressOrName: string | Promise<string>, blockTag?: BlockTag | Promise<BlockTag>): Promise<BigNumber>;
167
+ getTransactionCount(addressOrName: string | Promise<string>, blockTag?: BlockTag | Promise<BlockTag>): Promise<number>;
168
+ getCode(addressOrName: string | Promise<string>, blockTag?: BlockTag | Promise<BlockTag>): Promise<string>;
169
+ getStorageAt(addressOrName: string | Promise<string>, position: BigNumberish | Promise<BigNumberish>, blockTag?: BlockTag | Promise<BlockTag>): Promise<string>;
170
+ _wrapTransaction(tx: Transaction, hash?: string, startBlock?: number): TransactionResponse;
171
+ sendTransaction(signedTransaction: string | Promise<string>): Promise<TransactionResponse>;
172
+ _getTransactionRequest(transaction: Deferrable<TransactionRequest>): Promise<Transaction>;
173
+ _getFilter(filter: Filter | FilterByBlockHash | Promise<Filter | FilterByBlockHash>): Promise<Filter | FilterByBlockHash>;
174
+ _call(transaction: TransactionRequest, blockTag: BlockTag, attempt: number): Promise<string>;
175
+ call(transaction: Deferrable<TransactionRequest>, blockTag?: BlockTag | Promise<BlockTag>): Promise<string>;
176
+ estimateGas(transaction: Deferrable<TransactionRequest>): Promise<BigNumber>;
177
+ _getAddress(addressOrName: string | Promise<string>): Promise<string>;
178
+ _getBlock(blockHashOrBlockTag: BlockTag | string | Promise<BlockTag | string>, includeTransactions?: boolean): Promise<Block | BlockWithTransactions>;
179
+ getBlock(blockHashOrBlockTag: BlockTag | string | Promise<BlockTag | string>): Promise<Block>;
180
+ getBlockWithTransactions(blockHashOrBlockTag: BlockTag | string | Promise<BlockTag | string>): Promise<BlockWithTransactions>;
181
+ getTransaction(transactionHash: string | Promise<string>): Promise<TransactionResponse>;
182
+ getTransactionReceipt(transactionHash: string | Promise<string>): Promise<TransactionReceipt>;
183
+ getLogs(filter: Filter | FilterByBlockHash | Promise<Filter | FilterByBlockHash>): Promise<Array<Log>>;
184
+ getEtherPrice(): Promise<number>;
185
+ _getBlockTag(blockTag: BlockTag | Promise<BlockTag>): Promise<BlockTag>;
186
+ getResolver(name: string): Promise<null | Resolver>;
187
+ _getResolver(name: string, operation?: string): Promise<string>;
188
+ resolveName(name: string | Promise<string>): Promise<null | string>;
189
+ lookupAddress(address: string | Promise<string>): Promise<null | string>;
190
+ getAvatar(nameOrAddress: string): Promise<null | string>;
191
+ perform(method: string, params: any): Promise<any>;
192
+ _startEvent(event: Event): void;
193
+ _stopEvent(event: Event): void;
194
+ _addEventListener(eventName: EventType, listener: Listener, once: boolean): this;
195
+ on(eventName: EventType, listener: Listener): this;
196
+ once(eventName: EventType, listener: Listener): this;
197
+ emit(eventName: EventType, ...args: Array<any>): boolean;
198
+ listenerCount(eventName?: EventType): number;
199
+ listeners(eventName?: EventType): Array<Listener>;
200
+ off(eventName: EventType, listener?: Listener): this;
201
+ removeAllListeners(eventName?: EventType): this;
202
+ }
203
+
204
+ declare class JsonRpcSigner extends Signer implements TypedDataSigner {
205
+ readonly provider: JsonRpcProvider;
206
+ _index: number;
207
+ _address: string;
208
+ constructor(constructorGuard: any, provider: JsonRpcProvider, addressOrIndex?: string | number);
209
+ connect(provider: Provider): JsonRpcSigner;
210
+ connectUnchecked(): JsonRpcSigner;
211
+ getAddress(): Promise<string>;
212
+ sendUncheckedTransaction(transaction: Deferrable<TransactionRequest>): Promise<string>;
213
+ signTransaction(transaction: Deferrable<TransactionRequest>): Promise<string>;
214
+ sendTransaction(transaction: Deferrable<TransactionRequest>): Promise<TransactionResponse>;
215
+ signMessage(message: Bytes | string): Promise<string>;
216
+ _legacySignMessage(message: Bytes | string): Promise<string>;
217
+ _signTypedData(domain: TypedDataDomain, types: Record<string, Array<TypedDataField>>, value: Record<string, any>): Promise<string>;
218
+ unlock(password: string): Promise<boolean>;
219
+ }
220
+ declare class UncheckedJsonRpcSigner extends JsonRpcSigner {
221
+ sendTransaction(transaction: Deferrable<TransactionRequest>): Promise<TransactionResponse>;
222
+ }
223
+ declare class JsonRpcProvider extends BaseProvider {
224
+ readonly connection: ConnectionInfo;
225
+ _pendingFilter: Promise<number>;
226
+ _nextId: number;
227
+ _eventLoopCache: Record<string, Promise<any>>;
228
+ get _cache(): Record<string, Promise<any>>;
229
+ constructor(url?: ConnectionInfo | string, network?: Networkish);
230
+ static defaultUrl(): string;
231
+ detectNetwork(): Promise<Network>;
232
+ _uncachedDetectNetwork(): Promise<Network>;
233
+ getSigner(addressOrIndex?: string | number): JsonRpcSigner;
234
+ getUncheckedSigner(addressOrIndex?: string | number): UncheckedJsonRpcSigner;
235
+ listAccounts(): Promise<Array<string>>;
236
+ send(method: string, params: Array<any>): Promise<any>;
237
+ prepareRequest(method: string, params: any): [string, Array<any>];
238
+ perform(method: string, params: any): Promise<any>;
239
+ _startEvent(event: Event): void;
240
+ _startPending(): void;
241
+ _stopEvent(event: Event): void;
242
+ static hexlifyTransaction(transaction: TransactionRequest, allowExtra?: {
243
+ [key: string]: boolean;
244
+ }): {
245
+ [key: string]: string | AccessList;
246
+ };
247
+ }
248
+
249
+ export { JsonRpcProvider as J };
@@ -0,0 +1 @@
1
+ import{B as t}from"./index-96599707.js";import{h as e}from"./index-3951cdf0.js";import{t as s,s as a,b as n}from"./index-14aad537.js";const i="minting_backend_sdk",d=t=>{try{s(i,"error",{name:t.name,message:t.message})}catch{}},r=(t,e)=>{try{s(i,"error",{name:t.name,message:t.message,origin:e})}catch{}},o=t=>((()=>{try{s(i,"initializePersistencePG")}catch{}})(),{recordMint:async e=>{if(0===(await t.query("\n INSERT INTO im_assets (asset_id, contract_address, owner_address, metadata, amount, token_id) \n VALUES ($1, $2, $3, $4, $5, $6) ON CONFLICT (asset_id, contract_address) DO NOTHING;\n ",[e.asset_id,e.contract_address,e.owner_address,e.metadata,e.amount,e.token_id])).rowCount)throw new Error("Duplicated mint")},getNextBatchForSubmission:async e=>(await t.query("\n WITH limited_assets AS (\n SELECT id \n FROM im_assets \n WHERE minting_status IS NULL \n LIMIT $1 \n FOR UPDATE SKIP LOCKED\n )\n UPDATE im_assets \n SET minting_status = 'submitting' \n WHERE minting_status IS NULL \n AND id IN (SELECT id FROM limited_assets)\n RETURNING *;\n ",[e])).rows,updateMintingStatusToSubmitted:async e=>{await t.query("\n UPDATE im_assets SET minting_status = $2 WHERE id = ANY($1);\n ",[e,"submitted"])},syncMintingStatus:async e=>{await t.query("\n INSERT INTO im_assets (\n asset_id, \n contract_address, \n owner_address, \n token_id, \n minting_status, \n metadata_id, \n last_imtbl_zkevm_mint_request_updated_id, \n error,\n amount\n ) VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9) ON CONFLICT (asset_id, contract_address)\n DO UPDATE SET \n owner_address = $3,\n token_id = $4,\n minting_status = $5,\n metadata_id = $6,\n last_imtbl_zkevm_mint_request_updated_id = $7,\n error = $8\n where (\n im_assets.last_imtbl_zkevm_mint_request_updated_id < $7 OR \n im_assets.last_imtbl_zkevm_mint_request_updated_id is null\n );\n ",[e.assetId,e.contractAddress,e.ownerAddress,e.tokenId,e.status,e.metadataId,e.imtblZkevmMintRequestUpdatedId,e.error,e.amount])},markAsConflict:async(e,s)=>{await t.query("\n UPDATE im_assets \n SET minting_status = 'conflicting' \n WHERE asset_id = ANY($1) \n AND contract_address = $2;\n ",[e,s])},resetMintingStatus:async e=>{await t.query("\n UPDATE im_assets SET minting_status = null WHERE id = ANY($1);\n ",[e])},markForRetry:async e=>{await t.query("\n UPDATE im_assets \n SET minting_status = null, tried_count = tried_count + 1 WHERE id = ANY($1);\n ",[e])},updateMintingStatusToSubmissionFailed:async e=>{await t.query("\n UPDATE im_assets SET minting_status = 'submission_failed' WHERE id = ANY($1);\n ",[e])},getMintingRequest:async(e,s)=>(await t.query("\n SELECT * FROM im_assets WHERE contract_address = $1 and asset_id = $2;\n ",[e,s])).rows[0]||null}),m=t=>((()=>{try{s(i,"initializePersistencePrismaSqlite")}catch{}})(),{recordMint:async e=>{if(!await t.imAssets.upsert({where:{im_assets_uindex:{assetId:e.asset_id,contractAddress:e.contract_address}},update:{},create:{assetId:e.asset_id,contractAddress:e.contract_address,ownerAddress:e.owner_address,metadata:JSON.stringify(e.metadata),amount:e.amount||null,tokenId:e.token_id||null}}))throw new Error("Duplicated mint")},getNextBatchForSubmission:async e=>{const s=(await t.imAssets.findMany({where:{mintingStatus:null},take:e})).map((t=>t.id));await t.imAssets.updateMany({where:{id:{in:s}},data:{mintingStatus:"submitting"}});return(await t.imAssets.findMany({where:{id:{in:s}}})).map((t=>({id:t.id,contract_address:t.contractAddress,wallet_address:t.ownerAddress,asset_id:t.assetId,metadata:t.metadata?JSON.parse(t.metadata):null,owner_address:t.ownerAddress,tried_count:t.triedCount,amount:t.amount||null,token_id:t.tokenId||null})))},updateMintingStatusToSubmitted:async e=>{await t.imAssets.updateMany({where:{id:{in:e}},data:{mintingStatus:"submitted"}})},syncMintingStatus:async e=>{const s=await t.imAssets.findUnique({where:{im_assets_uindex:{assetId:e.assetId,contractAddress:e.contractAddress}}});s&&(null===s.lastImtblZkevmMintRequestUpdatedId||s.lastImtblZkevmMintRequestUpdatedId<e.imtblZkevmMintRequestUpdatedId)?await t.imAssets.update({where:{im_assets_uindex:{assetId:e.assetId,contractAddress:e.contractAddress}},data:{ownerAddress:e.ownerAddress,tokenId:e.tokenId,mintingStatus:e.status,metadataId:e.metadataId,lastImtblZkevmMintRequestUpdatedId:e.imtblZkevmMintRequestUpdatedId,error:e.error,amount:e.amount||null}}):s||await t.imAssets.create({data:{assetId:e.assetId,contractAddress:e.contractAddress,ownerAddress:e.ownerAddress,tokenId:e.tokenId,mintingStatus:e.status,metadataId:e.metadataId,lastImtblZkevmMintRequestUpdatedId:e.imtblZkevmMintRequestUpdatedId,error:e.error,amount:e.amount||null}})},updateMintingStatusToSubmissionFailed:async e=>{await t.imAssets.updateMany({where:{id:{in:e}},data:{mintingStatus:"submission_failed"}})},markAsConflict:async(e,s)=>{await t.imAssets.updateMany({where:{assetId:{in:e},contractAddress:s},data:{mintingStatus:"conflicting"}})},resetMintingStatus:async e=>{await t.imAssets.updateMany({where:{id:{in:e}},data:{mintingStatus:null}})},markForRetry:async e=>{const s=await t.imAssets.findMany({where:{id:{in:e}},select:{id:!0,triedCount:!0}});for(const e of s)await t.imAssets.update({where:{id:e.id},data:{mintingStatus:null,triedCount:e.triedCount+1}})},getMintingRequest:async(e,s)=>{const a=await t.imAssets.findFirst({where:{contractAddress:e,assetId:s}});return a?{asset_id:a.assetId,contract_address:a.contractAddress,id:a.id,metadata:a.metadata?JSON.parse(a.metadata):null,owner_address:a.ownerAddress,tried_count:a.triedCount,wallet_address:a.ownerAddress,amount:a.amount||null}:null}}),c=async(t,e)=>{(()=>{try{s(i,"recordMint")}catch{}})(),t.recordMint(e)},u=async(t,e,{defaultBatchSize:a=1e3,chainName:n="imtbl-zkevm-testnet",maxNumberOfTries:r=3},o=console,m=1/0)=>{let c;(()=>{try{s(i,"submitMintingRequests")}catch{}})();let u=0;for(;u++<m;){await new Promise((t=>{setTimeout(t,1e3)}));let s=Math.min(c?.imx_remaining_mint_requests?parseInt(c.imx_remaining_mint_requests,10):a,a);if(0===s&&c&&new Date(c.imx_mint_requests_limit_reset)>new Date){o.info(`minting limit reached, waiting for reset at ${c?.imx_mint_requests_limit_reset}`);continue}0===s&&(o.info(`minting limit has been reset, use default batch size: ${a}`),c=void 0,s=a);const i=await t.getNextBatchForSubmission(s);if(0===i.length){o.info("no assets to mint");continue}const m=i.sort(((t,e)=>t.contract_address>e.contract_address?1:-1)).reduce(((t,e)=>{if(0===t.length)return[{contractAddress:e.contract_address,assets:[e]}];const s=t[t.length-1];return s.contractAddress===e.contract_address&&s.assets.length<100?[...t.slice(0,-1),{...s,assets:[...s.assets,e]}]:[...t,{contractAddress:e.contract_address,assets:[e]}]}),[]),u=await Promise.allSettled(m.map((async({contractAddress:s,assets:a})=>{const i={chainName:n,contractAddress:s,createMintRequestRequest:{assets:a.map((t=>({reference_id:t.asset_id,owner_address:t.owner_address,metadata:t.metadata,token_id:t.token_id,amount:t.amount?`${t.amount}`:null})))}};try{const s=await e.createMintRequest(i);return o.info(`mintingResponse: ${JSON.stringify(s,null,2)}`),await t.updateMintingStatusToSubmitted(a.map((({id:t})=>t))),s}catch(e){if(o.error(e),d(e),"CONFLICT_ERROR"===e.code&&"reference_id"===e.details?.id)try{await t.markAsConflict(e.details.values,s),await t.resetMintingStatus(a.map((({id:t})=>t)).filter((t=>!e.details.values.includes(t))))}catch(t){o.error(t),d(e)}else{const{assetsToRetry:e,assetsExceededMaxNumberOfTries:s}=a.reduce(((t,{tried_count:e=0,id:s})=>(e<r?t.assetsToRetry.push(s):t.assetsExceededMaxNumberOfTries.push(s),t)),{assetsToRetry:[],assetsExceededMaxNumberOfTries:[]});await t.markForRetry(e),await t.updateMintingStatusToSubmissionFailed(s)}return e}})));c=u.reverse().find((t=>"fulfilled"===t.status))?.value}},_=async(t,e,a=console)=>{if((()=>{try{s(i,"processMint")}catch{}})(),"imtbl_zkevm_mint_request_updated"!==e.event_name)return void a.info(`${e.event_name} is not imtbl_zkevm_mint_request_updated, skip.`);const n=e.data.reference_id;if(!n)throw new Error("reference_id not found in webhook event");const d=e.data.contract_address;if(!d)throw new Error("contract_address not found in webhook event");"failed"===e.data.status&&a.error(`mint failed: ${JSON.stringify(e.data,null,2)}`);const r=await t.getMintingRequest(d,n);r||a.info(`minting request not found in the database, ${JSON.stringify(e.data)}`);const o=r?.wallet_address||e.data.owner_address;if(!o)throw a.error("owner_address missing"),new Error("owner_address missing");await t.syncMintingStatus({tokenId:e.data.token_id,status:e.data.status,assetId:n,contractAddress:d,ownerAddress:o,metadataId:e.data.metadata_id,imtblZkevmMintRequestUpdatedId:e.event_id,error:e.data.error?JSON.stringify(e.data.error):null,amount:e.data.amount||null})},l={zkevmMintRequestUpdated:async t=>{}};class w{baseConfig;persistence;blockchainDataClient;logger;constructor(e){this.baseConfig=e.baseConfig,this.persistence=e.persistence,this.logger=e.logger||console,this.blockchainDataClient=new t({baseConfig:e.baseConfig}),a(this.baseConfig.environment),this.baseConfig.publishableKey&&n(this.baseConfig.publishableKey)}async recordMint(t){await c(this.persistence,t)}async submitMintingRequests(t){await u(this.persistence,this.blockchainDataClient,t)}async processMint(t,s=l){await e(t,this.baseConfig.environment,{zkevmMintRequestUpdated:async t=>{await _(this.persistence,t,this.logger),s.zkevmMintRequestUpdated&&s.zkevmMintRequestUpdated(t)}})}}if("undefined"!=typeof process&&process.on)try{process.on("uncaughtExceptionMonitor",r)}catch{}var g=Object.freeze({__proto__:null,MintingBackendModule:w,mintingPersistencePg:o,mintingPersistencePrismaSqlite:m,processMint:_,recordMint:c,submitMintingRequests:u});export{w as M,o as a,m as b,g as m,_ as p,c as r,u as s};
@@ -0,0 +1,104 @@
1
+ import { M as ModuleConfiguration } from './index.d-f0845744.js';
2
+ import { Z as ZkevmMintRequestUpdated } from './event-types.d-42520276.js';
3
+ import { B as BlockchainData } from './blockchain-data.d-1634b683.js';
4
+ import { Pool } from 'pg';
5
+
6
+ type CreateMintRequest = {
7
+ contract_address: string;
8
+ asset_id: string;
9
+ metadata: any;
10
+ owner_address: string;
11
+ amount?: number;
12
+ token_id?: string;
13
+ };
14
+ type MintRequest = {
15
+ id: string;
16
+ contract_address: string;
17
+ wallet_address: string;
18
+ asset_id: string;
19
+ metadata: any;
20
+ owner_address: string;
21
+ tried_count: number;
22
+ amount?: number;
23
+ token_id?: string;
24
+ };
25
+ type SubmittedMintRequest = {
26
+ tokenId: string | null;
27
+ status: string;
28
+ assetId: string;
29
+ contractAddress: string;
30
+ ownerAddress: string;
31
+ metadataId: string;
32
+ imtblZkevmMintRequestUpdatedId: string;
33
+ error: any | null;
34
+ amount: number | null;
35
+ };
36
+ interface MintingPersistence {
37
+ recordMint: (request: CreateMintRequest) => Promise<void>;
38
+ getNextBatchForSubmission: (limit: number) => Promise<MintRequest[]>;
39
+ updateMintingStatusToSubmitted: (ids: string[]) => Promise<void>;
40
+ updateMintingStatusToSubmissionFailed: (ids: string[]) => Promise<void>;
41
+ syncMintingStatus: (submittedMintRequest: SubmittedMintRequest) => Promise<void>;
42
+ markAsConflict: (assetIds: string[], contractAddress: string) => Promise<void>;
43
+ resetMintingStatus: (ids: string[]) => Promise<void>;
44
+ markForRetry: (ids: string[]) => Promise<void>;
45
+ getMintingRequest: (contractAddress: string, referenceId: string) => Promise<MintRequest | null>;
46
+ }
47
+
48
+ declare const mintingPersistence$1: (client: Pool) => MintingPersistence;
49
+
50
+ declare const mintingPersistence: (client: any) => MintingPersistence;
51
+
52
+ interface Logger {
53
+ info: (message: string) => void;
54
+ error: (message: any) => void;
55
+ }
56
+
57
+ declare const recordMint: (mintingPersistence: MintingPersistence, mintRequest: CreateMintRequest) => Promise<void>;
58
+ declare const submitMintingRequests: (mintingPersistence: MintingPersistence, blockchainDataSDKClient: BlockchainData, { defaultBatchSize, chainName, maxNumberOfTries, }: {
59
+ defaultBatchSize?: number | undefined;
60
+ chainName?: string | undefined;
61
+ maxNumberOfTries?: number | undefined;
62
+ }, logger?: Logger, maxLoops?: number) => Promise<void>;
63
+ declare const processMint: (mintingPersistence: MintingPersistence, event: ZkevmMintRequestUpdated, logger?: Logger) => Promise<void>;
64
+
65
+ interface MintingBackendModuleConfiguration extends ModuleConfiguration<undefined> {
66
+ persistence: MintingPersistence;
67
+ logger?: Logger;
68
+ }
69
+ declare class MintingBackendModule {
70
+ private readonly baseConfig;
71
+ private readonly persistence;
72
+ private readonly blockchainDataClient;
73
+ private readonly logger;
74
+ constructor(config: MintingBackendModuleConfiguration);
75
+ recordMint(mintRequest: CreateMintRequest): Promise<void>;
76
+ submitMintingRequests(config: {
77
+ defaultBatchSize?: number;
78
+ chainName?: string;
79
+ maxNumberOfTries?: number;
80
+ }): Promise<void>;
81
+ processMint(body: string | Record<string, unknown>, otherHandlers?: {
82
+ zkevmMintRequestUpdated: (event: ZkevmMintRequestUpdated) => Promise<void>;
83
+ }): Promise<void>;
84
+ }
85
+
86
+ type minting_backend_d_MintingBackendModule = MintingBackendModule;
87
+ declare const minting_backend_d_MintingBackendModule: typeof MintingBackendModule;
88
+ type minting_backend_d_MintingBackendModuleConfiguration = MintingBackendModuleConfiguration;
89
+ declare const minting_backend_d_processMint: typeof processMint;
90
+ declare const minting_backend_d_recordMint: typeof recordMint;
91
+ declare const minting_backend_d_submitMintingRequests: typeof submitMintingRequests;
92
+ declare namespace minting_backend_d {
93
+ export {
94
+ minting_backend_d_MintingBackendModule as MintingBackendModule,
95
+ minting_backend_d_MintingBackendModuleConfiguration as MintingBackendModuleConfiguration,
96
+ mintingPersistence$1 as mintingPersistencePg,
97
+ mintingPersistence as mintingPersistencePrismaSqlite,
98
+ minting_backend_d_processMint as processMint,
99
+ minting_backend_d_recordMint as recordMint,
100
+ minting_backend_d_submitMintingRequests as submitMintingRequests,
101
+ };
102
+ }
103
+
104
+ export { MintingBackendModuleConfiguration as M, mintingPersistence$1 as a, mintingPersistence as b, MintingBackendModule as c, minting_backend_d as m, processMint as p, recordMint as r, submitMintingRequests as s };