evernode-js-client 0.5.17-beta-v3.4 → 0.5.17-beta-v3.6
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/index.js +377 -244
- package/package.json +1 -1
    
        package/index.js
    CHANGED
    
    | @@ -11725,7 +11725,7 @@ const { Buffer } = __nccwpck_require__(4300); | |
| 11725 11725 | 
             
            const { XrplApi } = __nccwpck_require__(1850);
         | 
| 11726 11726 | 
             
            const { XrplAccount } = __nccwpck_require__(9329);
         | 
| 11727 11727 | 
             
            const { XrplApiEvents, XrplConstants } = __nccwpck_require__(3307);
         | 
| 11728 | 
            -
            const { EvernodeEvents,  | 
| 11728 | 
            +
            const { EvernodeEvents, EventTypes, MemoFormats, EvernodeConstants, HookStateKeys, HookParamKeys } = __nccwpck_require__(9849);
         | 
| 11729 11729 | 
             
            const { DefaultValues } = __nccwpck_require__(8262);
         | 
| 11730 11730 | 
             
            const { EncryptionHelper } = __nccwpck_require__(4832);
         | 
| 11731 11731 | 
             
            const { EventEmitter } = __nccwpck_require__(6170);
         | 
| @@ -11735,13 +11735,16 @@ const { StateHelpers } = __nccwpck_require__(3860); | |
| 11735 11735 | 
             
            const { EvernodeHelpers } = __nccwpck_require__(2523);
         | 
| 11736 11736 | 
             
            const { HookHelpers } = __nccwpck_require__(4675);
         | 
| 11737 11737 |  | 
| 11738 | 
            -
            const  | 
| 11739 | 
            -
            const  | 
| 11740 | 
            -
            const  | 
| 11741 | 
            -
            const  | 
| 11738 | 
            +
            const CANDIDATE_PROPOSE_HASHES_PARAM_OFFSET = 0;
         | 
| 11739 | 
            +
            const CANDIDATE_PROPOSE_KEYLETS_PARAM_OFFSET = 96;
         | 
| 11740 | 
            +
            const CANDIDATE_PROPOSE_UNIQUE_ID_PARAM_OFFSET = 198;
         | 
| 11741 | 
            +
            const CANDIDATE_PROPOSE_SHORT_NAME_PARAM_OFFSET = 230;
         | 
| 11742 | 
            +
            const CANDIDATE_PROPOSE_PARAM_SIZE = 250;
         | 
| 11742 11743 |  | 
| 11743 11744 | 
             
            const DUD_HOST_CANDID_ADDRESS_OFFSET = 12;
         | 
| 11744 11745 |  | 
| 11746 | 
            +
            const MAX_HOOK_PARAM_SIZE = 128;
         | 
| 11747 | 
            +
             | 
| 11745 11748 | 
             
            class BaseEvernodeClient {
         | 
| 11746 11749 |  | 
| 11747 11750 | 
             
                #watchEvents;
         | 
| @@ -11959,11 +11962,18 @@ class BaseEvernodeClient { | |
| 11959 11962 | 
             
                /**
         | 
| 11960 11963 | 
             
                 * Extracts the transaction info from a given transaction.
         | 
| 11961 11964 | 
             
                 * @param {object} tx Transaction to be deserialized and extracted.
         | 
| 11962 | 
            -
                 * @returns The event object in the format {name: '', data: {}}. Returns null if not handled. Note: You need to deserialize  | 
| 11965 | 
            +
                 * @returns The event object in the format {name: '', data: {}}. Returns null if not handled. Note: You need to deserialize HookParameters before passing the transaction to this function.
         | 
| 11963 11966 | 
             
                 */
         | 
| 11964 11967 | 
             
                async extractEvernodeEvent(tx) {
         | 
| 11965 | 
            -
                     | 
| 11966 | 
            -
             | 
| 11968 | 
            +
                    let eventType;
         | 
| 11969 | 
            +
                    let eventData;
         | 
| 11970 | 
            +
                    if (tx.HookParameters.length) {
         | 
| 11971 | 
            +
                        eventType = tx.HookParameters.find(p => p.name === HookParamKeys.PARAM_EVENT_TYPE_KEY)?.value;
         | 
| 11972 | 
            +
                        eventData = tx.HookParameters.find(p => p.name === HookParamKeys.PARAM_EVENT_DATA1_KEY)?.value ?? '';
         | 
| 11973 | 
            +
                        eventData += tx.HookParameters.find(p => p.name === HookParamKeys.PARAM_EVENT_DATA2_KEY)?.value ?? '';
         | 
| 11974 | 
            +
                    }
         | 
| 11975 | 
            +
                    if (tx.TransactionType === 'URITokenBuy' && eventType === EventTypes.ACQUIRE_LEASE && tx.Memos.length &&
         | 
| 11976 | 
            +
                        tx.Memos[0].type === EventTypes.ACQUIRE_LEASE && tx.Memos[0].format === MemoFormats.BASE64 && tx.Memos[0].data) {
         | 
| 11967 11977 |  | 
| 11968 11978 | 
             
                        // If our account is the destination host account, then decrypt the payload.
         | 
| 11969 11979 | 
             
                        let payload = tx.Memos[0].data;
         | 
| @@ -11989,12 +11999,11 @@ class BaseEvernodeClient { | |
| 11989 11999 | 
             
                        }
         | 
| 11990 12000 | 
             
                    }
         | 
| 11991 12001 |  | 
| 11992 | 
            -
                    else if (tx.Memos.length  | 
| 11993 | 
            -
                        tx.Memos[0].type ===  | 
| 11994 | 
            -
                        tx.Memos[1].type === MemoTypes.ACQUIRE_REF && tx.Memos[1].data) {
         | 
| 12002 | 
            +
                    else if (eventType === EventTypes.ACQUIRE_SUCCESS && eventData && tx.Memos.length &&
         | 
| 12003 | 
            +
                        tx.Memos[0].type === EventTypes.ACQUIRE_SUCCESS && tx.Memos[0].data) {
         | 
| 11995 12004 |  | 
| 11996 12005 | 
             
                        let payload = tx.Memos[0].data;
         | 
| 11997 | 
            -
                        const acquireRefId =  | 
| 12006 | 
            +
                        const acquireRefId = eventData;
         | 
| 11998 12007 |  | 
| 11999 12008 | 
             
                        // If our account is the destination user account, then decrypt the payload.
         | 
| 12000 12009 | 
             
                        if (tx.Memos[0].format === MemoFormats.BASE64 && tx.Destination === this.xrplAcc.address) {
         | 
| @@ -12015,12 +12024,11 @@ class BaseEvernodeClient { | |
| 12015 12024 | 
             
                        }
         | 
| 12016 12025 |  | 
| 12017 12026 | 
             
                    }
         | 
| 12018 | 
            -
                    else if (tx.Memos.length  | 
| 12019 | 
            -
                        tx.Memos[0].type ===  | 
| 12020 | 
            -
                        tx.Memos[1].type === MemoTypes.ACQUIRE_REF && tx.Memos[1].data) {
         | 
| 12027 | 
            +
                    else if (eventType === EventTypes.ACQUIRE_ERROR && eventData && tx.Memos.length &&
         | 
| 12028 | 
            +
                        tx.Memos[0].type === EventTypes.ACQUIRE_ERROR && tx.Memos[0].data) {
         | 
| 12021 12029 |  | 
| 12022 12030 | 
             
                        let error = tx.Memos[0].data;
         | 
| 12023 | 
            -
                        const acquireRefId =  | 
| 12031 | 
            +
                        const acquireRefId = eventData;
         | 
| 12024 12032 |  | 
| 12025 12033 | 
             
                        if (tx.Memos[0].format === MemoFormats.JSON)
         | 
| 12026 12034 | 
             
                            error = JSON.parse(error).reason;
         | 
| @@ -12034,8 +12042,7 @@ class BaseEvernodeClient { | |
| 12034 12042 | 
             
                            }
         | 
| 12035 12043 | 
             
                        }
         | 
| 12036 12044 | 
             
                    }
         | 
| 12037 | 
            -
                    else if ( | 
| 12038 | 
            -
                        tx.Memos[0].type === MemoTypes.HOST_REG && tx.Memos[0].format === MemoFormats.HEX && tx.Memos[0].data) {
         | 
| 12045 | 
            +
                    else if (eventType === EventTypes.HOST_REG && eventData) {
         | 
| 12039 12046 |  | 
| 12040 12047 | 
             
                        return {
         | 
| 12041 12048 | 
             
                            name: EvernodeEvents.HostRegistered,
         | 
| @@ -12045,7 +12052,7 @@ class BaseEvernodeClient { | |
| 12045 12052 | 
             
                            }
         | 
| 12046 12053 | 
             
                        }
         | 
| 12047 12054 | 
             
                    }
         | 
| 12048 | 
            -
                    else if ( | 
| 12055 | 
            +
                    else if (eventType === EventTypes.HOST_DEREG && eventData) {
         | 
| 12049 12056 | 
             
                        return {
         | 
| 12050 12057 | 
             
                            name: EvernodeEvents.HostDeregistered,
         | 
| 12051 12058 | 
             
                            data: {
         | 
| @@ -12054,14 +12061,13 @@ class BaseEvernodeClient { | |
| 12054 12061 | 
             
                            }
         | 
| 12055 12062 | 
             
                        }
         | 
| 12056 12063 | 
             
                    }
         | 
| 12057 | 
            -
                    else if ( | 
| 12058 | 
            -
                        tx.Memos[0].type === MemoTypes.HEARTBEAT) {
         | 
| 12064 | 
            +
                    else if (eventType === EventTypes.HEARTBEAT) {
         | 
| 12059 12065 |  | 
| 12060 | 
            -
                        const voteInfo = ( | 
| 12066 | 
            +
                        const voteInfo = (eventData && eventData.length) ?
         | 
| 12061 12067 | 
             
                            {
         | 
| 12062 12068 | 
             
                                voteInfo: {
         | 
| 12063 | 
            -
                                    candidateId:  | 
| 12064 | 
            -
                                    vote: Buffer.from( | 
| 12069 | 
            +
                                    candidateId: eventData.substr(0, 64),
         | 
| 12070 | 
            +
                                    vote: Buffer.from(eventData, 'hex').slice(32, 33).readUInt8()
         | 
| 12065 12071 | 
             
                                }
         | 
| 12066 12072 | 
             
                            } : {};
         | 
| 12067 12073 |  | 
| @@ -12074,10 +12080,9 @@ class BaseEvernodeClient { | |
| 12074 12080 | 
             
                            }
         | 
| 12075 12081 | 
             
                        }
         | 
| 12076 12082 | 
             
                    }
         | 
| 12077 | 
            -
                    else if ( | 
| 12078 | 
            -
                        tx.Memos[0].type === MemoTypes.EXTEND_LEASE && tx.Memos[0].format === MemoFormats.HEX && tx.Memos[0].data) {
         | 
| 12083 | 
            +
                    else if (eventType === EventTypes.EXTEND_LEASE && eventData) {
         | 
| 12079 12084 |  | 
| 12080 | 
            -
                        let uriTokenId =  | 
| 12085 | 
            +
                        let uriTokenId = eventData;
         | 
| 12081 12086 |  | 
| 12082 12087 | 
             
                        return {
         | 
| 12083 12088 | 
             
                            name: EvernodeEvents.ExtendLease,
         | 
| @@ -12091,12 +12096,11 @@ class BaseEvernodeClient { | |
| 12091 12096 | 
             
                            }
         | 
| 12092 12097 | 
             
                        }
         | 
| 12093 12098 | 
             
                    }
         | 
| 12094 | 
            -
                    else if (tx.Memos.length  | 
| 12095 | 
            -
                        tx.Memos[0].type ===  | 
| 12096 | 
            -
                        tx.Memos[1].type === MemoTypes.EXTEND_REF && tx.Memos[1].format === MemoFormats.HEX && tx.Memos[1].data) {
         | 
| 12099 | 
            +
                    else if (eventType === EventTypes.EXTEND_SUCCESS && eventData && tx.Memos.length &&
         | 
| 12100 | 
            +
                        tx.Memos[0].type === EventTypes.EXTEND_SUCCESS && tx.Memos[0].format === MemoFormats.HEX && tx.Memos[0].data) {
         | 
| 12097 12101 |  | 
| 12098 12102 | 
             
                        const extendResBuf = Buffer.from(tx.Memos[0].data, 'hex');
         | 
| 12099 | 
            -
                        const extendRefId =  | 
| 12103 | 
            +
                        const extendRefId = eventData;
         | 
| 12100 12104 |  | 
| 12101 12105 | 
             
                        return {
         | 
| 12102 12106 | 
             
                            name: EvernodeEvents.ExtendSuccess,
         | 
| @@ -12108,12 +12112,11 @@ class BaseEvernodeClient { | |
| 12108 12112 | 
             
                        }
         | 
| 12109 12113 |  | 
| 12110 12114 | 
             
                    }
         | 
| 12111 | 
            -
                    else if (tx.Memos.length  | 
| 12112 | 
            -
                        tx.Memos[0].type ===  | 
| 12113 | 
            -
                        tx.Memos[1].type === MemoTypes.EXTEND_REF && tx.Memos[1].data) {
         | 
| 12115 | 
            +
                    else if (eventType === EventTypes.EXTEND_ERROR && eventData && tx.Memos.length &&
         | 
| 12116 | 
            +
                        tx.Memos[0].type === EventTypes.EXTEND_ERROR && tx.Memos[0].data) {
         | 
| 12114 12117 |  | 
| 12115 12118 | 
             
                        let error = tx.Memos[0].data;
         | 
| 12116 | 
            -
                        const extendRefId =  | 
| 12119 | 
            +
                        const extendRefId = eventData;
         | 
| 12117 12120 |  | 
| 12118 12121 | 
             
                        if (tx.Memos[0].format === MemoFormats.JSON)
         | 
| 12119 12122 | 
             
                            error = JSON.parse(error).reason;
         | 
| @@ -12127,8 +12130,7 @@ class BaseEvernodeClient { | |
| 12127 12130 | 
             
                            }
         | 
| 12128 12131 | 
             
                        }
         | 
| 12129 12132 | 
             
                    }
         | 
| 12130 | 
            -
                    else if ( | 
| 12131 | 
            -
                        tx.Memos[0].type === MemoTypes.INIT && tx.Memos[0].format === MemoFormats.HEX && tx.Memos[0].data) {
         | 
| 12133 | 
            +
                    else if (eventType === EventTypes.INIT && eventData) {
         | 
| 12132 12134 |  | 
| 12133 12135 | 
             
                        return {
         | 
| 12134 12136 | 
             
                            name: EvernodeEvents.Initialized,
         | 
| @@ -12137,8 +12139,7 @@ class BaseEvernodeClient { | |
| 12137 12139 | 
             
                            }
         | 
| 12138 12140 | 
             
                        }
         | 
| 12139 12141 | 
             
                    }
         | 
| 12140 | 
            -
                    else if ( | 
| 12141 | 
            -
                        tx.Memos[0].type === MemoTypes.HOST_UPDATE_INFO && tx.Memos[0].format === MemoFormats.HEX && tx.Memos[0].data) {
         | 
| 12142 | 
            +
                    else if (eventType === EventTypes.HOST_UPDATE_INFO && eventData) {
         | 
| 12142 12143 |  | 
| 12143 12144 | 
             
                        return {
         | 
| 12144 12145 | 
             
                            name: EvernodeEvents.HostRegUpdated,
         | 
| @@ -12148,10 +12149,9 @@ class BaseEvernodeClient { | |
| 12148 12149 | 
             
                            }
         | 
| 12149 12150 | 
             
                        }
         | 
| 12150 12151 | 
             
                    }
         | 
| 12151 | 
            -
                    else if ( | 
| 12152 | 
            -
                        tx.Memos[0].type === MemoTypes.DEAD_HOST_PRUNE && tx.Memos[0].format === MemoFormats.HEX && tx.Memos[0].data) {
         | 
| 12152 | 
            +
                    else if (eventType === EventTypes.DEAD_HOST_PRUNE && eventData) {
         | 
| 12153 12153 |  | 
| 12154 | 
            -
                        const addrsBuf = Buffer.from( | 
| 12154 | 
            +
                        const addrsBuf = Buffer.from(eventData, 'hex');
         | 
| 12155 12155 |  | 
| 12156 12156 | 
             
                        return {
         | 
| 12157 12157 | 
             
                            name: EvernodeEvents.DeadHostPrune,
         | 
| @@ -12161,8 +12161,7 @@ class BaseEvernodeClient { | |
| 12161 12161 | 
             
                            }
         | 
| 12162 12162 | 
             
                        }
         | 
| 12163 12163 | 
             
                    }
         | 
| 12164 | 
            -
                    else if ( | 
| 12165 | 
            -
                        tx.Memos[0].type === MemoTypes.HOST_REBATE) {
         | 
| 12164 | 
            +
                    else if (eventType === EventTypes.HOST_REBATE) {
         | 
| 12166 12165 |  | 
| 12167 12166 | 
             
                        return {
         | 
| 12168 12167 | 
             
                            name: EvernodeEvents.HostRebate,
         | 
| @@ -12172,10 +12171,9 @@ class BaseEvernodeClient { | |
| 12172 12171 | 
             
                            }
         | 
| 12173 12172 | 
             
                        }
         | 
| 12174 12173 | 
             
                    }
         | 
| 12175 | 
            -
                    else if ( | 
| 12176 | 
            -
                        tx.Memos[0].type === MemoTypes.HOST_TRANSFER && tx.Memos[0].format === MemoFormats.HEX && tx.Memos[0].data) {
         | 
| 12174 | 
            +
                    else if (eventType === EventTypes.HOST_TRANSFER && eventData) {
         | 
| 12177 12175 |  | 
| 12178 | 
            -
                        const addrsBuf = Buffer.from( | 
| 12176 | 
            +
                        const addrsBuf = Buffer.from(eventData, 'hex');
         | 
| 12179 12177 |  | 
| 12180 12178 | 
             
                        return {
         | 
| 12181 12179 | 
             
                            name: EvernodeEvents.HostTransfer,
         | 
| @@ -12185,40 +12183,36 @@ class BaseEvernodeClient { | |
| 12185 12183 | 
             
                            }
         | 
| 12186 12184 | 
             
                        }
         | 
| 12187 12185 | 
             
                    }
         | 
| 12188 | 
            -
                    else if ( | 
| 12189 | 
            -
                        tx.Memos[0].type === MemoTypes.CANDIDATE_PROPOSE && tx.Memos[0].format === MemoFormats.HEX && tx.Memos[0].data &&
         | 
| 12190 | 
            -
                        tx.Memos[1].type === MemoTypes.CANDIDATE_PROPOSE_REF && tx.Memos[1].format === MemoFormats.HEX && tx.Memos[1].data) {
         | 
| 12186 | 
            +
                    else if (eventType === EventTypes.CANDIDATE_PROPOSE && eventData) {
         | 
| 12191 12187 |  | 
| 12192 12188 | 
             
                        return {
         | 
| 12193 12189 | 
             
                            name: EvernodeEvents.CandidateProposed,
         | 
| 12194 12190 | 
             
                            data: {
         | 
| 12195 12191 | 
             
                                transaction: tx,
         | 
| 12196 12192 | 
             
                                owner: tx.Account,
         | 
| 12197 | 
            -
                                candidateId:  | 
| 12193 | 
            +
                                candidateId: eventData.substr(CANDIDATE_PROPOSE_UNIQUE_ID_PARAM_OFFSET * 2, 64)
         | 
| 12198 12194 | 
             
                            }
         | 
| 12199 12195 | 
             
                        }
         | 
| 12200 12196 | 
             
                    }
         | 
| 12201 | 
            -
                    else if ( | 
| 12202 | 
            -
                        tx.Memos[0].type === MemoTypes.CANDIDATE_WITHDRAW && tx.Memos[0].format === MemoFormats.HEX && tx.Memos[0].data) {
         | 
| 12197 | 
            +
                    else if (eventType === EventTypes.CANDIDATE_WITHDRAW && eventData) {
         | 
| 12203 12198 | 
             
                        return {
         | 
| 12204 12199 | 
             
                            name: EvernodeEvents.CandidateWithdrew,
         | 
| 12205 12200 | 
             
                            data: {
         | 
| 12206 12201 | 
             
                                transaction: tx,
         | 
| 12207 12202 | 
             
                                owner: tx.Account,
         | 
| 12208 | 
            -
                                candidateId:  | 
| 12203 | 
            +
                                candidateId: eventData.substr(0, 64)
         | 
| 12209 12204 | 
             
                            }
         | 
| 12210 12205 | 
             
                        }
         | 
| 12211 12206 | 
             
                    }
         | 
| 12212 | 
            -
                    else if ( | 
| 12213 | 
            -
                         | 
| 12214 | 
            -
                        const  | 
| 12215 | 
            -
                        const candidateId = memoBuf.slice(0, 32).toString('hex');
         | 
| 12207 | 
            +
                    else if (eventType === EventTypes.CANDIDATE_STATUS_CHANGE && eventData) {
         | 
| 12208 | 
            +
                        const eventDataBuf = Buffer.from(eventData, 'hex');
         | 
| 12209 | 
            +
                        const candidateId = eventDataBuf.slice(0, 32).toString('hex');
         | 
| 12216 12210 | 
             
                        const candidateType = StateHelpers.getCandidateType(candidateId);
         | 
| 12217 12211 |  | 
| 12218 12212 | 
             
                        switch (candidateType) {
         | 
| 12219 12213 | 
             
                            case (EvernodeConstants.CandidateTypes.DudHost):
         | 
| 12220 12214 | 
             
                                return {
         | 
| 12221 | 
            -
                                    name:  | 
| 12215 | 
            +
                                    name: eventDataBuf.readUInt8(32) === EvernodeConstants.CandidateStatuses.CANDIDATE_ELECTED ? EvernodeEvents.DudHostRemoved : EvernodeEvents.DudHostStatusChanged,
         | 
| 12222 12216 | 
             
                                    data: {
         | 
| 12223 12217 | 
             
                                        transaction: tx,
         | 
| 12224 12218 | 
             
                                        candidateId: candidateId,
         | 
| @@ -12246,20 +12240,18 @@ class BaseEvernodeClient { | |
| 12246 12240 | 
             
                        }
         | 
| 12247 12241 |  | 
| 12248 12242 | 
             
                    }
         | 
| 12249 | 
            -
                    else if ( | 
| 12250 | 
            -
                        tx.Memos[0].type === MemoTypes.HOOK_UPDATE_RES && tx.Memos[0].format === MemoFormats.HEX && tx.Memos[0].data) {
         | 
| 12243 | 
            +
                    else if (eventType === EventTypes.HOOK_UPDATE_RES && eventData) {
         | 
| 12251 12244 | 
             
                        return {
         | 
| 12252 12245 | 
             
                            name: EvernodeEvents.ChildHookUpdated,
         | 
| 12253 12246 | 
             
                            data: {
         | 
| 12254 12247 | 
             
                                transaction: tx,
         | 
| 12255 12248 | 
             
                                account: tx.Account,
         | 
| 12256 | 
            -
                                candidateId:  | 
| 12249 | 
            +
                                candidateId: eventData.substr(0, 64)
         | 
| 12257 12250 | 
             
                            }
         | 
| 12258 12251 | 
             
                        }
         | 
| 12259 12252 | 
             
                    }
         | 
| 12260 | 
            -
                    else if ( | 
| 12261 | 
            -
                         | 
| 12262 | 
            -
                        const mode = Buffer.from(tx.Memos[0].data, 'hex').slice(0, 1).readUInt8();
         | 
| 12253 | 
            +
                    else if (eventType === EventTypes.GOVERNANCE_MODE_CHANGE && eventData) {
         | 
| 12254 | 
            +
                        const mode = Buffer.from(eventData, 'hex').slice(0, 1).readUInt8();
         | 
| 12263 12255 |  | 
| 12264 12256 | 
             
                        return {
         | 
| 12265 12257 | 
             
                            name: EvernodeEvents.GovernanceModeChanged,
         | 
| @@ -12269,22 +12261,20 @@ class BaseEvernodeClient { | |
| 12269 12261 | 
             
                            }
         | 
| 12270 12262 | 
             
                        }
         | 
| 12271 12263 | 
             
                    }
         | 
| 12272 | 
            -
                    else if ( | 
| 12273 | 
            -
                         | 
| 12274 | 
            -
                        const vote = Buffer.from(tx.Memos[0].data, 'hex').slice(32, 33).readUInt8();
         | 
| 12264 | 
            +
                    else if (eventType === EventTypes.CANDIDATE_VOTE && eventData) {
         | 
| 12265 | 
            +
                        const vote = Buffer.from(eventData, 'hex').slice(32, 33).readUInt8();
         | 
| 12275 12266 |  | 
| 12276 12267 | 
             
                        return {
         | 
| 12277 12268 | 
             
                            name: EvernodeEvents.FoundationVoted,
         | 
| 12278 12269 | 
             
                            data: {
         | 
| 12279 12270 | 
             
                                transaction: tx,
         | 
| 12280 | 
            -
                                candidateId:  | 
| 12271 | 
            +
                                candidateId: eventData.substr(0, 64),
         | 
| 12281 12272 | 
             
                                vote: vote
         | 
| 12282 12273 | 
             
                            }
         | 
| 12283 12274 | 
             
                        }
         | 
| 12284 12275 | 
             
                    }
         | 
| 12285 | 
            -
                    else if ( | 
| 12286 | 
            -
                         | 
| 12287 | 
            -
                        const candidateId = tx.Memos[0].data.substr(0, 64);
         | 
| 12276 | 
            +
                    else if (eventType === EventTypes.DUD_HOST_REPORT && eventData) {
         | 
| 12277 | 
            +
                        const candidateId = eventData.substr(0, 64);
         | 
| 12288 12278 |  | 
| 12289 12279 | 
             
                        return {
         | 
| 12290 12280 | 
             
                            name: EvernodeEvents.DudHostReported,
         | 
| @@ -12449,8 +12439,8 @@ class BaseEvernodeClient { | |
| 12449 12439 | 
             
                    if (this.xrplAcc.address === this.config.registryAddress)
         | 
| 12450 12440 | 
             
                        throw 'Invalid function call';
         | 
| 12451 12441 |  | 
| 12452 | 
            -
                    let  | 
| 12453 | 
            -
                    codec.decodeAccountID(hostAddress).copy( | 
| 12442 | 
            +
                    let paramData = Buffer.allocUnsafe(20);
         | 
| 12443 | 
            +
                    codec.decodeAccountID(hostAddress).copy(paramData);
         | 
| 12454 12444 |  | 
| 12455 12445 | 
             
                    // To obtain registration NFT Page Keylet and index.
         | 
| 12456 12446 | 
             
                    const hostAcc = new XrplAccount(hostAddress, null, { xrplApi: this.xrplApi });
         | 
| @@ -12460,9 +12450,13 @@ class BaseEvernodeClient { | |
| 12460 12450 | 
             
                            XrplConstants.MIN_XRP_AMOUNT,
         | 
| 12461 12451 | 
             
                            XrplConstants.XRP,
         | 
| 12462 12452 | 
             
                            null,
         | 
| 12463 | 
            -
                             | 
| 12464 | 
            -
             | 
| 12465 | 
            -
             | 
| 12453 | 
            +
                            null,
         | 
| 12454 | 
            +
                            {
         | 
| 12455 | 
            +
                                hookParams: [
         | 
| 12456 | 
            +
                                    { name: HookParamKeys.PARAM_EVENT_TYPE_KEY, value: EventTypes.DEAD_HOST_PRUNE },
         | 
| 12457 | 
            +
                                    { name: HookParamKeys.PARAM_EVENT_DATA1_KEY, value: paramData.toString('hex') }
         | 
| 12458 | 
            +
                                ]
         | 
| 12459 | 
            +
                            });
         | 
| 12466 12460 | 
             
                    } else
         | 
| 12467 12461 | 
             
                        throw "No Registration URI token was found for the Host account."
         | 
| 12468 12462 |  | 
| @@ -12615,10 +12609,11 @@ class BaseEvernodeClient { | |
| 12615 12609 | 
             
                    }
         | 
| 12616 12610 |  | 
| 12617 12611 | 
             
                    const uniqueId = StateHelpers.getNewHookCandidateId(hashesBuf);
         | 
| 12618 | 
            -
                    const  | 
| 12619 | 
            -
                     | 
| 12620 | 
            -
                    Buffer.from( | 
| 12621 | 
            -
                    Buffer.from( | 
| 12612 | 
            +
                    const paramBuf = Buffer.alloc(CANDIDATE_PROPOSE_PARAM_SIZE);
         | 
| 12613 | 
            +
                    hashesBuf.copy(paramBuf, CANDIDATE_PROPOSE_HASHES_PARAM_OFFSET);
         | 
| 12614 | 
            +
                    Buffer.from(keylets.join(''), 'hex').copy(paramBuf, CANDIDATE_PROPOSE_KEYLETS_PARAM_OFFSET);
         | 
| 12615 | 
            +
                    Buffer.from(uniqueId, 'hex').copy(paramBuf, CANDIDATE_PROPOSE_UNIQUE_ID_PARAM_OFFSET);
         | 
| 12616 | 
            +
                    Buffer.from(shortName.substr(0, 20), "utf-8").copy(paramBuf, CANDIDATE_PROPOSE_SHORT_NAME_PARAM_OFFSET);
         | 
| 12622 12617 |  | 
| 12623 12618 | 
             
                    // Get the proposal fee. Proposal fee is current epochs moment worth of rewards.
         | 
| 12624 12619 | 
             
                    const proposalFee = EvernodeHelpers.getEpochRewardQuota(this.config.rewardInfo.epoch, this.config.rewardConfiguration.firstEpochRewardQuota);
         | 
| @@ -12627,11 +12622,15 @@ class BaseEvernodeClient { | |
| 12627 12622 | 
             
                        proposalFee.toString(),
         | 
| 12628 12623 | 
             
                        EvernodeConstants.EVR,
         | 
| 12629 12624 | 
             
                        this.config.evrIssuerAddress,
         | 
| 12630 | 
            -
                         | 
| 12631 | 
            -
             | 
| 12632 | 
            -
                             | 
| 12633 | 
            -
             | 
| 12634 | 
            -
             | 
| 12625 | 
            +
                        null,
         | 
| 12626 | 
            +
                        {
         | 
| 12627 | 
            +
                            hookParams: [
         | 
| 12628 | 
            +
                                { name: HookParamKeys.PARAM_EVENT_TYPE_KEY, value: EventTypes.CANDIDATE_PROPOSE },
         | 
| 12629 | 
            +
                                { name: HookParamKeys.PARAM_EVENT_DATA1_KEY, value: paramBuf.slice(0, MAX_HOOK_PARAM_SIZE).toString('hex').toUpperCase() },
         | 
| 12630 | 
            +
                                { name: HookParamKeys.PARAM_EVENT_DATA2_KEY, value: paramBuf.slice(MAX_HOOK_PARAM_SIZE).toString('hex').toUpperCase() }
         | 
| 12631 | 
            +
                            ],
         | 
| 12632 | 
            +
                            ...options.transactionOptions
         | 
| 12633 | 
            +
                        });
         | 
| 12635 12634 |  | 
| 12636 12635 | 
             
                    return uniqueId;
         | 
| 12637 12636 | 
             
                }
         | 
| @@ -12648,10 +12647,14 @@ class BaseEvernodeClient { | |
| 12648 12647 | 
             
                        XrplConstants.MIN_XRP_AMOUNT,
         | 
| 12649 12648 | 
             
                        XrplConstants.XRP,
         | 
| 12650 12649 | 
             
                        null,
         | 
| 12651 | 
            -
                         | 
| 12652 | 
            -
             | 
| 12653 | 
            -
             | 
| 12654 | 
            -
             | 
| 12650 | 
            +
                        null,
         | 
| 12651 | 
            +
                        {
         | 
| 12652 | 
            +
                            hookParams: [
         | 
| 12653 | 
            +
                                { name: HookParamKeys.PARAM_EVENT_TYPE_KEY, value: EventTypes.CANDIDATE_WITHDRAW },
         | 
| 12654 | 
            +
                                { name: HookParamKeys.PARAM_EVENT_DATA1_KEY, value: candidateIdBuf.toString('hex').toUpperCase() }
         | 
| 12655 | 
            +
                            ],
         | 
| 12656 | 
            +
                            ...options.transactionOptions
         | 
| 12657 | 
            +
                        });
         | 
| 12655 12658 | 
             
                }
         | 
| 12656 12659 |  | 
| 12657 12660 | 
             
                /**
         | 
| @@ -12670,10 +12673,14 @@ class BaseEvernodeClient { | |
| 12670 12673 | 
             
                        proposalFee.toString(),
         | 
| 12671 12674 | 
             
                        EvernodeConstants.EVR,
         | 
| 12672 12675 | 
             
                        this.config.evrIssuerAddress,
         | 
| 12673 | 
            -
                         | 
| 12674 | 
            -
             | 
| 12675 | 
            -
             | 
| 12676 | 
            -
             | 
| 12676 | 
            +
                        null,
         | 
| 12677 | 
            +
                        {
         | 
| 12678 | 
            +
                            hookParams: [
         | 
| 12679 | 
            +
                                { name: HookParamKeys.PARAM_EVENT_TYPE_KEY, value: EventTypes.DUD_HOST_REPORT },
         | 
| 12680 | 
            +
                                { name: HookParamKeys.PARAM_EVENT_DATA1_KEY, value: candidateId }
         | 
| 12681 | 
            +
                            ],
         | 
| 12682 | 
            +
                            ...options.transactionOptions
         | 
| 12683 | 
            +
                        });
         | 
| 12677 12684 | 
             
                }
         | 
| 12678 12685 | 
             
            }
         | 
| 12679 12686 |  | 
| @@ -12688,14 +12695,14 @@ module.exports = { | |
| 12688 12695 | 
             
            /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
         | 
| 12689 12696 |  | 
| 12690 12697 | 
             
            const { Buffer } = __nccwpck_require__(4300);
         | 
| 12691 | 
            -
            const {  | 
| 12698 | 
            +
            const { EventTypes, HookParamKeys } = __nccwpck_require__(9849);
         | 
| 12692 12699 | 
             
            const { StateHelpers } = __nccwpck_require__(3860);
         | 
| 12693 12700 | 
             
            const { XrplConstants } = __nccwpck_require__(3307);
         | 
| 12694 12701 | 
             
            const { BaseEvernodeClient } = __nccwpck_require__(6263);
         | 
| 12695 12702 |  | 
| 12696 | 
            -
            const  | 
| 12697 | 
            -
            const  | 
| 12698 | 
            -
            const  | 
| 12703 | 
            +
            const CANDIDATE_VOTE_UNIQUE_ID_PARAM_OFFSET = 0;
         | 
| 12704 | 
            +
            const CANDIDATE_VOTE_VALUE_PARAM_OFFSET = 32;
         | 
| 12705 | 
            +
            const CANDIDATE_VOTE_PARAM_SIZE = 33;
         | 
| 12699 12706 |  | 
| 12700 12707 | 
             
            const FoundationEvents = {}
         | 
| 12701 12708 |  | 
| @@ -12736,18 +12743,22 @@ class FoundationClient extends BaseEvernodeClient { | |
| 12736 12743 | 
             
                    if (this.xrplAcc.address !== this.config.foundationAddress)
         | 
| 12737 12744 | 
             
                        throw `Invalid foundation address ${this.xrplAcc.address}.`;
         | 
| 12738 12745 |  | 
| 12739 | 
            -
                    const voteBuf = Buffer.alloc( | 
| 12740 | 
            -
                    Buffer.from(candidateId, 'hex').copy(voteBuf,  | 
| 12741 | 
            -
                    voteBuf.writeUInt8(vote,  | 
| 12746 | 
            +
                    const voteBuf = Buffer.alloc(CANDIDATE_VOTE_PARAM_SIZE);
         | 
| 12747 | 
            +
                    Buffer.from(candidateId, 'hex').copy(voteBuf, CANDIDATE_VOTE_UNIQUE_ID_PARAM_OFFSET);
         | 
| 12748 | 
            +
                    voteBuf.writeUInt8(vote, CANDIDATE_VOTE_VALUE_PARAM_OFFSET)
         | 
| 12742 12749 |  | 
| 12743 12750 | 
             
                    return await this.xrplAcc.makePayment(this.config.heartbeatAddress,
         | 
| 12744 12751 | 
             
                        XrplConstants.MIN_XRP_AMOUNT,
         | 
| 12745 12752 | 
             
                        XrplConstants.XRP,
         | 
| 12746 12753 | 
             
                        null,
         | 
| 12747 | 
            -
                         | 
| 12748 | 
            -
             | 
| 12749 | 
            -
             | 
| 12750 | 
            -
             | 
| 12754 | 
            +
                        null,
         | 
| 12755 | 
            +
                        {
         | 
| 12756 | 
            +
                            hookParams: [
         | 
| 12757 | 
            +
                                { name: HookParamKeys.PARAM_EVENT_TYPE_KEY, value: EventTypes.CANDIDATE_VOTE },
         | 
| 12758 | 
            +
                                { name: HookParamKeys.PARAM_EVENT_DATA1_KEY, value: voteBuf.toString('hex').toUpperCase() }
         | 
| 12759 | 
            +
                            ],
         | 
| 12760 | 
            +
                            ...options.transactionOptions
         | 
| 12761 | 
            +
                        });
         | 
| 12751 12762 | 
             
                }
         | 
| 12752 12763 |  | 
| 12753 12764 | 
             
                async reportDudHost(hostAddress, options = {}) {
         | 
| @@ -12803,10 +12814,14 @@ class FoundationClient extends BaseEvernodeClient { | |
| 12803 12814 | 
             
                        XrplConstants.MIN_XRP_AMOUNT,
         | 
| 12804 12815 | 
             
                        XrplConstants.XRP,
         | 
| 12805 12816 | 
             
                        null,
         | 
| 12806 | 
            -
                         | 
| 12807 | 
            -
             | 
| 12808 | 
            -
             | 
| 12809 | 
            -
             | 
| 12817 | 
            +
                        null,
         | 
| 12818 | 
            +
                        {
         | 
| 12819 | 
            +
                            hookParams: [
         | 
| 12820 | 
            +
                                { name: HookParamKeys.PARAM_EVENT_TYPE_KEY, value: EventTypes.GOVERNANCE_MODE_CHANGE },
         | 
| 12821 | 
            +
                                { name: HookParamKeys.PARAM_EVENT_DATA1_KEY, value: modeBuf.toString('hex').toUpperCase() }
         | 
| 12822 | 
            +
                            ],
         | 
| 12823 | 
            +
                            ...options.transactionOptions
         | 
| 12824 | 
            +
                        });
         | 
| 12810 12825 | 
             
                }
         | 
| 12811 12826 | 
             
            }
         | 
| 12812 12827 |  | 
| @@ -12993,7 +13008,7 @@ module.exports = { | |
| 12993 13008 |  | 
| 12994 13009 | 
             
            const { XrplConstants } = __nccwpck_require__(3307);
         | 
| 12995 13010 | 
             
            const { BaseEvernodeClient } = __nccwpck_require__(6263);
         | 
| 12996 | 
            -
            const { EvernodeEvents, EvernodeConstants, MemoFormats,  | 
| 13011 | 
            +
            const { EvernodeEvents, EvernodeConstants, MemoFormats, EventTypes, ErrorCodes, HookParamKeys } = __nccwpck_require__(9849);
         | 
| 12997 13012 | 
             
            const { XrplAccount } = __nccwpck_require__(9329);
         | 
| 12998 13013 | 
             
            const { EncryptionHelper } = __nccwpck_require__(4832);
         | 
| 12999 13014 | 
             
            const { Buffer } = __nccwpck_require__(4300);
         | 
| @@ -13010,28 +13025,28 @@ const HostEvents = { | |
| 13010 13025 | 
             
                ExtendLease: EvernodeEvents.ExtendLease
         | 
| 13011 13026 | 
             
            }
         | 
| 13012 13027 |  | 
| 13013 | 
            -
            const  | 
| 13014 | 
            -
            const  | 
| 13015 | 
            -
            const  | 
| 13016 | 
            -
            const  | 
| 13017 | 
            -
            const  | 
| 13018 | 
            -
            const  | 
| 13019 | 
            -
            const  | 
| 13020 | 
            -
            const  | 
| 13021 | 
            -
            const  | 
| 13022 | 
            -
            const  | 
| 13023 | 
            -
            const  | 
| 13024 | 
            -
             | 
| 13025 | 
            -
            const  | 
| 13026 | 
            -
            const  | 
| 13027 | 
            -
            const  | 
| 13028 | 
            -
            const  | 
| 13029 | 
            -
            const  | 
| 13030 | 
            -
            const  | 
| 13031 | 
            -
            const  | 
| 13032 | 
            -
            const  | 
| 13033 | 
            -
            const  | 
| 13034 | 
            -
            const  | 
| 13028 | 
            +
            const HOST_COUNTRY_CODE_PARAM_OFFSET = 0;
         | 
| 13029 | 
            +
            const HOST_CPU_MICROSEC_PARAM_OFFSET = 2;
         | 
| 13030 | 
            +
            const HOST_RAM_MB_PARAM_OFFSET = 6;
         | 
| 13031 | 
            +
            const HOST_DISK_MB_PARAM_OFFSET = 10;
         | 
| 13032 | 
            +
            const HOST_TOT_INS_COUNT_PARAM_OFFSET = 14;
         | 
| 13033 | 
            +
            const HOST_CPU_MODEL_NAME_PARAM_OFFSET = 18;
         | 
| 13034 | 
            +
            const HOST_CPU_COUNT_PARAM_OFFSET = 58;
         | 
| 13035 | 
            +
            const HOST_CPU_SPEED_PARAM_OFFSET = 60;
         | 
| 13036 | 
            +
            const HOST_DESCRIPTION_PARAM_OFFSET = 62;
         | 
| 13037 | 
            +
            const HOST_EMAIL_ADDRESS_PARAM_OFFSET = 88;
         | 
| 13038 | 
            +
            const HOST_REG_PARAM_SIZE = 128;
         | 
| 13039 | 
            +
             | 
| 13040 | 
            +
            const HOST_UPDATE_TOKEN_ID_PARAM_OFFSET = 0;
         | 
| 13041 | 
            +
            const HOST_UPDATE_COUNTRY_CODE_PARAM_OFFSET = 32;
         | 
| 13042 | 
            +
            const HOST_UPDATE_CPU_MICROSEC_PARAM_OFFSET = 34;
         | 
| 13043 | 
            +
            const HOST_UPDATE_RAM_MB_PARAM_OFFSET = 38;
         | 
| 13044 | 
            +
            const HOST_UPDATE_DISK_MB_PARAM_OFFSET = 42;
         | 
| 13045 | 
            +
            const HOST_UPDATE_TOT_INS_COUNT_PARAM_OFFSET = 46;
         | 
| 13046 | 
            +
            const HOST_UPDATE_ACT_INS_COUNT_PARAM_OFFSET = 50;
         | 
| 13047 | 
            +
            const HOST_UPDATE_DESCRIPTION_PARAM_OFFSET = 54;
         | 
| 13048 | 
            +
            const HOST_UPDATE_VERSION_PARAM_OFFSET = 80;
         | 
| 13049 | 
            +
            const HOST_UPDATE_PARAM_SIZE = 83;
         | 
| 13035 13050 |  | 
| 13036 13051 | 
             
            const VOTE_VALIDATION_ERR = "VOTE_VALIDATION_ERR";
         | 
| 13037 13052 |  | 
| @@ -13209,24 +13224,30 @@ class HostClient extends BaseEvernodeClient { | |
| 13209 13224 | 
             
                    }
         | 
| 13210 13225 |  | 
| 13211 13226 | 
             
                    // <country_code(2)><cpu_microsec(4)><ram_mb(4)><disk_mb(4)><no_of_total_instances(4)><cpu_model(40)><cpu_count(2)><cpu_speed(2)><description(26)><email_address(40)>
         | 
| 13212 | 
            -
                    const  | 
| 13213 | 
            -
                    Buffer.from(countryCode.substr(0, 2), "utf-8").copy( | 
| 13214 | 
            -
                     | 
| 13215 | 
            -
                     | 
| 13216 | 
            -
                     | 
| 13217 | 
            -
                     | 
| 13218 | 
            -
                    Buffer.from(cpuModel.substr(0, 40), "utf-8").copy( | 
| 13219 | 
            -
                     | 
| 13220 | 
            -
                     | 
| 13221 | 
            -
                    Buffer.from(description.substr(0, 26), "utf-8").copy( | 
| 13222 | 
            -
                    Buffer.from(emailAddress.substr(0, 40), "utf-8").copy( | 
| 13227 | 
            +
                    const paramBuf = Buffer.alloc(HOST_REG_PARAM_SIZE, 0);
         | 
| 13228 | 
            +
                    Buffer.from(countryCode.substr(0, 2), "utf-8").copy(paramBuf, HOST_COUNTRY_CODE_PARAM_OFFSET);
         | 
| 13229 | 
            +
                    paramBuf.writeUInt32LE(cpuMicroSec, HOST_CPU_MICROSEC_PARAM_OFFSET);
         | 
| 13230 | 
            +
                    paramBuf.writeUInt32LE(ramMb, HOST_RAM_MB_PARAM_OFFSET);
         | 
| 13231 | 
            +
                    paramBuf.writeUInt32LE(diskMb, HOST_DISK_MB_PARAM_OFFSET);
         | 
| 13232 | 
            +
                    paramBuf.writeUInt32LE(totalInstanceCount, HOST_TOT_INS_COUNT_PARAM_OFFSET);
         | 
| 13233 | 
            +
                    Buffer.from(cpuModel.substr(0, 40), "utf-8").copy(paramBuf, HOST_CPU_MODEL_NAME_PARAM_OFFSET);
         | 
| 13234 | 
            +
                    paramBuf.writeUInt16LE(cpuCount, HOST_CPU_COUNT_PARAM_OFFSET);
         | 
| 13235 | 
            +
                    paramBuf.writeUInt16LE(cpuSpeed, HOST_CPU_SPEED_PARAM_OFFSET);
         | 
| 13236 | 
            +
                    Buffer.from(description.substr(0, 26), "utf-8").copy(paramBuf, HOST_DESCRIPTION_PARAM_OFFSET);
         | 
| 13237 | 
            +
                    Buffer.from(emailAddress.substr(0, 40), "utf-8").copy(paramBuf, HOST_EMAIL_ADDRESS_PARAM_OFFSET);
         | 
| 13223 13238 |  | 
| 13224 13239 | 
             
                    const tx = await this.xrplAcc.makePayment(this.config.registryAddress,
         | 
| 13225 13240 | 
             
                        (transferredNFTokenId) ? EvernodeConstants.NOW_IN_EVRS : this.config.hostRegFee.toString(),
         | 
| 13226 13241 | 
             
                        EvernodeConstants.EVR,
         | 
| 13227 13242 | 
             
                        this.config.evrIssuerAddress,
         | 
| 13228 | 
            -
                         | 
| 13229 | 
            -
                         | 
| 13243 | 
            +
                        null,
         | 
| 13244 | 
            +
                        {
         | 
| 13245 | 
            +
                            hookParams: [
         | 
| 13246 | 
            +
                                { name: HookParamKeys.PARAM_EVENT_TYPE_KEY, value: EventTypes.HOST_REG },
         | 
| 13247 | 
            +
                                { name: HookParamKeys.PARAM_EVENT_DATA1_KEY, value: paramBuf.toString('hex').toUpperCase() }
         | 
| 13248 | 
            +
                            ],
         | 
| 13249 | 
            +
                            ...options.transactionOptions
         | 
| 13250 | 
            +
                        });
         | 
| 13230 13251 |  | 
| 13231 13252 | 
             
                    console.log('Waiting for the sell offer', tx.id)
         | 
| 13232 13253 | 
             
                    let sellOffer = null;
         | 
| @@ -13278,54 +13299,62 @@ class HostClient extends BaseEvernodeClient { | |
| 13278 13299 | 
             
                        XrplConstants.MIN_XRP_AMOUNT,
         | 
| 13279 13300 | 
             
                        XrplConstants.XRP,
         | 
| 13280 13301 | 
             
                        null,
         | 
| 13281 | 
            -
                         | 
| 13282 | 
            -
             | 
| 13283 | 
            -
             | 
| 13284 | 
            -
             | 
| 13302 | 
            +
                        null,
         | 
| 13303 | 
            +
                        {
         | 
| 13304 | 
            +
                            hookParams: [
         | 
| 13305 | 
            +
                                { name: HookParamKeys.PARAM_EVENT_TYPE_KEY, value: EventTypes.HOST_DEREG },
         | 
| 13306 | 
            +
                                { name: HookParamKeys.PARAM_EVENT_DATA1_KEY, value: regUriToken.index }
         | 
| 13307 | 
            +
                            ],
         | 
| 13308 | 
            +
                            ...options.transactionOptions
         | 
| 13309 | 
            +
                        });
         | 
| 13285 13310 |  | 
| 13286 13311 | 
             
                    return await this.isRegistered();
         | 
| 13287 13312 | 
             
                }
         | 
| 13288 13313 |  | 
| 13289 13314 | 
             
                async updateRegInfo(activeInstanceCount = null, version = null, totalInstanceCount = null, tokenID = null, countryCode = null, cpuMicroSec = null, ramMb = null, diskMb = null, description = null, options = {}) {
         | 
| 13290 13315 | 
             
                    // <token_id(32)><country_code(2)><cpu_microsec(4)><ram_mb(4)><disk_mb(4)><total_instance_count(4)><active_instances(4)><description(26)><version(3)>
         | 
| 13291 | 
            -
                    const  | 
| 13316 | 
            +
                    const paramBuf = Buffer.alloc(HOST_UPDATE_PARAM_SIZE, 0);
         | 
| 13292 13317 | 
             
                    if (tokenID)
         | 
| 13293 | 
            -
                        Buffer.from(tokenID.substr(0, 32), "hex").copy( | 
| 13318 | 
            +
                        Buffer.from(tokenID.substr(0, 32), "hex").copy(paramBuf, HOST_UPDATE_TOKEN_ID_PARAM_OFFSET);
         | 
| 13294 13319 | 
             
                    if (countryCode)
         | 
| 13295 | 
            -
                        Buffer.from(countryCode.substr(0, 2), "utf-8").copy( | 
| 13320 | 
            +
                        Buffer.from(countryCode.substr(0, 2), "utf-8").copy(paramBuf, HOST_UPDATE_COUNTRY_CODE_PARAM_OFFSET);
         | 
| 13296 13321 | 
             
                    if (cpuMicroSec)
         | 
| 13297 | 
            -
                         | 
| 13322 | 
            +
                        paramBuf.writeUInt32LE(cpuMicroSec, HOST_UPDATE_CPU_MICROSEC_PARAM_OFFSET);
         | 
| 13298 13323 | 
             
                    if (ramMb)
         | 
| 13299 | 
            -
                         | 
| 13324 | 
            +
                        paramBuf.writeUInt32LE(ramMb, HOST_UPDATE_RAM_MB_PARAM_OFFSET);
         | 
| 13300 13325 | 
             
                    if (diskMb)
         | 
| 13301 | 
            -
                         | 
| 13326 | 
            +
                        paramBuf.writeUInt32LE(diskMb, HOST_UPDATE_DISK_MB_PARAM_OFFSET);
         | 
| 13302 13327 | 
             
                    if (totalInstanceCount)
         | 
| 13303 | 
            -
                         | 
| 13328 | 
            +
                        paramBuf.writeUInt32LE(totalInstanceCount, HOST_UPDATE_TOT_INS_COUNT_PARAM_OFFSET);
         | 
| 13304 13329 | 
             
                    if (activeInstanceCount)
         | 
| 13305 | 
            -
                         | 
| 13330 | 
            +
                        paramBuf.writeUInt32LE(activeInstanceCount, HOST_UPDATE_ACT_INS_COUNT_PARAM_OFFSET);
         | 
| 13306 13331 | 
             
                    if (description)
         | 
| 13307 | 
            -
                        Buffer.from(description.substr(0, 26), "utf-8").copy( | 
| 13332 | 
            +
                        Buffer.from(description.substr(0, 26), "utf-8").copy(paramBuf, HOST_UPDATE_DESCRIPTION_PARAM_OFFSET);
         | 
| 13308 13333 | 
             
                    if (version) {
         | 
| 13309 13334 | 
             
                        const components = version.split('.').map(v => parseInt(v));
         | 
| 13310 13335 | 
             
                        if (components.length != 3)
         | 
| 13311 13336 | 
             
                            throw 'Invalid version format.';
         | 
| 13312 | 
            -
                         | 
| 13313 | 
            -
                         | 
| 13314 | 
            -
                         | 
| 13337 | 
            +
                        paramBuf.writeUInt8(components[0], HOST_UPDATE_VERSION_PARAM_OFFSET);
         | 
| 13338 | 
            +
                        paramBuf.writeUInt8(components[1], HOST_UPDATE_VERSION_PARAM_OFFSET + 1);
         | 
| 13339 | 
            +
                        paramBuf.writeUInt8(components[2], HOST_UPDATE_VERSION_PARAM_OFFSET + 2);
         | 
| 13315 13340 | 
             
                    }
         | 
| 13316 13341 |  | 
| 13317 13342 | 
             
                    return await this.xrplAcc.makePayment(this.config.registryAddress,
         | 
| 13318 13343 | 
             
                        XrplConstants.MIN_XRP_AMOUNT,
         | 
| 13319 13344 | 
             
                        XrplConstants.XRP,
         | 
| 13320 13345 | 
             
                        null,
         | 
| 13321 | 
            -
                         | 
| 13322 | 
            -
             | 
| 13323 | 
            -
             | 
| 13324 | 
            -
             | 
| 13346 | 
            +
                        null,
         | 
| 13347 | 
            +
                        {
         | 
| 13348 | 
            +
                            hookParams: [
         | 
| 13349 | 
            +
                                { name: HookParamKeys.PARAM_EVENT_TYPE_KEY, value: EventTypes.HOST_UPDATE_INFO },
         | 
| 13350 | 
            +
                                { name: HookParamKeys.PARAM_EVENT_DATA1_KEY, value: paramBuf.toString('hex') }
         | 
| 13351 | 
            +
                            ],
         | 
| 13352 | 
            +
                            ...options.transactionOptions
         | 
| 13353 | 
            +
                        });
         | 
| 13325 13354 | 
             
                }
         | 
| 13326 13355 |  | 
| 13327 13356 | 
             
                async heartbeat(voteInfo = {}, options = {}) {
         | 
| 13328 | 
            -
                    let data | 
| 13357 | 
            +
                    let data;
         | 
| 13329 13358 | 
             
                    // Prepare voteInfo
         | 
| 13330 13359 | 
             
                    if (Object.keys(voteInfo).length > 1) {
         | 
| 13331 13360 | 
             
                        let voteBuf = Buffer.alloc(33);
         | 
| @@ -13339,10 +13368,14 @@ class HostClient extends BaseEvernodeClient { | |
| 13339 13368 | 
             
                            XrplConstants.MIN_XRP_AMOUNT,
         | 
| 13340 13369 | 
             
                            XrplConstants.XRP,
         | 
| 13341 13370 | 
             
                            null,
         | 
| 13342 | 
            -
                             | 
| 13343 | 
            -
             | 
| 13344 | 
            -
             | 
| 13345 | 
            -
             | 
| 13371 | 
            +
                            null,
         | 
| 13372 | 
            +
                            {
         | 
| 13373 | 
            +
                                hookParams: [
         | 
| 13374 | 
            +
                                    { name: HookParamKeys.PARAM_EVENT_TYPE_KEY, value: EventTypes.HEARTBEAT },
         | 
| 13375 | 
            +
                                    ...(data ? [{ name: HookParamKeys.PARAM_EVENT_DATA1_KEY, value: data }] : [])
         | 
| 13376 | 
            +
                                ],
         | 
| 13377 | 
            +
                                ...options.transactionOptions
         | 
| 13378 | 
            +
                            });
         | 
| 13346 13379 | 
             
                        return res;
         | 
| 13347 13380 | 
             
                    }
         | 
| 13348 13381 | 
             
                    catch (e) {
         | 
| @@ -13367,74 +13400,94 @@ class HostClient extends BaseEvernodeClient { | |
| 13367 13400 | 
             
                        throw "Tenant encryption key not set.";
         | 
| 13368 13401 |  | 
| 13369 13402 | 
             
                    const encrypted = await EncryptionHelper.encrypt(encKey, instanceInfo);
         | 
| 13370 | 
            -
                    const memos = [
         | 
| 13371 | 
            -
                        { type: MemoTypes.ACQUIRE_SUCCESS, format: MemoFormats.BASE64, data: encrypted },
         | 
| 13372 | 
            -
                        { type: MemoTypes.ACQUIRE_REF, format: MemoFormats.HEX, data: txHash }];
         | 
| 13373 | 
            -
             | 
| 13374 13403 | 
             
                    return this.xrplAcc.makePayment(tenantAddress,
         | 
| 13375 13404 | 
             
                        XrplConstants.MIN_XRP_AMOUNT,
         | 
| 13376 13405 | 
             
                        XrplConstants.XRP,
         | 
| 13377 13406 | 
             
                        null,
         | 
| 13378 | 
            -
                         | 
| 13379 | 
            -
             | 
| 13407 | 
            +
                        [
         | 
| 13408 | 
            +
                            { type: EventTypes.ACQUIRE_SUCCESS, format: MemoFormats.BASE64, data: encrypted }
         | 
| 13409 | 
            +
                        ],
         | 
| 13410 | 
            +
                        {
         | 
| 13411 | 
            +
                            hookParams: [
         | 
| 13412 | 
            +
                                { name: HookParamKeys.PARAM_EVENT_TYPE_KEY, value: EventTypes.ACQUIRE_SUCCESS },
         | 
| 13413 | 
            +
                                { name: HookParamKeys.PARAM_EVENT_DATA1_KEY, value: txHash }
         | 
| 13414 | 
            +
                            ],
         | 
| 13415 | 
            +
                            ...options.transactionOptions
         | 
| 13416 | 
            +
                        });
         | 
| 13380 13417 | 
             
                }
         | 
| 13381 13418 |  | 
| 13382 13419 | 
             
                async acquireError(txHash, tenantAddress, leaseAmount, reason, options = {}) {
         | 
| 13383 13420 |  | 
| 13384 | 
            -
                    const memos = [
         | 
| 13385 | 
            -
                        { type: MemoTypes.ACQUIRE_ERROR, format: MemoFormats.JSON, data: { type: ErrorCodes.ACQUIRE_ERR, reason: reason } },
         | 
| 13386 | 
            -
                        { type: MemoTypes.ACQUIRE_REF, format: MemoFormats.HEX, data: txHash }];
         | 
| 13387 | 
            -
             | 
| 13388 13421 | 
             
                    return this.xrplAcc.makePayment(tenantAddress,
         | 
| 13389 13422 | 
             
                        leaseAmount.toString(),
         | 
| 13390 13423 | 
             
                        EvernodeConstants.EVR,
         | 
| 13391 13424 | 
             
                        this.config.evrIssuerAddress,
         | 
| 13392 | 
            -
                         | 
| 13393 | 
            -
             | 
| 13425 | 
            +
                        [
         | 
| 13426 | 
            +
                            { type: EventTypes.ACQUIRE_ERROR, format: MemoFormats.JSON, data: { type: ErrorCodes.ACQUIRE_ERR, reason: reason } }
         | 
| 13427 | 
            +
                        ],
         | 
| 13428 | 
            +
                        {
         | 
| 13429 | 
            +
                            hookParams: [
         | 
| 13430 | 
            +
                                { name: HookParamKeys.PARAM_EVENT_TYPE_KEY, value: EventTypes.ACQUIRE_ERROR },
         | 
| 13431 | 
            +
                                { name: HookParamKeys.PARAM_EVENT_DATA1_KEY, value: txHash }
         | 
| 13432 | 
            +
                            ],
         | 
| 13433 | 
            +
                            ...options.transactionOptions
         | 
| 13434 | 
            +
                        });
         | 
| 13394 13435 | 
             
                }
         | 
| 13395 13436 |  | 
| 13396 13437 | 
             
                async extendSuccess(txHash, tenantAddress, expiryMoment, options = {}) {
         | 
| 13397 13438 | 
             
                    let buf = Buffer.allocUnsafe(4);
         | 
| 13398 13439 | 
             
                    buf.writeUInt32BE(expiryMoment);
         | 
| 13399 13440 |  | 
| 13400 | 
            -
                    const memos = [
         | 
| 13401 | 
            -
                        { type: MemoTypes.EXTEND_SUCCESS, format: MemoFormats.HEX, data: buf.toString('hex') },
         | 
| 13402 | 
            -
                        { type: MemoTypes.EXTEND_REF, format: MemoFormats.HEX, data: txHash }];
         | 
| 13403 | 
            -
             | 
| 13404 13441 | 
             
                    return this.xrplAcc.makePayment(tenantAddress,
         | 
| 13405 13442 | 
             
                        XrplConstants.MIN_XRP_AMOUNT,
         | 
| 13406 13443 | 
             
                        XrplConstants.XRP,
         | 
| 13407 13444 | 
             
                        null,
         | 
| 13408 | 
            -
                         | 
| 13409 | 
            -
             | 
| 13445 | 
            +
                        [
         | 
| 13446 | 
            +
                            { type: EventTypes.EXTEND_SUCCESS, format: MemoFormats.HEX, data: buf.toString('hex') }
         | 
| 13447 | 
            +
                        ],
         | 
| 13448 | 
            +
                        {
         | 
| 13449 | 
            +
                            hookParams: [
         | 
| 13450 | 
            +
                                { name: HookParamKeys.PARAM_EVENT_TYPE_KEY, value: EventTypes.EXTEND_SUCCESS },
         | 
| 13451 | 
            +
                                { name: HookParamKeys.PARAM_EVENT_DATA1_KEY, value: txHash }
         | 
| 13452 | 
            +
                            ],
         | 
| 13453 | 
            +
                            ...options.transactionOptions
         | 
| 13454 | 
            +
                        });
         | 
| 13410 13455 | 
             
                }
         | 
| 13411 13456 |  | 
| 13412 13457 | 
             
                async extendError(txHash, tenantAddress, reason, refund, options = {}) {
         | 
| 13413 13458 |  | 
| 13414 | 
            -
                    const memos = [
         | 
| 13415 | 
            -
                        { type: MemoTypes.EXTEND_ERROR, format: MemoFormats.JSON, data: { type: ErrorCodes.EXTEND_ERR, reason: reason } },
         | 
| 13416 | 
            -
                        { type: MemoTypes.EXTEND_REF, format: MemoFormats.HEX, data: txHash }];
         | 
| 13417 | 
            -
             | 
| 13418 13459 | 
             
                    // Required to refund the paid EVR amount as the offer extention is not successfull.
         | 
| 13419 13460 | 
             
                    return this.xrplAcc.makePayment(tenantAddress,
         | 
| 13420 13461 | 
             
                        refund.toString(),
         | 
| 13421 13462 | 
             
                        EvernodeConstants.EVR,
         | 
| 13422 13463 | 
             
                        this.config.evrIssuerAddress,
         | 
| 13423 | 
            -
                         | 
| 13424 | 
            -
             | 
| 13464 | 
            +
                        [
         | 
| 13465 | 
            +
                            { type: EventTypes.EXTEND_ERROR, format: MemoFormats.JSON, data: { type: ErrorCodes.EXTEND_ERR, reason: reason } }
         | 
| 13466 | 
            +
                        ],
         | 
| 13467 | 
            +
                        {
         | 
| 13468 | 
            +
                            hookParams: [
         | 
| 13469 | 
            +
                                { name: HookParamKeys.PARAM_EVENT_TYPE_KEY, value: EventTypes.EXTEND_ERROR },
         | 
| 13470 | 
            +
                                { name: HookParamKeys.PARAM_EVENT_DATA1_KEY, value: txHash }
         | 
| 13471 | 
            +
                            ],
         | 
| 13472 | 
            +
                            ...options.transactionOptions
         | 
| 13473 | 
            +
                        });
         | 
| 13425 13474 | 
             
                }
         | 
| 13426 13475 |  | 
| 13427 13476 | 
             
                async refundTenant(txHash, tenantAddress, refundAmount, options = {}) {
         | 
| 13428 | 
            -
                    const memos = [
         | 
| 13429 | 
            -
                        { type: MemoTypes.REFUND, format: '', data: '' },
         | 
| 13430 | 
            -
                        { type: MemoTypes.REFUND_REF, format: MemoFormats.HEX, data: txHash }];
         | 
| 13431 | 
            -
             | 
| 13432 13477 | 
             
                    return this.xrplAcc.makePayment(tenantAddress,
         | 
| 13433 13478 | 
             
                        refundAmount.toString(),
         | 
| 13434 13479 | 
             
                        EvernodeConstants.EVR,
         | 
| 13435 13480 | 
             
                        this.config.evrIssuerAddress,
         | 
| 13436 | 
            -
                         | 
| 13437 | 
            -
             | 
| 13481 | 
            +
                        [
         | 
| 13482 | 
            +
                            { type: EventTypes.REFUND, format: '', data: '' }
         | 
| 13483 | 
            +
                        ],
         | 
| 13484 | 
            +
                        {
         | 
| 13485 | 
            +
                            hookParams: [
         | 
| 13486 | 
            +
                                { name: HookParamKeys.PARAM_EVENT_TYPE_KEY, value: EventTypes.REFUND },
         | 
| 13487 | 
            +
                                { name: HookParamKeys.PARAM_EVENT_DATA1_KEY, value: txHash }
         | 
| 13488 | 
            +
                            ],
         | 
| 13489 | 
            +
                            ...options.transactionOptions
         | 
| 13490 | 
            +
                        });
         | 
| 13438 13491 | 
             
                }
         | 
| 13439 13492 |  | 
| 13440 13493 | 
             
                async requestRebate(options = {}) {
         | 
| @@ -13443,9 +13496,14 @@ class HostClient extends BaseEvernodeClient { | |
| 13443 13496 | 
             
                        XrplConstants.XRP,
         | 
| 13444 13497 | 
             
                        null,
         | 
| 13445 13498 | 
             
                        [
         | 
| 13446 | 
            -
                            { type:  | 
| 13499 | 
            +
                            { type: EventTypes.HOST_REBATE, format: "", data: "" }
         | 
| 13447 13500 | 
             
                        ],
         | 
| 13448 | 
            -
                         | 
| 13501 | 
            +
                        {
         | 
| 13502 | 
            +
                            hookParams: [
         | 
| 13503 | 
            +
                                { name: HookParamKeys.PARAM_EVENT_TYPE_KEY, value: EventTypes.HOST_REBATE }
         | 
| 13504 | 
            +
                            ],
         | 
| 13505 | 
            +
                            ...options.transactionOptions
         | 
| 13506 | 
            +
                        });
         | 
| 13449 13507 | 
             
                }
         | 
| 13450 13508 |  | 
| 13451 13509 | 
             
                getLeaseNFTokenIdPrefix() {
         | 
| @@ -13469,8 +13527,7 @@ class HostClient extends BaseEvernodeClient { | |
| 13469 13527 | 
             
                            throw "The transferee is already registered in Evernode.";
         | 
| 13470 13528 | 
             
                    }
         | 
| 13471 13529 |  | 
| 13472 | 
            -
                     | 
| 13473 | 
            -
                    codec.decodeAccountID(transfereeAddress).copy(memoData);
         | 
| 13530 | 
            +
                    const paramData = codec.decodeAccountID(transfereeAddress);
         | 
| 13474 13531 |  | 
| 13475 13532 | 
             
                    const regUriToken = await this.getRegistrationUriToken();
         | 
| 13476 13533 |  | 
| @@ -13479,10 +13536,14 @@ class HostClient extends BaseEvernodeClient { | |
| 13479 13536 | 
             
                        XrplConstants.XRP,
         | 
| 13480 13537 | 
             
                        null,
         | 
| 13481 13538 | 
             
                        this.config.registryAddress,
         | 
| 13482 | 
            -
                         | 
| 13483 | 
            -
             | 
| 13484 | 
            -
             | 
| 13485 | 
            -
             | 
| 13539 | 
            +
                        null,
         | 
| 13540 | 
            +
                        {
         | 
| 13541 | 
            +
                            hookParams: [
         | 
| 13542 | 
            +
                                { name: HookParamKeys.PARAM_EVENT_TYPE_KEY, value: EventTypes.HOST_TRANSFER },
         | 
| 13543 | 
            +
                                { name: HookParamKeys.PARAM_EVENT_DATA1_KEY, value: paramData.toString('hex') }
         | 
| 13544 | 
            +
                            ],
         | 
| 13545 | 
            +
                            ...options.transactionOptions
         | 
| 13546 | 
            +
                        });
         | 
| 13486 13547 |  | 
| 13487 13548 | 
             
                    let token = null;
         | 
| 13488 13549 | 
             
                    let attempts = 0;
         | 
| @@ -13546,7 +13607,7 @@ module.exports = { | |
| 13546 13607 | 
             
            /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
         | 
| 13547 13608 |  | 
| 13548 13609 | 
             
            const { BaseEvernodeClient } = __nccwpck_require__(6263);
         | 
| 13549 | 
            -
            const { EvernodeEvents, MemoFormats,  | 
| 13610 | 
            +
            const { EvernodeEvents, MemoFormats, EventTypes, ErrorCodes, ErrorReasons, EvernodeConstants, HookParamKeys } = __nccwpck_require__(9849);
         | 
| 13550 13611 | 
             
            const { EncryptionHelper } = __nccwpck_require__(4832);
         | 
| 13551 13612 | 
             
            const { XrplAccount } = __nccwpck_require__(9329);
         | 
| 13552 13613 | 
             
            const { UtilHelpers } = __nccwpck_require__(6687);
         | 
| @@ -13642,7 +13703,17 @@ class TenantClient extends BaseEvernodeClient { | |
| 13642 13703 | 
             
                        ephemPrivateKey: options.ephemPrivateKey // Must be null or 32 bytes.
         | 
| 13643 13704 | 
             
                    });
         | 
| 13644 13705 |  | 
| 13645 | 
            -
                    return this.xrplAcc.buyURIToken( | 
| 13706 | 
            +
                    return this.xrplAcc.buyURIToken(
         | 
| 13707 | 
            +
                        buyUriOffer,
         | 
| 13708 | 
            +
                        [
         | 
| 13709 | 
            +
                            { type: EventTypes.ACQUIRE_LEASE, format: MemoFormats.BASE64, data: ecrypted }
         | 
| 13710 | 
            +
                        ],
         | 
| 13711 | 
            +
                        {
         | 
| 13712 | 
            +
                            hookParams: [
         | 
| 13713 | 
            +
                                { name: HookParamKeys.PARAM_EVENT_TYPE_KEY, value: EventTypes.ACQUIRE_LEASE }
         | 
| 13714 | 
            +
                            ],
         | 
| 13715 | 
            +
                            ...options.transactionOptions
         | 
| 13716 | 
            +
                        });
         | 
| 13646 13717 | 
             
                }
         | 
| 13647 13718 |  | 
| 13648 13719 | 
             
                /**
         | 
| @@ -13666,6 +13737,7 @@ class TenantClient extends BaseEvernodeClient { | |
| 13666 13737 | 
             
                            const txList = await this.xrplAcc.getAccountTrx(tx.details.ledger_index);
         | 
| 13667 13738 | 
             
                            for (let t of txList) {
         | 
| 13668 13739 | 
             
                                t.tx.Memos = TransactionHelper.deserializeMemos(t.tx?.Memos);
         | 
| 13740 | 
            +
                                t.tx.HookParameters = TransactionHelper.deserializeHookParams(t.tx?.HookParameters);
         | 
| 13669 13741 | 
             
                                const res = await this.extractEvernodeEvent(t.tx);
         | 
| 13670 13742 | 
             
                                if ((res?.name === EvernodeEvents.AcquireSuccess || res?.name === EvernodeEvents.AcquireError) && res?.data?.acquireRefId === tx.id) {
         | 
| 13671 13743 | 
             
                                    clearTimeout(failTimeout);
         | 
| @@ -13728,8 +13800,18 @@ class TenantClient extends BaseEvernodeClient { | |
| 13728 13800 | 
             
                 */
         | 
| 13729 13801 | 
             
                async extendLeaseSubmit(hostAddress, amount, tokenID, options = {}) {
         | 
| 13730 13802 | 
             
                    const host = await this.getLeaseHost(hostAddress);
         | 
| 13731 | 
            -
                    return this.xrplAcc.makePayment( | 
| 13732 | 
            -
                         | 
| 13803 | 
            +
                    return this.xrplAcc.makePayment(
         | 
| 13804 | 
            +
                        host.address, amount.toString(),
         | 
| 13805 | 
            +
                        EvernodeConstants.EVR,
         | 
| 13806 | 
            +
                        this.config.evrIssuerAddress,
         | 
| 13807 | 
            +
                        null,
         | 
| 13808 | 
            +
                        {
         | 
| 13809 | 
            +
                            hookParams: [
         | 
| 13810 | 
            +
                                { name: HookParamKeys.PARAM_EVENT_TYPE_KEY, value: EventTypes.EXTEND_LEASE },
         | 
| 13811 | 
            +
                                { name: HookParamKeys.PARAM_EVENT_DATA1_KEY, value: tokenID }
         | 
| 13812 | 
            +
                            ],
         | 
| 13813 | 
            +
                            ...options.transactionOptions
         | 
| 13814 | 
            +
                        });
         | 
| 13733 13815 | 
             
                }
         | 
| 13734 13816 |  | 
| 13735 13817 | 
             
                /**
         | 
| @@ -13753,6 +13835,7 @@ class TenantClient extends BaseEvernodeClient { | |
| 13753 13835 | 
             
                            const txList = await this.xrplAcc.getAccountTrx(tx.details.ledger_index);
         | 
| 13754 13836 | 
             
                            for (let t of txList) {
         | 
| 13755 13837 | 
             
                                t.tx.Memos = TransactionHelper.deserializeMemos(t.tx.Memos);
         | 
| 13838 | 
            +
                                t.tx.HookParameters = TransactionHelper.deserializeHookParams(t.tx?.HookParameters);
         | 
| 13756 13839 | 
             
                                const res = await this.extractEvernodeEvent(t.tx);
         | 
| 13757 13840 | 
             
                                if ((res?.name === TenantEvents.ExtendSuccess || res?.name === TenantEvents.ExtendError) && res?.data?.extendRefId === tx.id) {
         | 
| 13758 13841 | 
             
                                    clearTimeout(failTimeout);
         | 
| @@ -13795,7 +13878,7 @@ class TenantClient extends BaseEvernodeClient { | |
| 13795 13878 | 
             
                        const uriToken = (await this.xrplAcc.getURITokens())?.find(n => n.index == tokenID);
         | 
| 13796 13879 |  | 
| 13797 13880 | 
             
                        if (!uriToken) {
         | 
| 13798 | 
            -
                            reject({ error: ErrorCodes.EXTEND_ERR, reason: ErrorReasons. | 
| 13881 | 
            +
                            reject({ error: ErrorCodes.EXTEND_ERR, reason: ErrorReasons.NO_TOKEN, content: 'Could not find the uri token for lease extend request.' });
         | 
| 13799 13882 | 
             
                            return;
         | 
| 13800 13883 | 
             
                        }
         | 
| 13801 13884 |  | 
| @@ -14316,7 +14399,7 @@ const EvernodeConstants = { | |
| 14316 14399 | 
             
                }
         | 
| 14317 14400 | 
             
            }
         | 
| 14318 14401 |  | 
| 14319 | 
            -
            const  | 
| 14402 | 
            +
            const EventTypes = {
         | 
| 14320 14403 | 
             
                ACQUIRE_LEASE: 'evnAcquireLease',
         | 
| 14321 14404 | 
             
                ACQUIRE_SUCCESS: 'evnAcquireSuccess',
         | 
| 14322 14405 | 
             
                ACQUIRE_ERROR: 'evnAcquireError',
         | 
| @@ -14361,7 +14444,7 @@ const ErrorCodes = { | |
| 14361 14444 | 
             
            const ErrorReasons = {
         | 
| 14362 14445 | 
             
                TRANSACTION_FAILURE: 'TRANSACTION_FAILURE',
         | 
| 14363 14446 | 
             
                NO_OFFER: 'NO_OFFER',
         | 
| 14364 | 
            -
                 | 
| 14447 | 
            +
                NO_TOKEN: 'NO_TOKEN',
         | 
| 14365 14448 | 
             
                INTERNAL_ERR: 'INTERNAL_ERR',
         | 
| 14366 14449 | 
             
                TIMEOUT: 'TIMEOUT',
         | 
| 14367 14450 | 
             
                HOST_INVALID: 'HOST_INVALID',
         | 
| @@ -14404,6 +14487,14 @@ const HookStateKeys = { | |
| 14404 14487 | 
             
                PREFIX_CANDIDATE_ID: "45565206",
         | 
| 14405 14488 | 
             
            }
         | 
| 14406 14489 |  | 
| 14490 | 
            +
            // All keys are prefixed with 'EVR' (0x455652)
         | 
| 14491 | 
            +
            const HookParamKeys = {
         | 
| 14492 | 
            +
                PARAM_STATE_HOOK_KEY: "4556520100000000000000000000000000000000000000000000000000000001",
         | 
| 14493 | 
            +
                PARAM_EVENT_TYPE_KEY: "4556520100000000000000000000000000000000000000000000000000000002",
         | 
| 14494 | 
            +
                PARAM_EVENT_DATA1_KEY: "4556520100000000000000000000000000000000000000000000000000000003",
         | 
| 14495 | 
            +
                PARAM_EVENT_DATA2_KEY: "4556520100000000000000000000000000000000000000000000000000000004",
         | 
| 14496 | 
            +
            }
         | 
| 14497 | 
            +
             | 
| 14407 14498 | 
             
            const EvernodeEvents = {
         | 
| 14408 14499 | 
             
                HostRegistered: "HostRegistered",
         | 
| 14409 14500 | 
             
                HostDeregistered: "HostDeregistered",
         | 
| @@ -14439,13 +14530,14 @@ const URITokenTypes = { | |
| 14439 14530 |  | 
| 14440 14531 | 
             
            module.exports = {
         | 
| 14441 14532 | 
             
                EvernodeConstants,
         | 
| 14442 | 
            -
                 | 
| 14533 | 
            +
                EventTypes,
         | 
| 14443 14534 | 
             
                MemoFormats,
         | 
| 14444 14535 | 
             
                ErrorCodes,
         | 
| 14445 14536 | 
             
                ErrorReasons,
         | 
| 14446 14537 | 
             
                HookStateKeys,
         | 
| 14447 14538 | 
             
                EvernodeEvents,
         | 
| 14448 | 
            -
                URITokenTypes
         | 
| 14539 | 
            +
                URITokenTypes,
         | 
| 14540 | 
            +
                HookParamKeys
         | 
| 14449 14541 | 
             
            }
         | 
| 14450 14542 |  | 
| 14451 14543 | 
             
            /***/ }),
         | 
| @@ -14888,7 +14980,7 @@ const { FoundationClient, FoundationEvents } = __nccwpck_require__(2466); | |
| 14888 14980 | 
             
            const { XrplApi } = __nccwpck_require__(1850);
         | 
| 14889 14981 | 
             
            const { XrplApiEvents, XrplConstants } = __nccwpck_require__(3307);
         | 
| 14890 14982 | 
             
            const { XrplAccount } = __nccwpck_require__(9329);
         | 
| 14891 | 
            -
            const { EvernodeConstants, HookStateKeys,  | 
| 14983 | 
            +
            const { EvernodeConstants, HookStateKeys, HookParamKeys, EventTypes } = __nccwpck_require__(9849);
         | 
| 14892 14984 | 
             
            const { XflHelpers } = __nccwpck_require__(3243);
         | 
| 14893 14985 | 
             
            const { FirestoreHandler } = __nccwpck_require__(9718);
         | 
| 14894 14986 | 
             
            const { StateHelpers } = __nccwpck_require__(3860);
         | 
| @@ -14924,7 +15016,8 @@ module.exports = { | |
| 14924 15016 | 
             
                TransactionHelper,
         | 
| 14925 15017 | 
             
                EncryptionHelper,
         | 
| 14926 15018 | 
             
                HookStateKeys,
         | 
| 14927 | 
            -
                 | 
| 15019 | 
            +
                HookParamKeys,
         | 
| 15020 | 
            +
                EventTypes,
         | 
| 14928 15021 | 
             
                HookTypes,
         | 
| 14929 15022 | 
             
                HookClientFactory,
         | 
| 14930 15023 | 
             
                EvernodeHelpers
         | 
| @@ -15553,7 +15646,7 @@ module.exports = { | |
| 15553 15646 | 
             
            /***/ 7071:
         | 
| 15554 15647 | 
             
            /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
         | 
| 15555 15648 |  | 
| 15556 | 
            -
            const { MemoFormats } = __nccwpck_require__(9849);
         | 
| 15649 | 
            +
            const { MemoFormats, HookParamKeys } = __nccwpck_require__(9849);
         | 
| 15557 15650 |  | 
| 15558 15651 | 
             
            class TransactionHelper {
         | 
| 15559 15652 |  | 
| @@ -15589,26 +15682,47 @@ class TransactionHelper { | |
| 15589 15682 | 
             
                    })
         | 
| 15590 15683 | 
             
                }
         | 
| 15591 15684 |  | 
| 15685 | 
            +
                // Convert hook params from our object type to xrpl lib object type.
         | 
| 15686 | 
            +
                static formatHookParams(params) {
         | 
| 15687 | 
            +
                    return params ? params.filter(m => m.name).map(m => {
         | 
| 15688 | 
            +
                        return {
         | 
| 15689 | 
            +
                            HookParameter: {
         | 
| 15690 | 
            +
                                HookParameterName: m.name,
         | 
| 15691 | 
            +
                                HookParameterValue: m.value ?
         | 
| 15692 | 
            +
                                    (m.name === HookParamKeys.PARAM_EVENT_TYPE_KEY ? TransactionHelper.asciiToHex(m.value) :
         | 
| 15693 | 
            +
                                        m.value.toUpperCase()) : ''
         | 
| 15694 | 
            +
                            }
         | 
| 15695 | 
            +
                        }
         | 
| 15696 | 
            +
                    }) : [];
         | 
| 15697 | 
            +
                }
         | 
| 15698 | 
            +
             | 
| 15699 | 
            +
                // Convert hook params from xrpl lib object type to our object type.
         | 
| 15700 | 
            +
                static deserializeHookParams(params) {
         | 
| 15701 | 
            +
                    if (!params)
         | 
| 15702 | 
            +
                        return [];
         | 
| 15703 | 
            +
             | 
| 15704 | 
            +
                    return params.filter(m => m.HookParameter).map(m => {
         | 
| 15705 | 
            +
                        return {
         | 
| 15706 | 
            +
                            name: m.HookParameter.HookParameterName,
         | 
| 15707 | 
            +
                            value: m.HookParameter.HookParameterValue ?
         | 
| 15708 | 
            +
                                (m.HookParameter.HookParameterName === HookParamKeys.PARAM_EVENT_TYPE_KEY ? TransactionHelper.hexToASCII(m.HookParameter.HookParameterValue) :
         | 
| 15709 | 
            +
                                    m.HookParameter.HookParameterValue.toUpperCase()) : '',
         | 
| 15710 | 
            +
                        }
         | 
| 15711 | 
            +
                    })
         | 
| 15712 | 
            +
                }
         | 
| 15713 | 
            +
             | 
| 15592 15714 | 
             
                static hexToASCII(hex) {
         | 
| 15593 15715 | 
             
                    if (!hex)
         | 
| 15594 15716 | 
             
                        return "";
         | 
| 15595 15717 |  | 
| 15596 | 
            -
                     | 
| 15597 | 
            -
                    for (let n = 0; n < hex.length; n += 2) {
         | 
| 15598 | 
            -
                        str += String.fromCharCode(parseInt(hex.substr(n, 2), 16));
         | 
| 15599 | 
            -
                    }
         | 
| 15600 | 
            -
                    return str;
         | 
| 15718 | 
            +
                    return Buffer.from(hex, 'hex').toString();
         | 
| 15601 15719 | 
             
                }
         | 
| 15602 15720 |  | 
| 15603 15721 | 
             
                static asciiToHex(str) {
         | 
| 15604 15722 | 
             
                    if (!str)
         | 
| 15605 15723 | 
             
                        return "";
         | 
| 15606 15724 |  | 
| 15607 | 
            -
                     | 
| 15608 | 
            -
                    for (let n = 0; n < str.length; n++) {
         | 
| 15609 | 
            -
                        hex += str.charCodeAt(n).toString(16)
         | 
| 15610 | 
            -
                    }
         | 
| 15611 | 
            -
                    return hex;
         | 
| 15725 | 
            +
                    return Buffer.from(str).toString('hex').toUpperCase();
         | 
| 15612 15726 | 
             
                }
         | 
| 15613 15727 | 
             
            }
         | 
| 15614 15728 |  | 
| @@ -16046,7 +16160,8 @@ class XrplAccount { | |
| 16046 16160 | 
             
                        Account: this.address,
         | 
| 16047 16161 | 
             
                        Amount: amountObj,
         | 
| 16048 16162 | 
             
                        Destination: toAddr,
         | 
| 16049 | 
            -
                        Memos: TransactionHelper.formatMemos(memos)
         | 
| 16163 | 
            +
                        Memos: TransactionHelper.formatMemos(memos),
         | 
| 16164 | 
            +
                        HookParameters: TransactionHelper.formatHookParams(options.hookParams)
         | 
| 16050 16165 | 
             
                    }, options);
         | 
| 16051 16166 | 
             
                }
         | 
| 16052 16167 |  | 
| @@ -16063,7 +16178,8 @@ class XrplAccount { | |
| 16063 16178 | 
             
                            issuer: issuer,
         | 
| 16064 16179 | 
             
                            value: limit
         | 
| 16065 16180 | 
             
                        },
         | 
| 16066 | 
            -
                        Memos: TransactionHelper.formatMemos(memos)
         | 
| 16181 | 
            +
                        Memos: TransactionHelper.formatMemos(memos),
         | 
| 16182 | 
            +
                        HookParameters: TransactionHelper.formatHookParams(options.hookParams)
         | 
| 16067 16183 | 
             
                    };
         | 
| 16068 16184 |  | 
| 16069 16185 | 
             
                    if (!allowRippling)
         | 
| @@ -16078,7 +16194,8 @@ class XrplAccount { | |
| 16078 16194 | 
             
                        TransactionType: 'SetRegularKey',
         | 
| 16079 16195 | 
             
                        Account: this.address,
         | 
| 16080 16196 | 
             
                        RegularKey: regularKey,
         | 
| 16081 | 
            -
                        Memos: TransactionHelper.formatMemos(memos)
         | 
| 16197 | 
            +
                        Memos: TransactionHelper.formatMemos(memos),
         | 
| 16198 | 
            +
                        HookParameters: TransactionHelper.formatHookParams(options.hookParams)
         | 
| 16082 16199 | 
             
                    }, options);
         | 
| 16083 16200 | 
             
                }
         | 
| 16084 16201 |  | 
| @@ -16115,7 +16232,8 @@ class XrplAccount { | |
| 16115 16232 | 
             
                        TakerGets: sellAmountObj,
         | 
| 16116 16233 | 
             
                        TakerPays: forAmountObj,
         | 
| 16117 16234 | 
             
                        Expiration: expiration,
         | 
| 16118 | 
            -
                        Memos: TransactionHelper.formatMemos(memos)
         | 
| 16235 | 
            +
                        Memos: TransactionHelper.formatMemos(memos),
         | 
| 16236 | 
            +
                        HookParameters: TransactionHelper.formatHookParams(options.hookParams)
         | 
| 16119 16237 | 
             
                    }, options);
         | 
| 16120 16238 | 
             
                }
         | 
| 16121 16239 |  | 
| @@ -16130,7 +16248,8 @@ class XrplAccount { | |
| 16130 16248 | 
             
                        TakerGets: forAmountObj,
         | 
| 16131 16249 | 
             
                        TakerPays: buyAmountObj,
         | 
| 16132 16250 | 
             
                        Expiration: expiration,
         | 
| 16133 | 
            -
                        Memos: TransactionHelper.formatMemos(memos)
         | 
| 16251 | 
            +
                        Memos: TransactionHelper.formatMemos(memos),
         | 
| 16252 | 
            +
                        HookParameters: TransactionHelper.formatHookParams(options.hookParams)
         | 
| 16134 16253 | 
             
                    }, options);
         | 
| 16135 16254 | 
             
                }
         | 
| 16136 16255 |  | 
| @@ -16139,7 +16258,8 @@ class XrplAccount { | |
| 16139 16258 | 
             
                        TransactionType: 'OfferCancel',
         | 
| 16140 16259 | 
             
                        Account: this.address,
         | 
| 16141 16260 | 
             
                        OfferSequence: offerSequence,
         | 
| 16142 | 
            -
                        Memos: TransactionHelper.formatMemos(memos)
         | 
| 16261 | 
            +
                        Memos: TransactionHelper.formatMemos(memos),
         | 
| 16262 | 
            +
                        HookParameters: TransactionHelper.formatHookParams(options.hookParams)
         | 
| 16143 16263 | 
             
                    }, options);
         | 
| 16144 16264 | 
             
                }
         | 
| 16145 16265 |  | 
| @@ -16151,7 +16271,8 @@ class XrplAccount { | |
| 16151 16271 | 
             
                        NFTokenTaxon: taxon,
         | 
| 16152 16272 | 
             
                        TransferFee: transferFee,
         | 
| 16153 16273 | 
             
                        Flags: (flags.isBurnable ? 1 : 0) | (flags.isOnlyXRP ? 2 : 0) | (flags.isTrustLine ? 4 : 0) | (flags.isTransferable ? 8 : 0),
         | 
| 16154 | 
            -
                        Memos: TransactionHelper.formatMemos(memos)
         | 
| 16274 | 
            +
                        Memos: TransactionHelper.formatMemos(memos),
         | 
| 16275 | 
            +
                        HookParameters: TransactionHelper.formatHookParams(options.hookParams)
         | 
| 16155 16276 | 
             
                    }, options);
         | 
| 16156 16277 | 
             
                }
         | 
| 16157 16278 |  | 
| @@ -16165,7 +16286,8 @@ class XrplAccount { | |
| 16165 16286 | 
             
                        Amount: amountObj,
         | 
| 16166 16287 | 
             
                        Expiration: expiration,
         | 
| 16167 16288 | 
             
                        Flags: 1, // tfSellToken
         | 
| 16168 | 
            -
                        Memos: TransactionHelper.formatMemos(memos)
         | 
| 16289 | 
            +
                        Memos: TransactionHelper.formatMemos(memos),
         | 
| 16290 | 
            +
                        HookParameters: TransactionHelper.formatHookParams(options.hookParams)
         | 
| 16169 16291 | 
             
                    };
         | 
| 16170 16292 |  | 
| 16171 16293 | 
             
                    return this.#submitAndVerifyTransaction(destination ? { ...tx, Destination: destination } : tx, options);
         | 
| @@ -16183,7 +16305,8 @@ class XrplAccount { | |
| 16183 16305 | 
             
                        Amount: amountObj,
         | 
| 16184 16306 | 
             
                        Expiration: expiration,
         | 
| 16185 16307 | 
             
                        Flags: 0, // Buy offer
         | 
| 16186 | 
            -
                        Memos: TransactionHelper.formatMemos(memos)
         | 
| 16308 | 
            +
                        Memos: TransactionHelper.formatMemos(memos),
         | 
| 16309 | 
            +
                        HookParameters: TransactionHelper.formatHookParams(options.hookParams)
         | 
| 16187 16310 | 
             
                    }, options);
         | 
| 16188 16311 | 
             
                }
         | 
| 16189 16312 |  | 
| @@ -16193,7 +16316,8 @@ class XrplAccount { | |
| 16193 16316 | 
             
                        TransactionType: 'NFTokenAcceptOffer',
         | 
| 16194 16317 | 
             
                        Account: this.address,
         | 
| 16195 16318 | 
             
                        NFTokenBuyOffer: offerId,
         | 
| 16196 | 
            -
                        Memos: TransactionHelper.formatMemos(memos)
         | 
| 16319 | 
            +
                        Memos: TransactionHelper.formatMemos(memos),
         | 
| 16320 | 
            +
                        HookParameters: TransactionHelper.formatHookParams(options.hookParams)
         | 
| 16197 16321 | 
             
                    }, options);
         | 
| 16198 16322 | 
             
                }
         | 
| 16199 16323 |  | 
| @@ -16203,7 +16327,8 @@ class XrplAccount { | |
| 16203 16327 | 
             
                        TransactionType: 'NFTokenAcceptOffer',
         | 
| 16204 16328 | 
             
                        Account: this.address,
         | 
| 16205 16329 | 
             
                        NFTokenSellOffer: offerId,
         | 
| 16206 | 
            -
                        Memos: TransactionHelper.formatMemos(memos)
         | 
| 16330 | 
            +
                        Memos: TransactionHelper.formatMemos(memos),
         | 
| 16331 | 
            +
                        HookParameters: TransactionHelper.formatHookParams(options.hookParams)
         | 
| 16207 16332 | 
             
                    }, options);
         | 
| 16208 16333 | 
             
                }
         | 
| 16209 16334 |  | 
| @@ -16213,7 +16338,8 @@ class XrplAccount { | |
| 16213 16338 | 
             
                        TransactionType: 'NFTokenBurn',
         | 
| 16214 16339 | 
             
                        Account: this.address,
         | 
| 16215 16340 | 
             
                        NFTokenID: nfTokenId,
         | 
| 16216 | 
            -
                        Memos: TransactionHelper.formatMemos(memos)
         | 
| 16341 | 
            +
                        Memos: TransactionHelper.formatMemos(memos),
         | 
| 16342 | 
            +
                        HookParameters: TransactionHelper.formatHookParams(options.hookParams)
         | 
| 16217 16343 | 
             
                    };
         | 
| 16218 16344 |  | 
| 16219 16345 | 
             
                    return this.#submitAndVerifyTransaction(owner ? { ...tx, Owner: owner } : tx, options);
         | 
| @@ -16301,7 +16427,7 @@ class XrplAccount { | |
| 16301 16427 | 
             
                            const hookExecRes = txResult.details?.meta?.HookExecutions?.map(o => {
         | 
| 16302 16428 | 
             
                                return {
         | 
| 16303 16429 | 
             
                                    result: o.HookExecution?.HookResult,
         | 
| 16304 | 
            -
                                    returnCode: o.HookExecution?.HookReturnCode,
         | 
| 16430 | 
            +
                                    returnCode: parseInt(o.HookExecution?.HookReturnCode, 16),
         | 
| 16305 16431 | 
             
                                    message: TransactionHelper.hexToASCII(o.HookExecution?.HookReturnString).replace(/\x00+$/, '')
         | 
| 16306 16432 | 
             
                                }
         | 
| 16307 16433 | 
             
                            });
         | 
| @@ -16346,7 +16472,7 @@ class XrplAccount { | |
| 16346 16472 | 
             
                            const hookExecRes = txResult.details?.meta?.HookExecutions?.map(o => {
         | 
| 16347 16473 | 
             
                                return {
         | 
| 16348 16474 | 
             
                                    result: o.HookExecution?.HookResult,
         | 
| 16349 | 
            -
                                    returnCode: o.HookExecution?.HookReturnCode,
         | 
| 16475 | 
            +
                                    returnCode: parseInt(o.HookExecution?.HookReturnCode, 16),
         | 
| 16350 16476 | 
             
                                    message: TransactionHelper.hexToASCII(o.HookExecution?.HookReturnString).replace(/\x00+$/, '')
         | 
| 16351 16477 | 
             
                                }
         | 
| 16352 16478 | 
             
                            });
         | 
| @@ -16414,6 +16540,9 @@ class XrplAccount { | |
| 16414 16540 | 
             
                    if (memos)
         | 
| 16415 16541 | 
             
                        tx.Memos = TransactionHelper.formatMemos(memos);
         | 
| 16416 16542 |  | 
| 16543 | 
            +
                    if (options.hookParams)
         | 
| 16544 | 
            +
                        tx.HookParameters = TransactionHelper.formatHookParams(options.hookParams);
         | 
| 16545 | 
            +
             | 
| 16417 16546 | 
             
                    return this.#submitAndVerifyTransaction(tx, options);
         | 
| 16418 16547 | 
             
                }
         | 
| 16419 16548 |  | 
| @@ -16428,6 +16557,9 @@ class XrplAccount { | |
| 16428 16557 | 
             
                    if (memos)
         | 
| 16429 16558 | 
             
                        tx.Memos = TransactionHelper.formatMemos(memos);
         | 
| 16430 16559 |  | 
| 16560 | 
            +
                    if (options.hookParams)
         | 
| 16561 | 
            +
                        tx.HookParameters = TransactionHelper.formatHookParams(options.hookParams);
         | 
| 16562 | 
            +
             | 
| 16431 16563 | 
             
                    return this.#submitAndVerifyTransaction(tx, options);
         | 
| 16432 16564 | 
             
                }
         | 
| 16433 16565 |  | 
| @@ -16596,6 +16728,7 @@ class XrplApi { | |
| 16596 16728 | 
             
                                // Emit the event only for successful transactions, Otherwise emit error.
         | 
| 16597 16729 | 
             
                                if (data.engine_result === "tesSUCCESS") {
         | 
| 16598 16730 | 
             
                                    tx.Memos = TransactionHelper.deserializeMemos(tx.Memos);
         | 
| 16731 | 
            +
                                    tx.HookParameters = TransactionHelper.deserializeHookParams(tx.HookParameters);
         | 
| 16599 16732 | 
             
                                    matches.forEach(s => s.handler(eventName, tx));
         | 
| 16600 16733 | 
             
                                }
         | 
| 16601 16734 | 
             
                                else {
         | 
    
        package/package.json
    CHANGED