aiia-vault-sdk 1.4.2 → 1.4.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/dist/MultiLevelReferralNFT.d.ts +80 -0
- package/dist/MultiLevelReferralNFT.js +1 -1
- package/dist/abis/NFTTicket.json +304 -2
- package/dist/abis/TradingVault.json +45 -2
- package/dist/contracts/MultiLevelReferralNFT.sol/NFTTicket.d.ts +134 -2
- package/dist/contracts/TradingVault.d.ts +40 -2
- package/dist/contracts.json +11 -5
- package/dist/types.d.ts +54 -14
- package/package.json +1 -1
@@ -30,6 +30,26 @@ export interface MaxReferralLevelsUpdatedEvent {
|
|
30
30
|
oldValue: number;
|
31
31
|
newValue: number;
|
32
32
|
}
|
33
|
+
export interface SharePercentUpdatedEvent {
|
34
|
+
oldValue: number;
|
35
|
+
newValue: number;
|
36
|
+
}
|
37
|
+
export interface MaxRewardUpdatedEvent {
|
38
|
+
oldValue: number;
|
39
|
+
newValue: number;
|
40
|
+
}
|
41
|
+
export interface NFTSoldEvent {
|
42
|
+
seller: string;
|
43
|
+
tokenIds: number[];
|
44
|
+
reward: number;
|
45
|
+
timestamp: number;
|
46
|
+
}
|
47
|
+
export interface SignerAddedEvent {
|
48
|
+
signer: string;
|
49
|
+
}
|
50
|
+
export interface SignerRemovedEvent {
|
51
|
+
signer: string;
|
52
|
+
}
|
33
53
|
export interface TransferEvent {
|
34
54
|
from: string;
|
35
55
|
to: string;
|
@@ -215,4 +235,64 @@ export declare class MultiLevelReferralNFTSDK {
|
|
215
235
|
getAllEvents(fromBlock: number, toBlock: number, whitelistEvents?: string[]): Promise<ParsedMultiLevelReferralNFTEventRaw[]>;
|
216
236
|
streamEvents(fromBlock: number, onEvent: (event: ParsedMultiLevelReferralNFTEvent) => Promise<void>, saveLatestBlock: (blockNumber: number) => Promise<void>, batchSize?: number, sleepTime?: number, blockGap?: number, shouldContinue?: () => Promise<boolean> | boolean): Promise<void>;
|
217
237
|
formatEventArgs: (event: ParsedMultiLevelReferralNFTEventRaw) => ParsedMultiLevelReferralNFTEvent;
|
238
|
+
/**
|
239
|
+
* Gets the maximum reward that can be given when selling NFTs
|
240
|
+
* @returns The maximum reward in ETH
|
241
|
+
*/
|
242
|
+
getMaxReward(): Promise<number>;
|
243
|
+
/**
|
244
|
+
* Builds a transaction to set the maximum reward
|
245
|
+
* @param maxReward - The new maximum reward in ETH
|
246
|
+
* @returns Populated transaction
|
247
|
+
*/
|
248
|
+
buildSetMaxRewardTx(maxReward: number): Promise<ethers.ContractTransaction>;
|
249
|
+
/**
|
250
|
+
* Builds a transaction to sell NFTs back to the contract
|
251
|
+
* @param tokenIds - Array of token IDs to sell
|
252
|
+
* @param reward - Reward amount in ETH
|
253
|
+
* @param nonce - Unique nonce to prevent replay attacks
|
254
|
+
* @param deadline - Timestamp after which signature is invalid
|
255
|
+
* @param signature - Signature from authorized signer
|
256
|
+
* @returns Populated transaction
|
257
|
+
*/
|
258
|
+
buildSellNFTTx(tokenIds: number[], reward: number, nonce: number, deadline: number, signature: string): Promise<ethers.ContractTransaction>;
|
259
|
+
/**
|
260
|
+
* Gets the current nonce for a user (used for signature verification)
|
261
|
+
* @param user - The user's address
|
262
|
+
* @returns The current nonce
|
263
|
+
*/
|
264
|
+
getUserNonce(user: string): Promise<number>;
|
265
|
+
/**
|
266
|
+
* Checks if an address is an authorized signer
|
267
|
+
* @param signer - The address to check
|
268
|
+
* @returns True if the address is an authorized signer
|
269
|
+
*/
|
270
|
+
isSigner(signer: string): Promise<boolean>;
|
271
|
+
/**
|
272
|
+
* Builds a transaction to add a new signer
|
273
|
+
* @param signer - Address of the new signer
|
274
|
+
* @returns Populated transaction
|
275
|
+
*/
|
276
|
+
buildAddSignerTx(signer: string): Promise<ethers.ContractTransaction>;
|
277
|
+
/**
|
278
|
+
* Builds a transaction to remove a signer
|
279
|
+
* @param signer - Address of the signer to remove
|
280
|
+
* @returns Populated transaction
|
281
|
+
*/
|
282
|
+
buildRemoveSignerTx(signer: string): Promise<ethers.ContractTransaction>;
|
283
|
+
/**
|
284
|
+
* Creates a signature for selling NFTs
|
285
|
+
* @param contractAddress Address of the MultiLevelReferralNFT contract
|
286
|
+
* @param userAddress Address of the user selling NFTs
|
287
|
+
* @param tokenIds Array of token IDs to sell
|
288
|
+
* @param reward Reward amount in ETH
|
289
|
+
* @param nonce Unique nonce to prevent replay attacks
|
290
|
+
* @param deadline Timestamp after which signature is invalid
|
291
|
+
* @param signerPrivateKey Private key of the authorized signer
|
292
|
+
* @returns Signature and message hash
|
293
|
+
*/
|
294
|
+
createSellSignature(contractAddress: string, userAddress: string, tokenIds: number[], reward: number, nonce: number, deadline: number, signerPrivateKey: string): Promise<{
|
295
|
+
signature: string;
|
296
|
+
messageHash: string;
|
297
|
+
}>;
|
218
298
|
}
|
@@ -1 +1 @@
|
|
1
|
-
"use strict";var e=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.MultiLevelReferralNFTSDK=void 0;const t=require("ethers"),r=e(require("./abis/NFTTicket.json")),a=e(require("./contracts.json")),s=require("./utils");exports.MultiLevelReferralNFTSDK=class{constructor(e,
|
1
|
+
"use strict";var e=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.MultiLevelReferralNFTSDK=void 0;const t=require("ethers"),r=e(require("./abis/NFTTicket.json")),a=e(require("./contracts.json")),s=require("./utils");exports.MultiLevelReferralNFTSDK=class{constructor(e,n){this.name="NFTTicket",this.isBootstrapped=!1,this.formatEventArgs=e=>{const{eventName:r,args:a}=e;switch(r){case"NFTMinted":return{...e,args:{...a,owner:a.owner.toLowerCase(),tokenId:Number(a.tokenId)}};case"ReferrerSet":return{...e,args:{...a,referrer:a.referrer.toLowerCase(),referee:a.referee.toLowerCase()}};case"ReferralPaid":return{...e,args:{...a,receiver:a.receiver.toLowerCase(),buyer:a.buyer.toLowerCase(),amount:Number(t.ethers.formatEther(a.amount)),level:Number(a.level),originalAmount:Number(t.ethers.formatEther(a.originalAmount)),tokenId:Number(a.tokenId)}};case"ReferralCodeSet":return{...e,args:{...a,user:a.user.toLowerCase(),referralCode:a.referralCode}};case"MaxReferralLevelsUpdated":case"SharePercentUpdated":return{...e,args:{...a,oldValue:Number(a.oldValue),newValue:Number(a.newValue)}};case"MaxRewardUpdated":return{...e,args:{...a,oldValue:Number(t.ethers.formatEther(a.oldValue)),newValue:Number(t.ethers.formatEther(a.newValue))}};case"NFTSold":return{...e,args:{...a,seller:a.seller.toLowerCase(),tokenIds:a.tokenIds.map((e=>Number(e))),reward:Number(t.ethers.formatEther(a.reward)),timestamp:Number(a.timestamp)}};case"SignerAdded":case"SignerRemoved":return{...e,args:{...a,signer:a.signer.toLowerCase()}};case"Transfer":return{...e,args:{...a,from:a.from.toLowerCase(),to:a.to.toLowerCase(),tokenId:Number(a.tokenId)}};default:return e}};const o=Array.isArray(e)?e:[e];this.providers=o.map((e=>new t.ethers.JsonRpcProvider(e,void 0,{staticNetwork:!0})));const i=(0,s.getRandomProvider)(this.providers);this.contractAddress=(0,s.resolveContractAddress)(o[0],this.name,a.default,n),this.contract=new t.ethers.Contract(this.contractAddress,r.default.abi,i)}getRandomProvider(){return(0,s.getRandomProvider)(this.providers)}getContractWithRandomProvider(){return new t.ethers.Contract(this.contractAddress,r.default.abi,this.getRandomProvider())}async bootstrap(){if(this.isBootstrapped)return;const e=await Promise.all(this.providers.map(((e,t)=>(0,s.checkRpcHealth)(e,t))));if(this.providers=this.providers.filter(((t,r)=>e[r])),0===this.providers.length)throw new Error("No active RPC providers available");this.isBootstrapped=!0}async signAndSendTransaction(e,t,r={}){return(0,s.signAndSendTransaction)(e,t,(()=>this.getRandomProvider()),r,this.contract)}async getPrice(){const e=await this.contract.price();return Number(t.ethers.formatEther(e))}async getSharePercent(){const e=await this.contract.sharePercent();return Number(e)}async getMaxReferralLevels(){const e=await this.contract.maxReferralLevels();return Number(e)}async getReferrer(e){return await this.contract.referrers(e)}async getReferralCodeOwner(e){return await this.contract.referralCodes(e)}async getUserReferralCode(e){return await this.contract.userReferralCodes(e)}async buildGenerateReferralCodeTx(){return await this.contract.generateReferralCode.populateTransaction()}async buildGenerateReferralCodeForUserTx(e){return await this.contract.generateReferralCodeForUser.populateTransaction(e)}async buildSetPriceTx(e){const r=t.ethers.parseEther(e.toString());return await this.contract.setPrice.populateTransaction(r)}async buildSetMaxReferralLevelsTx(e){if(await this.bootstrap(),e<1||e>10)throw new Error("Maximum referral levels must be between 1 and 10");return await this.contract.setMaxReferralLevels.populateTransaction(e)}async buildSetSharePercentTx(e){if(await this.bootstrap(),e<0||e>100)throw new Error("Share percentage must be between 0 and 100");return await this.contract.setSharePercent.populateTransaction(e)}async buildBuyNFTTx(e){const r=await this.getPrice(),a=await this.contract.buy.populateTransaction(e);return a.value=t.ethers.parseEther(r.toString()),a}async buildBatchBuyNFTTx(e,r){if(await this.bootstrap(),r<=0)throw new Error("Amount must be greater than 0");const a=await this.getPrice()*r,s=await this.contract.batchBuy.populateTransaction(e,r);return s.value=t.ethers.parseEther(a.toString()),s}async buildWithdrawTx(e){const r=t.ethers.parseEther(e.toString());return await this.contract.withdraw.populateTransaction(r)}async buildMintToTx(e){return await this.bootstrap(),this.contract.mintTo.populateTransaction(e)}async buildBatchMintTx(e,t){return await this.bootstrap(),this.contract.batchMint.populateTransaction(e,t)}async getOwner(){return await this.contract.owner()}getContractAddress(){return this.contractAddress}async getAllEvents(e,t,r){return await this.bootstrap(),(0,s.getAllEvents)(this.contract,(()=>this.getRandomProvider()),(()=>this.getContractWithRandomProvider()),e,t,r)}async streamEvents(e,t,r,a=1e3,n=5e3,o=0,i){return await this.bootstrap(),(0,s.streamEvents)({getProvider:()=>this.getRandomProvider(),getAllEvents:(e,t)=>this.getAllEvents(e,t),formatEvent:e=>this.formatEventArgs(e),onEvent:t,saveLatestBlock:r,fromBlock:e,batchSize:a,sleepTime:n,whitelistEvents:void 0,shouldContinue:i,blockGap:o})}async getMaxReward(){const e=await this.contract.maxReward();return Number(t.ethers.formatEther(e))}async buildSetMaxRewardTx(e){await this.bootstrap();const r=t.ethers.parseEther(e.toString());return await this.contract.setMaxReward.populateTransaction(r)}async buildSellNFTTx(e,r,a,s,n){await this.bootstrap();const o=t.ethers.parseEther(r.toString());return await this.contract.sell.populateTransaction(e,o,a,s,n)}async getUserNonce(e){const t=await this.contract.userNonces(e);return Number(t)}async isSigner(e){return await this.contract.signers(e)}async buildAddSignerTx(e){return await this.bootstrap(),await this.contract.addSigner.populateTransaction(e)}async buildRemoveSignerTx(e){return await this.bootstrap(),await this.contract.removeSigner.populateTransaction(e)}async createSellSignature(e,r,a,s,n,o,i){const c=t.ethers.parseEther(s.toString()),u=t.ethers.solidityPacked(Array(a.length).fill("uint256"),a),d=t.ethers.keccak256(u),h=t.ethers.keccak256(t.ethers.solidityPacked(["address","address","bytes32","uint256","uint256","uint256"],[e,r,d,c,n,o])),l=new t.ethers.Wallet(i),w=t.ethers.getBytes(h);return{signature:await l.signMessage(w),messageHash:h.toString()}}};
|