From e4b073f2e42f9b5e6abae272cafda9403da3557e Mon Sep 17 00:00:00 2001 From: Denis Angell Date: Fri, 14 Mar 2025 17:16:26 +0100 Subject: [PATCH 01/10] `xahau.js` --- README.md | 8 +- contracts-c/toolbox/base.c | 3 - contracts-c/utils/hook/error.h | 51 ++ contracts-c/utils/hook/extern.h | 354 +++++++++++ contracts-c/utils/hook/hookapi.h | 51 ++ contracts-c/utils/hook/macro.h | 381 ++++++++++++ contracts-c/utils/hook/sfcodes.h | 238 ++++++++ contracts-c/utils/hook/tts.h | 43 ++ contracts-js/toolbox/base copy.ts | 105 ---- contracts-js/toolbox/redirect.ts | 36 ++ package.json | 4 +- src/Xrpld.ts | 6 +- src/keylet-utils/ExecutionUtility.ts | 12 +- src/keylet-utils/StateUtility.ts | 10 +- src/libs/xrpl-helpers/constants.ts | 2 +- src/libs/xrpl-helpers/fundSystem.ts | 2 +- src/libs/xrpl-helpers/setup.ts | 6 +- src/libs/xrpl-helpers/tools.ts | 41 +- src/libs/xrpl-helpers/transaction.ts | 19 +- src/models/iHookEmittedTxs.ts | 2 +- src/models/iHookExecutions.ts | 4 +- src/models/iHookGrantEntry.ts | 2 +- src/models/iHookParamEntry.ts | 2 +- src/models/iHookParamName.ts | 2 +- src/models/iHookParamValue.ts | 2 +- src/models/iHookState.ts | 2 +- src/models/iHookStateData.ts | 2 +- src/models/iHookStateEntry.ts | 2 +- src/models/iHookStateKey.ts | 2 +- src/setHooks.ts | 4 +- src/types.ts | 9 +- src/utils.ts | 5 +- test/integration-c/hooks/toolbox/base.test.ts | 2 +- .../hooks/toolbox/callback.test.ts | 2 +- .../hooks/toolbox/commonMemo.test.ts | 2 +- .../hooks/toolbox/compareCondition.test.ts | 2 +- .../hooks/toolbox/filterOnIO.test.ts | 2 +- .../hooks/toolbox/filterOnToken.test.ts | 11 +- .../hooks/toolbox/filterOnXrp.test.ts | 11 +- .../hooks/toolbox/floatSubtract.test.ts | 2 +- .../hooks/toolbox/hookOnTT.test.ts | 4 +- .../hooks/toolbox/numbers.test.ts | 2 +- .../hooks/toolbox/paramBasic.test.ts | 9 +- .../hooks/toolbox/random.test.ts | 2 +- .../hooks/toolbox/stateAdvanced.test.ts | 2 +- .../hooks/toolbox/stateBasic.test.ts | 4 +- .../hooks/toolbox/stateForeignBasic.test.ts | 6 +- .../hooks/toolbox/stateNumbers.test.ts | 2 +- test/integration-c/hooks/toolbox/tsh.test.ts | 4 +- .../hooks/toolbox/utilSha512.test.ts | 19 +- .../hooks/toolbox/utilVerify.test.ts | 4 +- .../hooks/txns/accountSet.test.ts | 2 +- .../hooks/txns/uritokenMint.test.ts | 2 +- test/integration-c/setup/setHook.test.ts | 6 +- .../integration-js/hooks/toolbox/base.test.ts | 7 +- .../hooks/toolbox/compareCondition.js.test.ts | 2 +- .../hooks/toolbox/hookOnTT.js.test.ts | 4 +- .../hooks/toolbox/redirect.test.ts | 99 ++++ test/integration-js/setup/setHook.test.ts | 6 +- yarn.lock | 555 +++--------------- 60 files changed, 1462 insertions(+), 725 deletions(-) create mode 100644 contracts-c/utils/hook/error.h create mode 100644 contracts-c/utils/hook/extern.h create mode 100644 contracts-c/utils/hook/hookapi.h create mode 100644 contracts-c/utils/hook/macro.h create mode 100644 contracts-c/utils/hook/sfcodes.h create mode 100644 contracts-c/utils/hook/tts.h delete mode 100644 contracts-js/toolbox/base copy.ts create mode 100644 contracts-js/toolbox/redirect.ts create mode 100644 test/integration-js/hooks/toolbox/redirect.test.ts diff --git a/README.md b/README.md index 98c52c5..6af4e3a 100644 --- a/README.md +++ b/README.md @@ -40,7 +40,7 @@ Here is an example of setting a hook using the `setHooksV3` function: ```ts import { SetHookFlags -} from '@transia/xrpl' +} from 'xahau' import { setHooksV3, createHookPayload, @@ -99,7 +99,7 @@ Here is an example of deleting a single hook for the hook in position 2 using th ```ts import { SetHookFlags -} from '@transia/xrpl' +} from 'xahau' import { SetHookParams, createHookPayload, @@ -416,7 +416,7 @@ The `getHookExecutionsFromMeta` function is used to retrieve hook executions fro Here is an example of using the `getHookExecutionsFromMeta` function: ```ts -import { TransactionMetadata } from '@transia/xrpl' +import { TransactionMetadata } from 'xahau' import { serverUrl, setupClient, @@ -473,7 +473,7 @@ The `getHookEmittedTxsFromMeta` function is used to retrieve hook emitted transa Here is an example of using the `getHookEmittedTxsFromMeta` function: ```ts -import { TransactionMetadata } from '@transia/xrpl' +import { TransactionMetadata } from 'xahau' import { serverUrl, setupClient, diff --git a/contracts-c/toolbox/base.c b/contracts-c/toolbox/base.c index a30eff2..3a152f5 100644 --- a/contracts-c/toolbox/base.c +++ b/contracts-c/toolbox/base.c @@ -1,6 +1,3 @@ -/** - * - */ #include "hookapi.h" int64_t hook(uint32_t reserved) { diff --git a/contracts-c/utils/hook/error.h b/contracts-c/utils/hook/error.h new file mode 100644 index 0000000..2d7060e --- /dev/null +++ b/contracts-c/utils/hook/error.h @@ -0,0 +1,51 @@ +// For documentation please see: https://xrpl-hooks.readme.io/reference/ +// Generated using generate_error.sh +#ifndef HOOK_ERROR_CODES +#define SUCCESS 0 +#define OUT_OF_BOUNDS -1 +#define INTERNAL_ERROR -2 +#define TOO_BIG -3 +#define TOO_SMALL -4 +#define DOESNT_EXIST -5 +#define NO_FREE_SLOTS -6 +#define INVALID_ARGUMENT -7 +#define ALREADY_SET -8 +#define PREREQUISITE_NOT_MET -9 +#define FEE_TOO_LARGE -10 +#define EMISSION_FAILURE -11 +#define TOO_MANY_NONCES -12 +#define TOO_MANY_EMITTED_TXN -13 +#define NOT_IMPLEMENTED -14 +#define INVALID_ACCOUNT -15 +#define GUARD_VIOLATION -16 +#define INVALID_FIELD -17 +#define PARSE_ERROR -18 +#define RC_ROLLBACK -19 +#define RC_ACCEPT -20 +#define NO_SUCH_KEYLET -21 +#define NOT_AN_ARRAY -22 +#define NOT_AN_OBJECT -23 +#define INVALID_FLOAT -10024 +#define DIVISION_BY_ZERO -25 +#define MANTISSA_OVERSIZED -26 +#define MANTISSA_UNDERSIZED -27 +#define EXPONENT_OVERSIZED -28 +#define EXPONENT_UNDERSIZED -29 +#define XFL_OVERFLOW -30 +#define NOT_IOU_AMOUNT -31 +#define NOT_AN_AMOUNT -32 +#define CANT_RETURN_NEGATIVE -33 +#define NOT_AUTHORIZED -34 +#define PREVIOUS_FAILURE_PREVENTS_RETRY -35 +#define TOO_MANY_PARAMS -36 +#define INVALID_TXN -37 +#define RESERVE_INSUFFICIENT -38 +#define COMPLEX_NOT_SUPPORTED -39 +#define DOES_NOT_MATCH -40 +#define INVALID_KEY -41 +#define NOT_A_STRING -42 +#define MEM_OVERLAP -43 +#define TOO_MANY_STATE_MODIFICATIONS -44 +#define TOO_MANY_NAMESPACES -45 +#define HOOK_ERROR_CODES +#endif //HOOK_ERROR_CODES \ No newline at end of file diff --git a/contracts-c/utils/hook/extern.h b/contracts-c/utils/hook/extern.h new file mode 100644 index 0000000..baf0e6d --- /dev/null +++ b/contracts-c/utils/hook/extern.h @@ -0,0 +1,354 @@ +// For documentation please see: https://xrpl-hooks.readme.io/reference/ +// Generated using generate_extern.sh +#include +#ifndef HOOK_EXTERN + +extern int32_t __attribute__((noduplicate)) +_g(uint32_t guard_id, uint32_t maxiter); + +extern int64_t +accept(uint32_t read_ptr, uint32_t read_len, int64_t error_code); + +extern int64_t +rollback(uint32_t read_ptr, uint32_t read_len, int64_t error_code); + +// UTIL + +extern int64_t +util_raddr( + uint32_t write_ptr, + uint32_t write_len, + uint32_t read_ptr, + uint32_t read_len); + +extern int64_t +util_accid( + uint32_t write_ptr, + uint32_t write_len, + uint32_t read_ptr, + uint32_t read_len); + +extern int64_t +util_verify( + uint32_t dread_ptr, + uint32_t dread_len, + uint32_t sread_ptr, + uint32_t sread_len, + uint32_t kread_ptr, + uint32_t kread_len); + +extern int64_t +util_sha512h( + uint32_t write_ptr, + uint32_t write_len, + uint32_t read_ptr, + uint32_t read_len); + +extern int64_t +util_keylet( + uint32_t write_ptr, + uint32_t write_len, + uint32_t keylet_type, + uint32_t a, + uint32_t b, + uint32_t c, + uint32_t d, + uint32_t e, + uint32_t f); + +// STO + +extern int64_t +sto_validate(uint32_t tread_ptr, uint32_t tread_len); + +extern int64_t +sto_subfield(uint32_t read_ptr, uint32_t read_len, uint32_t field_id); + +extern int64_t +sto_subarray(uint32_t read_ptr, uint32_t read_len, uint32_t array_id); + +extern int64_t +sto_emplace( + uint32_t write_ptr, + uint32_t write_len, + uint32_t sread_ptr, + uint32_t sread_len, + uint32_t fread_ptr, + uint32_t fread_len, + uint32_t field_id); + +extern int64_t +sto_erase( + uint32_t write_ptr, + uint32_t write_len, + uint32_t read_ptr, + uint32_t read_len, + uint32_t field_id); + +// EMITTED TXN + +extern int64_t +etxn_burden(void); + +extern int64_t +etxn_details(uint32_t write_ptr, uint32_t write_len); + +extern int64_t +etxn_fee_base(uint32_t read_ptr, uint32_t read_len); + +extern int64_t +etxn_reserve(uint32_t count); + +extern int64_t +etxn_generation(void); + +extern int64_t +etxn_nonce(uint32_t write_ptr, uint32_t write_len); + +extern int64_t +emit( + uint32_t write_ptr, + uint32_t write_len, + uint32_t read_ptr, + uint32_t read_len); + +// FLOAT + +extern int64_t +float_set(int32_t exponent, int64_t mantissa); + +extern int64_t +float_multiply(int64_t float1, int64_t float2); + +extern int64_t +float_mulratio( + int64_t float1, + uint32_t round_up, + uint32_t numerator, + uint32_t denominator); + +extern int64_t +float_negate(int64_t float1); + +extern int64_t +float_compare(int64_t float1, int64_t float2, uint32_t mode); + +extern int64_t +float_sum(int64_t float1, int64_t float2); + +extern int64_t +float_sto( + uint32_t write_ptr, + uint32_t write_len, + uint32_t cread_ptr, + uint32_t cread_len, + uint32_t iread_ptr, + uint32_t iread_len, + int64_t float1, + uint32_t field_code); + +extern int64_t +float_sto_set(uint32_t read_ptr, uint32_t read_len); + +extern int64_t +float_invert(int64_t float1); + +extern int64_t +float_divide(int64_t float1, int64_t float2); + +extern int64_t +float_one(void); + +extern int64_t +float_mantissa(int64_t float1); + +extern int64_t +float_sign(int64_t float1); + +extern int64_t +float_int(int64_t float1, uint32_t decimal_places, uint32_t abs); + +extern int64_t +float_log(int64_t float1); + +extern int64_t +float_root(int64_t float1, uint32_t n); + +// LEDGER + +extern int64_t +fee_base(void); + +extern int64_t +ledger_seq(void); + +extern int64_t +ledger_last_time(void); + +extern int64_t +ledger_last_hash(uint32_t write_ptr, uint32_t write_len); + +extern int64_t +ledger_nonce(uint32_t write_ptr, uint32_t write_len); + +extern int64_t +ledger_keylet( + uint32_t write_ptr, + uint32_t write_len, + uint32_t lread_ptr, + uint32_t lread_len, + uint32_t hread_ptr, + uint32_t hread_len); + +// HOOK + +extern int64_t +hook_account(uint32_t write_ptr, uint32_t write_len); + +extern int64_t +hook_hash(uint32_t write_ptr, uint32_t write_len, int32_t hook_no); + +extern int64_t +hook_param_set( + uint32_t read_ptr, + uint32_t read_len, + uint32_t kread_ptr, + uint32_t kread_len, + uint32_t hread_ptr, + uint32_t hread_len); + +extern int64_t +hook_param( + uint32_t write_ptr, + uint32_t write_len, + uint32_t read_ptr, + uint32_t read_len); + +extern int64_t +hook_again(void); + +extern int64_t +hook_skip(uint32_t read_ptr, uint32_t read_len, uint32_t flags); + +extern int64_t +hook_pos(void); + +// SLOT + +extern int64_t +slot(uint32_t write_ptr, uint32_t write_len, uint32_t slot); + +extern int64_t +slot_clear(uint32_t slot); + +extern int64_t +slot_count(uint32_t slot); + +extern int64_t +slot_set(uint32_t read_ptr, uint32_t read_len, uint32_t slot); + +extern int64_t +slot_size(uint32_t slot); + +extern int64_t +slot_subarray(uint32_t parent_slot, uint32_t array_id, uint32_t new_slot); + +extern int64_t +slot_subfield(uint32_t parent_slot, uint32_t field_id, uint32_t new_slot); + +extern int64_t +slot_type(uint32_t slot_no, uint32_t flags); + +extern int64_t +slot_float(uint32_t slot_no); + +// STATE + +extern int64_t +state_set( + uint32_t read_ptr, + uint32_t read_len, + uint32_t kread_ptr, + uint32_t kread_len); + +extern int64_t +state_foreign_set( + uint32_t read_ptr, + uint32_t read_len, + uint32_t kread_ptr, + uint32_t kread_len, + uint32_t nread_ptr, + uint32_t nread_len, + uint32_t aread_ptr, + uint32_t aread_len); + +extern int64_t +state( + uint32_t write_ptr, + uint32_t write_len, + uint32_t kread_ptr, + uint32_t kread_len); + +extern int64_t +state_foreign( + uint32_t write_ptr, + uint32_t write_len, + uint32_t kread_ptr, + uint32_t kread_len, + uint32_t nread_ptr, + uint32_t nread_len, + uint32_t aread_ptr, + uint32_t aread_len); + +// TRACE + +extern int64_t +trace( + uint32_t mread_ptr, + uint32_t mread_len, + uint32_t dread_ptr, + uint32_t dread_len, + uint32_t as_hex); + +extern int64_t +trace_num(uint32_t read_ptr, uint32_t read_len, int64_t number); + +extern int64_t +trace_float(uint32_t read_ptr, uint32_t read_len, int64_t float1); + +// OTXN + +extern int64_t +otxn_burden(void); + +extern int64_t +otxn_field(uint32_t write_ptr, uint32_t write_len, uint32_t field_id); + +extern int64_t +otxn_generation(void); + +extern int64_t +otxn_id(uint32_t write_ptr, uint32_t write_len, uint32_t flags); + +extern int64_t +otxn_type(void); + +extern int64_t +otxn_slot(uint32_t slot_no); + +extern int64_t +otxn_param( + uint32_t write_ptr, + uint32_t write_len, + uint32_t read_ptr, + uint32_t read_len); + +extern int64_t +meta_slot(uint32_t slot_no); + +// featureHooks1 + +extern int64_t xpop_slot(uint32_t, uint32_t); + +#define HOOK_EXTERN +#endif // HOOK_EXTERN diff --git a/contracts-c/utils/hook/hookapi.h b/contracts-c/utils/hook/hookapi.h new file mode 100644 index 0000000..766a26c --- /dev/null +++ b/contracts-c/utils/hook/hookapi.h @@ -0,0 +1,51 @@ +/** + * Hook API include file + * + * Note to the reader: + * This include defines two types of things: external functions and macros + * Functions are used sparingly because a non-inlining compiler may produce + * undesirable output. + * + * Find documentation here: https://xrpl-hooks.readme.io/reference/ + */ + +#ifndef HOOKAPI_INCLUDED +#define HOOKAPI_INCLUDED 1 + +#define KEYLET_HOOK 1 +#define KEYLET_HOOK_STATE 2 +#define KEYLET_ACCOUNT 3 +#define KEYLET_AMENDMENTS 4 +#define KEYLET_CHILD 5 +#define KEYLET_SKIP 6 +#define KEYLET_FEES 7 +#define KEYLET_NEGATIVE_UNL 8 +#define KEYLET_LINE 9 +#define KEYLET_OFFER 10 +#define KEYLET_QUALITY 11 +#define KEYLET_EMITTED_DIR 12 +#define KEYLET_TICKET 13 +#define KEYLET_SIGNERS 14 +#define KEYLET_CHECK 15 +#define KEYLET_DEPOSIT_PREAUTH 16 +#define KEYLET_UNCHECKED 17 +#define KEYLET_OWNER_DIR 18 +#define KEYLET_PAGE 19 +#define KEYLET_ESCROW 20 +#define KEYLET_PAYCHAN 21 +#define KEYLET_EMITTED 22 +#define KEYLET_NFT_OFFER 23 +#define KEYLET_HOOK_DEFINITION 24 +#define KEYLET_HOOK_STATE_DIR 25 + +#define COMPARE_EQUAL 1U +#define COMPARE_LESS 2U +#define COMPARE_GREATER 4U + +#include "error.h" +#include "extern.h" +#include "sfcodes.h" +#include "macro.h" +#include "tts.h" + +#endif diff --git a/contracts-c/utils/hook/macro.h b/contracts-c/utils/hook/macro.h new file mode 100644 index 0000000..838c2b5 --- /dev/null +++ b/contracts-c/utils/hook/macro.h @@ -0,0 +1,381 @@ +/** + * These are helper macros for writing hooks, all of them are optional as is including macro.h at all + */ + +#include +#include "hookapi.h" +#include "sfcodes.h" + +#ifndef HOOKMACROS_INCLUDED +#define HOOKMACROS_INCLUDED 1 + +#ifdef NDEBUG +#define DEBUG 0 +#else +#define DEBUG 1 +#endif + +#define DONEEMPTY()\ + accept(0,0,__LINE__) + +#define DONEMSG(msg)\ + accept(msg, sizeof(msg),__LINE__) + +#define DONE(x)\ + accept(SVAR(x),(uint32_t)__LINE__); + +#define ASSERT(x)\ +{\ + if (!(x))\ + rollback(0,0,__LINE__);\ +} + +#define NOPE(x)\ +{\ + return rollback((x), sizeof(x), __LINE__);\ +} + +#define TRACEVAR(v) if (DEBUG) trace_num((uint32_t)(#v), (uint32_t)(sizeof(#v) - 1), (int64_t)v); +#define TRACEHEX(v) if (DEBUG) trace((uint32_t)(#v), (uint32_t)(sizeof(#v) - 1), (uint32_t)(v), (uint32_t)(sizeof(v)), 1); +#define TRACEXFL(v) if (DEBUG) trace_float((uint32_t)(#v), (uint32_t)(sizeof(#v) - 1), (int64_t)v); +#define TRACESTR(v) if (DEBUG) trace((uint32_t)(#v), (uint32_t)(sizeof(#v) - 1), (uint32_t)(v), sizeof(v), 0); + +// hook developers should use this guard macro, simply GUARD() +#define GUARD(maxiter) _g((1ULL << 31U) + __LINE__, (maxiter)+1) +#define GUARDM(maxiter, n) _g(( (1ULL << 31U) + (__LINE__ << 16) + n), (maxiter)+1) + +#define SBUF(str) (uint32_t)(str), sizeof(str) +#define SVAR(x) &x, sizeof(x) + +#define REQUIRE(cond, str)\ +{\ + if (!(cond))\ + rollback(SBUF(str), __LINE__);\ +} + +// make a report buffer as a c-string +// provide a name for a buffer to declare (buf) +// provide a static string +// provide an integer to print after the string +#define RBUF(buf, out_len, str, num)\ +unsigned char buf[sizeof(str) + 21];\ +int out_len = 0;\ +{\ + int i = 0;\ + for (; GUARDM(sizeof(str),1),i < sizeof(str); ++i)\ + (buf)[i] = str[i];\ + if ((buf)[sizeof(str)-1] == 0) i--;\ + if ((num) < 0) (buf)[i++] = '-';\ + uint64_t unsigned_num = (uint64_t)( (num) < 0 ? (num) * -1 : (num) );\ + uint64_t j = 10000000000000000000ULL;\ + int start = 1;\ + for (; GUARDM(20,2), unsigned_num > 0 && j > 0; j /= 10)\ + {\ + unsigned char digit = ( unsigned_num / j ) % 10;\ + if (digit == 0 && start)\ + continue;\ + start = 0;\ + (buf)[i++] = '0' + digit;\ + }\ + (buf)[i] = '\0';\ + out_len = i;\ +} + +#define RBUF2(buff, out_len, str, num, str2, num2)\ +unsigned char buff[sizeof(str) + sizeof(str2) + 42];\ +int out_len = 0;\ +{\ + unsigned char* buf = buff;\ + int i = 0;\ + for (; GUARDM(sizeof(str),1),i < sizeof(str); ++i)\ + (buf)[i] = str[i];\ + if ((buf)[sizeof(str)-1] == 0) i--;\ + if ((num) < 0) (buf)[i++] = '-';\ + uint64_t unsigned_num = (uint64_t)( (num) < 0 ? (num) * -1 : (num) );\ + uint64_t j = 10000000000000000000ULL;\ + int start = 1;\ + for (; GUARDM(20,2), unsigned_num > 0 && j > 0; j /= 10)\ + {\ + unsigned char digit = ( unsigned_num / j ) % 10;\ + if (digit == 0 && start)\ + continue;\ + start = 0;\ + (buf)[i++] = '0' + digit;\ + }\ + buf += i;\ + out_len += i;\ + i = 0;\ + for (; GUARDM(sizeof(str2),3),i < sizeof(str2); ++i)\ + (buf)[i] = str2[i];\ + if ((buf)[sizeof(str2)-1] == 0) i--;\ + if ((num2) < 0) (buf)[i++] = '-';\ + unsigned_num = (uint64_t)( (num2) < 0 ? (num2) * -1 : (num2) );\ + j = 10000000000000000000ULL;\ + start = 1;\ + for (; GUARDM(20,4), unsigned_num > 0 && j > 0; j /= 10)\ + {\ + unsigned char digit = ( unsigned_num / j ) % 10;\ + if (digit == 0 && start)\ + continue;\ + start = 0;\ + (buf)[i++] = '0' + digit;\ + }\ + (buf)[i] = '\0';\ + out_len += i;\ +} + +#define CLEARBUF(b)\ +{\ + for (int x = 0; GUARD(sizeof(b)), x < sizeof(b); ++x)\ + b[x] = 0;\ +} + +// returns an in64_t, negative if error, non-negative if valid drops +#define AMOUNT_TO_DROPS(amount_buffer)\ + (((amount_buffer)[0] >> 7) ? -2 : (\ + ((((uint64_t)((amount_buffer)[0])) & 0xb00111111) << 56) +\ + (((uint64_t)((amount_buffer)[1])) << 48) +\ + (((uint64_t)((amount_buffer)[2])) << 40) +\ + (((uint64_t)((amount_buffer)[3])) << 32) +\ + (((uint64_t)((amount_buffer)[4])) << 24) +\ + (((uint64_t)((amount_buffer)[5])) << 16) +\ + (((uint64_t)((amount_buffer)[6])) << 8) +\ + (((uint64_t)((amount_buffer)[7]))))) + +#define SUB_OFFSET(x) ((int32_t)(x >> 32)) +#define SUB_LENGTH(x) ((int32_t)(x & 0xFFFFFFFFULL)) + +#define BUFFER_EQUAL_20(buf1, buf2)\ + (\ + *(((uint64_t*)(buf1)) + 0) == *(((uint64_t*)(buf2)) + 0) &&\ + *(((uint64_t*)(buf1)) + 1) == *(((uint64_t*)(buf2)) + 1) &&\ + *(((uint32_t*)(buf1)) + 4) == *(((uint32_t*)(buf2)) + 4)) + +#define BUFFER_EQUAL_32(buf1, buf2)\ + (\ + *(((uint64_t*)(buf1)) + 0) == *(((uint64_t*)(buf2)) + 0) &&\ + *(((uint64_t*)(buf1)) + 1) == *(((uint64_t*)(buf2)) + 1) &&\ + *(((uint64_t*)(buf1)) + 2) == *(((uint64_t*)(buf2)) + 2) &&\ + *(((uint64_t*)(buf1)) + 3) == *(((uint64_t*)(buf2)) + 3)) + +#define BUFFER_EQUAL_64(buf1, buf2) \ + ( \ + (*((uint64_t*)(buf1) + 0) == *((uint64_t*)(buf2) + 0)) && \ + (*((uint64_t*)(buf1) + 1) == *((uint64_t*)(buf2) + 1)) && \ + (*((uint64_t*)(buf1) + 2) == *((uint64_t*)(buf2) + 2)) && \ + (*((uint64_t*)(buf1) + 3) == *((uint64_t*)(buf2) + 3)) && \ + (*((uint64_t*)(buf1) + 4) == *((uint64_t*)(buf2) + 4)) && \ + (*((uint64_t*)(buf1) + 5) == *((uint64_t*)(buf2) + 5)) && \ + (*((uint64_t*)(buf1) + 6) == *((uint64_t*)(buf2) + 6)) && \ + (*((uint64_t*)(buf1) + 7) == *((uint64_t*)(buf2) + 7)) \ + ) + +// when using this macro buf1len may be dynamic but buf2len must be static +// provide n >= 1 to indicate how many times the macro will be hit on the line of code +// e.g. if it is in a loop that loops 10 times n = 10 + +#define BUFFER_EQUAL_GUARD(output, buf1, buf1len, buf2, buf2len, n)\ +{\ + output = ((buf1len) == (buf2len) ? 1 : 0);\ + for (int x = 0; GUARDM( (buf2len) * (n), 1 ), output && x < (buf2len);\ + ++x)\ + output = *(((uint8_t*)(buf1)) + x) == *(((uint8_t*)(buf2)) + x);\ +} + +#define BUFFER_SWAP(x,y)\ +{\ + uint8_t* z = x;\ + x = y;\ + y = z;\ +} + +#define ACCOUNT_COMPARE(compare_result, buf1, buf2)\ +{\ + compare_result = 0;\ + for (int i = 0; GUARD(20), i < 20; ++i)\ + {\ + if (buf1[i] > buf2[i])\ + {\ + compare_result = 1;\ + break;\ + }\ + else if (buf1[i] < buf2[i])\ + {\ + compare_result = -1;\ + break;\ + }\ + }\ +} + +#define BUFFER_EQUAL_STR_GUARD(output, buf1, buf1len, str, n)\ + BUFFER_EQUAL_GUARD(output, buf1, buf1len, str, (sizeof(str)-1), n) + +#define BUFFER_EQUAL_STR(output, buf1, buf1len, str)\ + BUFFER_EQUAL_GUARD(output, buf1, buf1len, str, (sizeof(str)-1), 1) + +#define BUFFER_EQUAL(output, buf1, buf2, compare_len)\ + BUFFER_EQUAL_GUARD(output, buf1, compare_len, buf2, compare_len, 1) + + +#define UINT8_TO_BUF(buf_raw, i)\ +{\ + unsigned char* buf = (unsigned char*)buf_raw;\ + buf[0] = (((uint8_t)i) >> 0) & 0xFFUL;\ + if (i < 0) buf[0] |= 0x80U;\ +} + +#define UINT8_FROM_BUF(buf)\ + (((uint8_t)((buf)[0]) << 0)) + + +#define UINT16_TO_BUF(buf_raw, i)\ +{\ + unsigned char* buf = (unsigned char*)buf_raw;\ + buf[0] = (((uint64_t)i) >> 8) & 0xFFUL;\ + buf[1] = (((uint64_t)i) >> 0) & 0xFFUL;\ +} + +#define UINT16_FROM_BUF(buf)\ + (((uint64_t)((buf)[0]) << 8) +\ + ((uint64_t)((buf)[1]) << 0)) + +#define UINT32_TO_BUF(buf_raw, i)\ +{\ + unsigned char* buf = (unsigned char*)buf_raw;\ + buf[0] = (((uint64_t)i) >> 24) & 0xFFUL;\ + buf[1] = (((uint64_t)i) >> 16) & 0xFFUL;\ + buf[2] = (((uint64_t)i) >> 8) & 0xFFUL;\ + buf[3] = (((uint64_t)i) >> 0) & 0xFFUL;\ +} + +#define UINT32_FROM_BUF(buf)\ + (((uint64_t)((buf)[0]) << 24) +\ + ((uint64_t)((buf)[1]) << 16) +\ + ((uint64_t)((buf)[2]) << 8) +\ + ((uint64_t)((buf)[3]) << 0)) + +#define UINT64_TO_BUF(buf_raw, i)\ +{\ + unsigned char* buf = (unsigned char*)buf_raw;\ + buf[0] = (((uint64_t)i) >> 56) & 0xFFUL;\ + buf[1] = (((uint64_t)i) >> 48) & 0xFFUL;\ + buf[2] = (((uint64_t)i) >> 40) & 0xFFUL;\ + buf[3] = (((uint64_t)i) >> 32) & 0xFFUL;\ + buf[4] = (((uint64_t)i) >> 24) & 0xFFUL;\ + buf[5] = (((uint64_t)i) >> 16) & 0xFFUL;\ + buf[6] = (((uint64_t)i) >> 8) & 0xFFUL;\ + buf[7] = (((uint64_t)i) >> 0) & 0xFFUL;\ +} + +#define UINT64_FROM_BUF(buf)\ + (((uint64_t)((buf)[0]) << 56) +\ + ((uint64_t)((buf)[1]) << 48) +\ + ((uint64_t)((buf)[2]) << 40) +\ + ((uint64_t)((buf)[3]) << 32) +\ + ((uint64_t)((buf)[4]) << 24) +\ + ((uint64_t)((buf)[5]) << 16) +\ + ((uint64_t)((buf)[6]) << 8) +\ + ((uint64_t)((buf)[7]) << 0)) + +#define INT64_TO_BUF(buf_raw, i)\ +{\ + unsigned char* buf = (unsigned char*)buf_raw;\ + buf[0] = (((uint64_t)i) >> 56) & 0x7FUL;\ + buf[1] = (((uint64_t)i) >> 48) & 0xFFUL;\ + buf[2] = (((uint64_t)i) >> 40) & 0xFFUL;\ + buf[3] = (((uint64_t)i) >> 32) & 0xFFUL;\ + buf[4] = (((uint64_t)i) >> 24) & 0xFFUL;\ + buf[5] = (((uint64_t)i) >> 16) & 0xFFUL;\ + buf[6] = (((uint64_t)i) >> 8) & 0xFFUL;\ + buf[7] = (((uint64_t)i) >> 0) & 0xFFUL;\ + if (i < 0) buf[0] |= 0x80U;\ +} + +#define INT64_FROM_BUF(buf)\ + ((((uint64_t)((buf)[0] & 0x7FU) << 56) +\ + ((uint64_t)((buf)[1]) << 48) +\ + ((uint64_t)((buf)[2]) << 40) +\ + ((uint64_t)((buf)[3]) << 32) +\ + ((uint64_t)((buf)[4]) << 24) +\ + ((uint64_t)((buf)[5]) << 16) +\ + ((uint64_t)((buf)[6]) << 8) +\ + ((uint64_t)((buf)[7]) << 0)) * (buf[0] & 0x80U ? -1 : 1)) + + +#define BYTES20_TO_BUF(buf_raw, i)\ +{\ + unsigned char* buf = (unsigned char*)buf_raw;\ + *(uint64_t*)(buf + 0) = *(uint64_t*)(i + 0);\ + *(uint64_t*)(buf + 8) = *(uint64_t*)(i + 8);\ + *(uint32_t*)(buf + 16) = *(uint32_t*)(i + 16);\ +} + +#define BYTES20_FROM_BUF(buf_raw, i)\ +{\ + const unsigned char* buf = (const unsigned char*)buf_raw;\ + *(uint64_t*)(i + 0) = *(const uint64_t*)(buf + 0);\ + *(uint64_t*)(i + 8) = *(const uint64_t*)(buf + 8);\ + *(uint32_t*)(i + 16) = *(const uint32_t*)(buf + 16);\ +} + +#define BYTES32_TO_BUF(buf_raw, i)\ +{\ + unsigned char* buf = (unsigned char*)buf_raw;\ + *(uint64_t*)(buf + 0) = *(uint64_t*)(i + 0);\ + *(uint64_t*)(buf + 8) = *(uint64_t*)(i + 8);\ + *(uint64_t*)(buf + 16) = *(uint64_t*)(i + 16);\ + *(uint64_t*)(buf + 24) = *(uint64_t*)(i + 24);\ +} + +#define BYTES32_FROM_BUF(buf_raw, i)\ +{\ + const unsigned char* buf = (const unsigned char*)buf_raw;\ + *(uint64_t*)(i + 0) = *(const uint64_t*)(buf + 0);\ + *(uint64_t*)(i + 8) = *(const uint64_t*)(buf + 8);\ + *(uint64_t*)(i + 16) = *(const uint64_t*)(buf + 16);\ + *(uint64_t*)(i + 24) = *(const uint64_t*)(buf + 24);\ +} + +#define FLIP_ENDIAN_32(n) ((uint32_t) (((n & 0xFFU) << 24U) | \ + ((n & 0xFF00U) << 8U) | \ + ((n & 0xFF0000U) >> 8U) | \ + ((n & 0xFF000000U) >> 24U))) + +#define FLIP_ENDIAN_64(n) ((uint64_t)(((n & 0xFFULL) << 56ULL) | \ + ((n & 0xFF00ULL) << 40ULL) | \ + ((n & 0xFF0000ULL) << 24ULL) | \ + ((n & 0xFF000000ULL) << 8ULL) | \ + ((n & 0xFF00000000ULL) >> 8ULL) | \ + ((n & 0xFF0000000000ULL) >> 24ULL) | \ + ((n & 0xFF000000000000ULL) >> 40ULL) | \ + ((n & 0xFF00000000000000ULL) >> 56ULL))) + +#define tfCANONICAL 0x80000000UL + +#define atACCOUNT 1U +#define atOWNER 2U +#define atDESTINATION 3U +#define atISSUER 4U +#define atAUTHORIZE 5U +#define atUNAUTHORIZE 6U +#define atTARGET 7U +#define atREGULARKEY 8U +#define atPSEUDOCALLBACK 9U + +#define amAMOUNT 1U +#define amBALANCE 2U +#define amLIMITAMOUNT 3U +#define amTAKERPAYS 4U +#define amTAKERGETS 5U +#define amLOWLIMIT 6U +#define amHIGHLIMIT 7U +#define amFEE 8U +#define amSENDMAX 9U +#define amDELIVERMIN 10U +#define amMINIMUMOFFER 16U +#define amRIPPLEESCROW 17U +#define amDELIVEREDAMOUNT 18U + +#endif + + diff --git a/contracts-c/utils/hook/sfcodes.h b/contracts-c/utils/hook/sfcodes.h new file mode 100644 index 0000000..a88278d --- /dev/null +++ b/contracts-c/utils/hook/sfcodes.h @@ -0,0 +1,238 @@ +// For documentation please see: https://xrpl-hooks.readme.io/reference/ +// Generated using generate_sfcodes.sh +#define sfCloseResolution ((16U << 16U) + 1U) +#define sfMethod ((16U << 16U) + 2U) +#define sfTransactionResult ((16U << 16U) + 3U) +#define sfTickSize ((16U << 16U) + 16U) +#define sfUNLModifyDisabling ((16U << 16U) + 17U) +#define sfHookResult ((16U << 16U) + 18U) +#define sfLedgerEntryType ((1U << 16U) + 1U) +#define sfTransactionType ((1U << 16U) + 2U) +#define sfSignerWeight ((1U << 16U) + 3U) +#define sfTransferFee ((1U << 16U) + 4U) +#define sfVersion ((1U << 16U) + 16U) +#define sfHookStateChangeCount ((1U << 16U) + 17U) +#define sfHookEmitCount ((1U << 16U) + 18U) +#define sfHookExecutionIndex ((1U << 16U) + 19U) +#define sfHookApiVersion ((1U << 16U) + 20U) +#define sfNetworkID ((2U << 16U) + 1U) +#define sfFlags ((2U << 16U) + 2U) +#define sfSourceTag ((2U << 16U) + 3U) +#define sfSequence ((2U << 16U) + 4U) +#define sfPreviousTxnLgrSeq ((2U << 16U) + 5U) +#define sfLedgerSequence ((2U << 16U) + 6U) +#define sfCloseTime ((2U << 16U) + 7U) +#define sfParentCloseTime ((2U << 16U) + 8U) +#define sfSigningTime ((2U << 16U) + 9U) +#define sfExpiration ((2U << 16U) + 10U) +#define sfTransferRate ((2U << 16U) + 11U) +#define sfWalletSize ((2U << 16U) + 12U) +#define sfOwnerCount ((2U << 16U) + 13U) +#define sfDestinationTag ((2U << 16U) + 14U) +#define sfHighQualityIn ((2U << 16U) + 16U) +#define sfHighQualityOut ((2U << 16U) + 17U) +#define sfLowQualityIn ((2U << 16U) + 18U) +#define sfLowQualityOut ((2U << 16U) + 19U) +#define sfQualityIn ((2U << 16U) + 20U) +#define sfQualityOut ((2U << 16U) + 21U) +#define sfStampEscrow ((2U << 16U) + 22U) +#define sfBondAmount ((2U << 16U) + 23U) +#define sfLoadFee ((2U << 16U) + 24U) +#define sfOfferSequence ((2U << 16U) + 25U) +#define sfFirstLedgerSequence ((2U << 16U) + 26U) +#define sfLastLedgerSequence ((2U << 16U) + 27U) +#define sfTransactionIndex ((2U << 16U) + 28U) +#define sfOperationLimit ((2U << 16U) + 29U) +#define sfReferenceFeeUnits ((2U << 16U) + 30U) +#define sfReserveBase ((2U << 16U) + 31U) +#define sfReserveIncrement ((2U << 16U) + 32U) +#define sfSetFlag ((2U << 16U) + 33U) +#define sfClearFlag ((2U << 16U) + 34U) +#define sfSignerQuorum ((2U << 16U) + 35U) +#define sfCancelAfter ((2U << 16U) + 36U) +#define sfFinishAfter ((2U << 16U) + 37U) +#define sfSignerListID ((2U << 16U) + 38U) +#define sfSettleDelay ((2U << 16U) + 39U) +#define sfTicketCount ((2U << 16U) + 40U) +#define sfTicketSequence ((2U << 16U) + 41U) +#define sfNFTokenTaxon ((2U << 16U) + 42U) +#define sfMintedNFTokens ((2U << 16U) + 43U) +#define sfBurnedNFTokens ((2U << 16U) + 44U) +#define sfHookStateCount ((2U << 16U) + 45U) +#define sfEmitGeneration ((2U << 16U) + 46U) +#define sfLockCount ((2U << 16U) + 49U) +#define sfFirstNFTokenSequence ((2U << 16U) + 50U) +#define sfXahauActivationLgrSeq ((2U << 16U) + 96U) +#define sfImportSequence ((2U << 16U) + 97U) +#define sfRewardTime ((2U << 16U) + 98U) +#define sfRewardLgrFirst ((2U << 16U) + 99U) +#define sfRewardLgrLast ((2U << 16U) + 100U) +#define sfIndexNext ((3U << 16U) + 1U) +#define sfIndexPrevious ((3U << 16U) + 2U) +#define sfBookNode ((3U << 16U) + 3U) +#define sfOwnerNode ((3U << 16U) + 4U) +#define sfBaseFee ((3U << 16U) + 5U) +#define sfExchangeRate ((3U << 16U) + 6U) +#define sfLowNode ((3U << 16U) + 7U) +#define sfHighNode ((3U << 16U) + 8U) +#define sfDestinationNode ((3U << 16U) + 9U) +#define sfCookie ((3U << 16U) + 10U) +#define sfServerVersion ((3U << 16U) + 11U) +#define sfNFTokenOfferNode ((3U << 16U) + 12U) +#define sfEmitBurden ((3U << 16U) + 13U) +#define sfHookInstructionCount ((3U << 16U) + 17U) +#define sfHookReturnCode ((3U << 16U) + 18U) +#define sfReferenceCount ((3U << 16U) + 19U) +#define sfAccountIndex ((3U << 16U) + 98U) +#define sfAccountCount ((3U << 16U) + 99U) +#define sfRewardAccumulator ((3U << 16U) + 100U) +#define sfEmailHash ((4U << 16U) + 1U) +#define sfTakerPaysCurrency ((10U << 16U) + 1U) +#define sfTakerPaysIssuer ((10U << 16U) + 2U) +#define sfTakerGetsCurrency ((10U << 16U) + 3U) +#define sfTakerGetsIssuer ((10U << 16U) + 4U) +#define sfLedgerHash ((5U << 16U) + 1U) +#define sfParentHash ((5U << 16U) + 2U) +#define sfTransactionHash ((5U << 16U) + 3U) +#define sfAccountHash ((5U << 16U) + 4U) +#define sfPreviousTxnID ((5U << 16U) + 5U) +#define sfLedgerIndex ((5U << 16U) + 6U) +#define sfWalletLocator ((5U << 16U) + 7U) +#define sfRootIndex ((5U << 16U) + 8U) +#define sfAccountTxnID ((5U << 16U) + 9U) +#define sfNFTokenID ((5U << 16U) + 10U) +#define sfEmitParentTxnID ((5U << 16U) + 11U) +#define sfEmitNonce ((5U << 16U) + 12U) +#define sfEmitHookHash ((5U << 16U) + 13U) +#define sfBookDirectory ((5U << 16U) + 16U) +#define sfInvoiceID ((5U << 16U) + 17U) +#define sfNickname ((5U << 16U) + 18U) +#define sfAmendment ((5U << 16U) + 19U) +#define sfHookOn ((5U << 16U) + 20U) +#define sfDigest ((5U << 16U) + 21U) +#define sfChannel ((5U << 16U) + 22U) +#define sfConsensusHash ((5U << 16U) + 23U) +#define sfCheckID ((5U << 16U) + 24U) +#define sfValidatedHash ((5U << 16U) + 25U) +#define sfPreviousPageMin ((5U << 16U) + 26U) +#define sfNextPageMin ((5U << 16U) + 27U) +#define sfNFTokenBuyOffer ((5U << 16U) + 28U) +#define sfNFTokenSellOffer ((5U << 16U) + 29U) +#define sfHookStateKey ((5U << 16U) + 30U) +#define sfHookHash ((5U << 16U) + 31U) +#define sfHookNamespace ((5U << 16U) + 32U) +#define sfHookSetTxnID ((5U << 16U) + 33U) +#define sfOfferID ((5U << 16U) + 34U) +#define sfEscrowID ((5U << 16U) + 35U) +#define sfURITokenID ((5U << 16U) + 36U) +#define sfGovernanceFlags ((5U << 16U) + 99U) +#define sfGovernanceMarks ((5U << 16U) + 98U) +#define sfEmittedTxnID ((5U << 16U) + 97U) +#define sfAmount ((6U << 16U) + 1U) +#define sfBalance ((6U << 16U) + 2U) +#define sfLimitAmount ((6U << 16U) + 3U) +#define sfTakerPays ((6U << 16U) + 4U) +#define sfTakerGets ((6U << 16U) + 5U) +#define sfLowLimit ((6U << 16U) + 6U) +#define sfHighLimit ((6U << 16U) + 7U) +#define sfFee ((6U << 16U) + 8U) +#define sfSendMax ((6U << 16U) + 9U) +#define sfDeliverMin ((6U << 16U) + 10U) +#define sfMinimumOffer ((6U << 16U) + 16U) +#define sfRippleEscrow ((6U << 16U) + 17U) +#define sfDeliveredAmount ((6U << 16U) + 18U) +#define sfNFTokenBrokerFee ((6U << 16U) + 19U) +#define sfHookCallbackFee ((6U << 16U) + 20U) +#define sfLockedBalance ((6U << 16U) + 21U) +#define sfBaseFeeDrops ((6U << 16U) + 22U) +#define sfReserveBaseDrops ((6U << 16U) + 23U) +#define sfReserveIncrementDrops ((6U << 16U) + 24U) +#define sfPublicKey ((7U << 16U) + 1U) +#define sfMessageKey ((7U << 16U) + 2U) +#define sfSigningPubKey ((7U << 16U) + 3U) +#define sfTxnSignature ((7U << 16U) + 4U) +#define sfURI ((7U << 16U) + 5U) +#define sfSignature ((7U << 16U) + 6U) +#define sfDomain ((7U << 16U) + 7U) +#define sfFundCode ((7U << 16U) + 8U) +#define sfRemoveCode ((7U << 16U) + 9U) +#define sfExpireCode ((7U << 16U) + 10U) +#define sfCreateCode ((7U << 16U) + 11U) +#define sfMemoType ((7U << 16U) + 12U) +#define sfMemoData ((7U << 16U) + 13U) +#define sfMemoFormat ((7U << 16U) + 14U) +#define sfFulfillment ((7U << 16U) + 16U) +#define sfCondition ((7U << 16U) + 17U) +#define sfMasterSignature ((7U << 16U) + 18U) +#define sfUNLModifyValidator ((7U << 16U) + 19U) +#define sfValidatorToDisable ((7U << 16U) + 20U) +#define sfValidatorToReEnable ((7U << 16U) + 21U) +#define sfHookStateData ((7U << 16U) + 22U) +#define sfHookReturnString ((7U << 16U) + 23U) +#define sfHookParameterName ((7U << 16U) + 24U) +#define sfHookParameterValue ((7U << 16U) + 25U) +#define sfBlob ((7U << 16U) + 26U) +#define sfAccount ((8U << 16U) + 1U) +#define sfOwner ((8U << 16U) + 2U) +#define sfDestination ((8U << 16U) + 3U) +#define sfIssuer ((8U << 16U) + 4U) +#define sfAuthorize ((8U << 16U) + 5U) +#define sfUnauthorize ((8U << 16U) + 6U) +#define sfRegularKey ((8U << 16U) + 8U) +#define sfNFTokenMinter ((8U << 16U) + 9U) +#define sfEmitCallback ((8U << 16U) + 10U) +#define sfHookAccount ((8U << 16U) + 16U) +#define sfInform ((8U << 16U) + 99U) +#define sfIndexes ((19U << 16U) + 1U) +#define sfHashes ((19U << 16U) + 2U) +#define sfAmendments ((19U << 16U) + 3U) +#define sfNFTokenOffers ((19U << 16U) + 4U) +#define sfHookNamespaces ((19U << 16U) + 5U) +#define sfURITokenIDs ((19U << 16U) + 99U) +#define sfPaths ((18U << 16U) + 1U) +#define sfTransactionMetaData ((14U << 16U) + 2U) +#define sfCreatedNode ((14U << 16U) + 3U) +#define sfDeletedNode ((14U << 16U) + 4U) +#define sfModifiedNode ((14U << 16U) + 5U) +#define sfPreviousFields ((14U << 16U) + 6U) +#define sfFinalFields ((14U << 16U) + 7U) +#define sfNewFields ((14U << 16U) + 8U) +#define sfTemplateEntry ((14U << 16U) + 9U) +#define sfMemo ((14U << 16U) + 10U) +#define sfSignerEntry ((14U << 16U) + 11U) +#define sfNFToken ((14U << 16U) + 12U) +#define sfEmitDetails ((14U << 16U) + 13U) +#define sfHook ((14U << 16U) + 14U) +#define sfSigner ((14U << 16U) + 16U) +#define sfMajority ((14U << 16U) + 18U) +#define sfDisabledValidator ((14U << 16U) + 19U) +#define sfEmittedTxn ((14U << 16U) + 20U) +#define sfHookExecution ((14U << 16U) + 21U) +#define sfHookDefinition ((14U << 16U) + 22U) +#define sfHookParameter ((14U << 16U) + 23U) +#define sfHookGrant ((14U << 16U) + 24U) +#define sfGenesisMint ((14U << 16U) + 96U) +#define sfActiveValidator ((14U << 16U) + 95U) +#define sfImportVLKey ((14U << 16U) + 94U) +#define sfHookEmission ((14U << 16U) + 93U) +#define sfMintURIToken ((14U << 16U) + 92U) +#define sfAmountEntry ((14U << 16U) + 91U) +#define sfSigners ((15U << 16U) + 3U) +#define sfSignerEntries ((15U << 16U) + 4U) +#define sfTemplate ((15U << 16U) + 5U) +#define sfNecessary ((15U << 16U) + 6U) +#define sfSufficient ((15U << 16U) + 7U) +#define sfAffectedNodes ((15U << 16U) + 8U) +#define sfMemos ((15U << 16U) + 9U) +#define sfNFTokens ((15U << 16U) + 10U) +#define sfHooks ((15U << 16U) + 11U) +#define sfMajorities ((15U << 16U) + 16U) +#define sfDisabledValidators ((15U << 16U) + 17U) +#define sfHookExecutions ((15U << 16U) + 18U) +#define sfHookParameters ((15U << 16U) + 19U) +#define sfHookGrants ((15U << 16U) + 20U) +#define sfGenesisMints ((15U << 16U) + 96U) +#define sfActiveValidators ((15U << 16U) + 95U) +#define sfImportVLKeys ((15U << 16U) + 94U) +#define sfHookEmissions ((15U << 16U) + 93U) +#define sfAmounts ((15U << 16U) + 92U) \ No newline at end of file diff --git a/contracts-c/utils/hook/tts.h b/contracts-c/utils/hook/tts.h new file mode 100644 index 0000000..0973fa1 --- /dev/null +++ b/contracts-c/utils/hook/tts.h @@ -0,0 +1,43 @@ +// For documentation please see: https://xrpl-hooks.readme.io/reference/ +#define ttPAYMENT 0 +#define ttESCROW_CREATE 1 +#define ttESCROW_FINISH 2 +#define ttACCOUNT_SET 3 +#define ttESCROW_CANCEL 4 +#define ttREGULAR_KEY_SET 5 +// #define ttNICKNAME_SET 6 // deprecated +#define ttOFFER_CREATE 7 +#define ttOFFER_CANCEL 8 +#define ttTICKET_CREATE 10 +// #define ttSPINAL_TAP 11 // deprecated +#define ttSIGNER_LIST_SET 12 +#define ttPAYCHAN_CREATE 13 +#define ttPAYCHAN_FUND 14 +#define ttPAYCHAN_CLAIM 15 +#define ttCHECK_CREATE 16 +#define ttCHECK_CASH 17 +#define ttCHECK_CANCEL 18 +#define ttDEPOSIT_PREAUTH 19 +#define ttTRUST_SET 20 +#define ttACCOUNT_DELETE 21 +#define ttHOOK_SET 22 +#define ttNFTOKEN_MINT 25 +#define ttNFTOKEN_BURN 26 +#define ttNFTOKEN_CREATE_OFFER 27 +#define ttNFTOKEN_CANCEL_OFFER 28 +#define ttNFTOKEN_ACCEPT_OFFER 29 +#define ttURITOKEN_MINT 45 +#define ttURITOKEN_BURN 46 +#define ttURITOKEN_BUY 47 +#define ttURITOKEN_CREATE_SELL_OFFER 48 +#define ttURITOKEN_CANCEL_SELL_OFFER 49 +#define ttREMIT 95 +#define ttGENESIS_MINT 96 +#define ttIMPORT 97 +#define ttCLAIM_REWARD 98 +#define ttINVOKE 99 +#define ttAMENDMENT 100 +#define ttFEE 101 +#define ttUNL_MODIFY 102 +#define ttEMIT_FAILURE 103 +#define ttUNL_REPORT 104 \ No newline at end of file diff --git a/contracts-js/toolbox/base copy.ts b/contracts-js/toolbox/base copy.ts deleted file mode 100644 index aa9cbc7..0000000 --- a/contracts-js/toolbox/base copy.ts +++ /dev/null @@ -1,105 +0,0 @@ -const ASSERT = (x) => { - if (!x) { - rollback(x.toString(), 0) - } -} - -// #define TOO_SMALL -4 -// #define TOO_BIG -3 -// #define OUT_OF_BOUNDS -1 -// #define MEM_OVERLAP -43 -// #define PARSE_ERROR -18 -// #define DOESNT_EXIST -5 - -const sto = [ - 0x11, 0x00, 0x61, 0x22, 0x00, 0x00, 0x00, 0x00, 0x24, 0x04, 0x1f, 0x94, 0xd9, - 0x25, 0x04, 0x5e, 0x84, 0xb7, 0x2d, 0x00, 0x00, 0x00, 0x00, 0x55, 0x13, 0x40, - 0xb3, 0x25, 0x86, 0x31, 0x96, 0xb5, 0x6f, 0x41, 0xf5, 0x89, 0xeb, 0x7d, 0x2f, - 0xd9, 0x4c, 0x0d, 0x7d, 0xb8, 0x0e, 0x4b, 0x2c, 0x67, 0xa7, 0x78, 0x2a, 0xd6, - 0xc2, 0xb0, 0x77, 0x50, 0x62, 0x40, 0x00, 0x00, 0x00, 0x00, 0xa4, 0x79, 0x94, - 0x81, 0x14, 0x37, 0xdf, 0x44, 0x07, 0xe7, 0xaa, 0x07, 0xf1, 0xd5, 0xc9, 0x91, - 0xf2, 0xd3, 0x6f, 0x9e, 0xb8, 0xc7, 0x34, 0xaf, 0x6c, -] - -const INVALID_ARGUMENT = -7 - -// test_sto_erase -const Hook = (arg) => { - trace('Hook: ', 0, false) - - // Test out of bounds check - ASSERT(sto_erase(1000000, 32, 0, 32, 1) == OUT_OF_BOUNDS) - ASSERT(sto_erase(0, 1000000, 0, 32, 1) == OUT_OF_BOUNDS) - ASSERT(sto_erase(0, 32, 1000000, 32, 1) == OUT_OF_BOUNDS) - ASSERT(sto_erase(0, 32, 64, 1000000, 1) == OUT_OF_BOUNDS) - - // // Test size check - // { - // // write buffer too small - // ASSERT(sto_erase(0,1, 0,2, 1) == TOO_SMALL); - // ASSERT(sto_erase(0, 32000, 0, 17000, 1) == TOO_BIG); - // } - - // uint8_t buf[1024]; - - // // Test overlapping memory - // ASSERT(sto_erase(buf, 1024, buf+1, 512, 1) == MEM_OVERLAP); - // ASSERT(sto_erase(buf+1, 1024, buf, 512, 1) == MEM_OVERLAP); - - // // erase field 22 - // { - // ASSERT(sto_erase( - // buf, sizeof(buf), - // sto, sizeof(sto), 0x20002U) == - // sizeof(sto) - 5); - - // ASSERT(buf[0] == sto[0] && buf[1] == sto[1] && buf[2] == sto[2]); - // for (int i = 3; GUARD(sizeof(sto) + 1), i < sizeof(sto) - 5; ++i) - // ASSERT(sto[i+5] == buf[i]); - // } - - // // test front erasure - // { - // ASSERT(sto_erase( - // buf, sizeof(buf), - // sto, sizeof(sto), 0x10001U) == - // sizeof(sto) - 3); - - // for (int i = 3; GUARD(sizeof(sto) + 1), i < sizeof(sto) - 3; ++i) - // ASSERT(sto[i] == buf[i-3]); - // } - - // // test back erasure - // { - // ASSERT(sto_erase( - // buf, sizeof(buf), - // sto, sizeof(sto), 0x80001U) == - // sizeof(sto) - 22); - - // for (int i = 0; GUARD(sizeof(sto) - 21), i < sizeof(sto)-22; ++i) - // ASSERT(sto[i] == buf[i]); - // } - - // // test not found - // { - // ASSERT(sto_erase( - // buf, sizeof(buf), - // sto, sizeof(sto), 0x80002U) == - // DOESNT_EXIST); - - // for (int i = 0; GUARD(sizeof(sto) +1), i < sizeof(sto); ++i) - // ASSERT(sto[i] == buf[i]); - // } - - // // test total erasure - // { - // uint8_t rep[] = {0x22,0x10,0x20,0x30,0x40U}; - // ASSERT(sto_erase(buf, sizeof(buf), rep, sizeof(rep), 0x20002U) == - // 0); - - // } - - return accept(0, 0) -} - -export { Hook } diff --git a/contracts-js/toolbox/redirect.ts b/contracts-js/toolbox/redirect.ts new file mode 100644 index 0000000..4de7520 --- /dev/null +++ b/contracts-js/toolbox/redirect.ts @@ -0,0 +1,36 @@ +/* eslint-disable @typescript-eslint/no-unused-vars */ + +import { assert } from 'jshooks-api' +import { Payment } from '@transia/xahau-models' + +const Hook = (arg) => { + trace('redirect.ts: Called.', false) + + const hook_accid = assert(hook_account()) + const txn = otxn_json() as Payment + const amount = txn.Amount + + etxn_reserve(1) + + const builtTxn: Payment = { + TransactionType: 'Payment', + Amount: amount, + Destination: txn.Account, + Account: util_raddr(hook_accid) as string, + } + + const prepared = assert(prepare(builtTxn)) + const txHash = emit(prepared) + if (txHash > 0) { + return accept('redirect.ts: Tx emitted success.', 0) + } + + return accept('redirect.ts: Tx emitted failure.', 0) +} + +const Callback = (arg) => { + trace('redirect.ts: Callback called.', false) + return accept('redirect.ts: Callback success.', 0) +} + +export { Hook, Callback } diff --git a/package.json b/package.json index b7d503e..e26a0af 100644 --- a/package.json +++ b/package.json @@ -22,12 +22,12 @@ "license": "GPL-3.0-or-later", "dependencies": { "@transia/binary-models": "^1.1.0", - "@transia/xrpl": "^2.7.3-alpha.28", "crypto-js": "^4.1.1", "dotenv": "^16.4.5", "jshooks-api": "^1.0.5", "reconnecting-websocket": "^4.4.0", - "winston": "^3.10.0" + "winston": "^3.10.0", + "xahau": "^4.0.0" }, "devDependencies": { "@tsconfig/node16": "^16.1.0", diff --git a/src/Xrpld.ts b/src/Xrpld.ts index 6179060..a6f2180 100644 --- a/src/Xrpld.ts +++ b/src/Xrpld.ts @@ -3,10 +3,10 @@ Contains the operations that can are performed by the application. */ import { Client, - Transaction, + SubmittableTransaction, TransactionMetadata, validate, -} from '@transia/xrpl' +} from 'xahau' import { ExecutionUtility } from './keylet-utils' import { appBatchTransaction, @@ -22,7 +22,7 @@ export class Xrpld { if (!params.tx) { throw Error('Missing tx parameter') } - const builtTx = params.tx as Transaction + const builtTx = params.tx as SubmittableTransaction appLogger.debug(JSON.stringify(builtTx)) if (params.debugStream) { const selectedAccount: ISelect | null = { diff --git a/src/keylet-utils/ExecutionUtility.ts b/src/keylet-utils/ExecutionUtility.ts index c4590e6..af79024 100644 --- a/src/keylet-utils/ExecutionUtility.ts +++ b/src/keylet-utils/ExecutionUtility.ts @@ -1,15 +1,7 @@ -import { - Client, - Transaction, - TransactionMetadata, - TxRequest, -} from '@transia/xrpl' +import { Client, Transaction, TransactionMetadata, TxRequest } from 'xahau' import { iHookExecutions } from '../models/iHookExecutions' import { iHookEmittedTxs } from '../models/iHookEmittedTxs' -import { - CreatedNode, - Node, -} from '@transia/xrpl/dist/npm/models/transactions/metadata' +import { CreatedNode, Node } from 'xahau/dist/npm/models/transactions/metadata' function isCreatedNode(node: Node): node is CreatedNode { return Object.prototype.hasOwnProperty.call(node, `CreatedNode`) diff --git a/src/keylet-utils/StateUtility.ts b/src/keylet-utils/StateUtility.ts index f02d6ed..cb844bb 100644 --- a/src/keylet-utils/StateUtility.ts +++ b/src/keylet-utils/StateUtility.ts @@ -1,13 +1,13 @@ -import { Client, LedgerEntryRequest } from '@transia/xrpl' +import { Client, LedgerEntryRequest } from 'xahau' import { Hook as LeHook, HookDefinition as LeHookDefinition, HookState as LeHookState, -} from '@transia/xrpl/dist/npm/models/ledger' +} from 'xahau/dist/npm/models/ledger' import { AccountNamespaceRequest, AccountNamespaceResponse, -} from '@transia/xrpl/dist/npm/models/methods/accountNamespace' +} from 'xahau/dist/npm/models/methods/accountNamespace' export class StateUtility { static async getHook(client: Client, account: string): Promise { @@ -42,7 +42,8 @@ export class StateUtility { static async getHookStateDir( client: Client, account: string, - namespace: string + namespace: string, + limit = 200 ): Promise { if (!client.isConnected()) { throw new Error('xrpl Client is not connected') @@ -51,6 +52,7 @@ export class StateUtility { command: 'account_namespace', account: account, namespace_id: namespace, + limit: limit, } const response = (await client.request(request)) as AccountNamespaceResponse return response.result.namespace_entries as LeHookState[] diff --git a/src/libs/xrpl-helpers/constants.ts b/src/libs/xrpl-helpers/constants.ts index ffb307d..5cbd40f 100644 --- a/src/libs/xrpl-helpers/constants.ts +++ b/src/libs/xrpl-helpers/constants.ts @@ -1,4 +1,4 @@ -import { Wallet } from '@transia/xrpl' +import { Wallet } from 'xahau' // **DO NOT EDIT THESE SEEDS** // They match the seeds in the rippled source test env. diff --git a/src/libs/xrpl-helpers/fundSystem.ts b/src/libs/xrpl-helpers/fundSystem.ts index f24cad5..3dbd00a 100644 --- a/src/libs/xrpl-helpers/fundSystem.ts +++ b/src/libs/xrpl-helpers/fundSystem.ts @@ -1,4 +1,4 @@ -import { AccountSetAsfFlags, Client, Invoke, Wallet } from '@transia/xrpl' +import { AccountSetAsfFlags, Client, Invoke, Wallet } from 'xahau' import { Account, ICXAH, diff --git a/src/libs/xrpl-helpers/setup.ts b/src/libs/xrpl-helpers/setup.ts index 2b3de61..ea3bc31 100644 --- a/src/libs/xrpl-helpers/setup.ts +++ b/src/libs/xrpl-helpers/setup.ts @@ -1,4 +1,4 @@ -import { Client, dropsToXrp, Wallet } from '@transia/xrpl' +import { Client, dropsToXah, Wallet } from 'xahau' import serverUrl from './serverUrl' import { @@ -120,7 +120,7 @@ export async function setupClient( } return connectWithRetry(context.client) .then(async () => { - context.client.networkID = await context.client.getNetworkID() + context.client.networkID = await context.client.networkID await fundSystem(context.client, context.master, context.ic) if ( isGovernance && @@ -133,7 +133,7 @@ export async function setupClient( await burn( context.client, context.master, - Number(dropsToXrp(masterBalance)) - 600000000 + Number(dropsToXah(masterBalance)) - 600000000 ) await initGovernTable(context.client, context.alice, context.master) await setGovernTable(context.client, context.alice, context.elsa) diff --git a/src/libs/xrpl-helpers/tools.ts b/src/libs/xrpl-helpers/tools.ts index ccd9c99..48285b7 100644 --- a/src/libs/xrpl-helpers/tools.ts +++ b/src/libs/xrpl-helpers/tools.ts @@ -5,17 +5,17 @@ import { TrustSet, AccountSet, AccountSetAsfFlags, - xrpToDrops, + xahToDrops, LedgerEntryRequest, AccountInfoRequest, convertStringToHex, - Transaction, OfferCreate, OfferCreateFlags, -} from '@transia/xrpl' -import { IssuedCurrencyAmount } from '@transia/xrpl/dist/npm/models/common' -import { RippleState } from '@transia/xrpl/dist/npm/models/ledger' -import { BaseRequest } from '@transia/xrpl/dist/npm/models/methods/baseMethod' + RandomRequest, + SubmittableTransaction, +} from 'xahau' +import { IssuedCurrencyAmount } from 'xahau/dist/npm/models/common' +import { RippleState } from 'xahau/dist/npm/models/ledger' import { appTransaction } from './transaction' import { appLogger } from '../logger' import { @@ -38,7 +38,9 @@ import { NOT_ACTIVE_WALLET, } from './constants' -const LEDGER_ACCEPT_REQUEST = { command: 'ledger_accept' } as BaseRequest +const LEDGER_ACCEPT_REQUEST = { + command: 'ledger_accept', +} as unknown as RandomRequest export class Account { name: string @@ -119,7 +121,7 @@ export class ICXAH { constructor(value: number) { this.value = value - this.amount = xrpToDrops(value) + this.amount = xahToDrops(value) } } @@ -343,7 +345,7 @@ export async function sell( TransactionType: 'OfferCreate', Account: signer.classicAddress, TakerGets: takerGets, - TakerPays: xrpToDrops(String(rate * uicx.value)), + TakerPays: xahToDrops(String(rate * uicx.value)), Flags: OfferCreateFlags.tfSell, NetworkID: ctx.networkID, } @@ -378,7 +380,7 @@ export async function buy( const builtTx: OfferCreate = { TransactionType: 'OfferCreate', Account: signer.classicAddress, - TakerGets: xrpToDrops(String(rate * uicx.value)), + TakerGets: xahToDrops(String(rate * uicx.value)), TakerPays: takerPays, NetworkID: ctx.networkID, } @@ -433,7 +435,7 @@ export async function burn( const builtTx: AccountSet = { TransactionType: 'AccountSet', Account: account.classicAddress as string, - Fee: xrpToDrops(String(amount)), + Fee: xahToDrops(String(amount)), NetworkID: ctx.networkID, } const response = await appTransaction(ctx, builtTx, account, { @@ -490,18 +492,23 @@ export async function rpcTx( account: Wallet, json: Record ): Promise { - await appTransaction(ctx, json as unknown as Transaction, account, { - hardFail: true, - count: 1, - delayMs: 1000, - }) + await appTransaction( + ctx, + json as unknown as SubmittableTransaction, + account, + { + hardFail: true, + count: 1, + delayMs: 1000, + } + ) } export async function rpc( ctx: Client, json: Record ): Promise { - ctx.request(json as BaseRequest) + ctx.request(json as RandomRequest) } export async function close(ctx: Client): Promise { diff --git a/src/libs/xrpl-helpers/transaction.ts b/src/libs/xrpl-helpers/transaction.ts index 745c65d..7f2bd4e 100644 --- a/src/libs/xrpl-helpers/transaction.ts +++ b/src/libs/xrpl-helpers/transaction.ts @@ -1,5 +1,5 @@ import 'dotenv/config' -import { BaseResponse } from '@transia/xrpl/dist/npm/models/methods/baseMethod' +import { BaseResponse } from 'xahau/dist/npm/models/methods/baseMethod' // import { assert } from 'chai' import omit from 'lodash/omit' import throttle from 'lodash/throttle' @@ -13,8 +13,10 @@ import { unixTimeToRippleTime, TxResponse, TransactionMetadata, -} from '@transia/xrpl' -import { hashSignedTx } from '@transia/xrpl/dist/npm/utils/hashes' + SubmittableTransaction, + ServerStateRequest, +} from 'xahau' +import { hashSignedTx } from 'xahau/dist/npm/utils/hashes' import { appLogger } from '../logger' interface ServerStateRPCResult { @@ -31,7 +33,7 @@ export function generateRandomDestinationTag(): number { } export async function serverStateRPC(client: Client): Promise { - const request = { + const request: ServerStateRequest = { command: 'server_state', } return await client.request(request) @@ -144,7 +146,7 @@ export async function submitTransaction({ retry = { count: 5, delayMs: 1000 }, }: { client: Client - transaction: Transaction + transaction: SubmittableTransaction wallet: Wallet retry?: { count: number @@ -210,6 +212,7 @@ export async function verifySubmittedTransaction( }) // assert(data.result) + // @ts-expect-error - this is defined return data // assert.deepEqual( // omit(data.result, [ @@ -232,7 +235,7 @@ export async function verifySubmittedTransaction( // eslint-disable-next-line max-params -- Test function, many params are needed export async function appTransaction( client: Client, - transaction: Transaction, + transaction: SubmittableTransaction, wallet: Wallet, retry?: { hardFail: boolean | true @@ -299,7 +302,7 @@ export async function appBatchTransaction( // eslint-disable-next-line max-params -- Test function, many params are needed export async function testTransaction( client: Client, - transaction: Transaction, + transaction: SubmittableTransaction, wallet: Wallet, retry?: { hardFail: boolean | true @@ -355,7 +358,7 @@ export async function testTransaction( export async function prodTransactionAndWait( client: Client, - transaction: Transaction, + transaction: SubmittableTransaction, wallet: Wallet, retry?: { hardFail: boolean | true diff --git a/src/models/iHookEmittedTxs.ts b/src/models/iHookEmittedTxs.ts index e9e6edd..52b039b 100644 --- a/src/models/iHookEmittedTxs.ts +++ b/src/models/iHookEmittedTxs.ts @@ -1,4 +1,4 @@ -import { Transaction } from '@transia/xrpl' +import { Transaction } from 'xahau' export class iHookEmittedTxs { txs: Transaction[] diff --git a/src/models/iHookExecutions.ts b/src/models/iHookExecutions.ts index 3ba5d42..3b5abbb 100644 --- a/src/models/iHookExecutions.ts +++ b/src/models/iHookExecutions.ts @@ -1,5 +1,5 @@ -import { convertHexToString } from '@transia/xrpl' -import { HookExecution } from '@transia/xrpl/dist/npm/models/transactions/metadata' +import { convertHexToString } from 'xahau' +import { HookExecution } from 'xahau/dist/npm/models/transactions/metadata' export interface iHookExecution { HookAccount: string diff --git a/src/models/iHookGrantEntry.ts b/src/models/iHookGrantEntry.ts index 618caa3..e99d81b 100644 --- a/src/models/iHookGrantEntry.ts +++ b/src/models/iHookGrantEntry.ts @@ -1,6 +1,6 @@ import { iHookGrantHash } from './iHookGrantHash' import { iHookGrantAuthorize } from './iHookGrantAuthorize' -import { HookGrant } from '@transia/xrpl/dist/npm/models/common' +import { HookGrant } from 'xahau/dist/npm/models/common/xahau' export interface iHookGrant { HookGrantHookHash: string diff --git a/src/models/iHookParamEntry.ts b/src/models/iHookParamEntry.ts index c38dbd7..23f6d5b 100644 --- a/src/models/iHookParamEntry.ts +++ b/src/models/iHookParamEntry.ts @@ -1,6 +1,6 @@ import { iHookParamName } from './iHookParamName' import { iHookParamValue } from './iHookParamValue' -import { HookParameter } from '@transia/xrpl/dist/npm/models/common' +import { HookParameter } from 'xahau/dist/npm/models/common/xahau' export interface iHookParameter { HookParameterName: string diff --git a/src/models/iHookParamName.ts b/src/models/iHookParamName.ts index ebb151b..ae16b11 100644 --- a/src/models/iHookParamName.ts +++ b/src/models/iHookParamName.ts @@ -1,4 +1,4 @@ -import { convertHexToString, convertStringToHex } from '@transia/xrpl' +import { convertHexToString, convertStringToHex } from 'xahau' export class iHookParamName { value: string diff --git a/src/models/iHookParamValue.ts b/src/models/iHookParamValue.ts index 3608fd8..067a418 100644 --- a/src/models/iHookParamValue.ts +++ b/src/models/iHookParamValue.ts @@ -1,4 +1,4 @@ -import { convertHexToString, convertStringToHex } from '@transia/xrpl' +import { convertHexToString, convertStringToHex } from 'xahau' export class iHookParamValue { value: string diff --git a/src/models/iHookState.ts b/src/models/iHookState.ts index 709af25..7f30f4a 100644 --- a/src/models/iHookState.ts +++ b/src/models/iHookState.ts @@ -1,4 +1,4 @@ -import { HookState as LeHookState } from '@transia/xrpl/dist/npm/models/ledger' +import { HookState as LeHookState } from 'xahau/dist/npm/models/ledger' import { iHookStateEntry } from './iHookStateEntry' export class iHookState { diff --git a/src/models/iHookStateData.ts b/src/models/iHookStateData.ts index d83982d..66cf113 100644 --- a/src/models/iHookStateData.ts +++ b/src/models/iHookStateData.ts @@ -1,4 +1,4 @@ -import { convertHexToString, convertStringToHex } from '@transia/xrpl' +import { convertHexToString, convertStringToHex } from 'xahau' export class iHookStateData { data: string diff --git a/src/models/iHookStateEntry.ts b/src/models/iHookStateEntry.ts index 871dabf..8a607b9 100644 --- a/src/models/iHookStateEntry.ts +++ b/src/models/iHookStateEntry.ts @@ -1,4 +1,4 @@ -import { HookState as LeHookState } from '@transia/xrpl/dist/npm/models/ledger' +import { HookState as LeHookState } from 'xahau/dist/npm/models/ledger' import { iHookStateKey } from './iHookStateKey' import { iHookStateData } from './iHookStateData' diff --git a/src/models/iHookStateKey.ts b/src/models/iHookStateKey.ts index 4a70ca4..9399bf6 100644 --- a/src/models/iHookStateKey.ts +++ b/src/models/iHookStateKey.ts @@ -1,4 +1,4 @@ -import { convertHexToString, convertStringToHex } from '@transia/xrpl' +import { convertHexToString, convertStringToHex } from 'xahau' export class iHookStateKey { key: string diff --git a/src/setHooks.ts b/src/setHooks.ts index aedd2ba..36bd107 100644 --- a/src/setHooks.ts +++ b/src/setHooks.ts @@ -4,9 +4,9 @@ import { hexHookParameters, SetHook, SetHookFlags, -} from '@transia/xrpl' +} from 'xahau' import { SetHookParams, iHook } from './types' -import { HookGrant, HookParameter } from '@transia/xrpl/dist/npm/models/common' +import { HookGrant, HookParameter } from 'xahau/dist/npm/models/common/xahau' import { readHookBinaryHexFromNS, hexNamespace } from './utils' import { appTransaction } from './libs/xrpl-helpers/transaction' import { appLogger } from './libs/logger' diff --git a/src/types.ts b/src/types.ts index 68e00d5..ae5739d 100644 --- a/src/types.ts +++ b/src/types.ts @@ -2,13 +2,8 @@ import { Hook, HookGrant, HookParameter, -} from '@transia/xrpl/dist/npm/models/common' -import { - Client, - SetHookFlagsInterface, - Transaction, - Wallet, -} from '@transia/xrpl' +} from 'xahau/dist/npm/models/common/xahau' +import { Client, SetHookFlagsInterface, Transaction, Wallet } from 'xahau' export type iHook = { HookHash?: string diff --git a/src/utils.ts b/src/utils.ts index c68586c..1cc34f4 100644 --- a/src/utils.ts +++ b/src/utils.ts @@ -1,10 +1,7 @@ import fs from 'fs' import path from 'path' import { SHA256 } from 'crypto-js' -import { - TRANSACTION_TYPES, - TRANSACTION_TYPE_MAP, -} from '@transia/ripple-binary-codec' +import { TRANSACTION_TYPES, TRANSACTION_TYPE_MAP } from 'xahau-binary-codec' import { createHash } from 'crypto' export function readHookBinaryHexFromNS(filename: string, ext: string): string { diff --git a/test/integration-c/hooks/toolbox/base.test.ts b/test/integration-c/hooks/toolbox/base.test.ts index d2fc541..68d1306 100644 --- a/test/integration-c/hooks/toolbox/base.test.ts +++ b/test/integration-c/hooks/toolbox/base.test.ts @@ -1,5 +1,5 @@ // xrpl -import { Invoke, SetHookFlags, TransactionMetadata } from '@transia/xrpl' +import { Invoke, SetHookFlags, TransactionMetadata } from 'xahau' import { // Testing XrplIntegrationTestContext, diff --git a/test/integration-c/hooks/toolbox/callback.test.ts b/test/integration-c/hooks/toolbox/callback.test.ts index 2105387..8491e4c 100644 --- a/test/integration-c/hooks/toolbox/callback.test.ts +++ b/test/integration-c/hooks/toolbox/callback.test.ts @@ -7,7 +7,7 @@ import { SetHookFlags, Transaction, TransactionMetadata, -} from '@transia/xrpl' +} from 'xahau' // src import { // Testing diff --git a/test/integration-c/hooks/toolbox/commonMemo.test.ts b/test/integration-c/hooks/toolbox/commonMemo.test.ts index e90a4af..893dde2 100644 --- a/test/integration-c/hooks/toolbox/commonMemo.test.ts +++ b/test/integration-c/hooks/toolbox/commonMemo.test.ts @@ -1,5 +1,5 @@ // xrpl -import { Invoke, SetHookFlags, TransactionMetadata } from '@transia/xrpl' +import { Invoke, SetHookFlags, TransactionMetadata } from 'xahau' import { // Testing XrplIntegrationTestContext, diff --git a/test/integration-c/hooks/toolbox/compareCondition.test.ts b/test/integration-c/hooks/toolbox/compareCondition.test.ts index 3463a07..2800f92 100644 --- a/test/integration-c/hooks/toolbox/compareCondition.test.ts +++ b/test/integration-c/hooks/toolbox/compareCondition.test.ts @@ -1,5 +1,5 @@ // xrpl -import { Invoke, SetHookFlags, TransactionMetadata } from '@transia/xrpl' +import { Invoke, SetHookFlags, TransactionMetadata } from 'xahau' import { // Testing XrplIntegrationTestContext, diff --git a/test/integration-c/hooks/toolbox/filterOnIO.test.ts b/test/integration-c/hooks/toolbox/filterOnIO.test.ts index 579fe67..c4cb734 100644 --- a/test/integration-c/hooks/toolbox/filterOnIO.test.ts +++ b/test/integration-c/hooks/toolbox/filterOnIO.test.ts @@ -1,5 +1,5 @@ // xrpl -import { Invoke, SetHookFlags, TransactionMetadata } from '@transia/xrpl' +import { Invoke, SetHookFlags, TransactionMetadata } from 'xahau' // src import { // Testing diff --git a/test/integration-c/hooks/toolbox/filterOnToken.test.ts b/test/integration-c/hooks/toolbox/filterOnToken.test.ts index 1f7fd0a..69c2733 100644 --- a/test/integration-c/hooks/toolbox/filterOnToken.test.ts +++ b/test/integration-c/hooks/toolbox/filterOnToken.test.ts @@ -1,11 +1,6 @@ // xrpl -import { - Payment, - SetHookFlags, - TransactionMetadata, - xrpToDrops, -} from '@transia/xrpl' -import { IssuedCurrencyAmount } from '@transia/xrpl/dist/npm/models/common' +import { Payment, SetHookFlags, TransactionMetadata, xahToDrops } from 'xahau' +import { IssuedCurrencyAmount } from 'xahau/dist/npm/models/common' // src import { // Testing @@ -95,7 +90,7 @@ describe('filterOnToken', () => { TransactionType: 'Payment', Account: bobWallet.classicAddress, Destination: hookWallet.classicAddress, - Amount: xrpToDrops(1), + Amount: xahToDrops(1), } await Xrpld.submit(testContext.client, { wallet: bobWallet, diff --git a/test/integration-c/hooks/toolbox/filterOnXrp.test.ts b/test/integration-c/hooks/toolbox/filterOnXrp.test.ts index 733ca97..8652070 100644 --- a/test/integration-c/hooks/toolbox/filterOnXrp.test.ts +++ b/test/integration-c/hooks/toolbox/filterOnXrp.test.ts @@ -1,11 +1,6 @@ // xrpl -import { - Payment, - SetHookFlags, - TransactionMetadata, - xrpToDrops, -} from '@transia/xrpl' -import { IssuedCurrencyAmount } from '@transia/xrpl/dist/npm/models/common' +import { Payment, SetHookFlags, TransactionMetadata, xahToDrops } from 'xahau' +import { IssuedCurrencyAmount } from 'xahau/dist/npm/models/common' // src import { // Testing @@ -59,7 +54,7 @@ describe('filterOnXrp', () => { TransactionType: 'Payment', Account: bobWallet.classicAddress, Destination: hookWallet.classicAddress, - Amount: xrpToDrops(1), + Amount: xahToDrops(1), } const result = await Xrpld.submit(testContext.client, { wallet: bobWallet, diff --git a/test/integration-c/hooks/toolbox/floatSubtract.test.ts b/test/integration-c/hooks/toolbox/floatSubtract.test.ts index 2a6246b..0e4af2d 100644 --- a/test/integration-c/hooks/toolbox/floatSubtract.test.ts +++ b/test/integration-c/hooks/toolbox/floatSubtract.test.ts @@ -1,5 +1,5 @@ // xrpl -import { Invoke, SetHookFlags, TransactionMetadata } from '@transia/xrpl' +import { Invoke, SetHookFlags, TransactionMetadata } from 'xahau' import { // Testing XrplIntegrationTestContext, diff --git a/test/integration-c/hooks/toolbox/hookOnTT.test.ts b/test/integration-c/hooks/toolbox/hookOnTT.test.ts index 7fd7e16..89ff677 100644 --- a/test/integration-c/hooks/toolbox/hookOnTT.test.ts +++ b/test/integration-c/hooks/toolbox/hookOnTT.test.ts @@ -1,5 +1,5 @@ // xrpl -import { Invoke, Payment, SetHookFlags, xrpToDrops } from '@transia/xrpl' +import { Invoke, Payment, SetHookFlags, xahToDrops } from 'xahau' // src import { // Testing @@ -81,7 +81,7 @@ describe('hookOnTT', () => { TransactionType: 'Payment', Account: bobWallet.classicAddress, Destination: hookWallet.classicAddress, - Amount: xrpToDrops(1), + Amount: xahToDrops(1), } await Xrpld.submit(testContext.client, { wallet: bobWallet, diff --git a/test/integration-c/hooks/toolbox/numbers.test.ts b/test/integration-c/hooks/toolbox/numbers.test.ts index 5a5077f..ce13164 100644 --- a/test/integration-c/hooks/toolbox/numbers.test.ts +++ b/test/integration-c/hooks/toolbox/numbers.test.ts @@ -1,5 +1,5 @@ // xrpl -import { Invoke, SetHookFlags, TransactionMetadata } from '@transia/xrpl' +import { Invoke, SetHookFlags, TransactionMetadata } from 'xahau' import { // Testing XrplIntegrationTestContext, diff --git a/test/integration-c/hooks/toolbox/paramBasic.test.ts b/test/integration-c/hooks/toolbox/paramBasic.test.ts index 5386023..3c65b7b 100644 --- a/test/integration-c/hooks/toolbox/paramBasic.test.ts +++ b/test/integration-c/hooks/toolbox/paramBasic.test.ts @@ -1,10 +1,5 @@ // xrpl -import { - Payment, - SetHookFlags, - TransactionMetadata, - xrpToDrops, -} from '@transia/xrpl' +import { Payment, SetHookFlags, TransactionMetadata, xahToDrops } from 'xahau' // src import { // Testing @@ -65,7 +60,7 @@ describe('paramBasic', () => { TransactionType: 'Payment', Account: bobWallet.classicAddress, Destination: hookWallet.classicAddress, - Amount: xrpToDrops(10), + Amount: xahToDrops(10), HookParameters: [param1.toXrpl()], } const result = await Xrpld.submit(testContext.client, { diff --git a/test/integration-c/hooks/toolbox/random.test.ts b/test/integration-c/hooks/toolbox/random.test.ts index 66c83e0..5bf174d 100644 --- a/test/integration-c/hooks/toolbox/random.test.ts +++ b/test/integration-c/hooks/toolbox/random.test.ts @@ -1,5 +1,5 @@ // xrpl -import { Invoke, SetHookFlags, TransactionMetadata } from '@transia/xrpl' +import { Invoke, SetHookFlags, TransactionMetadata } from 'xahau' import { // Testing XrplIntegrationTestContext, diff --git a/test/integration-c/hooks/toolbox/stateAdvanced.test.ts b/test/integration-c/hooks/toolbox/stateAdvanced.test.ts index fa9e324..c9cdb5e 100644 --- a/test/integration-c/hooks/toolbox/stateAdvanced.test.ts +++ b/test/integration-c/hooks/toolbox/stateAdvanced.test.ts @@ -1,5 +1,5 @@ // xrpl -import { Invoke, SetHookFlags } from '@transia/xrpl' +import { Invoke, SetHookFlags } from 'xahau' // src import { // Testing diff --git a/test/integration-c/hooks/toolbox/stateBasic.test.ts b/test/integration-c/hooks/toolbox/stateBasic.test.ts index 003c51c..718a5ac 100644 --- a/test/integration-c/hooks/toolbox/stateBasic.test.ts +++ b/test/integration-c/hooks/toolbox/stateBasic.test.ts @@ -1,6 +1,6 @@ // xrpl -import { Invoke, SetHookFlags } from '@transia/xrpl' -import { AccountID, UInt64 } from '@transia/ripple-binary-codec/dist/types' +import { Invoke, SetHookFlags } from 'xahau' +import { AccountID, UInt64 } from 'xahau-binary-codec/dist/types' // src import { // Testing diff --git a/test/integration-c/hooks/toolbox/stateForeignBasic.test.ts b/test/integration-c/hooks/toolbox/stateForeignBasic.test.ts index 431d77b..80a3d88 100644 --- a/test/integration-c/hooks/toolbox/stateForeignBasic.test.ts +++ b/test/integration-c/hooks/toolbox/stateForeignBasic.test.ts @@ -4,9 +4,9 @@ import { LedgerEntryRequest, SetHookFlags, TransactionMetadata, -} from '@transia/xrpl' -import { Hook as LeHook } from '@transia/xrpl/dist/npm/models/ledger' -import { AccountID, UInt64 } from '@transia/ripple-binary-codec/dist/types' +} from 'xahau' +import { Hook as LeHook } from 'xahau/dist/npm/models/ledger' +import { AccountID, UInt64 } from 'xahau-binary-codec/dist/types' // src import { // Testing diff --git a/test/integration-c/hooks/toolbox/stateNumbers.test.ts b/test/integration-c/hooks/toolbox/stateNumbers.test.ts index 539318b..6f36841 100644 --- a/test/integration-c/hooks/toolbox/stateNumbers.test.ts +++ b/test/integration-c/hooks/toolbox/stateNumbers.test.ts @@ -1,5 +1,5 @@ // xrpl -import { Invoke, SetHookFlags } from '@transia/xrpl' +import { Invoke, SetHookFlags } from 'xahau' // src import { // Testing diff --git a/test/integration-c/hooks/toolbox/tsh.test.ts b/test/integration-c/hooks/toolbox/tsh.test.ts index fcad6f8..052201d 100644 --- a/test/integration-c/hooks/toolbox/tsh.test.ts +++ b/test/integration-c/hooks/toolbox/tsh.test.ts @@ -6,7 +6,7 @@ import { SetHookFlags, AccountSetAsfFlags, TransactionMetadata, -} from '@transia/xrpl' +} from 'xahau' // src import { // Testing @@ -24,7 +24,7 @@ import { iHookParamName, iHookParamValue, } from '../../../../dist/npm/src' -import { IssuedCurrencyAmount } from '@transia/xrpl/dist/npm/models/common' +import { IssuedCurrencyAmount } from 'xahau/dist/npm/models/common' describe('tsh', () => { let testContext: XrplIntegrationTestContext diff --git a/test/integration-c/hooks/toolbox/utilSha512.test.ts b/test/integration-c/hooks/toolbox/utilSha512.test.ts index 7e23702..6b7dd44 100644 --- a/test/integration-c/hooks/toolbox/utilSha512.test.ts +++ b/test/integration-c/hooks/toolbox/utilSha512.test.ts @@ -1,12 +1,7 @@ // xrpl -import { - Payment, - SetHookFlags, - TransactionMetadata, - xrpToDrops, -} from '@transia/xrpl' -import { AccountID, Amount } from '@transia/ripple-binary-codec/dist/types' -import { IssuedCurrencyAmount } from '@transia/xrpl/dist/npm/models/common' +import { Payment, SetHookFlags, TransactionMetadata, xahToDrops } from 'xahau' +import { AccountID, Amount } from 'xahau-binary-codec/dist/types' +import { IssuedCurrencyAmount } from 'xahau/dist/npm/models/common' // src import { // Testing @@ -83,7 +78,7 @@ describe('utilSha512', () => { ) const param2 = new iHookParamEntry( new iHookParamName('HAM'), - new iHookParamValue(Amount.from(xrpToDrops(10)).toHex(), true) + new iHookParamValue(Amount.from(xahToDrops(10)).toHex(), true) ) const hookWallet = testContext.hook1 const bobWallet = testContext.bob @@ -91,7 +86,7 @@ describe('utilSha512', () => { TransactionType: 'Payment', Account: hookWallet.classicAddress, Destination: bobWallet.classicAddress, - Amount: xrpToDrops(11), + Amount: xahToDrops(11), HookParameters: [param1.toXrpl(), param2.toXrpl()], } await Xrpld.submit(testContext.client, { @@ -112,7 +107,7 @@ describe('utilSha512', () => { ) const param2 = new iHookParamEntry( new iHookParamName('HAM'), - new iHookParamValue(Amount.from(xrpToDrops(10)).toHex(), true) + new iHookParamValue(Amount.from(xahToDrops(10)).toHex(), true) ) const hookWallet = testContext.hook1 const bobWallet = testContext.bob @@ -120,7 +115,7 @@ describe('utilSha512', () => { TransactionType: 'Payment', Account: hookWallet.classicAddress, Destination: bobWallet.classicAddress, - Amount: xrpToDrops(10), + Amount: xahToDrops(10), HookParameters: [param1.toXrpl(), param2.toXrpl()], } const result = await Xrpld.submit(testContext.client, { diff --git a/test/integration-c/hooks/toolbox/utilVerify.test.ts b/test/integration-c/hooks/toolbox/utilVerify.test.ts index fb031a5..7d71093 100644 --- a/test/integration-c/hooks/toolbox/utilVerify.test.ts +++ b/test/integration-c/hooks/toolbox/utilVerify.test.ts @@ -1,6 +1,6 @@ // xrpl -import { Invoke, SetHookFlags, TransactionMetadata } from '@transia/xrpl' -import { AccountID } from '@transia/ripple-binary-codec/dist/types' +import { Invoke, SetHookFlags, TransactionMetadata } from 'xahau' +import { AccountID } from 'xahau-binary-codec/dist/types' import { sign } from '@transia/ripple-keypairs' // src import { diff --git a/test/integration-c/hooks/txns/accountSet.test.ts b/test/integration-c/hooks/txns/accountSet.test.ts index a612bc4..98d8c25 100644 --- a/test/integration-c/hooks/txns/accountSet.test.ts +++ b/test/integration-c/hooks/txns/accountSet.test.ts @@ -4,7 +4,7 @@ import { SetHookFlags, TransactionMetadata, convertStringToHex, -} from '@transia/xrpl' +} from 'xahau' import { // Testing XrplIntegrationTestContext, diff --git a/test/integration-c/hooks/txns/uritokenMint.test.ts b/test/integration-c/hooks/txns/uritokenMint.test.ts index 01aad83..8e24fef 100644 --- a/test/integration-c/hooks/txns/uritokenMint.test.ts +++ b/test/integration-c/hooks/txns/uritokenMint.test.ts @@ -4,7 +4,7 @@ import { SetHookFlags, TransactionMetadata, convertStringToHex, -} from '@transia/xrpl' +} from 'xahau' // xrpl-helpers import { XrplIntegrationTestContext, diff --git a/test/integration-c/setup/setHook.test.ts b/test/integration-c/setup/setHook.test.ts index 0c7dd16..db832d0 100644 --- a/test/integration-c/setup/setHook.test.ts +++ b/test/integration-c/setup/setHook.test.ts @@ -3,8 +3,8 @@ import { LedgerEntryRequest, SetHookFlags, calculateHookOn, -} from '@transia/xrpl' -import { AccountID, UInt64 } from '@transia/ripple-binary-codec/dist/types' +} from 'xahau' +import { AccountID, UInt64 } from 'xahau-binary-codec/dist/types' // src import { serverUrl, @@ -24,7 +24,7 @@ import { import { HookDefinition as LeHookDefinition, Hook as LeHook, -} from '@transia/xrpl/dist/npm/models/ledger' +} from 'xahau/dist/npm/models/ledger' import { flipHex } from '@transia/binary-models' // TEST WITH DELTA/DEFAULT PARAMS - HookHash diff --git a/test/integration-js/hooks/toolbox/base.test.ts b/test/integration-js/hooks/toolbox/base.test.ts index ded5dc1..f0d9f0d 100644 --- a/test/integration-js/hooks/toolbox/base.test.ts +++ b/test/integration-js/hooks/toolbox/base.test.ts @@ -1,10 +1,5 @@ // xrpl -import { - Invoke, - Payment, - SetHookFlags, - TransactionMetadata, -} from '@transia/xrpl' +import { Invoke, Payment, SetHookFlags, TransactionMetadata } from 'xahau' // xrpl-helpers import { XrplIntegrationTestContext, diff --git a/test/integration-js/hooks/toolbox/compareCondition.js.test.ts b/test/integration-js/hooks/toolbox/compareCondition.js.test.ts index d405bf0..ba4cdc6 100644 --- a/test/integration-js/hooks/toolbox/compareCondition.js.test.ts +++ b/test/integration-js/hooks/toolbox/compareCondition.js.test.ts @@ -1,5 +1,5 @@ // xrpl -import { Invoke, SetHookFlags, TransactionMetadata } from '@transia/xrpl' +import { Invoke, SetHookFlags, TransactionMetadata } from 'xahau' import { // Testing XrplIntegrationTestContext, diff --git a/test/integration-js/hooks/toolbox/hookOnTT.js.test.ts b/test/integration-js/hooks/toolbox/hookOnTT.js.test.ts index 2cb7830..03cb9b9 100644 --- a/test/integration-js/hooks/toolbox/hookOnTT.js.test.ts +++ b/test/integration-js/hooks/toolbox/hookOnTT.js.test.ts @@ -1,5 +1,5 @@ // xrpl -import { Invoke, Payment, SetHookFlags, xrpToDrops } from '@transia/xrpl' +import { Invoke, Payment, SetHookFlags, xahToDrops } from 'xahau' // xrpl-helpers import { XrplIntegrationTestContext, @@ -84,7 +84,7 @@ describe('hookOnTT', () => { TransactionType: 'Payment', Account: bobWallet.classicAddress, Destination: hookWallet.classicAddress, - Amount: xrpToDrops(1), + Amount: xahToDrops(1), } await Xrpld.submit(testContext.client, { wallet: bobWallet, diff --git a/test/integration-js/hooks/toolbox/redirect.test.ts b/test/integration-js/hooks/toolbox/redirect.test.ts new file mode 100644 index 0000000..00317c8 --- /dev/null +++ b/test/integration-js/hooks/toolbox/redirect.test.ts @@ -0,0 +1,99 @@ +// xrpl +import { Invoke, Payment, SetHookFlags, TransactionMetadata } from 'xahau' +// xrpl-helpers +import { + XrplIntegrationTestContext, + setupClient, + teardownClient, + serverUrl, + close, +} from '../../../../src/libs/xrpl-helpers' +import { + Xrpld, + SetHookParams, + ExecutionUtility, + createHookPayload, + setHooksV3, + padHexString, + clearAllHooksV3, +} from '../../../../dist/npm/src' + +import { xrpAddressToHex } from '@transia/binary-models' + +export const execInvoke = async (testContext: XrplIntegrationTestContext) => { + const aliceWallet = testContext.alice + const hookWallet = testContext.hook1 + const builtTx: Invoke = { + TransactionType: 'Invoke', + Account: aliceWallet.classicAddress, + Destination: hookWallet.classicAddress, + } + const result = await Xrpld.submit(testContext.client, { + wallet: aliceWallet, + tx: builtTx, + }) + const hookExecutions = await ExecutionUtility.getHookExecutionsFromMeta( + testContext.client, + result.meta as TransactionMetadata + ) + expect(hookExecutions.executions[0].HookReturnString).toMatch( + 'base: Finished.' + ) +} +export const execPayment = async (testContext: XrplIntegrationTestContext) => { + const aliceWallet = testContext.alice + const hookWallet = testContext.hook1 + const builtTx: Payment = { + TransactionType: 'Payment', + Account: aliceWallet.classicAddress, + Destination: hookWallet.classicAddress, + Amount: '1', + InvoiceID: padHexString(xrpAddressToHex(hookWallet.classicAddress)), + } + const result = await Xrpld.submit(testContext.client, { + wallet: aliceWallet, + tx: builtTx, + }) + const hookExecutions = await ExecutionUtility.getHookExecutionsFromMeta( + testContext.client, + result.meta as TransactionMetadata + ) + // expect(hookExecutions.executions[0].HookReturnString).toMatch( + // 'base: Finished.' + // ) + expect(hookExecutions.executions[0].HookReturnString).toMatch('') +} + +describe('base', () => { + let testContext: XrplIntegrationTestContext + + beforeAll(async () => { + testContext = await setupClient(serverUrl) + const hook = createHookPayload({ + version: 1, + createFile: 'redirect', + namespace: 'redirect', + flags: SetHookFlags.hsfOverride, + hookOnArray: ['Invoke', 'Payment'], + fee: '100', + }) + await setHooksV3({ + client: testContext.client, + seed: testContext.hook1.seed, + hooks: [{ Hook: hook }], + } as SetHookParams) + }) + afterAll(async () => { + await clearAllHooksV3({ + client: testContext.client, + seed: testContext.hook1.seed, + } as SetHookParams) + await teardownClient(testContext) + }) + + it('basic hook', async () => { + // await execInvoke(testContext) + await execPayment(testContext) + await close(testContext.client) + }) +}) diff --git a/test/integration-js/setup/setHook.test.ts b/test/integration-js/setup/setHook.test.ts index 70377aa..76be435 100644 --- a/test/integration-js/setup/setHook.test.ts +++ b/test/integration-js/setup/setHook.test.ts @@ -3,8 +3,8 @@ import { LedgerEntryRequest, SetHookFlags, calculateHookOn, -} from '@transia/xrpl' -// import { AccountID, UInt64 } from '@transia/ripple-binary-codec/dist/types' +} from 'xahau' +// import { AccountID, UInt64 } from 'xahau-binary-codec/dist/types' // xrpl-helpers import { serverUrl, @@ -28,7 +28,7 @@ import { flipHex } from '@transia/binary-models' import { HookDefinition as LeHookDefinition, Hook as LeHook, -} from '@transia/xrpl/dist/npm/models/ledger' +} from 'xahau/dist/npm/models/ledger' // describe('SetHook - End to End', () => { // let testContext: XrplIntegrationTestContext diff --git a/yarn.lock b/yarn.lock index c2c72bc..5efc876 100644 --- a/yarn.lock +++ b/yarn.lock @@ -622,16 +622,18 @@ "@jridgewell/resolve-uri" "^3.1.0" "@jridgewell/sourcemap-codec" "^1.4.14" -"@noble/hashes@^1.0.0": +"@noble/curves@^1.0.0", "@noble/curves@~1.8.1": + version "1.8.1" + resolved "https://registry.yarnpkg.com/@noble/curves/-/curves-1.8.1.tgz#19bc3970e205c99e4bdb1c64a4785706bce497ff" + integrity sha512-warwspo+UYUPep0Q+vtdVB4Ugn8GGQj8iyB3gnRWsztmUHTI3S1nhdiWNsPUGL0vud7JlRRk1XEu7Lq1KGTnMQ== + dependencies: + "@noble/hashes" "1.7.1" + +"@noble/hashes@1.7.1", "@noble/hashes@^1.0.0", "@noble/hashes@~1.7.1": version "1.7.1" resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.7.1.tgz#5738f6d765710921e7a751e00c20ae091ed8db0f" integrity sha512-B8XBPsn4vT/KJAGqDzbwztd+6Yte3P4V7iafm24bxgDe/mlRuK6xmWPuCNrKt2vDafZ8MfJLlchDG/vYafQEjQ== -"@noble/hashes@^1.2.0": - version "1.3.2" - resolved "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.2.tgz" - integrity sha512-MVC8EAQp7MvEcm30KWENFjgR+Mkmf+D189XJTkFIlwohU5hcBbn1ZkKq7KVTi2Hme3PMGF390DaL52beVrIihQ== - "@nodelib/fs.scandir@2.1.5": version "2.1.5" resolved "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz" @@ -665,11 +667,28 @@ picocolors "^1.0.0" tslib "^2.6.0" -"@scure/base@^1.1.3": +"@scure/base@^1.1.3", "@scure/base@~1.2.2", "@scure/base@~1.2.4": version "1.2.4" resolved "https://registry.yarnpkg.com/@scure/base/-/base-1.2.4.tgz#002eb571a35d69bdb4c214d0995dff76a8dcd2a9" integrity sha512-5Yy9czTO47mqz+/J8GM6GIId4umdCk1wc1q8rKERQulIoc8VP9pzDcghv10Tl2E7R96ZUx/PhND3ESYUQX8NuQ== +"@scure/bip32@^1.3.1": + version "1.6.2" + resolved "https://registry.yarnpkg.com/@scure/bip32/-/bip32-1.6.2.tgz#093caa94961619927659ed0e711a6e4bf35bffd0" + integrity sha512-t96EPDMbtGgtb7onKKqxRLfE5g05k7uHnHRM2xdE6BP/ZmxaLtPek4J4KfVn/90IQNrU1IOAqMgiDtUdtbe3nw== + dependencies: + "@noble/curves" "~1.8.1" + "@noble/hashes" "~1.7.1" + "@scure/base" "~1.2.2" + +"@scure/bip39@^1.2.1": + version "1.5.4" + resolved "https://registry.yarnpkg.com/@scure/bip39/-/bip39-1.5.4.tgz#07fd920423aa671be4540d59bdd344cc1461db51" + integrity sha512-TFM4ni0vKvCfBpohoh+/lY05i9gRbSwXWngAsF4CABQxoaOHijxuaZ2R6cStDQ5CHtHO9aGJTr4ksVJASRRyMA== + dependencies: + "@noble/hashes" "~1.7.1" + "@scure/base" "~1.2.4" + "@sinclair/typebox@^0.27.8": version "0.27.8" resolved "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz" @@ -698,37 +717,6 @@ ripple-address-codec "^5.0.0" winston "^3.10.0" -"@transia/ripple-address-codec@^4.2.8-alpha.0": - version "4.2.8-alpha.0" - resolved "https://registry.npmjs.org/@transia/ripple-address-codec/-/ripple-address-codec-4.2.8-alpha.0.tgz" - integrity sha512-sTLuxhqicIDIaWO7U53FePpT1DfTP6VfcIRbvuzw9lQVB5JZZG2ZK25GHAuaubTy/iXGjpXusxfAowNDhruRww== - dependencies: - base-x "^3.0.9" - create-hash "^1.1.2" - -"@transia/ripple-binary-codec@^1.4.6-alpha.10": - version "1.4.6-alpha.10" - resolved "https://registry.yarnpkg.com/@transia/ripple-binary-codec/-/ripple-binary-codec-1.4.6-alpha.10.tgz#25bfe1a9ee014ec0feeb7ff444d96de0a7b684d2" - integrity sha512-rMF+ii2SOtSZ4WeENwPZIDNYd6milCnKr6g00d1pE1zt5Ue8nXKOncJOf1nr4gE4mtjBcfuOy6+PgKc1+ygihA== - dependencies: - "@transia/ripple-address-codec" "^4.2.8-alpha.0" - assert "^2.0.0" - big-integer "^1.6.48" - buffer "5.6.0" - create-hash "^1.2.0" - decimal.js "^10.2.0" - -"@transia/ripple-keypairs@^1.1.8-alpha.0": - version "1.1.8-alpha.0" - resolved "https://registry.npmjs.org/@transia/ripple-keypairs/-/ripple-keypairs-1.1.8-alpha.0.tgz" - integrity sha512-aU6sLozefJfrVZ8emYvUFIG6sxcYqRxGo7KzpLtoNgQVR2t8SoqlBoeV8qDH2ux7YXOwIbAvSZlN7WMlexXX+Q== - dependencies: - "@transia/ripple-address-codec" "^4.2.8-alpha.0" - bn.js "^5.1.1" - brorand "^1.0.5" - elliptic "^6.5.4" - hash.js "^1.0.3" - "@transia/xahau-models@^2.7.3-alpha.29": version "2.7.3-alpha.29" resolved "https://registry.yarnpkg.com/@transia/xahau-models/-/xahau-models-2.7.3-alpha.29.tgz#17f28e5ed37d6ae4b9bbc9215b0843afb6fab677" @@ -738,21 +726,6 @@ ts-node "^10.9.1" typescript "^5.1.6" -"@transia/xrpl@^2.7.3-alpha.28": - version "2.7.3-alpha.28" - resolved "https://registry.yarnpkg.com/@transia/xrpl/-/xrpl-2.7.3-alpha.28.tgz#e1b8e941432f29fefd461fa9cba5092c105f62cc" - integrity sha512-Ox0JwpXa0pTIELMGqSQItMGM4JWWG/cMw7bceHrBBdNQtFP82edcD1o8vdApYZnezzbHMoITE/yz9IQ2q9Of/g== - dependencies: - "@transia/ripple-address-codec" "^4.2.8-alpha.0" - "@transia/ripple-binary-codec" "^1.4.6-alpha.10" - "@transia/ripple-keypairs" "^1.1.8-alpha.0" - bignumber.js "^9.0.0" - bip32 "^2.0.6" - bip39 "^3.0.4" - https-proxy-agent "^5.0.0" - lodash "^4.17.4" - ws "^8.2.2" - "@tsconfig/node10@^1.0.7": version "1.0.9" resolved "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz" @@ -865,11 +838,6 @@ resolved "https://registry.npmjs.org/@types/node/-/node-20.5.6.tgz" integrity sha512-Gi5wRGPbbyOTX+4Y2iULQ27oUPrefaB0PxGQJnfyWN3kvEDGM3mIB5M/gQLmitZf7A9FmLeaqxD3L1CXpm3VKQ== -"@types/node@10.12.18": - version "10.12.18" - resolved "https://registry.npmjs.org/@types/node/-/node-10.12.18.tgz" - integrity sha512-fh+pAqt4xRzPfqA6eh3Z2y6fyZavRIumvjhaCL753+TVkGKGhpPeyrJG2JftD0T9q4GF00KjefsQ+PQNDdWQaQ== - "@types/node@^20.4.2": version "20.16.1" resolved "https://registry.yarnpkg.com/@types/node/-/node-20.16.1.tgz#0b44b15271d0e2191ca68faf1fbe506e06aed732" @@ -997,6 +965,14 @@ eventemitter3 "5.0.1" ws "^8.13.0" +"@xrplf/secret-numbers@^1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@xrplf/secret-numbers/-/secret-numbers-1.0.0.tgz#cc19ff84236cc2737b38f2e42a29924f2b8ffc0e" + integrity sha512-qsCLGyqe1zaq9j7PZJopK+iGTGRbk6akkg6iZXJJgxKwck0C5x5Gnwlb1HKYGOwPKyrXWpV6a2YmcpNpUFctGg== + dependencies: + "@xrplf/isomorphic" "^1.0.0" + ripple-keypairs "^2.0.0" + acorn-jsx@^5.3.2: version "5.3.2" resolved "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz" @@ -1012,13 +988,6 @@ acorn@^8.4.1, acorn@^8.9.0: resolved "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz" integrity sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw== -agent-base@6: - version "6.0.2" - resolved "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz" - integrity sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ== - dependencies: - debug "4" - ajv@^6.12.4: version "6.12.6" resolved "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz" @@ -1090,26 +1059,11 @@ array-union@^2.1.0: resolved "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz" integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== -assert@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/assert/-/assert-2.0.0.tgz" - integrity sha512-se5Cd+js9dXJnu6Ag2JFc00t+HmHOen+8Q+L7O9zI0PqQXr20uk2J0XQqMxZEeo5U50o8Nvmmx7dZrl+Ufr35A== - dependencies: - es6-object-assign "^1.1.0" - is-nan "^1.2.1" - object-is "^1.0.1" - util "^0.12.0" - async@^3.2.3: version "3.2.4" resolved "https://registry.npmjs.org/async/-/async-3.2.4.tgz" integrity sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ== -available-typed-arrays@^1.0.5: - version "1.0.5" - resolved "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz" - integrity sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw== - babel-jest@^29.6.4: version "29.6.4" resolved "https://registry.npmjs.org/babel-jest/-/babel-jest-29.6.4.tgz" @@ -1175,19 +1129,7 @@ balanced-match@^1.0.0: resolved "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz" integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== -base-x@^3.0.2, base-x@^3.0.9: - version "3.0.9" - resolved "https://registry.npmjs.org/base-x/-/base-x-3.0.9.tgz" - integrity sha512-H7JU6iBHTal1gp56aKoaa//YUxEaAOUiydvrV/pILqIHXTtqxSkATOnDA2u+jZ/61sD+L/412+7kzXRtWukhpQ== - dependencies: - safe-buffer "^5.0.1" - -base64-js@^1.0.2: - version "1.5.1" - resolved "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz" - integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== - -big-integer@^1.6.44, big-integer@^1.6.48: +big-integer@^1.6.44: version "1.6.51" resolved "https://registry.npmjs.org/big-integer/-/big-integer-1.6.51.tgz" integrity sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg== @@ -1197,43 +1139,6 @@ bignumber.js@^9.0.0: resolved "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.1.1.tgz" integrity sha512-pHm4LsMJ6lzgNGVfZHjMoO8sdoRhOzOH4MLmY65Jg70bpxCKu5iOHNJyfF6OyvYw7t8Fpf35RuzUyqnQsj8Vig== -bindings@^1.3.0: - version "1.5.0" - resolved "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz" - integrity sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ== - dependencies: - file-uri-to-path "1.0.0" - -bip32@^2.0.6: - version "2.0.6" - resolved "https://registry.npmjs.org/bip32/-/bip32-2.0.6.tgz" - integrity sha512-HpV5OMLLGTjSVblmrtYRfFFKuQB+GArM0+XP8HGWfJ5vxYBqo+DesvJwOdC2WJ3bCkZShGf0QIfoIpeomVzVdA== - dependencies: - "@types/node" "10.12.18" - bs58check "^2.1.1" - create-hash "^1.2.0" - create-hmac "^1.1.7" - tiny-secp256k1 "^1.1.3" - typeforce "^1.11.5" - wif "^2.0.6" - -bip39@^3.0.4: - version "3.1.0" - resolved "https://registry.npmjs.org/bip39/-/bip39-3.1.0.tgz" - integrity sha512-c9kiwdk45Do5GL0vJMe7tS95VjCii65mYAH7DfWl3uW8AVzXKQVUm64i3hzVybBDMp9r7j9iNxR85+ul8MdN/A== - dependencies: - "@noble/hashes" "^1.2.0" - -bn.js@^4.11.8, bn.js@^4.11.9: - version "4.12.0" - resolved "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz" - integrity sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA== - -bn.js@^5.1.1: - version "5.2.1" - resolved "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz" - integrity sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ== - bplist-parser@^0.2.0: version "0.2.0" resolved "https://registry.npmjs.org/bplist-parser/-/bplist-parser-0.2.0.tgz" @@ -1256,11 +1161,6 @@ braces@^3.0.2: dependencies: fill-range "^7.0.1" -brorand@^1.0.5, brorand@^1.1.0: - version "1.1.0" - resolved "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz" - integrity sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w== - browserslist@^4.21.9: version "4.21.10" resolved "https://registry.npmjs.org/browserslist/-/browserslist-4.21.10.tgz" @@ -1278,22 +1178,6 @@ bs-logger@0.x: dependencies: fast-json-stable-stringify "2.x" -bs58@^4.0.0: - version "4.0.1" - resolved "https://registry.npmjs.org/bs58/-/bs58-4.0.1.tgz" - integrity sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw== - dependencies: - base-x "^3.0.2" - -bs58check@<3.0.0, bs58check@^2.1.1: - version "2.1.2" - resolved "https://registry.npmjs.org/bs58check/-/bs58check-2.1.2.tgz" - integrity sha512-0TS1jicxdU09dwJMNZtVAfzPi6Q6QeN0pM1Fkzrjn+XYHvzMKPU3pHVpva+769iNVSfIYWf7LJ6WR+BuuMf8cA== - dependencies: - bs58 "^4.0.0" - create-hash "^1.1.0" - safe-buffer "^5.1.2" - bser@2.1.1: version "2.1.1" resolved "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz" @@ -1306,14 +1190,6 @@ buffer-from@^1.0.0: resolved "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz" integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== -buffer@5.6.0: - version "5.6.0" - resolved "https://registry.npmjs.org/buffer/-/buffer-5.6.0.tgz" - integrity sha512-/gDYp/UtU0eA1ys8bOs9J6a+E/KWIY+DZ+Q2WESNUA0jFRsJOc0SNUO6xJ5SGA1xueg3NL65W6s+NY5l9cunuw== - dependencies: - base64-js "^1.0.2" - ieee754 "^1.1.4" - bundle-name@^3.0.0: version "3.0.0" resolved "https://registry.npmjs.org/bundle-name/-/bundle-name-3.0.0.tgz" @@ -1321,14 +1197,6 @@ bundle-name@^3.0.0: dependencies: run-applescript "^5.0.0" -call-bind@^1.0.0, call-bind@^1.0.2: - version "1.0.2" - resolved "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz" - integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA== - dependencies: - function-bind "^1.1.1" - get-intrinsic "^1.0.2" - callsites@^3.0.0: version "3.1.0" resolved "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz" @@ -1376,14 +1244,6 @@ ci-info@^3.2.0: resolved "https://registry.npmjs.org/ci-info/-/ci-info-3.8.0.tgz" integrity sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw== -cipher-base@^1.0.1, cipher-base@^1.0.3: - version "1.0.4" - resolved "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz" - integrity sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q== - dependencies: - inherits "^2.0.1" - safe-buffer "^5.0.1" - cjs-module-lexer@^1.0.0: version "1.2.3" resolved "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.3.tgz" @@ -1471,29 +1331,6 @@ convert-source-map@^2.0.0: resolved "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz" integrity sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg== -create-hash@^1.1.0, create-hash@^1.1.2, create-hash@^1.2.0: - version "1.2.0" - resolved "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz" - integrity sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg== - dependencies: - cipher-base "^1.0.1" - inherits "^2.0.1" - md5.js "^1.3.4" - ripemd160 "^2.0.1" - sha.js "^2.4.0" - -create-hmac@^1.1.7: - version "1.1.7" - resolved "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz" - integrity sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg== - dependencies: - cipher-base "^1.0.3" - create-hash "^1.1.0" - inherits "^2.0.1" - ripemd160 "^2.0.0" - safe-buffer "^5.0.1" - sha.js "^2.4.8" - create-require@^1.1.0: version "1.1.1" resolved "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz" @@ -1513,18 +1350,13 @@ crypto-js@^4.1.1: resolved "https://registry.npmjs.org/crypto-js/-/crypto-js-4.1.1.tgz" integrity sha512-o2JlM7ydqd3Qk9CA0L4NL6mTzU2sdx96a+oOfPu8Mkl/PK51vSyoi8/rQ8NknZtk44vq15lmhAj9CIAGwgeWKw== -debug@4, debug@^4.1.0, debug@^4.1.1, debug@^4.3.2, debug@^4.3.4: +debug@^4.1.0, debug@^4.1.1, debug@^4.3.2, debug@^4.3.4: version "4.3.4" resolved "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz" integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== dependencies: ms "2.1.2" -decimal.js@^10.2.0: - version "10.4.3" - resolved "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.3.tgz" - integrity sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA== - dedent@^1.0.0: version "1.5.1" resolved "https://registry.npmjs.org/dedent/-/dedent-1.5.1.tgz" @@ -1563,14 +1395,6 @@ define-lazy-prop@^3.0.0: resolved "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz" integrity sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg== -define-properties@^1.1.3: - version "1.2.0" - resolved "https://registry.npmjs.org/define-properties/-/define-properties-1.2.0.tgz" - integrity sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA== - dependencies: - has-property-descriptors "^1.0.0" - object-keys "^1.1.1" - detect-newline@^3.0.0: version "3.1.0" resolved "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz" @@ -1610,19 +1434,6 @@ electron-to-chromium@^1.4.477: resolved "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.502.tgz" integrity sha512-xqeGw3Gr6o3uyHy/yKjdnDQHY2RQvXcGC2cfHjccK1IGkH6cX1WQBN8EeC/YpwPhGkBaikDTecJ8+ssxSVRQlw== -elliptic@^6.4.0, elliptic@^6.5.4: - version "6.5.4" - resolved "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz" - integrity sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ== - dependencies: - bn.js "^4.11.9" - brorand "^1.1.0" - hash.js "^1.0.0" - hmac-drbg "^1.0.1" - inherits "^2.0.4" - minimalistic-assert "^1.0.1" - minimalistic-crypto-utils "^1.0.1" - emittery@^0.13.1: version "0.13.1" resolved "https://registry.npmjs.org/emittery/-/emittery-0.13.1.tgz" @@ -1645,11 +1456,6 @@ error-ex@^1.3.1: dependencies: is-arrayish "^0.2.1" -es6-object-assign@^1.1.0: - version "1.1.0" - resolved "https://registry.npmjs.org/es6-object-assign/-/es6-object-assign-1.1.0.tgz" - integrity sha512-MEl9uirslVwqQU369iHNWZXsI8yaZYGg/D65aOgZkeyFJwHYSxilf7rQzXKI7DdDuBPrBXbfk3sl9hJhmd5AUw== - escalade@^3.1.1: version "3.1.1" resolved "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz" @@ -1790,7 +1596,7 @@ esutils@^2.0.2: resolved "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz" integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== -eventemitter3@5.0.1: +eventemitter3@5.0.1, eventemitter3@^5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-5.0.1.tgz#53f5ffd0a492ac800721bb42c66b841de96423c4" integrity sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA== @@ -1898,11 +1704,6 @@ file-entry-cache@^6.0.1: dependencies: flat-cache "^3.0.4" -file-uri-to-path@1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz" - integrity sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw== - fill-range@^7.0.1: version "7.0.1" resolved "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz" @@ -1944,13 +1745,6 @@ fn.name@1.x.x: resolved "https://registry.npmjs.org/fn.name/-/fn.name-1.1.0.tgz" integrity sha512-GRnmB5gPyJpAhTQdSZTSp9uaPSvl09KoYcMQtsB9rQoOmzs9dH6ffeccH+Z+cv6P68Hu5bC6JjRh4Ah/mHSNRw== -for-each@^0.3.3: - version "0.3.3" - resolved "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz" - integrity sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw== - dependencies: - is-callable "^1.1.3" - fs.realpath@^1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz" @@ -1976,16 +1770,6 @@ get-caller-file@^2.0.5: resolved "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz" integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== -get-intrinsic@^1.0.2, get-intrinsic@^1.1.1, get-intrinsic@^1.1.3: - version "1.2.1" - resolved "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz" - integrity sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw== - dependencies: - function-bind "^1.1.1" - has "^1.0.3" - has-proto "^1.0.1" - has-symbols "^1.0.3" - get-package-type@^0.1.0: version "0.1.0" resolved "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz" @@ -2046,13 +1830,6 @@ globby@^11.1.0: merge2 "^1.4.1" slash "^3.0.0" -gopd@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz" - integrity sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA== - dependencies: - get-intrinsic "^1.1.3" - graceful-fs@^4.2.9: version "4.2.11" resolved "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz" @@ -2073,30 +1850,6 @@ has-flag@^4.0.0: resolved "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz" integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== -has-property-descriptors@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz" - integrity sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ== - dependencies: - get-intrinsic "^1.1.1" - -has-proto@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz" - integrity sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg== - -has-symbols@^1.0.2, has-symbols@^1.0.3: - version "1.0.3" - resolved "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz" - integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A== - -has-tostringtag@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz" - integrity sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ== - dependencies: - has-symbols "^1.0.2" - has@^1.0.3: version "1.0.3" resolved "https://registry.npmjs.org/has/-/has-1.0.3.tgz" @@ -2104,45 +1857,11 @@ has@^1.0.3: dependencies: function-bind "^1.1.1" -hash-base@^3.0.0: - version "3.1.0" - resolved "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz" - integrity sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA== - dependencies: - inherits "^2.0.4" - readable-stream "^3.6.0" - safe-buffer "^5.2.0" - -hash.js@^1.0.0, hash.js@^1.0.3: - version "1.1.7" - resolved "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz" - integrity sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA== - dependencies: - inherits "^2.0.3" - minimalistic-assert "^1.0.1" - -hmac-drbg@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz" - integrity sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg== - dependencies: - hash.js "^1.0.3" - minimalistic-assert "^1.0.0" - minimalistic-crypto-utils "^1.0.1" - html-escaper@^2.0.0: version "2.0.2" resolved "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz" integrity sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg== -https-proxy-agent@^5.0.0: - version "5.0.1" - resolved "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz" - integrity sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA== - dependencies: - agent-base "6" - debug "4" - human-signals@^2.1.0: version "2.1.0" resolved "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz" @@ -2153,11 +1872,6 @@ human-signals@^4.3.0: resolved "https://registry.npmjs.org/human-signals/-/human-signals-4.3.1.tgz" integrity sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ== -ieee754@^1.1.4: - version "1.2.1" - resolved "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz" - integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== - ignore@^5.2.0: version "5.2.4" resolved "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz" @@ -2192,19 +1906,11 @@ inflight@^1.0.4: once "^1.3.0" wrappy "1" -inherits@2, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4: +inherits@2, inherits@^2.0.3: version "2.0.4" resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== -is-arguments@^1.0.4: - version "1.1.1" - resolved "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz" - integrity sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA== - dependencies: - call-bind "^1.0.2" - has-tostringtag "^1.0.0" - is-arrayish@^0.2.1: version "0.2.1" resolved "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz" @@ -2215,11 +1921,6 @@ is-arrayish@^0.3.1: resolved "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz" integrity sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ== -is-callable@^1.1.3: - version "1.2.7" - resolved "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz" - integrity sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA== - is-core-module@^2.13.0: version "2.13.0" resolved "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.0.tgz" @@ -2252,13 +1953,6 @@ is-generator-fn@^2.0.0: resolved "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz" integrity sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ== -is-generator-function@^1.0.7: - version "1.0.10" - resolved "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz" - integrity sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A== - dependencies: - has-tostringtag "^1.0.0" - is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3: version "4.0.3" resolved "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz" @@ -2273,14 +1967,6 @@ is-inside-container@^1.0.0: dependencies: is-docker "^3.0.0" -is-nan@^1.2.1: - version "1.3.2" - resolved "https://registry.npmjs.org/is-nan/-/is-nan-1.3.2.tgz" - integrity sha512-E+zBKpQ2t6MEo1VsonYmluk9NxGrbzpeeLC2xIViuO2EjU2xsXsBPwTr3Ykv9l08UYEVEdWeRZNouaZqF6RN0w== - dependencies: - call-bind "^1.0.0" - define-properties "^1.1.3" - is-number@^7.0.0: version "7.0.0" resolved "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz" @@ -2301,13 +1987,6 @@ is-stream@^3.0.0: resolved "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz" integrity sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA== -is-typed-array@^1.1.3: - version "1.1.12" - resolved "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.12.tgz" - integrity sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg== - dependencies: - which-typed-array "^1.1.11" - is-wsl@^2.2.0: version "2.2.0" resolved "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz" @@ -2836,11 +2515,6 @@ lodash.merge@^4.6.2: resolved "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz" integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== -lodash@^4.17.4: - version "4.17.21" - resolved "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz" - integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== - logform@^2.3.2, logform@^2.4.0: version "2.5.1" resolved "https://registry.npmjs.org/logform/-/logform-2.5.1.tgz" @@ -2886,15 +2560,6 @@ makeerror@1.0.12: dependencies: tmpl "1.0.5" -md5.js@^1.3.4: - version "1.3.5" - resolved "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz" - integrity sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg== - dependencies: - hash-base "^3.0.0" - inherits "^2.0.1" - safe-buffer "^5.1.2" - merge-stream@^2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz" @@ -2923,16 +2588,6 @@ mimic-fn@^4.0.0: resolved "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz" integrity sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw== -minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz" - integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== - -minimalistic-crypto-utils@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz" - integrity sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg== - minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2: version "3.1.2" resolved "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz" @@ -2950,11 +2605,6 @@ ms@^2.1.1: resolved "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz" integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== -nan@^2.13.2: - version "2.17.0" - resolved "https://registry.npmjs.org/nan/-/nan-2.17.0.tgz" - integrity sha512-2ZTgtl0nJsO0KQCjEpxcIr5D+Yv90plTitZt9JBfQvVJDS5seMl3FOvsh3+9CoYWXf/1l5OaZzzF6nDm4cagaQ== - natural-compare-lite@^1.4.0: version "1.4.0" resolved "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz" @@ -2994,19 +2644,6 @@ npm-run-path@^5.1.0: dependencies: path-key "^4.0.0" -object-is@^1.0.1: - version "1.1.5" - resolved "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz" - integrity sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - -object-keys@^1.1.1: - version "1.1.1" - resolved "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz" - integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== - once@^1.3.0: version "1.4.0" resolved "https://registry.npmjs.org/once/-/once-1.4.0.tgz" @@ -3275,14 +2912,6 @@ rimraf@^3.0.2: dependencies: glob "^7.1.3" -ripemd160@^2.0.0, ripemd160@^2.0.1: - version "2.0.2" - resolved "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz" - integrity sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA== - dependencies: - hash-base "^3.0.0" - inherits "^2.0.1" - ripple-address-codec@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/ripple-address-codec/-/ripple-address-codec-5.0.0.tgz#97059f7bba6f9ed7a52843de8aa427723fb529f6" @@ -3291,6 +2920,15 @@ ripple-address-codec@^5.0.0: "@scure/base" "^1.1.3" "@xrplf/isomorphic" "^1.0.0" +ripple-keypairs@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ripple-keypairs/-/ripple-keypairs-2.0.0.tgz#4a1a8142e9a58c07e61b3cc6cfe7317db718d289" + integrity sha512-b5rfL2EZiffmklqZk1W+dvSy97v3V/C7936WxCCgDynaGPp7GE6R2XO7EU9O2LlM/z95rj870IylYnOQs+1Rag== + dependencies: + "@noble/curves" "^1.0.0" + "@xrplf/isomorphic" "^1.0.0" + ripple-address-codec "^5.0.0" + run-applescript@^5.0.0: version "5.0.0" resolved "https://registry.npmjs.org/run-applescript/-/run-applescript-5.0.0.tgz" @@ -3305,7 +2943,7 @@ run-parallel@^1.1.9: dependencies: queue-microtask "^1.2.2" -safe-buffer@^5.0.1, safe-buffer@^5.1.2, safe-buffer@^5.2.0, safe-buffer@~5.2.0: +safe-buffer@~5.2.0: version "5.2.1" resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz" integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== @@ -3327,14 +2965,6 @@ semver@^7.3.7, semver@^7.5.3, semver@^7.5.4: dependencies: lru-cache "^6.0.0" -sha.js@^2.4.0, sha.js@^2.4.8: - version "2.4.11" - resolved "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz" - integrity sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ== - dependencies: - inherits "^2.0.1" - safe-buffer "^5.0.1" - shebang-command@^2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz" @@ -3503,17 +3133,6 @@ text-table@^0.2.0: resolved "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz" integrity sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw== -tiny-secp256k1@^1.1.3: - version "1.1.6" - resolved "https://registry.npmjs.org/tiny-secp256k1/-/tiny-secp256k1-1.1.6.tgz" - integrity sha512-FmqJZGduTyvsr2cF3375fqGHUovSwDi/QytexX1Se4BPuPZpTE5Ftp5fg+EFSuEf3lhZqgCRjEG3ydUQ/aNiwA== - dependencies: - bindings "^1.3.0" - bn.js "^4.11.8" - create-hmac "^1.1.7" - elliptic "^6.4.0" - nan "^2.13.2" - titleize@^3.0.0: version "3.0.0" resolved "https://registry.npmjs.org/titleize/-/titleize-3.0.0.tgz" @@ -3613,11 +3232,6 @@ type-fest@^0.21.3: resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz" integrity sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w== -typeforce@^1.11.5: - version "1.18.0" - resolved "https://registry.npmjs.org/typeforce/-/typeforce-1.18.0.tgz" - integrity sha512-7uc1O8h1M1g0rArakJdf0uLRSSgFcYexrVoKo+bzJd32gd4gDy2L/Z+8/FjPnU9ydY3pEnVPtr9FyscYY60K1g== - typescript@^5.1.6: version "5.2.2" resolved "https://registry.npmjs.org/typescript/-/typescript-5.2.2.tgz" @@ -3653,17 +3267,6 @@ util-deprecate@^1.0.1: resolved "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz" integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== -util@^0.12.0: - version "0.12.5" - resolved "https://registry.npmjs.org/util/-/util-0.12.5.tgz" - integrity sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA== - dependencies: - inherits "^2.0.3" - is-arguments "^1.0.4" - is-generator-function "^1.0.7" - is-typed-array "^1.1.3" - which-typed-array "^1.1.2" - v8-compile-cache-lib@^3.0.1: version "3.0.1" resolved "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz" @@ -3685,17 +3288,6 @@ walker@^1.0.8: dependencies: makeerror "1.0.12" -which-typed-array@^1.1.11, which-typed-array@^1.1.2: - version "1.1.11" - resolved "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.11.tgz" - integrity sha512-qe9UWWpkeG5yzZ0tNYxDmd7vo58HDBc39mZ0xWWpolAGADdFOzkfamWLDxkOWcvHQKVmdTyQdLD4NOfjLWTKew== - dependencies: - available-typed-arrays "^1.0.5" - call-bind "^1.0.2" - for-each "^0.3.3" - gopd "^1.0.1" - has-tostringtag "^1.0.0" - which@^2.0.1: version "2.0.2" resolved "https://registry.npmjs.org/which/-/which-2.0.2.tgz" @@ -3703,13 +3295,6 @@ which@^2.0.1: dependencies: isexe "^2.0.0" -wif@^2.0.6: - version "2.0.6" - resolved "https://registry.npmjs.org/wif/-/wif-2.0.6.tgz" - integrity sha512-HIanZn1zmduSF+BQhkE+YXIbEiH0xPr1012QbFEGB0xsKqJii0/SqJjyn8dFv6y36kOznMgMB+LGcbZTJ1xACQ== - dependencies: - bs58check "<3.0.0" - winston-transport@^4.5.0: version "4.5.0" resolved "https://registry.npmjs.org/winston-transport/-/winston-transport-4.5.0.tgz" @@ -3763,10 +3348,46 @@ ws@^8.13.0: resolved "https://registry.yarnpkg.com/ws/-/ws-8.18.0.tgz#0d7505a6eafe2b0e712d232b42279f53bc289bbc" integrity sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw== -ws@^8.2.2: - version "8.13.0" - resolved "https://registry.npmjs.org/ws/-/ws-8.13.0.tgz" - integrity sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA== +xahau-address-codec@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/xahau-address-codec/-/xahau-address-codec-5.0.0.tgz#1c35890db49480c1974837ca3ad4dfc8c43898b4" + integrity sha512-z1K0fQXCDdkPynBKNx3HsShd1B9HXbjn4lBTLpEnUD09zyY62kepqg4KJOrt1Pfc38PuBlqYTRz328ucejXiZg== + dependencies: + "@scure/base" "^1.1.3" + "@xrplf/isomorphic" "^1.0.0" + +xahau-binary-codec@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/xahau-binary-codec/-/xahau-binary-codec-2.1.0.tgz#6a696767000512a1c43980a93e139d5b6f4f5fd5" + integrity sha512-pb3YR6GQW6v/G3g/kDfgY5egT4XU6lqfEzYzf1LdoqmdS+UjmiVqz9UMQBNd5nKMrSYQuzy2ExfaAK5srRr5nQ== + dependencies: + "@xrplf/isomorphic" "^1.0.1" + bignumber.js "^9.0.0" + xahau-address-codec "^5.0.0" + +xahau-keypairs@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/xahau-keypairs/-/xahau-keypairs-2.0.0.tgz#9d4c1b332f2ce92bfb8b1d040a2df165ddb0359c" + integrity sha512-8Gjv6pjCqH4nP/QnKzJk2beqyOPj1jfkCcSQrbPz0G/1G8Eby0Bp7SCxgEDboI5nEE6FSOVbRe+KfzCMO9Ft3Q== + dependencies: + "@noble/curves" "^1.0.0" + "@xrplf/isomorphic" "^1.0.0" + xahau-address-codec "^5.0.0" + +xahau@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/xahau/-/xahau-4.0.0.tgz#36decff11c1a2b0ef4fdf4d7c944599bd4654c4a" + integrity sha512-IWk6gdrJTm8FvAtlY5TY3ofyD4n5143WP/GBYD/cByhR4iiygfVLtLyeB2Ujwzre/PjJZIEFqWR8eXKBie8oaw== + dependencies: + "@scure/bip32" "^1.3.1" + "@scure/bip39" "^1.2.1" + "@xrplf/isomorphic" "^1.0.1" + "@xrplf/secret-numbers" "^1.0.0" + bignumber.js "^9.0.0" + eventemitter3 "^5.0.1" + xahau-address-codec "^5.0.0" + xahau-binary-codec "^2.1.0" + xahau-keypairs "^2.0.0" y18n@^5.0.5: version "5.0.8" From 60b03fb6efb129d2346dbc76826752b566f97644 Mon Sep 17 00:00:00 2001 From: Denis Angell Date: Fri, 14 Mar 2025 17:43:56 +0100 Subject: [PATCH 02/10] Update nodejs.yml --- .github/workflows/nodejs.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/nodejs.yml b/.github/workflows/nodejs.yml index 0cc4dd7..cf0fedc 100644 --- a/.github/workflows/nodejs.yml +++ b/.github/workflows/nodejs.yml @@ -16,7 +16,7 @@ jobs: strategy: matrix: - node-version: [16.x, 20.x] + node-version: [18.x, 20.x] steps: - uses: actions/checkout@v3 From a45d48ccf577127c55f83371491ce9825dd1c78b Mon Sep 17 00:00:00 2001 From: Denis Angell Date: Fri, 14 Mar 2025 17:46:44 +0100 Subject: [PATCH 03/10] Update Xrpld.ts --- src/Xrpld.ts | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/Xrpld.ts b/src/Xrpld.ts index a6f2180..75b18a8 100644 --- a/src/Xrpld.ts +++ b/src/Xrpld.ts @@ -18,7 +18,10 @@ import { addListeners, ISelect, removeListeners } from './libs/debug' export class Xrpld { // TX V3 - static async submit(client: Client, params: SmartContractParams) { + static async submit( + client: Client, + params: SmartContractParams + ): Promise { if (!params.tx) { throw Error('Missing tx parameter') } @@ -59,7 +62,10 @@ export class Xrpld { return txResponse?.result } // TX V3 - static async submitBatch(client: Client, batches: SmartContractParams[]) { + static async submitBatch( + client: Client, + batches: SmartContractParams[] + ): Promise { if (!batches.length) { throw Error('Missing batch txns') } From ab702dd316b1169ae174e557024dbdfbd1c2df8e Mon Sep 17 00:00:00 2001 From: Denis Angell Date: Fri, 14 Mar 2025 17:47:01 +0100 Subject: [PATCH 04/10] Update nodejs.yml --- .github/workflows/nodejs.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/nodejs.yml b/.github/workflows/nodejs.yml index cf0fedc..7e3a14b 100644 --- a/.github/workflows/nodejs.yml +++ b/.github/workflows/nodejs.yml @@ -66,7 +66,7 @@ jobs: strategy: matrix: - node-version: [16.x, 20.x] + node-version: [18.x, 20.x] steps: - uses: actions/checkout@v3 From 85b117df611a115c53e96e126533469f7a9fb090 Mon Sep 17 00:00:00 2001 From: Denis Angell Date: Fri, 14 Mar 2025 17:53:08 +0100 Subject: [PATCH 05/10] fix --- package.json | 1 + test/integration-c/hooks/toolbox/callback.test.ts | 4 ++-- test/integration-c/hooks/toolbox/utilVerify.test.ts | 2 +- yarn.lock | 5 +++++ 4 files changed, 9 insertions(+), 3 deletions(-) diff --git a/package.json b/package.json index e26a0af..cf9bc1a 100644 --- a/package.json +++ b/package.json @@ -25,6 +25,7 @@ "crypto-js": "^4.1.1", "dotenv": "^16.4.5", "jshooks-api": "^1.0.5", + "lodash": "^4.17.21", "reconnecting-websocket": "^4.4.0", "winston": "^3.10.0", "xahau": "^4.0.0" diff --git a/test/integration-c/hooks/toolbox/callback.test.ts b/test/integration-c/hooks/toolbox/callback.test.ts index 8491e4c..cdb996c 100644 --- a/test/integration-c/hooks/toolbox/callback.test.ts +++ b/test/integration-c/hooks/toolbox/callback.test.ts @@ -3,7 +3,6 @@ import { AccountSetAsfFlags, Invoke, LedgerRequest, - LedgerResponse, SetHookFlags, Transaction, TransactionMetadata, @@ -26,6 +25,7 @@ import { clearAllHooksV3, ExecutionUtility, } from '../../../../dist/npm/src' +import { LedgerResponseExpanded } from 'xahau/src/models/methods/ledger' describe('callback', () => { let testContext: XrplIntegrationTestContext @@ -132,7 +132,7 @@ describe('callback', () => { ledger_index: await testContext.client.getLedgerIndex(), expand: true, transactions: true, - } as unknown as LedgerRequest)) as LedgerResponse + } as unknown as LedgerRequest)) as LedgerResponseExpanded const txns = response.result.ledger.transactions as Transaction[] // @ts-expect-error -- has value expect((txns[0].metaData as TransactionMetadata).TransactionResult).toEqual( diff --git a/test/integration-c/hooks/toolbox/utilVerify.test.ts b/test/integration-c/hooks/toolbox/utilVerify.test.ts index 7d71093..b671714 100644 --- a/test/integration-c/hooks/toolbox/utilVerify.test.ts +++ b/test/integration-c/hooks/toolbox/utilVerify.test.ts @@ -1,7 +1,7 @@ // xrpl import { Invoke, SetHookFlags, TransactionMetadata } from 'xahau' import { AccountID } from 'xahau-binary-codec/dist/types' -import { sign } from '@transia/ripple-keypairs' +import { sign } from 'xahau-keypairs' // src import { // Testing diff --git a/yarn.lock b/yarn.lock index 5efc876..7fc82b6 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2515,6 +2515,11 @@ lodash.merge@^4.6.2: resolved "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz" integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== +lodash@^4.17.21: + version "4.17.21" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" + integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== + logform@^2.3.2, logform@^2.4.0: version "2.5.1" resolved "https://registry.npmjs.org/logform/-/logform-2.5.1.tgz" From 0598be46193b8e92040496ff201f317d771b26bb Mon Sep 17 00:00:00 2001 From: Denis Angell Date: Fri, 14 Mar 2025 17:59:02 +0100 Subject: [PATCH 06/10] fix master key --- src/libs/xrpl-helpers/constants.ts | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/libs/xrpl-helpers/constants.ts b/src/libs/xrpl-helpers/constants.ts index 5cbd40f..5dbd6fc 100644 --- a/src/libs/xrpl-helpers/constants.ts +++ b/src/libs/xrpl-helpers/constants.ts @@ -1,4 +1,4 @@ -import { Wallet } from 'xahau' +import { ECDSA, Wallet } from 'xahau' // **DO NOT EDIT THESE SEEDS** // They match the seeds in the rippled source test env. @@ -6,7 +6,9 @@ import { Wallet } from 'xahau' // wallet secret == "mastersecret" // rHb9CJAWyB4rj91VRWn96DkukG4bwdtyTh -export const MASTER_WALLET = Wallet.fromSeed('snoPBrXtMeMyMHUVTgbuqAfg1SUTb') +export const MASTER_WALLET = Wallet.fromSeed('snoPBrXtMeMyMHUVTgbuqAfg1SUTb', { + algorithm: ECDSA.secp256k1, +}) // wallet secret == "gw" // rExKpRKXNz25UAjbckCRtQsJFcSfjL9Er3 export const GW_WALLET = Wallet.fromSeed('safmpBLsy2paxybRMpvXqFqSrV5HG') From 68536ed1dbcae27e5b074cc7149ef61b34888bac Mon Sep 17 00:00:00 2001 From: Denis Angell Date: Fri, 14 Mar 2025 18:09:37 +0100 Subject: [PATCH 07/10] fix wallets --- .github/workflows/nodejs.yml | 5 ++- src/libs/xrpl-helpers/constants.ts | 49 ++++++++++++++++++------ test/integration-c/setup/setHook.test.ts | 6 +-- 3 files changed, 43 insertions(+), 17 deletions(-) diff --git a/.github/workflows/nodejs.yml b/.github/workflows/nodejs.yml index 7e3a14b..7c9e815 100644 --- a/.github/workflows/nodejs.yml +++ b/.github/workflows/nodejs.yml @@ -102,9 +102,10 @@ jobs: if: steps.cache-nodemodules.outputs.cache-hit != 'true' run: yarn install - - run: npm i -g @transia/hooks-cli + - run: npm i -g @xahau/hooks-cli - run: yarn run build - - run: hooks-cli compile-c contracts-c build + - run: hooks-cli compile-c contracts-c/toolbox build + - run: hooks-cli compile-c contracts-c/txns build - run: yarn run test:integration-c env: HOOKS_COMPILE_HOST: https://hook-buildbox.xrpl.org diff --git a/src/libs/xrpl-helpers/constants.ts b/src/libs/xrpl-helpers/constants.ts index 5dbd6fc..e4f063a 100644 --- a/src/libs/xrpl-helpers/constants.ts +++ b/src/libs/xrpl-helpers/constants.ts @@ -11,42 +11,67 @@ export const MASTER_WALLET = Wallet.fromSeed('snoPBrXtMeMyMHUVTgbuqAfg1SUTb', { }) // wallet secret == "gw" // rExKpRKXNz25UAjbckCRtQsJFcSfjL9Er3 -export const GW_WALLET = Wallet.fromSeed('safmpBLsy2paxybRMpvXqFqSrV5HG') +export const GW_WALLET = Wallet.fromSeed('safmpBLsy2paxybRMpvXqFqSrV5HG', { + algorithm: ECDSA.secp256k1, +}) // wallet secret == "notactive" // rMqTbPY6rzTspuBGBcS7po7FFTPwitrKHX export const NOT_ACTIVE_WALLET = Wallet.fromSeed( - 'snqPCkCnfAbK4p981HZZGMj8SnhZ7' + 'snqPCkCnfAbK4p981HZZGMj8SnhZ7', + { + algorithm: ECDSA.secp256k1, + } ) // wallet secret == "alice" // rG1QQv2nh2gr7RCZ1P8YYcBUKCCN633jCn -export const ALICE_WALLET = Wallet.fromSeed('ssbTMHrmEJP7QEQjWJH3a72LQipBM') +export const ALICE_WALLET = Wallet.fromSeed('ssbTMHrmEJP7QEQjWJH3a72LQipBM', { + algorithm: ECDSA.secp256k1, +}) // wallet secret == "bob" // rPMh7Pi9ct699iZUTWaytJUoHcJ7cgyziK -export const BOB_WALLET = Wallet.fromSeed('spkcsko6Ag3RbCSVXV2FJ8Pd4Zac1') +export const BOB_WALLET = Wallet.fromSeed('spkcsko6Ag3RbCSVXV2FJ8Pd4Zac1', { + algorithm: ECDSA.secp256k1, +}) // wallet secret == "carol" // rH4KEcG9dEwGwpn6AyoWK9cZPLL4RLSmWW -export const CAROL_WALLET = Wallet.fromSeed('snzb83cV8zpLPTE4nQamoLP9pbhB7') +export const CAROL_WALLET = Wallet.fromSeed('snzb83cV8zpLPTE4nQamoLP9pbhB7', { + algorithm: ECDSA.secp256k1, +}) // wallet secret == "dave" // rGWC14yT3U8bkuAx2c8tA1ajLUJCandp59 -export const DAVE_WALLET = Wallet.fromSeed('sh2Q7wDfjdvyVaVHEE8JT3C9osGFD') +export const DAVE_WALLET = Wallet.fromSeed('sh2Q7wDfjdvyVaVHEE8JT3C9osGFD', { + algorithm: ECDSA.secp256k1, +}) // wallet secret == "elsa" // rL8xeQSGxTmKXXyLUFRuAAKsWMY1BMpQbe -export const ELSA_WALLET = Wallet.fromSeed('sspu32LMDPU9V5NCUb584FqbdPsZ6') +export const ELSA_WALLET = Wallet.fromSeed('sspu32LMDPU9V5NCUb584FqbdPsZ6', { + algorithm: ECDSA.secp256k1, +}) // wallet secret == "frank" // rDvJdyJXEMcLByY7y8fPXKnK6g9BpAyhb9 -export const FRANK_WALLET = Wallet.fromSeed('sshnbebSnLqrwyh8rorMcYgH18fXR') +export const FRANK_WALLET = Wallet.fromSeed('sshnbebSnLqrwyh8rorMcYgH18fXR', { + algorithm: ECDSA.secp256k1, +}) // wallet secret == "grace" // rKwXpiHGcQSzKEGXcwej5Eq2CQtN6HoTDr -export const GRACE_WALLET = Wallet.fromSeed('saNMoZ8vo5xHhTkdY591ZM5tzxC4J') +export const GRACE_WALLET = Wallet.fromSeed('saNMoZ8vo5xHhTkdY591ZM5tzxC4J', { + algorithm: ECDSA.secp256k1, +}) // wallet secret == "heidi" // rMcXuYsQ3MjFeRRqi1GvasJzTdL7wuL3hN -export const HEIDI_WALLET = Wallet.fromSeed('shQ9J4uun5BFQ5coEeUorTPipssR8') +export const HEIDI_WALLET = Wallet.fromSeed('shQ9J4uun5BFQ5coEeUorTPipssR8', { + algorithm: ECDSA.secp256k1, +}) // wallet secret == "ivan" // rhW5hg2xE7w2ewepbhWtgZWW8SuN6uW97S -export const IVAN_WALLET = Wallet.fromSeed('ssUL8VwUfDNzttN7AsimLPyiP7RXQ') +export const IVAN_WALLET = Wallet.fromSeed('ssUL8VwUfDNzttN7AsimLPyiP7RXQ', { + algorithm: ECDSA.secp256k1, +}) // wallet secret == "judy" // rpggxGs4yFaFEGThxBEbhir7T9Fb5LQKLC -export const JUDY_WALLET = Wallet.fromSeed('shaiav41HpCvyHQhbSJDWS2pAqD77') +export const JUDY_WALLET = Wallet.fromSeed('shaiav41HpCvyHQhbSJDWS2pAqD77', { + algorithm: ECDSA.secp256k1, +}) // wallet secret == "hook1" // rBpVrkKc8QnxsCGsngMJgmDKqxJKoWHfKt diff --git a/test/integration-c/setup/setHook.test.ts b/test/integration-c/setup/setHook.test.ts index db832d0..fc76ebc 100644 --- a/test/integration-c/setup/setHook.test.ts +++ b/test/integration-c/setup/setHook.test.ts @@ -65,7 +65,7 @@ describe('SetHook - End to End', () => { const leHook = hookRes.result.node as LeHook expect(leHook.Hooks.length).toBe(1) expect(leHook.Hooks[0].Hook.HookHash).toEqual( - '47B8554938E4E6017EBD663C4388681B33E3059F8ADA912959247ED5335784E5' + '955705F019B60A9E5C31D7E5963D2E45D2589F8A287EFEA6E5101912FC000E92' ) const hookDefRequest: LedgerEntryRequest = { command: 'ledger_entry', @@ -153,7 +153,7 @@ describe('SetHook - (noop|create|install', () => { const leHook = hookRes.result.node as LeHook expect(leHook.Hooks.length).toBe(1) expect(leHook.Hooks[0].Hook.HookHash).toEqual( - 'BFE035098EF245B5E356B5C1ADBA55CA8119F3C779C367715703C4B3664A4052' + '2500852196A87009FA4FDA3723728CE5853458ABD8C5BE4E5AB1BC93149523F5' ) const hookDefRequest: LedgerEntryRequest = { command: 'ledger_entry', @@ -195,7 +195,7 @@ describe('SetHook - (noop|create|install', () => { const leHook1 = hook1Res.result.node as LeHook expect(leHook1.Hooks.length).toBe(1) expect(leHook1.Hooks[0].Hook.HookHash).toEqual( - 'BFE035098EF245B5E356B5C1ADBA55CA8119F3C779C367715703C4B3664A4052' + '2500852196A87009FA4FDA3723728CE5853458ABD8C5BE4E5AB1BC93149523F5' ) const hook2 = { From cb1a67bad37f6e74bf089d8a82e5bbba2a503e6a Mon Sep 17 00:00:00 2001 From: Denis Angell Date: Fri, 14 Mar 2025 18:17:04 +0100 Subject: [PATCH 08/10] Update setHooks.ts --- src/setHooks.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/setHooks.ts b/src/setHooks.ts index 36bd107..afb5062 100644 --- a/src/setHooks.ts +++ b/src/setHooks.ts @@ -4,6 +4,7 @@ import { hexHookParameters, SetHook, SetHookFlags, + ECDSA, } from 'xahau' import { SetHookParams, iHook } from './types' import { HookGrant, HookParameter } from 'xahau/dist/npm/models/common/xahau' @@ -68,7 +69,7 @@ export function createHookPayload(payload: SetHookPayload): iHook { } export async function setHooksV3({ client, seed, hooks }: SetHookParams) { - const HOOK_ACCOUNT = Wallet.fromSeed(seed) + const HOOK_ACCOUNT = Wallet.fromSeed(seed, { algorithm: ECDSA.secp256k1 }) const tx: SetHook = { TransactionType: `SetHook`, Account: HOOK_ACCOUNT.address, From 5baa363a4c2e4a1f8dd44db8b18cf18032e066d3 Mon Sep 17 00:00:00 2001 From: Denis Angell Date: Fri, 14 Mar 2025 18:18:53 +0100 Subject: [PATCH 09/10] fix wallets --- src/libs/xrpl-helpers/constants.ts | 22 +++++++++++++++++----- src/libs/xrpl-helpers/tools.ts | 3 ++- src/setHooks.ts | 4 ++-- 3 files changed, 21 insertions(+), 8 deletions(-) diff --git a/src/libs/xrpl-helpers/constants.ts b/src/libs/xrpl-helpers/constants.ts index e4f063a..be77bf3 100644 --- a/src/libs/xrpl-helpers/constants.ts +++ b/src/libs/xrpl-helpers/constants.ts @@ -75,16 +75,28 @@ export const JUDY_WALLET = Wallet.fromSeed('shaiav41HpCvyHQhbSJDWS2pAqD77', { // wallet secret == "hook1" // rBpVrkKc8QnxsCGsngMJgmDKqxJKoWHfKt -export const HOOK1_WALLET = Wallet.fromSeed('ssM2MJpZchJhEWYCP1wMqpD9MWbcd') +export const HOOK1_WALLET = Wallet.fromSeed('ssM2MJpZchJhEWYCP1wMqpD9MWbcd', { + algorithm: ECDSA.secp256k1, +}) +console.log(HOOK1_WALLET) + // wallet secret == "hook2" // rpeWVvqpm2EPzfFiWrV421AMHKUQBk5aDt -export const HOOK2_WALLET = Wallet.fromSeed('ss7Ec7bReBqsYpLY2cVsyJsgeLJLq') +export const HOOK2_WALLET = Wallet.fromSeed('ss7Ec7bReBqsYpLY2cVsyJsgeLJLq', { + algorithm: ECDSA.secp256k1, +}) // wallet secret == "hook3" // raNiq8ztgmvSXuKrD8iEn2QL6MEf72wSXz -export const HOOK3_WALLET = Wallet.fromSeed('shgqrTAn8TkqKSfVHhDU4kMthzHeJ') +export const HOOK3_WALLET = Wallet.fromSeed('shgqrTAn8TkqKSfVHhDU4kMthzHeJ', { + algorithm: ECDSA.secp256k1, +}) // wallet secret == "hook4" // rHbizjpTJsqKh4WBcJnJr99uP6H1chRcTd -export const HOOK4_WALLET = Wallet.fromSeed('snZ1P5gkmuJYUi2LDtSSzYQnxcdp8') +export const HOOK4_WALLET = Wallet.fromSeed('snZ1P5gkmuJYUi2LDtSSzYQnxcdp8', { + algorithm: ECDSA.secp256k1, +}) // wallet secret == "hook5" // rUPJACGdNu2rNRiWYpjTbr9BGYz8caXEQG -export const HOOK5_WALLET = Wallet.fromSeed('ssUcdBBRiCendP9TenSr2tfKhFw7Z') +export const HOOK5_WALLET = Wallet.fromSeed('ssUcdBBRiCendP9TenSr2tfKhFw7Z', { + algorithm: ECDSA.secp256k1, +}) diff --git a/src/libs/xrpl-helpers/tools.ts b/src/libs/xrpl-helpers/tools.ts index 48285b7..ac3bb89 100644 --- a/src/libs/xrpl-helpers/tools.ts +++ b/src/libs/xrpl-helpers/tools.ts @@ -13,6 +13,7 @@ import { OfferCreateFlags, RandomRequest, SubmittableTransaction, + ECDSA, } from 'xahau' import { IssuedCurrencyAmount } from 'xahau/dist/npm/models/common' import { RippleState } from 'xahau/dist/npm/models/ledger' @@ -49,7 +50,7 @@ export class Account { constructor(name?: string, seed?: string) { if (seed) { - this.wallet = Wallet.fromSeed(seed) + this.wallet = Wallet.fromSeed(seed, { algorithm: ECDSA.secp256k1 }) } this.name = name as string diff --git a/src/setHooks.ts b/src/setHooks.ts index afb5062..c166a55 100644 --- a/src/setHooks.ts +++ b/src/setHooks.ts @@ -90,7 +90,7 @@ export async function setHooksV3({ client, seed, hooks }: SetHookParams) { } export async function clearAllHooksV3({ client, seed }: SetHookParams) { - const HOOK_ACCOUNT = Wallet.fromSeed(seed) + const HOOK_ACCOUNT = Wallet.fromSeed(seed, { algorithm: ECDSA.secp256k1 }) const hook = { CreateCode: '', Flags: SetHookFlags.hsfOverride | SetHookFlags.hsfNSDelete, @@ -126,7 +126,7 @@ export async function clearAllHooksV3({ client, seed }: SetHookParams) { } export async function clearHookStateV3({ client, seed, hooks }: SetHookParams) { - const HOOK_ACCOUNT = Wallet.fromSeed(seed) + const HOOK_ACCOUNT = Wallet.fromSeed(seed, { algorithm: ECDSA.secp256k1 }) const tx: SetHook = { TransactionType: `SetHook`, Account: HOOK_ACCOUNT.classicAddress, From 40c2f8b8ff3a2e3f3df52851be3c1c3f098cc80e Mon Sep 17 00:00:00 2001 From: Denis Angell Date: Fri, 14 Mar 2025 22:00:56 +0100 Subject: [PATCH 10/10] fixup --- src/libs/xrpl-helpers/constants.ts | 1 - test/integration-c/hooks/txns/accountSet.test.ts | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/src/libs/xrpl-helpers/constants.ts b/src/libs/xrpl-helpers/constants.ts index be77bf3..215a770 100644 --- a/src/libs/xrpl-helpers/constants.ts +++ b/src/libs/xrpl-helpers/constants.ts @@ -78,7 +78,6 @@ export const JUDY_WALLET = Wallet.fromSeed('shaiav41HpCvyHQhbSJDWS2pAqD77', { export const HOOK1_WALLET = Wallet.fromSeed('ssM2MJpZchJhEWYCP1wMqpD9MWbcd', { algorithm: ECDSA.secp256k1, }) -console.log(HOOK1_WALLET) // wallet secret == "hook2" // rpeWVvqpm2EPzfFiWrV421AMHKUQBk5aDt diff --git a/test/integration-c/hooks/txns/accountSet.test.ts b/test/integration-c/hooks/txns/accountSet.test.ts index 98d8c25..92de3c0 100644 --- a/test/integration-c/hooks/txns/accountSet.test.ts +++ b/test/integration-c/hooks/txns/accountSet.test.ts @@ -23,7 +23,7 @@ import { iHookParamName, iHookParamValue, } from '../../../../dist/npm/src' -import { uint64ToHex } from 'jshooks-api' +import { uint64ToHex } from '@transia/binary-models' describe('accountSet', () => { let testContext: XrplIntegrationTestContext