aiia-vault-sdk 1.2.14 → 1.2.15

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.
@@ -53,6 +53,7 @@
53
53
  "MultiLevelReferralNFT-implemented": "0xc1c5cb24f727Ad0e634F1347c8BD1396BC050c77",
54
54
  "NFTTicket": "0x299d9923D9AfA0C3c7F868b948d504C4D6104b9F",
55
55
  "NFTTicket-implemented": "0x6520a840CDBd1AeCB32E6331164a4445aE1148b8",
56
- "NFTTicket-implemented-old": "0xec38C132724BF909416bc3F222DD9c3357E70C39"
56
+ "NFTTicket-implemented-old": "0xec38C132724BF909416bc3F222DD9c3357E70C39",
57
+ "TradingVault": "0x4F6CAb6b514F7920fb41A8EbD54A7CF6B4293D1F"
57
58
  }
58
59
  }
package/dist/types.d.ts CHANGED
@@ -294,6 +294,7 @@ export type ParsedEvent = {
294
294
  transactionHash: string;
295
295
  args: EventTypes[K];
296
296
  timestamp: number | null;
297
+ sender: string | null;
297
298
  };
298
299
  }[keyof EventTypes];
299
300
  export type ParsedSeedRoundFundraiserEvent = {
@@ -303,6 +304,7 @@ export type ParsedSeedRoundFundraiserEvent = {
303
304
  transactionHash: string;
304
305
  args: SeedRoundFundraiserEventTypes[K];
305
306
  timestamp: number | null;
307
+ sender: string | null;
306
308
  };
307
309
  }[keyof SeedRoundFundraiserEventTypes];
308
310
  export type AnyEvent = ParsedEvent;
@@ -375,6 +377,7 @@ export type ParsedFairLaunchEvent = {
375
377
  transactionHash: string;
376
378
  args: FairLaunchEventTypes[K];
377
379
  timestamp: number | null;
380
+ sender: string | null;
378
381
  };
379
382
  }[keyof FairLaunchEventTypes];
380
383
  export interface RawMultiLevelReferralNFTEventTypes {
@@ -447,6 +450,7 @@ export type ParsedMultiLevelReferralNFTEventRaw = {
447
450
  transactionIndex: number;
448
451
  logIndex: number;
449
452
  blockHash: string;
453
+ sender: string | null;
450
454
  };
451
455
  }[keyof RawMultiLevelReferralNFTEventTypes];
452
456
  export type ParsedMultiLevelReferralNFTEvent = {
@@ -460,5 +464,6 @@ export type ParsedMultiLevelReferralNFTEvent = {
460
464
  transactionIndex: number;
461
465
  logIndex: number;
462
466
  blockHash: string;
467
+ sender: string | null;
463
468
  };
464
469
  }[keyof MultiLevelReferralNFTEventTypes];
package/dist/utils.d.ts CHANGED
@@ -48,6 +48,7 @@ export interface BaseEventRaw {
48
48
  transactionHash: string;
49
49
  args: Record<string, any>;
50
50
  timestamp: number | null;
51
+ sender: string | null;
51
52
  }
52
53
  /**
53
54
  * Generic function to get all events from a contract within a block range
package/dist/utils.js CHANGED
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.getNetworkFromRpc=exports.signAndSendTransaction=exports.streamEvents=exports.getAllEvents=exports.resolveContractAddress=exports.getRewardWeight=exports.buildApproveERC20Tx=exports.getTokenAllowance=exports.getTokenSymbol=exports.getTokenDecimals=exports.getTransactionStatus=exports.checkRpcHealth=exports.getRandomProvider=exports.processBatches=exports.chunks=exports.sleep=exports.LOG_PREFIXES=void 0;const e=require("ethers");exports.LOG_PREFIXES={INFO:"[STREAM-INFO]",BLOCK:"[STREAM-BLOCK]",EVENT:"[STREAM-EVENT]",ERROR:"[STREAM-ERROR]",SAVE:"[STREAM-SAVE]",DEBUG:"[STREAM-DEBUG]"};exports.sleep=async e=>new Promise((t=>setTimeout(t,e)));exports.chunks=(e,t)=>{const o=[];for(let s=0;s<e.length;s+=t)o.push(e.slice(s,s+t));return o};exports.processBatches=async(e,t,o=3,s=500)=>{let r=[];const n=(0,exports.chunks)(e,o);for(let e=0;e<n.length;e++){const o=await t(n[e]);r=[...r,...o],e<n.length-1&&await(0,exports.sleep)(s)}return r};exports.getRandomProvider=e=>e[Math.floor(Math.random()*e.length)];exports.checkRpcHealth=async(e,t=0)=>{try{const t=new Promise(((e,t)=>{setTimeout((()=>t(new Error("RPC request timeout"))),5e3)}));return await Promise.race([e.getBlockNumber(),t]),!0}catch(e){return console.error(`${exports.LOG_PREFIXES.ERROR} RPC health check failed:`,e,t),!1}};exports.getTransactionStatus=async(e,t,o=10)=>{let s=0,r=1e3;for(;s<o;)try{const n=await e.getTransactionReceipt(t);if(!n){if(s++,s===o)return{hash:t,status:null,confirmations:0,isCompleted:!1,attempts:s};await(0,exports.sleep)(r),r*=2;continue}const a=Number(await n.confirmations()||0);return{hash:n.hash,status:1===n.status,confirmations:a,isCompleted:!0,attempts:s+1}}catch(e){throw new Error(`Failed to get transaction status: ${e.message}`)}throw new Error("Failed to get transaction status after maximum retries")};exports.getTokenDecimals=async(t,o)=>{const s=new e.ethers.Contract(t,["function decimals() view returns (uint8)"],o);return Number(await s.decimals())};exports.getTokenSymbol=async(t,o)=>{const s=new e.ethers.Contract(t,["function symbol() view returns (string)"],o);return await s.symbol()};exports.getTokenAllowance=async(t,o,s,r)=>{if(t===e.ethers.ZeroAddress||t.toLowerCase()===e.ethers.ZeroAddress)return BigInt("0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff");const n=new e.ethers.Contract(t,["function allowance(address owner, address spender) view returns (uint256)"],r);return await n.allowance(o,s)};exports.buildApproveERC20Tx=async(t,o,s,r)=>{const n=new e.ethers.Contract(t,["function approve(address spender, uint256 amount) returns (bool)"],r);return await n.approve.populateTransaction(o,s)};exports.getRewardWeight=(e,t)=>{let o=0;const s=[...t].sort(((e,t)=>e.duration-t.duration));for(const t of s)e>=t.duration&&(o=t.weight);return o};exports.resolveContractAddress=(e,t,o,s)=>{if(s)return s;const r=(0,exports.getNetworkFromRpc)(e);return o?.[r]?.[t]};exports.getAllEvents=async(e,t,o,s,r,n)=>{let a=[];e.interface.forEachEvent((e=>{a.push(e.name)})),n&&n.length>0&&(a=a.filter((e=>n.includes(e))));const i=await(0,exports.processBatches)(a,(async t=>{const n=t.map((async t=>{const n=o(),a=n.filters[t]();return(await n.queryFilter(a,s,r)).map((o=>{const s=e.interface.parseLog({topics:o.topics,data:o.data});return{eventName:t,blockNumber:o.blockNumber,transactionHash:o.transactionHash,args:s?.args.toObject(),timestamp:null}}))}));return(await Promise.all(n)).flat()}));i.sort(((e,t)=>e.blockNumber-t.blockNumber));const c=[...new Set(i.map((e=>e.blockNumber)))],l=new Map;return await(0,exports.processBatches)(c,(async e=>{const o=e.map((e=>t().getBlock(e)));return(await Promise.all(o)).forEach((e=>{e&&l.set(e.number,e.timestamp)})),[]})),i.map((e=>({eventName:e.eventName,blockNumber:e.blockNumber,transactionHash:e.transactionHash,args:Object.fromEntries(Object.entries(e.args||{}).filter((([e])=>isNaN(Number(e))))),timestamp:l.get(e.blockNumber)??null})))};exports.streamEvents=async({getProvider:e,getAllEvents:t,formatEvent:o,onEvent:s,saveLatestBlock:r,fromBlock:n,batchSize:a=1e3,sleepTime:i=5e3,whitelistEvents:c,shouldContinue:l,blockGap:p=0})=>{const m="1"===process.env.DEBUG_STREAM_EVENTS;let f=n,u=0,E=Date.now();const g=()=>{u++;const e=Date.now();e-E>=1e4&&(console.log(`${exports.LOG_PREFIXES.INFO} RPC Requests in last 10s: ${u}`),u=0,E=e)},h=()=>{const t=e();if(!t.__requestTracking){if("send"in t){const e=t.send.bind(t);t.send=async(t,o)=>(g(),e(t,o))}else if("_send"in t){const e=t._send.bind(t);t._send=async(t,o)=>(g(),e(t,o))}else{const e=t.getBlockNumber.bind(t);t.getBlockNumber=async()=>(g(),e());const o=t.getBlock.bind(t);t.getBlock=async e=>(g(),o(e));const s=t.getTransactionReceipt.bind(t);t.getTransactionReceipt=async e=>(g(),s(e))}t.__requestTracking=!0}return t},b=async(e,o,s)=>(g(),await t(e,o,s));for(m&&(console.log(`${exports.LOG_PREFIXES.INFO} StreamEvents Debug Mode Enabled`),console.log(`${exports.LOG_PREFIXES.INFO} Initial fromBlock: ${f}`),console.log(`${exports.LOG_PREFIXES.INFO} Batch size: ${a}`),console.log(`${exports.LOG_PREFIXES.INFO} Sleep time: ${i}ms`),console.log(`${exports.LOG_PREFIXES.INFO} Block gap: ${p}`),console.log(`${exports.LOG_PREFIXES.INFO} RPC request tracking enabled (10s intervals)`),c&&c.length>0&&console.log(`${exports.LOG_PREFIXES.INFO} Whitelist events: ${c.join(", ")}`),l&&console.log(`${exports.LOG_PREFIXES.INFO} Stream will check continuation condition`));;)try{if(l){if(!await Promise.resolve(l()))return void(m&&console.log(`${exports.LOG_PREFIXES.INFO} Stream stopped by shouldContinue function`))}const e=await h().getBlockNumber();m&&console.log(`${exports.LOG_PREFIXES.BLOCK} Latest block: ${e}`);const t=Math.max(e-p,0),n=Math.min(f+a,t);if(m&&console.log(`${exports.LOG_PREFIXES.BLOCK} Processing blocks from ${f} to ${n} (safe latest block: ${t})`),f>=t){m&&console.log(`${exports.LOG_PREFIXES.DEBUG} Caught up to latest block, waiting ${i}ms...`),await(0,exports.sleep)(i);continue}const u=await b(f,n,c);if(m&&u.length>0){const e=u.reduce(((e,t)=>{const o=t.eventName||"Unknown";return e[o]=(e[o]||0)+1,e}),{});console.log(`${exports.LOG_PREFIXES.EVENT} Found ${u.length} events:`),Object.entries(e).forEach((([e,t])=>{console.log(`${exports.LOG_PREFIXES.EVENT} - ${e}: ${t}`)}))}for(const e of u)m&&console.log(`${exports.LOG_PREFIXES.EVENT} Processing: ${e.eventName||"Event"}`),await s(o(e));await r(n),m&&console.log(`${exports.LOG_PREFIXES.SAVE} Saved latest block: ${n}`),f=n+1}catch(e){m?(console.error(`${exports.LOG_PREFIXES.ERROR} Error in streamEvents:`,e),console.error(`${exports.LOG_PREFIXES.ERROR} Stack trace:`,e instanceof Error?e.stack:"")):console.error(`${exports.LOG_PREFIXES.ERROR} Error in streamEvents:`,e),await(0,exports.sleep)(1e3)}};exports.signAndSendTransaction=async(e,t,o,{onSubmit:s,onFinally:r,onError:n}={},a)=>{try{const n={...e};let a;if("object"==typeof t&&null!==t&&"sendTransaction"in t){const e=t.connect(o());a=(await e.sendTransaction(n)).hash}else a=await t(n);s&&await s(a);const i=await(0,exports.getTransactionStatus)(o(),a);if(null===i.status)throw new Error("Transaction may not be minted on-chain yet or has failed. Please check the blockchain explorer.");if(!1===i.status)throw new Error("Transaction failed. Please check the blockchain explorer for details.");return r&&await r({...i,txHash:a}),{transaction:{hash:a},status:i}}catch(e){if(a&&e)try{if("CALL_EXCEPTION"===e.code&&e.data){const t=e.data;for(const o of Object.values(a.interface.fragments).filter((e=>"error"===e.type)))if("name"in o){const s=a.interface.getError(o.name);if(s&&s.selector){if(s.selector===t){const t=o.name,s=e.errorArgs||[],r=new Error(`Transaction failed with custom error: ${t}(${s.join(", ")})`);throw Object.assign(r,e),n&&await n(r),r}}}console.log(`${exports.LOG_PREFIXES.DEBUG} Unknown custom error with selector: ${t}`)}}catch(e){console.error(`${exports.LOG_PREFIXES.ERROR} Error decoding transaction error:`,e)}throw n&&await n(e instanceof Error?e:new Error(String(e))),e}};exports.getNetworkFromRpc=e=>{const t=e.toLowerCase();let o=t;try{if(t.includes("://")){o=new URL(t).hostname}else t.includes("@")&&(o=t.split("@")[1].split("/")[0])}catch(e){console.warn(`${exports.LOG_PREFIXES.ERROR} Failed to parse RPC URL: ${t}`)}const s=[[/sepolia\.base|base-sepolia/,"base-sepolia"],[/goerli\.base|base-goerli/,"base-goerli"],[/base-mainnet/,"base"],[/polygon-mumbai|mumbai\.polygon/,"polygon-mumbai"],[/polygon-amoy|amoy\.polygon/,"polygon-amoy"],[/polygon-zkevm|zkevm|zkevm[-.]polygon/,"polygon-zkevm"],[/arbitrum.*sepolia|sepolia.*arbitrum/,"arbitrum-sepolia"],[/arbitrum.*goerli|goerli.*arbitrum/,"arbitrum-goerli"],[/arbitrum-nova|nova[-.]arbitrum/,"arbitrum-nova"],[/optimism-sepolia|sepolia[-.]optimism/,"optimism-sepolia"],[/optimism-goerli|goerli[-.]optimism/,"optimism-goerli"],[/avalanche-fuji|fuji[-.]avalanche|avax-test/,"avalanche-fuji"],[/bsc-testnet|testnet[-.]bsc|data-seed-prebsc/,"bsc-testnet"],[/base(?![-.]sepolia|[-.]goerli)/,"base"],[/polygon(?![-.]mumbai|[-.]amoy)/,"polygon"],[/arbitrum(?![-.]nova)/,"arbitrum"],[/optimism(?![-.]sepolia|[-.]goerli)/,"optimism"],[/avalanche|avax(?![-.]test|[-.]fuji)/,"avalanche"],[/bsc|binance(?![-.]testnet)/,"bsc"],[/eth-sepolia|sepolia(?![-.]base|[-.]arbitrum|[-.]optimism)/,"sepolia"],[/eth-goerli|goerli(?![-.]base|[-.]arbitrum|[-.]optimism)/,"goerli"],[/eth-mainnet|ethereum|eth\.rpc/,"ethereum"],[/mainnet/,"ethereum"]];for(const[e,o]of s)if(e.test(t))return o;for(const[e,t]of s)if(e.test(o))return t;throw new Error("Failed to get network from RPC URL")};
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.getNetworkFromRpc=exports.signAndSendTransaction=exports.streamEvents=exports.getAllEvents=exports.resolveContractAddress=exports.getRewardWeight=exports.buildApproveERC20Tx=exports.getTokenAllowance=exports.getTokenSymbol=exports.getTokenDecimals=exports.getTransactionStatus=exports.checkRpcHealth=exports.getRandomProvider=exports.processBatches=exports.chunks=exports.sleep=exports.LOG_PREFIXES=void 0;const e=require("ethers");exports.LOG_PREFIXES={INFO:"[STREAM-INFO]",BLOCK:"[STREAM-BLOCK]",EVENT:"[STREAM-EVENT]",ERROR:"[STREAM-ERROR]",SAVE:"[STREAM-SAVE]",DEBUG:"[STREAM-DEBUG]"};exports.sleep=async e=>new Promise((t=>setTimeout(t,e)));exports.chunks=(e,t)=>{const o=[];for(let s=0;s<e.length;s+=t)o.push(e.slice(s,s+t));return o};exports.processBatches=async(e,t,o=3,s=500)=>{let r=[];const n=(0,exports.chunks)(e,o);for(let e=0;e<n.length;e++){const o=await t(n[e]);r=[...r,...o],e<n.length-1&&await(0,exports.sleep)(s)}return r};exports.getRandomProvider=e=>e[Math.floor(Math.random()*e.length)];exports.checkRpcHealth=async(e,t=0)=>{try{const t=new Promise(((e,t)=>{setTimeout((()=>t(new Error("RPC request timeout"))),5e3)}));return await Promise.race([e.getBlockNumber(),t]),!0}catch(e){return console.error(`${exports.LOG_PREFIXES.ERROR} RPC health check failed:`,e,t),!1}};exports.getTransactionStatus=async(e,t,o=10)=>{let s=0,r=1e3;for(;s<o;)try{const n=await e.getTransactionReceipt(t);if(!n){if(s++,s===o)return{hash:t,status:null,confirmations:0,isCompleted:!1,attempts:s};await(0,exports.sleep)(r),r*=2;continue}const a=Number(await n.confirmations()||0);return{hash:n.hash,status:1===n.status,confirmations:a,isCompleted:!0,attempts:s+1}}catch(e){throw new Error(`Failed to get transaction status: ${e.message}`)}throw new Error("Failed to get transaction status after maximum retries")};exports.getTokenDecimals=async(t,o)=>{const s=new e.ethers.Contract(t,["function decimals() view returns (uint8)"],o);return Number(await s.decimals())};exports.getTokenSymbol=async(t,o)=>{const s=new e.ethers.Contract(t,["function symbol() view returns (string)"],o);return await s.symbol()};exports.getTokenAllowance=async(t,o,s,r)=>{if(t===e.ethers.ZeroAddress||t.toLowerCase()===e.ethers.ZeroAddress)return BigInt("0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff");const n=new e.ethers.Contract(t,["function allowance(address owner, address spender) view returns (uint256)"],r);return await n.allowance(o,s)};exports.buildApproveERC20Tx=async(t,o,s,r)=>{const n=new e.ethers.Contract(t,["function approve(address spender, uint256 amount) returns (bool)"],r);return await n.approve.populateTransaction(o,s)};exports.getRewardWeight=(e,t)=>{let o=0;const s=[...t].sort(((e,t)=>e.duration-t.duration));for(const t of s)e>=t.duration&&(o=t.weight);return o};exports.resolveContractAddress=(e,t,o,s)=>{if(s)return s;const r=(0,exports.getNetworkFromRpc)(e);return o?.[r]?.[t]};exports.getAllEvents=async(e,t,o,s,r,n)=>{let a=[];e.interface.forEachEvent((e=>{a.push(e.name)})),n&&n.length>0&&(a=a.filter((e=>n.includes(e))));const i=await(0,exports.processBatches)(a,(async t=>{const n=t.map((async t=>{const n=o(),a=n.filters[t]();return(await n.queryFilter(a,s,r)).map((o=>{const s=e.interface.parseLog({topics:o.topics,data:o.data});return{eventName:t,blockNumber:o.blockNumber,transactionHash:o.transactionHash,args:s?.args.toObject(),timestamp:null,sender:null}}))}));return(await Promise.all(n)).flat()}));i.sort(((e,t)=>e.blockNumber-t.blockNumber));const c=[...new Set(i.map((e=>e.blockNumber)))],l=new Map;await(0,exports.processBatches)(c,(async e=>{const o=e.map((e=>t().getBlock(e)));return(await Promise.all(o)).forEach((e=>{e&&l.set(e.number,e.timestamp)})),[]}));const p=[...new Set(i.map((e=>e.transactionHash)))],m=new Map;return await(0,exports.processBatches)(p,(async e=>{const o=e.map((async e=>{const o=t(),s=await o.getTransaction(e);return{hash:e,from:s?.from||null}}));return(await Promise.all(o)).forEach((e=>{e&&m.set(e.hash,e.from)})),[]})),i.map((e=>({eventName:e.eventName,blockNumber:e.blockNumber,transactionHash:e.transactionHash,args:Object.fromEntries(Object.entries(e.args||{}).filter((([e])=>isNaN(Number(e))))),timestamp:l.get(e.blockNumber)??null,sender:m.get(e.transactionHash)??null})))};exports.streamEvents=async({getProvider:e,getAllEvents:t,formatEvent:o,onEvent:s,saveLatestBlock:r,fromBlock:n,batchSize:a=1e3,sleepTime:i=5e3,whitelistEvents:c,shouldContinue:l,blockGap:p=0})=>{const m="1"===process.env.DEBUG_STREAM_EVENTS;let f=n,u=0,E=Date.now();const g=()=>{u++;const e=Date.now();e-E>=1e4&&(console.log(`${exports.LOG_PREFIXES.INFO} RPC Requests in last 10s: ${u}`),u=0,E=e)},h=()=>{const t=e();if(!t.__requestTracking){if("send"in t){const e=t.send.bind(t);t.send=async(t,o)=>(g(),e(t,o))}else if("_send"in t){const e=t._send.bind(t);t._send=async(t,o)=>(g(),e(t,o))}else{const e=t.getBlockNumber.bind(t);t.getBlockNumber=async()=>(g(),e());const o=t.getBlock.bind(t);t.getBlock=async e=>(g(),o(e));const s=t.getTransactionReceipt.bind(t);t.getTransactionReceipt=async e=>(g(),s(e))}t.__requestTracking=!0}return t},b=async(e,o,s)=>(g(),await t(e,o,s));for(m&&(console.log(`${exports.LOG_PREFIXES.INFO} StreamEvents Debug Mode Enabled`),console.log(`${exports.LOG_PREFIXES.INFO} Initial fromBlock: ${f}`),console.log(`${exports.LOG_PREFIXES.INFO} Batch size: ${a}`),console.log(`${exports.LOG_PREFIXES.INFO} Sleep time: ${i}ms`),console.log(`${exports.LOG_PREFIXES.INFO} Block gap: ${p}`),console.log(`${exports.LOG_PREFIXES.INFO} RPC request tracking enabled (10s intervals)`),c&&c.length>0&&console.log(`${exports.LOG_PREFIXES.INFO} Whitelist events: ${c.join(", ")}`),l&&console.log(`${exports.LOG_PREFIXES.INFO} Stream will check continuation condition`));;)try{if(l){if(!await Promise.resolve(l()))return void(m&&console.log(`${exports.LOG_PREFIXES.INFO} Stream stopped by shouldContinue function`))}const e=await h().getBlockNumber();m&&console.log(`${exports.LOG_PREFIXES.BLOCK} Latest block: ${e}`);const t=Math.max(e-p,0),n=Math.min(f+a,t);if(m&&console.log(`${exports.LOG_PREFIXES.BLOCK} Processing blocks from ${f} to ${n} (safe latest block: ${t})`),f>=t){m&&console.log(`${exports.LOG_PREFIXES.DEBUG} Caught up to latest block, waiting ${i}ms...`),await(0,exports.sleep)(i);continue}const u=await b(f,n,c);if(m&&u.length>0){const e=u.reduce(((e,t)=>{const o=t.eventName||"Unknown";return e[o]=(e[o]||0)+1,e}),{});console.log(`${exports.LOG_PREFIXES.EVENT} Found ${u.length} events:`),Object.entries(e).forEach((([e,t])=>{console.log(`${exports.LOG_PREFIXES.EVENT} - ${e}: ${t}`)}))}for(const e of u)m&&console.log(`${exports.LOG_PREFIXES.EVENT} Processing: ${e.eventName||"Event"}`),await s(o(e));await r(n),m&&console.log(`${exports.LOG_PREFIXES.SAVE} Saved latest block: ${n}`),f=n+1}catch(e){m?(console.error(`${exports.LOG_PREFIXES.ERROR} Error in streamEvents:`,e),console.error(`${exports.LOG_PREFIXES.ERROR} Stack trace:`,e instanceof Error?e.stack:"")):console.error(`${exports.LOG_PREFIXES.ERROR} Error in streamEvents:`,e),await(0,exports.sleep)(1e3)}};exports.signAndSendTransaction=async(e,t,o,{onSubmit:s,onFinally:r,onError:n}={},a)=>{try{const n={...e};let a;if("object"==typeof t&&null!==t&&"sendTransaction"in t){const e=t.connect(o());a=(await e.sendTransaction(n)).hash}else a=await t(n);s&&await s(a);const i=await(0,exports.getTransactionStatus)(o(),a);if(null===i.status)throw new Error("Transaction may not be minted on-chain yet or has failed. Please check the blockchain explorer.");if(!1===i.status)throw new Error("Transaction failed. Please check the blockchain explorer for details.");return r&&await r({...i,txHash:a}),{transaction:{hash:a},status:i}}catch(e){if(a&&e)try{if("CALL_EXCEPTION"===e.code&&e.data){const t=e.data;for(const o of Object.values(a.interface.fragments).filter((e=>"error"===e.type)))if("name"in o){const s=a.interface.getError(o.name);if(s&&s.selector){if(s.selector===t){const t=o.name,s=e.errorArgs||[],r=new Error(`Transaction failed with custom error: ${t}(${s.join(", ")})`);throw Object.assign(r,e),n&&await n(r),r}}}console.log(`${exports.LOG_PREFIXES.DEBUG} Unknown custom error with selector: ${t}`)}}catch(e){console.error(`${exports.LOG_PREFIXES.ERROR} Error decoding transaction error:`,e)}throw n&&await n(e instanceof Error?e:new Error(String(e))),e}};exports.getNetworkFromRpc=e=>{const t=e.toLowerCase();let o=t;try{if(t.includes("://")){o=new URL(t).hostname}else t.includes("@")&&(o=t.split("@")[1].split("/")[0])}catch(e){console.warn(`${exports.LOG_PREFIXES.ERROR} Failed to parse RPC URL: ${t}`)}const s=[[/sepolia\.base|base-sepolia/,"base-sepolia"],[/goerli\.base|base-goerli/,"base-goerli"],[/base-mainnet/,"base"],[/polygon-mumbai|mumbai\.polygon/,"polygon-mumbai"],[/polygon-amoy|amoy\.polygon/,"polygon-amoy"],[/polygon-zkevm|zkevm|zkevm[-.]polygon/,"polygon-zkevm"],[/arbitrum.*sepolia|sepolia.*arbitrum/,"arbitrum-sepolia"],[/arbitrum.*goerli|goerli.*arbitrum/,"arbitrum-goerli"],[/arbitrum-nova|nova[-.]arbitrum/,"arbitrum-nova"],[/optimism-sepolia|sepolia[-.]optimism/,"optimism-sepolia"],[/optimism-goerli|goerli[-.]optimism/,"optimism-goerli"],[/avalanche-fuji|fuji[-.]avalanche|avax-test/,"avalanche-fuji"],[/bsc-testnet|testnet[-.]bsc|data-seed-prebsc/,"bsc-testnet"],[/base(?![-.]sepolia|[-.]goerli)/,"base"],[/polygon(?![-.]mumbai|[-.]amoy)/,"polygon"],[/arbitrum(?![-.]nova)/,"arbitrum"],[/optimism(?![-.]sepolia|[-.]goerli)/,"optimism"],[/avalanche|avax(?![-.]test|[-.]fuji)/,"avalanche"],[/bsc|binance(?![-.]testnet)/,"bsc"],[/eth-sepolia|sepolia(?![-.]base|[-.]arbitrum|[-.]optimism)/,"sepolia"],[/eth-goerli|goerli(?![-.]base|[-.]arbitrum|[-.]optimism)/,"goerli"],[/eth-mainnet|ethereum|eth\.rpc/,"ethereum"],[/mainnet/,"ethereum"]];for(const[e,o]of s)if(e.test(t))return o;for(const[e,t]of s)if(e.test(o))return t;throw new Error("Failed to get network from RPC URL")};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "aiia-vault-sdk",
3
- "version": "1.2.14",
3
+ "version": "1.2.15",
4
4
  "description": "SDK for AIIA Vault Contract",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",